BigCommerce · AsyncAPI Specification

BigCommerce Webhooks

Version 1.0.0

AsyncAPI description of BigCommerce's outbound webhook surface. BigCommerce delivers near real-time event notifications by issuing HTTP POST requests with a JSON body to a customer-configured destination URL (port 443, HTTPS only). Subscribers register a scope (event type) and a destination using the Webhooks v3 Management API. Every callback payload uses a common envelope identified by a `scope` field that names the event class (e.g. `store/order/created`). The light data object carried in the payload is intentionally small; consumers are expected to call the relevant REST resource (e.g. Orders, Products) to obtain the full record. Wildcard scopes (e.g. `store/order/*`, `store/product/*`, `store/customer/*`, `store/cart/*`, `store/category/*`, `store/shipment/*`, `store/sku/*`, `store/subscriber/*`, `store/cart/lineItem/*`) subscribe the listener to every event in that resource family in a single subscription. Source documentation: - Events reference: https://developer.bigcommerce.com/docs/integrations/webhooks/events - Webhooks overview: https://developer.bigcommerce.com/docs/integrations/webhooks - Channel webhooks: https://developer.bigcommerce.com/docs/integrations/webhooks/events/channels - Inventory and Location: https://developer.bigcommerce.com/docs/integrations/webhooks/events/inventory-location - Webhooks v3 API: https://developer.bigcommerce.com/docs/rest-management/webhooks Notes on modeling: - Only event scopes explicitly documented by BigCommerce are modeled. - The data sub-object varies by scope; documented fields are included verbatim, and undocumented fields are left as additionalProperties. - Channel-scoped events use the pattern `store/channel/{channel_id}/...`; one representative channel for each documented family is modeled, with the channel_id captured as a parameter on the channel address.

View Spec View on GitHub E-CommerceRetailCatalogOrdersCheckoutPaymentsSaaSAsyncAPIWebhooksEvents

Channels

