Skip to content

Event Types

An event type is a stable public name, written <object>.<what happened>. When you register an endpoint you choose the types it receives, or all of them. Each type names the snapshot it carries in data.object; the shapes are under Snapshot shapes.

Several internal actions can produce the same event type. source.action on the event tells you which one fired, and data.changes lists the fields that changed when there are any.

Event typeWhen it firesSnapshot
order.createdAn order is placed at checkout, created by an admin, or created as a replacement for another order.order
order.payment_status_changedThe order’s payment status changes, for example from AUTHORIZED to PAID.order
order.payment_capturedA gateway payment on the order is captured, or an admin records an offline payment against it.order
order.payment_failedA payment attempt on the order is declined or errors.order
order.fulfillment_status_changedThe order’s fulfillment status changes, for example from UNFULFILLED to PARTIALLY_FULFILLED.order
order.fulfilledEvery physical line on the order has shipped. Fires each time the order becomes fully fulfilled, for example again after a cancelled shipment is re-fulfilled.order
order.cancelledThe order is cancelled or voided.order
order.updatedThe order’s address, customer, custom fields, or order date is changed, or a discount is applied.order
order.chargeback_reportedThe payment processor reports a chargeback against the order’s payment.order
Event typeWhen it firesSnapshot
refund.issuedA refund is issued against an order.refund
refund.completedThe payment processor confirms the refund has gone through.refund
refund.failedThe payment processor rejects the refund.refund
refund.voidedThe refund is voided before it settles, so no money is returned.refund
Event typeWhen it firesSnapshot
shipment.createdItems on an order are fulfilled and a shipment recorded. Fires once per fulfillment, including the last.shipment
shipment.status_changedThe shipment’s status changes, for example from IN_TRANSIT to DELIVERED.shipment
shipment.tracking_updatedThe shipment’s carrier, tracking number, or tracking URL changes.shipment
shipment.cancelledThe shipment is cancelled.shipment
Event typeWhen it firesSnapshot
subscription.createdA subscription is created.subscription
subscription.status_changedThe subscription’s status changes, including when renewals give up after repeated failures and when it recovers.subscription
subscription.cancelledThe subscription is cancelled.subscription
subscription.pausedThe subscription is paused.subscription
subscription.resumedA paused subscription is resumed, or a cancelled one is reactivated.subscription
subscription.processedA renewal runs and its order is placed.subscription
subscription.payment_failedA renewal payment is declined or errors.subscription
subscription.cycle_skippedAn upcoming renewal is skipped, by the customer, an admin, or automatically.subscription
subscription.processing_date_changedThe next processing date is moved.subscription
subscription.items_changedAn item on the subscription is added, removed, updated, or swapped for another.subscription
subscription.pricing_changedThe subscription’s price changes, including when a price supplied by an outside system is applied.subscription
subscription.replacedThe subscription is replaced by a new one.subscription
Event typeWhen it firesSnapshot
customer.createdA customer account is created.customer
customer.updatedThe customer’s profile details change, or their email address is claimed or verified.customer
customer.status_changedThe customer’s status changes, for example from ACTIVE to SUSPENDED.customer
customer.account_type_changedThe customer’s account type changes, by an admin or through an automatic tier change.customer
customer.address_changedOne of the customer’s saved addresses is added, updated, or removed.customerAddress
customer.payment_method_changedOne of the customer’s saved payment methods is added, updated, or removed.customerPaymentMethod

data.object is the object as it was at the moment of the event. The order and shipment snapshots use the same shapes as the matching resources in the public API reference; the subscription, customer, refund, address, and payment method snapshots are webhook shapes. Every schema is listed there too, as WebhookEvent and the components below.

SnapshotSchemaShape
orderPublicOrderListItemeach order returned by GET /order/paged
refundPublicRefundnew for webhooks
shipmentPublicShipmentSnapshotPublicShipment plus orderId and orderNumber
subscriptionPublicSubscriptionSnapshotthe subscription, with its lines as PublicSubscriptionListItem entries
customerPublicCustomernew for webhooks
customerAddressPublicCustomerAddressnew for webhooks
customerPaymentMethodPublicCustomerPaymentMethodnew for webhooks

Money is always a plain decimal string in the object’s currency, never a float. Timestamps are ISO 8601 in UTC, except nextProcessingDate, which is a plain date such as 2026-11-08.

PublicOrderListItem: the order’s ids, dates, payment and fulfillment status, totals, and lines.

order.created
{
"id": "evt_01JA3K8Q2V7XN4M9RZB6TC5HFE",
"type": "order.created",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-08T17:42:11.208Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"orderId": 48211,
"orderNumber": 100482,
"orderDate": "2026-10-08T17:42:09.512Z",
"completedOn": "2026-10-08T17:42:09.512Z",
"cancelledOn": null,
"paymentStatus": "PAID",
"fulfillmentStatus": "UNFULFILLED",
"currencyCode": "USD",
"subtotal": "129.00",
"discountTotal": "10.00",
"shippingTotal": "8.95",
"taxTotal": "9.52",
"grandTotal": "137.47",
"replacedOrderNumber": null,
"itemCount": 3,
"items": [
{
"sku": "GREENS-30",
"name": "Daily Greens 30-Day",
"quantity": 1,
"unitPrice": "89.00",
"lineTotal": "89.00",
"customFields": []
},
{
"sku": "SPARK-12",
"name": "Sparkling Energy 12-Pack",
"quantity": 2,
"unitPrice": "20.00",
"lineTotal": "40.00",
"customFields": []
}
]
},
"changes": null,
"previousAttributes": null
},
"source": { "action": "order.placed", "actorType": "CUSTOMER" }
}

