# Commerce Engine Docs: API Reference Webhooks

> Official documentation for Commerce Engine - The modern headless commerce platform for building scalable e-commerce solutions.

## Webhooks

### Introduction

- [Webhooks](https://www.commercengine.io/docs/api-reference/webhooks/overview.md): Receive HTTP callbacks when things happen in your store — orders, payments, shipments, catalog, customers, store settings and marketplace sync.

### Events

#### Orders

- [Order created](https://www.commercengine.io/docs/api-reference/webhooks/orders/order-created.md): Fires when an order is placed from the storefront, POS, or admin API.
- [Order confirmed](https://www.commercengine.io/docs/api-reference/webhooks/orders/order-confirmed.md): Fires when payment succeeds on an auto-approved store, when an admin accepts an `awaiting_approval` order, or when a bank-transfer/credit-line order settles.
- [Order cancelled](https://www.commercengine.io/docs/api-reference/webhooks/orders/order-cancelled.md): Fires when an order is cancelled by the customer, an admin, the unpaid-order sweeper, or a cancel-and-refund of the only shipment.
- [Order completed](https://www.commercengine.io/docs/api-reference/webhooks/orders/order-completed.md): Fires when every shipment of an order is delivered (courier tracking or manual update).
- [Order updated](https://www.commercengine.io/docs/api-reference/webhooks/orders/order-updated.md): Fires when an order's shipping address is updated from the admin API or a shipment is rejected by the store.

#### Payments

- [Payment successful](https://www.commercengine.io/docs/api-reference/webhooks/payments/payment-successful.md): Fires when a gateway callback, the payment-verification poller, or a bank-transfer settlement marks a payment `success`.
- [Payment failed](https://www.commercengine.io/docs/api-reference/webhooks/payments/payment-failed.md): Fires when a gateway callback or the payment-verification poller marks a payment `failed`.
- [Payment retried](https://www.commercengine.io/docs/api-reference/webhooks/payments/payment-retried.md): Fires when a customer re-initiates payment for an order whose previous attempt is pending or failed. A new `request_number` is issued unless the previous gateway attempt is reused (same gateway, recent attempt), in which case the existing payment row is re-sent as is.
- [Refund initiated](https://www.commercengine.io/docs/api-reference/webhooks/payments/refund-initiated.md): Fires once per refund request when an order or shipment is cancelled with a refundable payment, or a shortfall refund is raised. The payload is enriched from the refund row at delivery time, so `status` reflects the row's current state (normally `pending`); `payment.refund.success`/`failed` follow f…
- [Refund successful](https://www.commercengine.io/docs/api-reference/webhooks/payments/refund-successful.md): Fires when a PayU/Juspay refund callback reports success.
- [Refund failed](https://www.commercengine.io/docs/api-reference/webhooks/payments/refund-failed.md): Fires when a gateway refund callback or the refund-initiation task reports failure.

#### Shipping

- [Shipment created](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-created.md): Fires when shipments are auto-created on order confirmation, or created by scheduling/splitting/replacing a shipment.
- [Shipment updated](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-updated.md): Fires on manual update, bulk update, merge, split, store rejection, and Spine invoice sync. Manual `shipped`/`delivered` status changes arrive as this event, not `shipment.shipped`/`shipment.delivered`.
- [Shipment cancelled](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-cancelled.md): Fires when a shipment is cancelled by an admin, replaced, cancelled by the courier, or cancelled via marketplace order ingest.
- [Shipment delivered](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-delivered.md): Fires when courier tracking reports delivery. Manual delivered updates arrive as `shipment.updated`.
- [Shipment schedule requested](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-schedule-requested.md): Fires when a shipment is submitted for scheduling (auto-approval flow, manual scheduling, or replacement).
- [Shipment scheduled](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-scheduled.md): Fires when a Shiprocket order is created and an AWB is assigned.
- [Shipment shipped](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-shipped.md): Fires when courier tracking reports the shipment as shipped.
- [Shipment returned to origin](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-returned-to-origin.md): Fires when courier tracking reports return-to-origin.
- [Shipment cancelled and refunded](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-cancelled-and-refunded.md): Fires alongside `shipment.cancelled` when a marketplace store cancels-and-refunds a seller-linked shipment.
- [Shipment deleted](https://www.commercengine.io/docs/api-reference/webhooks/shipping/shipment-deleted.md): Fires when an empty or merged shipment record is removed (marketplace seller copies, split leftovers, merge targets).

#### Invoices

- [Invoice created](https://www.commercengine.io/docs/api-reference/webhooks/invoices/invoice-created.md): Fires when a seller invoice is generated for a marketplace-linked shipment.
- [Invoice updated](https://www.commercengine.io/docs/api-reference/webhooks/invoices/invoice-updated.md): Fires when an existing shipment invoice is regenerated.
- [Invoice cancelled](https://www.commercengine.io/docs/api-reference/webhooks/invoices/invoice-cancelled.md): Fires when Spine reports an invoice as cancelled.

#### Carts

- [Cart created](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-created.md): Fires on `POST /carts`, including when an existing active cart is reused.
- [Cart deleted](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-deleted.md): Fires when a cart is deleted by id or by user. Payload is usually the bare `{cart_id}` because the row is gone before enrichment.
- [Cart address updated](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-address-updated.md): Fires when billing/shipping address is set on a cart.
- [Cart coupon applied](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-coupon-applied.md): Fires when a coupon is applied to a cart.
- [Cart coupon removed](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-coupon-removed.md): Fires when a coupon is removed from a cart.
- [Cart loyalty points applied](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-loyalty-points-applied.md): Fires when loyalty points are applied to a cart.
- [Cart loyalty points removed](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-loyalty-points-removed.md): Fires when loyalty points are removed from a cart.
- [Cart credit balance applied](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-credit-balance-applied.md): Fires when store credit is applied to a cart.
- [Cart credit balance removed](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-credit-balance-removed.md): Fires when store credit is removed from a cart.
- [Cart item added](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-item-added.md): Fires when a new line is added via `POST /carts/{id}/items`.
- [Cart item updated](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-item-updated.md): Fires when an existing line's quantity changes.
- [Cart item removed](https://www.commercengine.io/docs/api-reference/webhooks/carts/cart-item-removed.md): Fires when a line is removed (`quantity: 0`). Payload is the bare `{cart_id, product_id, variant_id}`.
- [Wishlist item added](https://www.commercengine.io/docs/api-reference/webhooks/carts/wishlist-item-added.md): Fires when a product is added to a user's wishlist.
- [Wishlist item removed](https://www.commercengine.io/docs/api-reference/webhooks/carts/wishlist-item-removed.md): Fires when a product is removed from a user's wishlist.

#### Catalog

- [Product created](https://www.commercengine.io/docs/api-reference/webhooks/catalog/product-created.md): Fires on `POST /catalog/products`.
- [Product updated](https://www.commercengine.io/docs/api-reference/webhooks/catalog/product-updated.md): Fires on product update, bulk update, channel assignment, and when provider inventory flips `stock_available`.
- [Product deleted](https://www.commercengine.io/docs/api-reference/webhooks/catalog/product-deleted.md): Fires on product delete (soft-delete keeps the full payload; hard-delete sends a minimal dict).
- [Variant created](https://www.commercengine.io/docs/api-reference/webhooks/catalog/variant-created.md): Fires when variants are created via product `PUT` or `POST /catalog/products/{id}/variants`.
- [Variant updated](https://www.commercengine.io/docs/api-reference/webhooks/catalog/variant-updated.md): Fires on variant update, bulk update, channel assignment, and provider stock flips.
- [Variant deleted](https://www.commercengine.io/docs/api-reference/webhooks/catalog/variant-deleted.md): Fires on variant delete.
- [Category created](https://www.commercengine.io/docs/api-reference/webhooks/catalog/category-created.md): Fires on `POST /catalog/categories`.
- [Category updated](https://www.commercengine.io/docs/api-reference/webhooks/catalog/category-updated.md): Fires on category `PUT`.
- [Category deleted](https://www.commercengine.io/docs/api-reference/webhooks/catalog/category-deleted.md): Fires after a category is deleted; children are re-parented first. Payload is `{category_id, category_name}`.
- [Attribute created](https://www.commercengine.io/docs/api-reference/webhooks/catalog/attribute-created.md): Fires on `POST /catalog/attributes`.
- [Attribute updated](https://www.commercengine.io/docs/api-reference/webhooks/catalog/attribute-updated.md): Fires on attribute `PUT`.
- [Attribute deleted](https://www.commercengine.io/docs/api-reference/webhooks/catalog/attribute-deleted.md): Fires after an unused attribute is deleted.
- [Inventory updated](https://www.commercengine.io/docs/api-reference/webhooks/catalog/inventory-updated.md): Fires on stock-in/out, reset, manual activity, reservation on order creation, reduction on shipment creation, restore on cancellation, reservation release, and provider (Spine) sync.

#### Coupons & promotions

- [Coupon created](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/coupon-created.md): Fires on `POST /coupons`.
- [Coupon updated](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/coupon-updated.md): Fires on coupon `PUT` and when the 10-minute expiry sweeper deactivates an expired coupon.
- [Promotion created](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/promotion-created.md): Fires on `POST /promotions`.
- [Promotion updated](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/promotion-updated.md): Fires on promotion `PUT` and when the expiry sweeper deactivates an expired promotion.
- [Promotion deleted](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/promotion-deleted.md): Fires after a promotion is deleted. Payload is `{promotion_id, promotion_name}`.
- [Coupon deleted](https://www.commercengine.io/docs/api-reference/webhooks/coupons-&-promotions/coupon-deleted.md): Fires after a coupon is deleted. Payload is `{coupon_id, coupon_name}` because the row is gone before enrichment.

#### Customers

- [Customer created](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-created.md): Fires on admin `POST /customers` and when an order creates a new customer.
- [Customer updated](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-updated.md): Fires on admin customer `PUT` and when an order updates an existing customer.
- [Customer address created](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-address-created.md): Fires when an address is added from the storefront or admin API.
- [Customer address updated](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-address-updated.md): Fires when an address is updated.
- [Customer address deleted](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-address-deleted.md): Fires after a non-primary address is deleted.
- [Kyc document submitted](https://www.commercengine.io/docs/api-reference/webhooks/customers/kyc-document-submitted.md): Fires when a customer or admin uploads a KYC document.
- [Kyc document updated](https://www.commercengine.io/docs/api-reference/webhooks/customers/kyc-document-updated.md): Fires when a KYC document is updated.
- [Kyc document deleted](https://www.commercengine.io/docs/api-reference/webhooks/customers/kyc-document-deleted.md): Fires after a KYC document is deleted.
- [Kyc document approved](https://www.commercengine.io/docs/api-reference/webhooks/customers/kyc-document-approved.md): Fires when auto-verification approves a document.
- [Kyc document rejected](https://www.commercengine.io/docs/api-reference/webhooks/customers/kyc-document-rejected.md): Fires when auto-verification rejects a document.
- [Customer kyc submitted](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-kyc-submitted.md): Fires when required documents are submitted but not yet all approved.
- [Customer kyc verified](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-kyc-verified.md): Fires when every mandatory document is approved (or none are mandatory).
- [Customer kyc unverified](https://www.commercengine.io/docs/api-reference/webhooks/customers/customer-kyc-unverified.md): Fires when a required document is missing or rejected.
- [Loyalty points earned](https://www.commercengine.io/docs/api-reference/webhooks/customers/loyalty-points-earned.md): Fires on order completion, admin `add` activity, and redemption reversal on cancellation.
- [Loyalty points redeemed](https://www.commercengine.io/docs/api-reference/webhooks/customers/loyalty-points-redeemed.md): Fires on order confirmation when points were redeemed, and on admin `remove` activity.
- [Loyalty tier upgraded](https://www.commercengine.io/docs/api-reference/webhooks/customers/loyalty-tier-upgraded.md): Fires when points earned on order completion move the customer to a higher tier.
- [Loyalty tier downgraded](https://www.commercengine.io/docs/api-reference/webhooks/customers/loyalty-tier-downgraded.md): Fires when a redemption reversal moves the customer to a lower tier.
- [User account deleted](https://www.commercengine.io/docs/api-reference/webhooks/customers/user-account-deleted.md): Fires when a user deletes their own account (`DELETE /auth/user/{id}`); the primary customer record is removed.

#### Store

- [Store created](https://www.commercengine.io/docs/api-reference/webhooks/store/store-created.md): Fires when a new store is provisioned (super-admin API key).
- [Store config updated](https://www.commercengine.io/docs/api-reference/webhooks/store/store-config-updated.md): Fires on `POST /store/config`.
- [Warehouse created](https://www.commercengine.io/docs/api-reference/webhooks/store/warehouse-created.md): Fires on `POST /store/warehouses`. Envelope also carries `store_channels` and `tenant_id`.
- [Warehouse updated](https://www.commercengine.io/docs/api-reference/webhooks/store/warehouse-updated.md): Fires on warehouse `PUT`.
- [Warehouse deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/warehouse-deleted.md): Fires after a non-default warehouse is deleted.
- [Shipping zone created](https://www.commercengine.io/docs/api-reference/webhooks/store/shipping-zone-created.md): Fires on `POST /store/shipping-zones`.
- [Shipping zone updated](https://www.commercengine.io/docs/api-reference/webhooks/store/shipping-zone-updated.md): Fires on shipping-zone `PUT`.
- [Shipping zone deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/shipping-zone-deleted.md): Fires after a non-default zone is deleted.
- [Manual shipping method created](https://www.commercengine.io/docs/api-reference/webhooks/store/manual-shipping-method-created.md): Fires on `POST /store/manual-shipping-methods`.
- [Manual shipping method updated](https://www.commercengine.io/docs/api-reference/webhooks/store/manual-shipping-method-updated.md): Fires on manual-shipping-method `PUT`.
- [Manual shipping method deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/manual-shipping-method-deleted.md): Fires before a non-default method is deleted.
- [Store template created](https://www.commercengine.io/docs/api-reference/webhooks/store/store-template-created.md): Fires on `POST /store/templates`.
- [Store template updated](https://www.commercengine.io/docs/api-reference/webhooks/store/store-template-updated.md): Fires on template `PUT`.
- [Store template deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/store-template-deleted.md): Fires after a template is deleted.
- [Customer group created](https://www.commercengine.io/docs/api-reference/webhooks/store/customer-group-created.md): Fires on `POST /store/customer-group`.
- [Customer group updated](https://www.commercengine.io/docs/api-reference/webhooks/store/customer-group-updated.md): Fires on customer-group `PUT`.
- [Customer group deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/customer-group-deleted.md): Fires after a customer group is deleted.
- [Kyc document config created](https://www.commercengine.io/docs/api-reference/webhooks/store/kyc-document-config-created.md): Fires on `POST /store/kyc-document`.
- [Kyc document config updated](https://www.commercengine.io/docs/api-reference/webhooks/store/kyc-document-config-updated.md): Fires on KYC-document config `PUT`.
- [Kyc document config deleted](https://www.commercengine.io/docs/api-reference/webhooks/store/kyc-document-config-deleted.md): Fires after a KYC document config is deleted.

#### Marketplace

- [Seller order created](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-order-created.md): Fires for each seller on a marketplace order when the order is created.
- [Seller order confirmed](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-order-confirmed.md): Fires for each seller when a marketplace order is confirmed.
- [Seller order cancelled](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-order-cancelled.md): Fires for each seller when a marketplace order is cancelled.
- [Seller order updated](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-order-updated.md): Fires for each seller when a marketplace order is updated.
- [Seller order completed](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-order-completed.md): Fires for each seller when a marketplace order is completed.
- [Seller shipment created](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-shipment-created.md): Fires when a marketplace shipment with a seller warehouse is created.
- [Seller shipment cancelled and refunded](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-shipment-cancelled-and-refunded.md): Fires when a marketplace store cancels-and-refunds a seller-linked shipment.
- [Seller shipment cancelled](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/seller-shipment-cancelled.md): Fires when the admin push-to-seller-store utility replays a cancelled marketplace shipment.
- [Marketplace sync requested](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/marketplace-sync-requested.md): Fires when a `marketplace-sync` catalog job is created; consumed by the marketplace to pull listings.
- [Marketplace sync completed](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/marketplace-sync-completed.md): Fires when the marketplace finishes syncing every requested listing.
- [Marketplace sync partially completed](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/marketplace-sync-partially-completed.md): Fires when some listings synced and some failed.
- [Marketplace sync failed](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/marketplace-sync-failed.md): Fires when no listing could be synced or the marketplace config is missing.
- [Product marketplace listing created](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/product-marketplace-listing-created.md): Fires when a listing is saved that has not yet been synced to the marketplace (no `marketplace_item_id`), whether the row is new or not.
- [Product marketplace listing updated](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/product-marketplace-listing-updated.md): Fires when a listing that already has a `marketplace_item_id` is saved again.
- [Product marketplace listing deleted](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/product-marketplace-listing-deleted.md): Fires before a listing is removed.
- [Product listed on marketplace](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/product-listed-on-marketplace.md): Fires per listing on bulk list.
- [Product unlisted from marketplace](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/product-unlisted-from-marketplace.md): Fires per listing on bulk unlist.
- [Variant marketplace listing created](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/variant-marketplace-listing-created.md): Fires when a listing is saved that has not yet been synced to the marketplace (no `marketplace_item_id`), whether the row is new or not.
- [Variant marketplace listing updated](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/variant-marketplace-listing-updated.md): Fires when a listing that already has a `marketplace_item_id` is saved again.
- [Variant marketplace listing deleted](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/variant-marketplace-listing-deleted.md): Fires before a listing is removed.
- [Variant listed on marketplace](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/variant-listed-on-marketplace.md): Fires per listing on bulk list.
- [Variant unlisted from marketplace](https://www.commercengine.io/docs/api-reference/webhooks/marketplace/variant-unlisted-from-marketplace.md): Fires per listing on bulk unlist.

## OpenAPI Specs

- [ce-webhooks](https://openapi.commercengine.io/ce-webhooks.json)