store/app/uninstalled
subscribe onAppUninstalled
An app has been uninstalled from a store.
Fires when an app is uninstalled from a BigCommerce store.
store/information/updated
subscribe onStoreInformationUpdated
Store profile / information was updated.
Fires when a store's profile information is updated.
store/cart/created
subscribe onCartCreated
A cart was created.
Fires when a new cart is created.
store/cart/updated
subscribe onCartUpdated
A cart was updated.
Fires when a cart is updated. Also fires on cart creation because new carts begin empty.
store/cart/deleted
subscribe onCartDeleted
A cart was deleted.
Fires when a cart is deleted.
store/cart/couponApplied
subscribe onCartCouponApplied
A coupon was applied to a cart.
Fires when a coupon code is applied to a cart.
store/cart/abandoned
subscribe onCartAbandoned
A cart was abandoned.
Fires when a cart is marked abandoned (no activity for the configured timeout).
store/cart/converted
subscribe onCartConverted
A cart was converted to an order.
Fires when a cart is converted into an order.
store/cart/lineItem/created
subscribe onCartLineItemCreated
A line item was added to a cart.
Fires when a line item is added to a cart.
store/cart/lineItem/updated
subscribe onCartLineItemUpdated
A line item in a cart was updated.
Fires when a line item in a cart is updated.
store/cart/lineItem/deleted
subscribe onCartLineItemDeleted
A line item was removed from a cart.
Fires when a line item is removed from a cart.
store/category/created
subscribe onCategoryCreated
A category was created.
Fires when a category is created.
store/category/updated
subscribe onCategoryUpdated
A category was updated.
Fires when a category is updated.
store/category/deleted
subscribe onCategoryDeleted
A category was deleted.
Fires when a category is deleted.
store/customer/created
subscribe onCustomerCreated
A customer was created.
Fires when a customer is created.
store/customer/updated
subscribe onCustomerUpdated
A customer was updated.
Fires when a customer is updated.
store/customer/deleted
subscribe onCustomerDeleted
A customer was deleted.
Fires when a customer is deleted.
store/customer/address/created
subscribe onCustomerAddressCreated
A customer address was created.
Fires when a customer address is created.
store/customer/address/updated
subscribe onCustomerAddressUpdated
A customer address was updated.
Fires when a customer address is updated.
store/customer/address/deleted
subscribe onCustomerAddressDeleted
A customer address was deleted.
Fires when a customer address is deleted.
store/customer/payment/instrument/default/updated
subscribe onCustomerDefaultPaymentInstrumentUpdated
Customer default payment instrument was updated.
Fires when a customer's default stored payment instrument changes.
store/order/created
subscribe onOrderCreated
An order was created.
Fires when an order is created.
store/order/updated
subscribe onOrderUpdated
An order was updated.
Fires when an order is updated.
store/order/archived
subscribe onOrderArchived
An order was archived.
Fires when an order is archived.
store/order/statusUpdated
subscribe onOrderStatusUpdated
An order status was updated.
Fires when an order's status changes.
store/order/message/created
subscribe onOrderMessageCreated
An order message was created.
Fires when an order message is created.
store/order/refund/created
subscribe onOrderRefundCreated
A refund was created for an order.
Fires when a refund is created for an order.
store/order/transaction/created
subscribe onOrderTransactionCreated
An order transaction was created.
Fires when an order transaction is created.
store/order/transaction/updated
subscribe onOrderTransactionUpdated
An order transaction was updated.
Fires when an order transaction is updated.
store/product/created
subscribe onProductCreated
A product was created.
Fires when a product is created.
store/product/updated
subscribe onProductUpdated
A product was updated.
Fires when a product is updated.
store/product/deleted
subscribe onProductDeleted
A product was deleted.
Fires when a product is deleted.
store/product/inventory/updated
subscribe onProductInventoryUpdated
Product inventory was updated.
Fires when product inventory is updated via API or control panel (absolute change).
store/product/inventory/order/updated
subscribe onProductInventoryOrderUpdated
Product inventory updated by an order.
Fires when product inventory changes as the result of an order (relative change).
store/shipment/created
subscribe onShipmentCreated
A shipment was created.
Fires when a shipment is created for an order.
store/shipment/updated
subscribe onShipmentUpdated
A shipment was updated.
Fires when a shipment is updated.
store/shipment/deleted
subscribe onShipmentDeleted
A shipment was deleted.
Fires when a shipment is deleted.
store/sku/created
subscribe onSkuCreated
A SKU was created.
Fires when a SKU is created.
store/sku/updated
subscribe onSkuUpdated
A SKU was updated.
Fires when a SKU is updated.
store/sku/deleted
subscribe onSkuDeleted
A SKU was deleted.
Fires when a SKU is deleted.
store/sku/inventory/updated
subscribe onSkuInventoryUpdated
SKU inventory was updated.
Fires when SKU-level inventory is updated via API or control panel (absolute change).
store/sku/inventory/order/updated
subscribe onSkuInventoryOrderUpdated
SKU inventory updated by an order.
Fires when SKU-level inventory changes as the result of an order (relative change).
store/subscriber/created
subscribe onSubscriberCreated
A subscriber was created.
Fires when a marketing subscriber is created.
store/subscriber/updated
subscribe onSubscriberUpdated
A subscriber was updated.
Fires when a marketing subscriber is updated.
store/subscriber/deleted
subscribe onSubscriberDeleted
A subscriber was deleted.
Fires when a marketing subscriber is deleted.
store/channel/created
subscribe onChannelCreated
A channel was created.
Fires when a channel is created.
store/channel/updated
subscribe onChannelUpdated
A channel was updated.
Fires when a channel is updated.
store/inventory/location/created
subscribe onInventoryLocationCreated
An inventory location was created.
Fires when an inventory location is created.
store/inventory/location/updated
subscribe onInventoryLocationUpdated
An inventory location was updated.
Fires when an inventory location is updated.
store/metafield/created
subscribe onStoreMetafieldCreated
Fires when a store-level metafield is created.
store/metafield/updated
subscribe onStoreMetafieldUpdated
Fires when a store-level metafield is updated.
store/metafield/deleted
subscribe onStoreMetafieldDeleted
Fires when a store-level metafield is deleted.
store/brand/metafield/created
subscribe onBrandMetafieldCreated
Fires when a brand metafield is created.
store/brand/metafield/updated
subscribe onBrandMetafieldUpdated
Fires when a brand metafield is updated.
store/brand/metafield/deleted
subscribe onBrandMetafieldDeleted
Fires when a brand metafield is deleted.
store/cart/metafield/created
subscribe onCartMetafieldCreated
Fires when a cart metafield is created.
store/cart/metafield/updated
subscribe onCartMetafieldUpdated
Fires when a cart metafield is updated.
store/cart/metafield/deleted
subscribe onCartMetafieldDeleted
Fires when a cart metafield is deleted.
store/category/metafield/created
subscribe onCategoryMetafieldCreated
Fires when a category metafield is created.
store/category/metafield/updated
subscribe onCategoryMetafieldUpdated
Fires when a category metafield is updated.
store/category/metafield/deleted
subscribe onCategoryMetafieldDeleted
Fires when a category metafield is deleted.
store/channel/metafield/created
subscribe onChannelMetafieldCreated
Fires when a channel metafield is created.
store/channel/metafield/updated
subscribe onChannelMetafieldUpdated
Fires when a channel metafield is updated.
store/channel/metafield/deleted
subscribe onChannelMetafieldDeleted
Fires when a channel metafield is deleted.
store/order/metafield/created
subscribe onOrderMetafieldCreated
Fires when an order metafield is created.
store/order/metafield/updated
subscribe onOrderMetafieldUpdated
Fires when an order metafield is updated.
store/order/metafield/deleted
subscribe onOrderMetafieldDeleted
Fires when an order metafield is deleted.
store/product/metafield/created
subscribe onProductMetafieldCreated
Fires when a product metafield is created.
store/product/metafield/updated
subscribe onProductMetafieldUpdated
Fires when a product metafield is updated.
store/product/metafield/deleted
subscribe onProductMetafieldDeleted
Fires when a product metafield is deleted.
store/product/variant/metafield/created
subscribe onProductVariantMetafieldCreated
Fires when a product variant metafield is created.
store/product/variant/metafield/updated
subscribe onProductVariantMetafieldUpdated
Fires when a product variant metafield is updated.
store/product/variant/metafield/deleted
subscribe onProductVariantMetafieldDeleted
Fires when a product variant metafield is deleted.
store/inventory/location/metafield/created
subscribe onInventoryLocationMetafieldCreated
Fires when an inventory-location metafield is created.
store/inventory/location/metafield/updated
subscribe onInventoryLocationMetafieldUpdated
Fires when an inventory-location metafield is updated.
store/inventory/location/metafield/deleted
subscribe onInventoryLocationMetafieldDeleted
Fires when an inventory-location metafield is deleted.
store/hook/deliveryException
subscribe onHookDeliveryException
A webhook delivery exception occurred.
Fires when delivery of a previous webhook to the subscriber's endpoint failed.
store/modifier/updated
subscribe onModifierUpdated
Fires when a product modifier is updated.
store/option/updated
subscribe onOptionUpdated
Fires when a product option is updated.
store/channel/{channel_id}/cart/created
subscribe onChannelCartCreated
Channel-scoped cart created event.
store/channel/{channel_id}/cart/lineItems/created
subscribe onChannelCartLineItemsCreated
Channel-scoped cart line item created event.
store/channel/{channel_id}/category/created
subscribe onChannelCategoryCreated
Channel-scoped category created event.
store/channel/{channel_id}/categoryTree/updated
subscribe onChannelCategoryTreeUpdated
Channel-scoped category tree updated event.
store/channel/{channel_id}/notifications/abandonedCart/updated
subscribe onChannelAbandonedCartNotificationsUpdated
Channel-scoped abandoned-cart notification settings updated.
store/channel/{channel_id}/order/updated
subscribe onChannelOrderUpdated
Channel-scoped order updated event.
store/channel/{channel_id}/page/created
subscribe onChannelPageCreated
Channel-scoped page created event.
store/channel/{channel_id}/product/assigned
subscribe onChannelProductAssigned
Channel-scoped product assignment event.
store/channel/{channel_id}/script/created
subscribe onChannelScriptCreated
Channel-scoped script created event.
store/channel/{channel_id}/settings/emailStatus/updated
subscribe onChannelEmailStatusUpdated
Channel-scoped email-status settings updated.
store/channel/{channel_id}/settings/route/updated
subscribe onChannelRouteUpdated
Channel-scoped routing settings updated.
store/channel/{channel_id}/settings/searchContextFilters/updated
subscribe onChannelSearchContextFiltersUpdated
Channel-scoped search-context filters updated.
store/channel/{channel_id}/settings/site/updated
subscribe onChannelSiteSettingsUpdated
Channel-scoped site settings updated.
store/channel/{channel_id}/socialMediaLinks/updated
subscribe onChannelSocialMediaLinksUpdated
Channel-scoped social media links updated.
store/channel/{channel_id}/theme/configuration/created
subscribe onChannelThemeConfigurationCreated
Channel-scoped theme configuration created event.
store/channel/{channel_id}/inventory/product/low_stock_reached
subscribe onChannelInventoryProductLowStockReached
Channel-scoped product low-stock threshold reached.
store/channel/{channel_id}/inventory/product/out_of_stock_reached
subscribe onChannelInventoryProductOutOfStockReached
Channel-scoped product reached out-of-stock.
store/channel/{channel_id}/inventory/product/settings_changed
subscribe onChannelInventoryProductSettingsChanged
Channel-scoped inventory settings changed for a product.
store/channel/{channel_id}/inventory/product/stock_changed
subscribe onChannelInventoryProductStockChanged
Channel-scoped product stock changed.

