Order Completed
EVENT_ORDER_COMPLETED is sent when an order is completed.
When it fires
Fires on an order CDC update when the status changes to shipped, the previous row was not marked fulfilled, and the new row either becomes internally marked fulfilled or represents a real shipment with is_mark_fulfilled=false and is_mark_fulfilled_internal=false. Shipment lookup failure does not suppress the event; tracking company and URL are then empty.
Example payload
V3
{
"type": "order_completed",
"order": {
"gearment_id": "260909P-DEMO01-7K3M2Q9Z",
"gearment_name": "260909P-DEMO01-7K3M2Q9Z",
"vendor_id": "SHOP-10482",
"reference": "SHOP-10482",
"status": "completed"
},
"tracking": {
"number": "9400111899560000000000",
"company": "USPS",
"url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400111899560000000000"
}
}V1
{
"api_key": "ck_demo_8f2c",
"type": "order_completed",
"data": {
"gearment_ord_id": "109876543",
"gearment_ord_name": "260909P-DEMO01-7K3M2Q9Z",
"ord_status": "completed",
"order_id": "SHOP-10482",
"tracking_number": "9400111899560000000000",
"tracking_company": "USPS",
"tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=9400111899560000000000"
}
}Fields
| Version | Field | Type | Presence | Description |
|---|---|---|---|---|
| V1 | api_key | string | A | Default credential client key |
| V1 | type | string | A | Literal "order_completed" |
| V1 | data | object | A | Legacy payload container |
| V1 | data.gearment_ord_id | string | A | Legacy numeric order ID as a string when mapped; otherwise internal ID |
| V1 | data.gearment_ord_name | string | A | Internal Gearment order ID copied into the legacy name field |
| V1 | data.ord_status | string | A | Literal "completed" |
| V1 | data.order_id | string | A/empty | Marketplace/platform order reference |
| V1 | data.tracking_number | string | A/empty | Tracking number stored on the order |
| V1 | data.tracking_company | string | A/empty | Company from the first retrieved shipment |
| V1 | data.tracking_url | string | A/empty | URL from the first retrieved shipment |
| V3 | type | string | A | Literal "order_completed" |
| V3 | order | object | A | Order identity and state |
| V3 | order.gearment_id | string | A | Internal Gearment order ID |
| V3 | order.gearment_name | string | A | Same internal order ID copied into the name field |
| V3 | order.vendor_id | string | A/empty | Marketplace/platform order reference |
| V3 | order.reference | string | A/empty | Same marketplace/platform reference |
| V3 | order.status | string | A | Literal "completed" |
| V3 | tracking | object | A | Current tracking information |
| V3 | tracking.number | string | A/empty | Tracking number stored on the order |
| V3 | tracking.company | string | A/empty | Company from the first retrieved shipment |
| V3 | tracking.url | string | A/empty | URL from the first retrieved shipment |
Presence: A is always emitted; A/empty is always emitted but the value can be ""; Per item is emitted for every array element.
Verify the signature before parsing the body. See Verifying a payload.
Payload handling
Confirm the exact topic and payload version with the Webhook simulator. Preserve unknown fields, process the event idempotently, and do not depend on JSON property ordering.