Gearment API

Payload

Webhook events that can be received from Gearment.

Topic and body type

All four topics support payload versions v1 and v3; the selected registration version controls the body shape. The registration topic is not always the body type: a receiver that switches on type must handle tracking_order_updated for tracking_updated and order_cancelled for order_canceled, or it will drop its own events.

Docs topicLegacy registration topicV3 registration enumV1 body typeV3 body type
order_completedorders_completedTOPIC_ORDER_COMPLETEDorder_completedorder_completed
order_canceledorders_canceledTOPIC_ORDER_CANCELLEDorder_canceledorder_cancelled
tracking_updatedtracking_updatedTOPIC_TRACKING_ORDER_UPDATEDtracking_updatedtracking_order_updated
shipping_address_unverifiedshipping_address_unverifiedTOPIC_SHIPPING_ADDRESS_UNVERIFIEDshipping_address_unverifiedshipping_address_unverified

HTTP delivery

Gearment sends a POST request to the registered delivery URL with Content-Type: application/json. Only active store-level webhooks matching the event team, store, and topic receive a request; delivery is skipped when the team has no default credentials.

Headers We Send

HeaderMeaning
X-Connect-TimestampUnix timestamp in seconds when Gearment sent the request.
X-Connect-NonceBase64 URL encoded random nonce for this delivery.
X-Connect-SignatureBase64 URL encoded HMAC-SHA256 signature.
X-Connect-Client-KeyGearment API key associated with the delivery.

See Signature construction logic and Verifying a payload for the authentication details.

Retries, timeout, and success

Each HTTP attempt has a 10 second timeout, subject to earlier context cancellation. Gearment makes at most four attempts: the initial attempt and three retries, fixed 2 seconds apart. It retries transport errors, including timeouts, and HTTP 5xx responses only; every HTTP 2xx response is success. HTTP 4xx responses, including 429, and terminal 3xx responses are not retried. After the fourth failure, the event is dropped with no replay, so receivers must be idempotent and must not wait for a later retry. The timestamp, nonce, body, and signature are reused across retries.

Serialization

Every map key shown in the topic contracts is emitted, including keys whose value is "". tracking_list is always an array; absent input is [], not null. JSON object member order is not contractual.

The public registration contract currently supports the four events above. Payload fields vary by topic and version, so preserve unknown fields and do not depend on JSON property ordering.