Messages

AppUninstalled
store/app/uninstalled
An app has been uninstalled from the store.
StoreInformationUpdated
store/information/updated
CartCreated
store/cart/created
CartUpdated
store/cart/updated
CartDeleted
store/cart/deleted
CartCouponApplied
store/cart/couponApplied
CartAbandoned
store/cart/abandoned
CartConverted
store/cart/converted
CartLineItemCreated
store/cart/lineItem/created
CartLineItemUpdated
store/cart/lineItem/updated
CartLineItemDeleted
store/cart/lineItem/deleted
CategoryCreated
store/category/created
CategoryUpdated
store/category/updated
CategoryDeleted
store/category/deleted
CustomerCreated
store/customer/created
CustomerUpdated
store/customer/updated
CustomerDeleted
store/customer/deleted
CustomerAddressCreated
store/customer/address/created
CustomerAddressUpdated
store/customer/address/updated
CustomerAddressDeleted
store/customer/address/deleted
CustomerDefaultPaymentInstrumentUpdated
store/customer/payment/instrument/default/updated
OrderCreated
store/order/created
OrderUpdated
store/order/updated
OrderArchived
store/order/archived
OrderStatusUpdated
store/order/statusUpdated
OrderMessageCreated
store/order/message/created
OrderRefundCreated
store/order/refund/created
OrderTransactionCreated
store/order/transaction/created
OrderTransactionUpdated
store/order/transaction/updated
ProductCreated
store/product/created
ProductUpdated
store/product/updated
ProductDeleted
store/product/deleted
ProductInventoryUpdated
store/product/inventory/updated
ProductInventoryOrderUpdated
store/product/inventory/order/updated
ShipmentCreated
store/shipment/created
ShipmentUpdated
store/shipment/updated
ShipmentDeleted
store/shipment/deleted
SkuCreated
store/sku/created
SkuUpdated
store/sku/updated
SkuDeleted
store/sku/deleted
SkuInventoryUpdated
store/sku/inventory/updated
SkuInventoryOrderUpdated
store/sku/inventory/order/updated
SubscriberCreated
store/subscriber/created
SubscriberUpdated
store/subscriber/updated
SubscriberDeleted
store/subscriber/deleted
ChannelCreated
store/channel/created
ChannelUpdated
store/channel/updated
InventoryLocationCreated
store/inventory/location/created
InventoryLocationUpdated
store/inventory/location/updated
StoreMetafieldCreated
store/metafield/created
StoreMetafieldUpdated
store/metafield/updated
StoreMetafieldDeleted
store/metafield/deleted
BrandMetafieldCreated
store/brand/metafield/created
BrandMetafieldUpdated
store/brand/metafield/updated
BrandMetafieldDeleted
store/brand/metafield/deleted
CartMetafieldCreated
store/cart/metafield/created
CartMetafieldUpdated
store/cart/metafield/updated
CartMetafieldDeleted
store/cart/metafield/deleted
CategoryMetafieldCreated
store/category/metafield/created
CategoryMetafieldUpdated
store/category/metafield/updated
CategoryMetafieldDeleted
store/category/metafield/deleted
ChannelMetafieldCreated
store/channel/metafield/created
ChannelMetafieldUpdated
store/channel/metafield/updated
ChannelMetafieldDeleted
store/channel/metafield/deleted
OrderMetafieldCreated
store/order/metafield/created
OrderMetafieldUpdated
store/order/metafield/updated
OrderMetafieldDeleted
store/order/metafield/deleted
ProductMetafieldCreated
store/product/metafield/created
ProductMetafieldUpdated
store/product/metafield/updated
ProductMetafieldDeleted
store/product/metafield/deleted
ProductVariantMetafieldCreated
store/product/variant/metafield/created
ProductVariantMetafieldUpdated
store/product/variant/metafield/updated
ProductVariantMetafieldDeleted
store/product/variant/metafield/deleted
InventoryLocationMetafieldCreated
store/inventory/location/metafield/created
InventoryLocationMetafieldUpdated
store/inventory/location/metafield/updated
InventoryLocationMetafieldDeleted
store/inventory/location/metafield/deleted
HookDeliveryException
store/hook/deliveryException
A previous webhook callback failed to deliver. Useful for observing delivery health of other subscriptions.
ModifierUpdated
store/modifier/updated
OptionUpdated
store/option/updated
ChannelCartCreated
store/channel/{channel_id}/cart/created
ChannelCartLineItemsCreated
store/channel/{channel_id}/cart/lineItems/created
ChannelCategoryCreated
store/channel/{channel_id}/category/created
ChannelCategoryTreeUpdated
store/channel/{channel_id}/categoryTree/updated
ChannelAbandonedCartNotificationsUpdated
store/channel/{channel_id}/notifications/abandonedCart/updated
ChannelOrderUpdated
store/channel/{channel_id}/order/updated
ChannelPageCreated
store/channel/{channel_id}/page/created
ChannelProductAssigned
store/channel/{channel_id}/product/assigned
ChannelScriptCreated
store/channel/{channel_id}/script/created
ChannelEmailStatusUpdated
store/channel/{channel_id}/settings/emailStatus/updated
ChannelRouteUpdated
store/channel/{channel_id}/settings/route/updated
ChannelSearchContextFiltersUpdated
store/channel/{channel_id}/settings/searchContextFilters/updated
ChannelSiteSettingsUpdated
store/channel/{channel_id}/settings/site/updated
ChannelSocialMediaLinksUpdated
store/channel/{channel_id}/socialMediaLinks/updated
ChannelThemeConfigurationCreated
store/channel/{channel_id}/theme/configuration/created
ChannelInventoryProductLowStockReached
store/channel/{channel_id}/inventory/product/low_stock_reached
ChannelInventoryProductOutOfStockReached
store/channel/{channel_id}/inventory/product/out_of_stock_reached
ChannelInventoryProductSettingsChanged
store/channel/{channel_id}/inventory/product/settings_changed
ChannelInventoryProductStockChanged
store/channel/{channel_id}/inventory/product/stock_changed

