POST /api/v1/webhooks. See Webhooks
for subscription setup, signature verification, and delivery behavior.
Events
Historical imports and unchanged provider duplicates do not emit lifecycle
events. If one marketplace notification changes status and other fields,
OmniCommerce emits one
order.status.changed event with all changed paths.
The first complete committed order snapshot emits order.created, including
when the marketplace initially sends only a header or status notification and
OmniCommerce fetches the line items separately. Later changes are compared with
that stored snapshot. Historical imports seed the snapshot without emitting a
creation event.
Marketplace cancellation is a status transition to canceled, not an
order.deleted event.
Identity and source
subject.id is the stable OmniCommerce order ID. Marketplace identity is
scoped by all of:
source.accountId is the exact connected store that produced the order. A
missing account is never used as a wildcard. providerEventId and
providerEventType can be null when the provider does not supply them or when
the change comes from a scheduled sync or developer API call.
source.system is one of:
Statuses and money
data.order.status is one of:
marketplaceStatus. Monetary values
are objects with a decimal string and ISO 4217 currency:
Order snapshot
Each
items[] entry includes stable internal and external line IDs, matched
productId, marketplace item and variant IDs, SKU aliases, name, status,
quantity, currency, unit/paid prices, line total, and historical unitCost.
Money is a decimal string plus currency; unavailable values are null.
All order lifecycle events include the ordered products in items. Each item
can include current OmniCommerce inventory with onHand, locked, available,
and asOf. These quantities use the same stock authority as Inventory detail
and reflect when the event was captured, rather than a live marketplace read.
When the linked product or purchased variant cannot be resolved, inventory is
null and inventoryUnavailableReason explains why. Inventory changes alone do
not trigger an order update. Older events may omit these inventory fields.
changedFields contains public field paths such as status,
marketplaceStatus, totals.total, itemCount, quantity, or items. Internal sync
metadata and buyer PII never appear in this list.
Example status change
Example deletion
Deletion events retain stable order identity and the ordered products initems,
including SKU fields and quantities captured before deletion. They do not repeat
the financial snapshot. SKU fields are null when the source has no SKU; older
deletion events may omit items.
Consumer rules
- Deduplicate by event
id, not by provider event ID. - Partition order state by
organizationIdandsubject.id. - Ignore an event when its
resourceVersionis not newer than the last applied version for that subject. - Replace the local integration view from
data.order; do not merge raw marketplace payloads into the standardized resource. - Treat unknown additive fields as forward-compatible and ignore them.
- Remove or tombstone the local order integration record on
order.deleted.