PublicRefund:

FieldTypeNotes
refundIdnumber
orderIdnumberThe refunded order.
orderNumbernumber
refundNumbernumberThe store’s refund number: from its own refund sequence, or from the order number sequence when the store shares one.
statusstringPENDING, PROCESSING, COMPLETED, FAILED, or VOIDED.
reasonstringRETURN_SELLABLE, RETURN_NON_SELLABLE, GOODWILL, BILLING_ERROR, DAMAGED_GOODS, DUPLICATE_CHARGE, or OTHER.
amountstringTotal refunded: subtotal plus taxTotal plus shippingTotal.
subtotalstring
taxTotalstring
shippingTotalstring
currencyCodestring
refundedOnstringWhen the refund was issued.
voidedOnstring or nullWhen the refund was voided; null unless it was.
createdOnstring
modifiedOnstringWhen the refund record last changed.
refund.issued
{
"id": "evt_01JA3M2D9F4WQ7XK8HZT5RBN6C",
"type": "refund.issued",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-10T14:05:37.019Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"refundId": 1204,
"orderId": 48211,
"orderNumber": 100482,
"refundNumber": 1,
"status": "PENDING",
"reason": "DAMAGED_GOODS",
"amount": "43.20",
"subtotal": "40.00",
"taxTotal": "3.20",
"shippingTotal": "0.00",
"currencyCode": "USD",
"refundedOn": "2026-10-10T14:05:36.204Z",
"voidedOn": null,
"createdOn": "2026-10-10T14:05:36.204Z",
"modifiedOn": "2026-10-10T14:05:36.204Z"
},
"changes": null,
"previousAttributes": null
},
"source": { "action": "order_refund.issued", "actorType": "ADMIN" }
}

PublicShipmentSnapshot: every field of PublicShipment (status, carrier, tracking, shipped and estimated delivery dates, and the shipped lines), plus orderId and orderNumber so you can tie it to its order without another call.

This sample is a status change, so data.changes carries the old and new status.

shipment.status_changed
{
"id": "evt_01JA3P7G1S8YV2NC4KDM9EXQ3T",
"type": "shipment.status_changed",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-09T19:28:04.377Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"shipmentId": 9132,
"externalShipmentId": "SW-778812",
"status": "DELIVERED",
"carrierName": "FedEx",
"trackingNumber": "771234567890",
"trackingUrl": "https://www.fedex.com/fedextrack/?trknbr=771234567890",
"shippedOn": "2026-10-08T21:15:00.000Z",
"estimatedDelivery": "2026-10-09T23:59:00.000Z",
"items": [
{ "lineItemId": "61204", "quantity": 1 },
{ "lineItemId": "61205", "quantity": 2 }
],
"orderId": 48211,
"orderNumber": 100482
},
"changes": { "status": { "old": "IN_TRANSIT", "new": "DELIVERED" } },
"previousAttributes": null
},
"source": { "action": "shipment.status_changed", "actorType": "SYSTEM" }
}

PublicSubscriptionSnapshot: the subscription as a whole, with each of its live lines in items.

FieldTypeNotes
subscriptionIdnumberThe id the subscription routes take.
subscriptionNumbernumber
statusstringACTIVE, PAUSED, CANCELLED, or TERMINAL_FAILED.
nextProcessingDatestring or nullNext renewal date; null once the subscription is no longer scheduled to run.
createdOnstring
cancelledOnstring or null
cancelReasonstring or null
itemsarrayOne PublicSubscriptionListItem per live line, the same entries the subscription list returns; empty once every line is removed.
subscription.processed
{
"id": "evt_01JA3R5H6B0ZT9WF2QXC7MPA4D",
"type": "subscription.processed",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-08T06:00:14.552Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"subscriptionId": 3307,
"subscriptionNumber": 20419,
"status": "ACTIVE",
"nextProcessingDate": "2026-11-08",
"createdOn": "2026-04-08T15:03:22.118Z",
"cancelledOn": null,
"cancelReason": null,
"items": [
{
"subscriptionId": 3307,
"subscriptionItemId": 4410,
"subscriptionNumber": 20419,
"status": "ACTIVE",
"sku": "GREENS-30",
"name": "Daily Greens 30-Day",
"quantity": 1,
"unitPrice": "79.00",
"intervalCount": 1,
"intervalUnit": "MONTH",
"nextProcessingDate": "2026-11-08",
"createdOn": "2026-04-08T15:03:22.118Z",
"cancelledOn": null,
"cancelReason": null,
"customFields": []
}
]
},
"changes": null,
"previousAttributes": null
},
"source": { "action": "subscription.processed", "actorType": "SYSTEM" }
}