Servers

https
subscriber {webhookUrl}
Customer-hosted HTTPS endpoint that receives webhook POSTs from BigCommerce. The full URL is registered per webhook subscription via the Webhooks v3 API. Custom ports are not supported; port 443 is required.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: BigCommerce Webhooks
  version: '1.0.0'
  description: |-
    AsyncAPI description of BigCommerce's outbound webhook surface. BigCommerce
    delivers near real-time event notifications by issuing HTTP POST requests
    with a JSON body to a customer-configured destination URL (port 443, HTTPS
    only). Subscribers register a scope (event type) and a destination using
    the Webhooks v3 Management API.

    Every callback payload uses a common envelope identified by a `scope` field
    that names the event class (e.g. `store/order/created`). The light data
    object carried in the payload is intentionally small; consumers are
    expected to call the relevant REST resource (e.g. Orders, Products) to
    obtain the full record.

    Wildcard scopes (e.g. `store/order/*`, `store/product/*`,
    `store/customer/*`, `store/cart/*`, `store/category/*`,
    `store/shipment/*`, `store/sku/*`, `store/subscriber/*`,
    `store/cart/lineItem/*`) subscribe the listener to every event in that
    resource family in a single subscription.

    Source documentation:
      - Events reference:        https://developer.bigcommerce.com/docs/integrations/webhooks/events
      - Webhooks overview:       https://developer.bigcommerce.com/docs/integrations/webhooks
      - Channel webhooks:        https://developer.bigcommerce.com/docs/integrations/webhooks/events/channels
      - Inventory and Location:  https://developer.bigcommerce.com/docs/integrations/webhooks/events/inventory-location
      - Webhooks v3 API:         https://developer.bigcommerce.com/docs/rest-management/webhooks

    Notes on modeling:
      - Only event scopes explicitly documented by BigCommerce are modeled.
      - The data sub-object varies by scope; documented fields are included
        verbatim, and undocumented fields are left as additionalProperties.
      - Channel-scoped events use the pattern
        `store/channel/{channel_id}/...`; one representative channel for
        each documented family is modeled, with the channel_id captured as
        a parameter on the channel address.
  contact:
    name: BigCommerce Developer Support
    url: https://support.bigcommerce.com/s/
  license:
    name: BigCommerce Developer Terms
    url: https://www.bigcommerce.com/terms/api-terms/

defaultContentType: application/json

servers:
  subscriber:
    url: '{webhookUrl}'
    protocol: https
    description: |-
      Customer-hosted HTTPS endpoint that receives webhook POSTs from
      BigCommerce. The full URL is registered per webhook subscription via
      the Webhooks v3 API. Custom ports are not supported; port 443 is
      required.
    variables:
      webhookUrl:
        default: https://example.com/bigcommerce/webhook
        description: Fully-qualified HTTPS URL of the subscriber endpoint.

channels:
  store/app/uninstalled:
    description: Fires when an app is uninstalled from a BigCommerce store.
    subscribe:
      operationId: onAppUninstalled
      summary: An app has been uninstalled from a store.
      message:
        $ref: '#/components/messages/AppUninstalled'

  store/information/updated:
    description: Fires when a store's profile information is updated.
    subscribe:
      operationId: onStoreInformationUpdated
      summary: Store profile / information was updated.
      message:
        $ref: '#/components/messages/StoreInformationUpdated'

  store/cart/created:
    description: Fires when a new cart is created.
    subscribe:
      operationId: onCartCreated
      summary: A cart was created.
      message:
        $ref: '#/components/messages/CartCreated'

  store/cart/updated:
    description: Fires when a cart is updated. Also fires on cart creation because new carts begin empty.
    subscribe:
      operationId: onCartUpdated
      summary: A cart was updated.
      message:
        $ref: '#/components/messages/CartUpdated'

  store/cart/deleted:
    description: Fires when a cart is deleted.
    subscribe:
      operationId: onCartDeleted
      summary: A cart was deleted.
      message:
        $ref: '#/components/messages/CartDeleted'

  store/cart/couponApplied:
    description: Fires when a coupon code is applied to a cart.
    subscribe:
      operationId: onCartCouponApplied
      summary: A coupon was applied to a cart.
      message:
        $ref: '#/components/messages/CartCouponApplied'

  store/cart/abandoned:
    description: Fires when a cart is marked abandoned (no activity for the configured timeout).
    subscribe:
      operationId: onCartAbandoned
      summary: A cart was abandoned.
      message:
        $ref: '#/components/messages/CartAbandoned'

  store/cart/converted:
    description: Fires when a cart is converted into an order.
    subscribe:
      operationId: onCartConverted
      summary: A cart was converted to an order.
      message:
        $ref: '#/components/messages/CartConverted'

  store/cart/lineItem/created:
    description: Fires when a line item is added to a cart.
    subscribe:
      operationId: onCartLineItemCreated
      summary: A line item was added to a cart.
      message:
        $ref: '#/components/messages/CartLineItemCreated'

  store/cart/lineItem/updated:
    description: Fires when a line item in a cart is updated.
    subscribe:
      operationId: onCartLineItemUpdated
      summary: A line item in a cart was updated.
      message:
        $ref: '#/components/messages/CartLineItemUpdated'

  store/cart/lineItem/deleted:
    description: Fires when a line item is removed from a cart.
    subscribe:
      operationId: onCartLineItemDeleted
      summary: A line item was removed from a cart.
      message:
        $ref: '#/components/messages/CartLineItemDeleted'

  store/category/created:
    description: Fires when a category is created.
    subscribe:
      operationId: onCategoryCreated
      summary: A category was created.
      message:
        $ref: '#/components/messages/CategoryCreated'

  store/category/updated:
    description: Fires when a category is updated.
    subscribe:
      operationId: onCategoryUpdated
      summary: A category was updated.
      message:
        $ref: '#/components/messages/CategoryUpdated'

  store/category/deleted:
    description: Fires when a category is deleted.
    subscribe:
      operationId: onCategoryDeleted
      summary: A category was deleted.
      message:
        $ref: '#/components/messages/CategoryDeleted'

  store/customer/created:
    description: Fires when a customer is created.
    subscribe:
      operationId: onCustomerCreated
      summary: A customer was created.
      message:
        $ref: '#/components/messages/CustomerCreated'

  store/customer/updated:
    description: Fires when a customer is updated.
    subscribe:
      operationId: onCustomerUpdated
      summary: A customer was updated.
      message:
        $ref: '#/components/messages/CustomerUpdated'

  store/customer/deleted:
    description: Fires when a customer is deleted.
    subscribe:
      operationId: onCustomerDeleted
      summary: A customer was deleted.
      message:
        $ref: '#/components/messages/CustomerDeleted'

  store/customer/address/created:
    description: Fires when a customer address is created.
    subscribe:
      operationId: onCustomerAddressCreated
      summary: A customer address was created.
      message:
        $ref: '#/components/messages/CustomerAddressCreated'

  store/customer/address/updated:
    description: Fires when a customer address is updated.
    subscribe:
      operationId: onCustomerAddressUpdated
      summary: A customer address was updated.
      message:
        $ref: '#/components/messages/CustomerAddressUpdated'

  store/customer/address/deleted:
    description: Fires when a customer address is deleted.
    subscribe:
      operationId: onCustomerAddressDeleted
      summary: A customer address was deleted.
      message:
        $ref: '#/components/messages/CustomerAddressDeleted'

  store/customer/payment/instrument/default/updated:
    description: Fires when a customer's default stored payment instrument changes.
    subscribe:
      operationId: onCustomerDefaultPaymentInstrumentUpdated
      summary: Customer default payment instrument was updated.
      message:
        $ref: '#/components/messages/CustomerDefaultPaymentInstrumentUpdated'

  store/order/created:
    description: Fires when an order is created.
    subscribe:
      operationId: onOrderCreated
      summary: An order was created.
      message:
        $ref: '#/components/messages/OrderCreated'

  store/order/updated:
    description: Fires when an order is updated.
    subscribe:
      operationId: onOrderUpdated
      summary: An order was updated.
      message:
        $ref: '#/components/messages/OrderUpdated'

  store/order/archived:
    description: Fires when an order is archived.
    subscribe:
      operationId: onOrderArchived
      summary: An order was archived.
      message:
        $ref: '#/components/messages/OrderArchived'

  store/order/statusUpdated:
    description: Fires when an order's status changes.
    subscribe:
      operationId: onOrderStatusUpdated
      summary: An order status was updated.
      message:
        $ref: '#/components/messages/OrderStatusUpdated'

  store/order/message/created:
    description: Fires when an order message is created.
    subscribe:
      operationId: onOrderMessageCreated
      summary: An order message was created.
      message:
        $ref: '#/components/messages/OrderMessageCreated'

  store/order/refund/created:
    description: Fires when a refund is created for an order.
    subscribe:
      operationId: onOrderRefundCreated
      summary: A refund was created for an order.
      message:
        $ref: '#/components/messages/OrderRefundCreated'

  store/order/transaction/created:
    description: Fires when an order transaction is created.
    subscribe:
      operationId: onOrderTransactionCreated
      summary: An order transaction was created.
      message:
        $ref: '#/components/messages/OrderTransactionCreated'

  store/order/transaction/updated:
    description: Fires when an order transaction is updated.
    subscribe:
      operationId: onOrderTransactionUpdated
      summary: An order transaction was updated.
      message:
        $ref: '#/components/messages/OrderTransactionUpdated'

  store/product/created:
    description: Fires when a product is created.
    subscribe:
      operationId: onProductCreated
      summary: A product was created.
      message:
        $ref: '#/components/messages/ProductCreated'

  store/product/updated:
    description: Fires when a product is updated.
    subscribe:
      operationId: onProductUpdated
      summary: A product was updated.
      message:
        $ref: '#/components/messages/ProductUpdated'

  store/product/deleted:
    description: Fires when a product is deleted.
    subscribe:
      operationId: onProductDeleted
      summary: A product was deleted.
      message:
        $ref: '#/components/messages/ProductDeleted'

  store/product/inventory/updated:
    description: Fires when product inventory is updated via API or control panel (absolute change).
    subscribe:
      operationId: onProductInventoryUpdated
      summary: Product inventory was updated.
      message:
        $ref: '#/components/messages/ProductInventoryUpdated'

  store/product/inventory/order/updated:
    description: Fires when product inventory changes as the result of an order (relative change).
    subscribe:
      operationId: onProductInventoryOrderUpdated
      summary: Product inventory updated by an order.
      message:
        $ref: '#/components/messages/ProductInventoryOrderUpdated'

  store/shipment/created:
    description: Fires when a shipment is created for an order.
    subscribe:
      operationId: onShipmentCreated
      summary: A shipment was created.
      message:
        $ref: '#/components/messages/ShipmentCreated'

  store/shipment/updated:
    description: Fires when a shipment is updated.
    subscribe:
      operationId: onShipmentUpdated
      summary: A shipment was updated.
      message:
        $ref: '#/components/messages/ShipmentUpdated'

  store/shipment/deleted:
    description: Fires when a shipment is deleted.
    subscribe:
      operationId: onShipmentDeleted
      summary: A shipment was deleted.
      message:
        $ref: '#/components/messages/ShipmentDeleted'

  store/sku/created:
    description: Fires when a SKU is created.
    subscribe:
      operationId: onSkuCreated
      summary: A SKU was created.
      message:
        $ref: '#/components/messages/SkuCreated'

  store/sku/updated:
    description: Fires when a SKU is updated.
    subscribe:
      operationId: onSkuUpdated
      summary: A SKU was updated.
      message:
        $ref: '#/components/messages/SkuUpdated'

  store/sku/deleted:
    description: Fires when a SKU is deleted.
    subscribe:
      operationId: onSkuDeleted
      summary: A SKU was deleted.
      message:
        $ref: '#/components/messages/SkuDeleted'

  store/sku/inventory/updated:
    description: Fires when SKU-level inventory is updated via API or control panel (absolute change).
    subscribe:
      operationId: onSkuInventoryUpdated
      summary: SKU inventory was updated.
      message:
        $ref: '#/components/messages/SkuInventoryUpdated'

  store/sku/inventory/order/updated:
    description: Fires when SKU-level inventory changes as the result of an order (relative change).
    subscribe:
      operationId: onSkuInventoryOrderUpdated
      summary: SKU inventory updated by an order.
      message:
        $ref: '#/components/messages/SkuInventoryOrderUpdated'

  store/subscriber/created:
    description: Fires when a marketing subscriber is created.
    subscribe:
      operationId: onSubscriberCreated
      summary: A subscriber was created.
      message:
        $ref: '#/components/messages/SubscriberCreated'

  store/subscriber/updated:
    description: Fires when a marketing subscriber is updated.
    subscribe:
      operationId: onSubscriberUpdated
      summary: A subscriber was updated.
      message:
        $ref: '#/components/messages/SubscriberUpdated'

  store/subscriber/deleted:
    description: Fires when a marketing subscriber is deleted.
    subscribe:
      operationId: onSubscriberDeleted
      summary: A subscriber was deleted.
      message:
        $ref: '#/components/messages/SubscriberDeleted'

  store/channel/created:
    description: Fires when a channel is created.
    subscribe:
      operationId: onChannelCreated
      summary: A channel was created.
      message:
        $ref: '#/components/messages/ChannelCreated'

  store/channel/updated:
    description: Fires when a channel is updated.
    subscribe:
      operationId: onChannelUpdated
      summary: A channel was updated.
      message:
        $ref: '#/components/messages/ChannelUpdated'

  store/inventory/location/created:
    description: Fires when an inventory location is created.
    subscribe:
      operationId: onInventoryLocationCreated
      summary: An inventory location was created.
      message:
        $ref: '#/components/messages/InventoryLocationCreated'

  store/inventory/location/updated:
    description: Fires when an inventory location is updated.
    subscribe:
      operationId: onInventoryLocationUpdated
      summary: An inventory location was updated.
      message:
        $ref: '#/components/messages/InventoryLocationUpdated'

  store/metafield/created:
    description: Fires when a store-level metafield is created.
    subscribe:
      operationId: onStoreMetafieldCreated
      message:
        $ref: '#/components/messages/StoreMetafieldCreated'

  store/metafield/updated:
    description: Fires when a store-level metafield is updated.
    subscribe:
      operationId: onStoreMetafieldUpdated
      message:
        $ref: '#/components/messages/StoreMetafieldUpdated'

  store/metafield/deleted:
    description: Fires when a store-level metafield is deleted.
    subscribe:
      operationId: onStoreMetafieldDeleted
      message:
        $ref: '#/components/messages/StoreMetafieldDeleted'

  store/brand/metafield/created:
    description: Fires when a brand metafield is created.
    subscribe:
      operationId: onBrandMetafieldCreated
      message:
        $ref: '#/components/messages/BrandMetafieldCreated'

  store/brand/metafield/updated:
    description: Fires when a brand metafield is updated.
    subscribe:
      operationId: onBrandMetafieldUpdated
      message:
        $ref: '#/components/messages/BrandMetafieldUpdated'

  store/brand/metafield/deleted:
    description: Fires when a brand metafield is deleted.
    subscribe:
      operationId: onBrandMetafieldDeleted
      message:
        $ref: '#/components/messages/BrandMetafieldDeleted'

  store/cart/metafield/created:
    description: Fires when a cart metafield is created.
    subscribe:
      operationId: onCartMetafieldCreated
      message:
        $ref: '#/components/messages/CartMetafieldCreated'

  store/cart/metafield/updated:
    description: Fires when a cart metafield is updated.
    subscribe:
      operationId: onCartMetafieldUpdated
      message:
        $ref: '#/components/messages/CartMetafieldUpdated'

  store/cart/metafield/deleted:
    description: Fires when a cart metafield is deleted.
    subscribe:
      operationId: onCartMetafieldDeleted
      message:
        $ref: '#/components/messages/CartMetafieldDeleted'

  store/category/metafield/created:
    description: Fires when a category metafield is created.
    subscribe:
      operationId: onCategoryMetafieldCreated
      message:
        $ref: '#/components/messages/CategoryMetafieldCreated'

  store/category/metafield/updated:
    description: Fires when a category metafield is updated.
    subscribe:
      operationId: onCategoryMetafieldUpdated
      message:
        $ref: '#/components/messages/CategoryMetafieldUpdated'

  store/category/metafield/deleted:
    description: Fires when a category metafield is deleted.
    subscribe:
      operationId: onCategoryMetafieldDeleted
      message:
        $ref: '#/components/messages/CategoryMetafieldDeleted'

  store/channel/metafield/created:
    description: Fires when a channel metafield is created.
    subscribe:
      operationId: onChannelMetafieldCreated
      message:
        $ref: '#/components/messages/ChannelMetafieldCreated'

  store/channel/metafield/updated:
    description: Fires when a channel metafield is updated.
    subscribe:
      operationId: onChannelMetafieldUpdated
      message:
        $ref: '#/components/messages/ChannelMetafieldUpdated'

  store/channel/metafield/deleted:
    description: Fires when a channel metafield is deleted.
    subscribe:
      operationId: onChannelMetafieldDeleted
      message:
        $ref: '#/components/messages/ChannelMetafieldDeleted'

  store/order/metafield/created:
    description: Fires when an order metafield is created.
    subscribe:
      operationId: onOrderMetafieldCreated
      message:
        $ref: '#/components/messages/OrderMetafieldCreated'

  store/order/metafield/updated:
    description: Fires when an order metafield is updated.
    subscribe:
      operationId: onOrderMetafieldUpdated
      message:
        $ref: '#/components/messages/OrderMetafieldUpdated'

  store/order/metafield/deleted:
    description: Fires when an order metafield is deleted.
    subscribe:
      operationId: onOrderMetafieldDeleted
      message:
        $ref: '#/components/messages/OrderMetafieldDeleted'

  store/product/metafield/created:
    description: Fires when a product metafield is created.
    subscribe:
      operationId: onProductMetafieldCreated
      message:
        $ref: '#/components/messages/ProductMetafieldCreated'

  store/product/metafield/updated:
    description: Fires when a product metafield is updated.
    subscribe:
      operationId: onProductMetafieldUpdated
      message:
        $ref: '#/components/messages/ProductMetafieldUpdated'

  store/product/metafield/deleted:
    description: Fires when a product metafield is deleted.
    subscribe:
      operationId: onProductMetafieldDeleted
      message:
        $ref: '#/components/messages/ProductMetafieldDeleted'

  store/product/variant/metafield/created:
    description: Fires when a product variant metafield is created.
    subscribe:
      operationId: onProductVariantMetafieldCreated
      message:
        $ref: '#/components/messages/ProductVariantMetafieldCreated'

  store/product/variant/metafield/updated:
    description: Fires when a product variant metafield is updated.
    subscribe:
      operationId: onProductVariantMetafieldUpdated
      message:
        $ref: '#/components/messages/ProductVariantMetafieldUpdated'

  store/product/variant/metafield/deleted:
    description: Fires when a product variant metafield is deleted.
    subscribe:
      operationId: onProductVariantMetafieldDeleted
      message:
        $ref: '#/components/messages/ProductVariantMetafieldDeleted'

  store/inventory/location/metafield/created:
    description: Fires when an inventory-location metafield is created.
    subscribe:
      operationId: onInventoryLocationMetafieldCreated
      message:
        $ref: '#/components/messages/InventoryLocationMetafieldCreated'

  store/inventory/location/metafield/updated:
    description: Fires when an inventory-location metafield is updated.
    subscribe:
      operationId: onInventoryLocationMetafieldUpdated
      message:
        $ref: '#/components/messages/InventoryLocationMetafieldUpdated'

  store/inventory/location/metafield/deleted:
    description: Fires when an inventory-location metafield is deleted.
    subscribe:
      operationId: onInventoryLocationMetafieldDeleted
      message:
        $ref: '#/components/messages/InventoryLocationMetafieldDeleted'

  store/hook/deliveryException:
    description: Fires when delivery of a previous webhook to the subscriber's endpoint failed.
    subscribe:
      operationId: onHookDeliveryException
      summary: A webhook delivery exception occurred.
      message:
        $ref: '#/components/messages/HookDeliveryException'

  store/modifier/updated:
    description: Fires when a product modifier is updated.
    subscribe:
      operationId: onModifierUpdated
      message:
        $ref: '#/components/messages/ModifierUpdated'

  store/option/updated:
    description: Fires when a product option is updated.
    subscribe:
      operationId: onOptionUpdated
      message:
        $ref: '#/components/messages/OptionUpdated'

  store/channel/{channel_id}/cart/created:
    description: Channel-scoped cart created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelCartCreated
      message:
        $ref: '#/components/messages/ChannelCartCreated'

  store/channel/{channel_id}/cart/lineItems/created:
    description: Channel-scoped cart line item created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelCartLineItemsCreated
      message:
        $ref: '#/components/messages/ChannelCartLineItemsCreated'

  store/channel/{channel_id}/category/created:
    description: Channel-scoped category created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelCategoryCreated
      message:
        $ref: '#/components/messages/ChannelCategoryCreated'

  store/channel/{channel_id}/categoryTree/updated:
    description: Channel-scoped category tree updated event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelCategoryTreeUpdated
      message:
        $ref: '#/components/messages/ChannelCategoryTreeUpdated'

  store/channel/{channel_id}/notifications/abandonedCart/updated:
    description: Channel-scoped abandoned-cart notification settings updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelAbandonedCartNotificationsUpdated
      message:
        $ref: '#/components/messages/ChannelAbandonedCartNotificationsUpdated'

  store/channel/{channel_id}/order/updated:
    description: Channel-scoped order updated event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelOrderUpdated
      message:
        $ref: '#/components/messages/ChannelOrderUpdated'

  store/channel/{channel_id}/page/created:
    description: Channel-scoped page created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelPageCreated
      message:
        $ref: '#/components/messages/ChannelPageCreated'

  store/channel/{channel_id}/product/assigned:
    description: Channel-scoped product assignment event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelProductAssigned
      message:
        $ref: '#/components/messages/ChannelProductAssigned'

  store/channel/{channel_id}/script/created:
    description: Channel-scoped script created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelScriptCreated
      message:
        $ref: '#/components/messages/ChannelScriptCreated'

  store/channel/{channel_id}/settings/emailStatus/updated:
    description: Channel-scoped email-status settings updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelEmailStatusUpdated
      message:
        $ref: '#/components/messages/ChannelEmailStatusUpdated'

  store/channel/{channel_id}/settings/route/updated:
    description: Channel-scoped routing settings updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelRouteUpdated
      message:
        $ref: '#/components/messages/ChannelRouteUpdated'

  store/channel/{channel_id}/settings/searchContextFilters/updated:
    description: Channel-scoped search-context filters updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelSearchContextFiltersUpdated
      message:
        $ref: '#/components/messages/ChannelSearchContextFiltersUpdated'

  store/channel/{channel_id}/settings/site/updated:
    description: Channel-scoped site settings updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelSiteSettingsUpdated
      message:
        $ref: '#/components/messages/ChannelSiteSettingsUpdated'

  store/channel/{channel_id}/socialMediaLinks/updated:
    description: Channel-scoped social media links updated.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelSocialMediaLinksUpdated
      message:
        $ref: '#/components/messages/ChannelSocialMediaLinksUpdated'

  store/channel/{channel_id}/theme/configuration/created:
    description: Channel-scoped theme configuration created event.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelThemeConfigurationCreated
      message:
        $ref: '#/components/messages/ChannelThemeConfigurationCreated'

  store/channel/{channel_id}/inventory/product/low_stock_reached:
    description: Channel-scoped product low-stock threshold reached.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelInventoryProductLowStockReached
      message:
        $ref: '#/components/messages/ChannelInventoryProductLowStockReached'

  store/channel/{channel_id}/inventory/product/out_of_stock_reached:
    description: Channel-scoped product reached out-of-stock.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelInventoryProductOutOfStockReached
      message:
        $ref: '#/components/messages/ChannelInventoryProductOutOfStockReached'

  store/channel/{channel_id}/inventory/product/settings_changed:
    description: Channel-scoped inventory settings changed for a product.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelInventoryProductSettingsChanged
      message:
        $ref: '#/components/messages/ChannelInventoryProductSettingsChanged'

  store/channel/{channel_id}/inventory/product/stock_changed:
    description: Channel-scoped product stock changed.
    parameters:
      channel_id:
        $ref: '#/components/parameters/ChannelId'
    subscribe:
      operationId: onChannelInventoryProductStockChanged
      message:
        $ref: '#/components/messages/ChannelInventoryProductStockChanged'