PublicCustomer:

FieldTypeNotes
storeCustomerIdnumberThe same id the public API takes as storeCustomerId.
emailstring
firstNamestring
lastNamestring
phoneNumberstring or null
statusstringACTIVE, BANNED, SUSPENDED, or DEACTIVATED.
accountTypeIdnumberThe customer’s account type in the store.
accountTypeNamestringThat account type’s display name.
emailVerifiedboolean
commissionProviderNamestring or nullThe store’s commission provider; null when the store has none.
commissionProviderIdstring or nullThe customer’s id in that provider; null until it is synced, or when the store has none.
createdOnstring
modifiedOnstringWhen the customer record last changed.

The snapshot never includes passwords, tokens, or card numbers. Address and payment method events carry the address or payment method itself, below, not the customer.

customer.created
{
"id": "evt_01JA3T9N4E1KX8RB6VHZ3QYW2G",
"type": "customer.created",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-08T16:20:51.090Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"storeCustomerId": 88214,
"email": "jordan.lee@example.com",
"firstName": "Jordan",
"lastName": "Lee",
"phoneNumber": "+15125550143",
"status": "ACTIVE",
"accountTypeId": 1,
"accountTypeName": "Retail",
"emailVerified": false,
"commissionProviderName": null,
"commissionProviderId": null,
"createdOn": "2026-10-08T16:20:50.733Z",
"modifiedOn": "2026-10-08T16:20:50.733Z"
},
"changes": null,
"previousAttributes": null
},
"source": { "action": "customer.created", "actorType": "API_TOKEN" }
}

PublicCustomerAddress: the saved address that was added, updated, or removed. storeCustomerId ties it to its customer.

FieldTypeNotes
customerAddressIdnumber
storeCustomerIdnumberThe customer the address belongs to.
firstNamestring
lastNamestring
companystring or null
streetLine1string
streetLine2string or null
citystring
stateProvincestring
postalCodestring
countryCodestringISO 3166-1 alpha-2, for example US.
isDefaultbooleanWhether this is the customer’s default address.
isActivebooleanfalse once the address is removed; a removal event carries the removed address.

This sample is an edit, so data.changes carries the old and new values.

customer.address_changed
{
"id": "evt_01JA3V2C8M5QZ7TN1FXR4KBW9H",
"type": "customer.address_changed",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-09T11:12:40.611Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"customerAddressId": 51730,
"storeCustomerId": 88214,
"firstName": "Jordan",
"lastName": "Lee",
"company": null,
"streetLine1": "2100 Lake Austin Blvd",
"streetLine2": "Unit 4",
"city": "Austin",
"stateProvince": "TX",
"postalCode": "78703",
"countryCode": "US",
"isDefault": true,
"isActive": true
},
"changes": { "streetLine2": { "old": null, "new": "Unit 4" } },
"previousAttributes": null
},
"source": { "action": "customer.address_updated", "actorType": "CUSTOMER" }
}

PublicCustomerPaymentMethod: the saved payment method that was added, updated, or removed. It carries only what a customer sees on their account page: never card numbers, gateway tokens, or vault ids.

FieldTypeNotes
customerPaymentMethodIdnumber
storeCustomerIdnumberThe customer the payment method belongs to.
paymentTypestringCARD, BANK, CRYPTO, or DIGITAL_WALLET.
brandstringAs the payment processor reports it, for example visa.
lastFourstring or null
expiryMonthstring or null
expiryYearstring or null
isDefaultbooleanWhether this is the customer’s default payment method.
isActivebooleanfalse once the payment method is removed; a removal event carries the removed payment method.

This sample is the customer removing a card, so the payment method arrives with isActive: false.

customer.payment_method_changed
{
"id": "evt_01JA3W6R3J9DX2HV5PKN8CTA1E",
"type": "customer.payment_method_changed",
"apiVersion": "2026-10-01",
"createdOn": "2026-10-09T11:20:03.274Z",
"storeId": 5,
"livemode": true,
"data": {
"object": {
"customerPaymentMethodId": 30417,
"storeCustomerId": 88214,
"paymentType": "CARD",
"brand": "visa",
"lastFour": "4242",
"expiryMonth": "08",
"expiryYear": "2028",
"isDefault": false,
"isActive": false
},
"changes": null,
"previousAttributes": null
},
"source": { "action": "customer.payment_method_removed", "actorType": "CUSTOMER" }
}
FieldWhat it is
actionThe internal action behind the event. Useful for logging and for telling apart actions that share a type; the set can grow.
actorTypeWho caused the change.
actorTypeMeaning
ADMINA store admin, in the Open Shop admin.
CUSTOMERThe customer, on the storefront or in their account.
API_TOKENAn integration calling the API with an app token.
SYSTEMOpen Shop itself: scheduled renewals, carrier and fulfillment syncs, sweeps.
PLATFORMOpen Shop platform tooling acting on the store’s behalf.