components:
  parameters:
    ChannelId:
      description: Numeric channel identifier (e.g. `1` for the default storefront channel).
      schema:
        type: string
        pattern: '^[0-9]+$'

  schemas:
    Envelope:
      type: object
      description: |-
        Common envelope present on every BigCommerce webhook callback. Per the
        Webhooks overview, every payload includes `scope`, `store_id`,
        `producer`, `created_at`, `hash`, and `data`.
      required:
        - scope
        - store_id
        - data
        - hash
        - created_at
        - producer
      properties:
        scope:
          type: string
          description: Event scope string (e.g. `store/order/created`).
        store_id:
          type: string
          description: BigCommerce store identifier.
        producer:
          type: string
          description: Producer of the event, formatted as `stores/{store_hash}`.
          example: stores/abc123
        created_at:
          type: integer
          format: int64
          description: Unix epoch timestamp (seconds) when the event was generated.
        hash:
          type: string
          description: SHA1-encoded representation of the payload.
        data:
          type: object
          description: Event-specific data object; shape varies by scope.

    ResourceRef:
      type: object
      description: Lightweight reference identifying the resource affected by the event.
      required:
        - type
        - id
      properties:
        type:
          type: string
          description: Resource type name (e.g. `order`, `product`, `cart`).
        id:
          oneOf:
            - type: integer
            - type: string
          description: Identifier of the affected resource.

    CartData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [cart]

    CartLineItemData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [cart_line_item]
            cart_id:
              type: string
              description: Identifier of the parent cart.

    CategoryData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [category]

    CustomerData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [customer]

    CustomerAddressData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [address]
            address:
              type: object
              properties:
                customer_id:
                  type: integer

    OrderData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enum: [order]

    OrderStatusData:
      allOf:
        - $ref: '#/components/schemas/ResourceRef'
        - type: object
          properties:
            type:
              type: string
              enu

# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bigcommerce/refs/heads/main/asyncapi/bigcommerce-webhooks-asyncapi.yml