Payload format
Every webhook carries the same envelope: the event name, when it happened, and the object it concerns. The object is the one the Admin API returns, so the code that reads a user, a listing or an order from the API also reads it from a webhook.
The envelope
Section titled “The envelope”{ "type": "order.status.accepted", "created": "2026-10-13 20:00:00", "status": "success", "data": { "object": "Order", "id": 4242, "…": "…" }, "comment": "Accepted after a phone call with the customer"}| Field | Type | Description |
|---|---|---|
type |
string | The event, for instance order.status.accepted. |
created |
string | When the event happened, in UTC, formatted YYYY-MM-DD HH:MM:SS. |
status |
string | Always success for the events you can subscribe to. |
data |
object | The user, listing or order concerned. See below. |
comment |
string | Order status events only, and only when the status change came with a comment, for instance the reason an administrator gave. Absent otherwise. |
The object in data
Section titled “The object in data”data holds the full object, with an object field naming its kind (User,
Listing or Order) and its id. Its fields are those of the Admin API:
data.object |
Same shape as |
|---|---|
User |
GET /api/v1/users/{id} |
Listing |
GET /api/v1/listings/{id}, with its user, supplier and owner |
Order |
GET /api/v1/orders/{id}, with its customer, supplier, order_items, shippings and payout |
URLs inside the object (url, profile_url, customer_url, supplier_url, the URLs of
order items) are absolute and use the marketplace’s primary address, its custom domain when
it has one.
Examples
Section titled “Examples”These payloads are shortened to their most used fields.
{ "type": "user.creation", "created": "2026-10-13 09:12:44", "status": "success", "data": { "object": "User", "id": 1187, "external_id": null, "email": "jane@example.com", "first_name": "Jane", "last_name": "Doe", "public_name": "Jane D.", "username": "jane-doe", "account_type": "individual", "group": { "object": "Group", "id": 3, "name": "Sellers", "alias": "seller" }, "group_id": 3, "status": "enabled", "lang": "en", "locale": "en_US", "timezone": "Europe/Paris", "address_country": "FR", "listing_count": 0, "profile_url": "https://acme.mykreezalid.com/users/jane-doe", "created_at": "2026-10-13 09:12:44", "metafields": null }}{ "type": "listing.update", "created": "2026-10-13 14:03:10", "status": "success", "data": { "object": "Listing", "id": 9050, "external_id": "SKU-CHAIR-01", "title": "Oak dining chair", "slug": "oak-dining-chair", "description": "Solid oak, hand finished.", "status": "published", "admin_status": "approved", "visibility": "both", "price": "149.00", "currency": "EUR", "price_with_currency": "€149.00", "quantity": 12, "sku": "SKU-CHAIR-01", "requires_shipping": true, "category": { "object": "Category", "id": 21, "parent_id": 4, "title": "Chairs", "slug": "chairs", "url": "https://acme.mykreezalid.com/c/chairs" }, "attributes": { "material": "oak", "colour": "natural" }, "medias": [ { "object": "Media", "id": 77, "position": 1, "media_type": "image", "src": "https://cdn.example.com/chair.jpg", "alt": null } ], "user": { "object": "User", "id": 1187, "public_name": "Jane D.", "…": "…" }, "url": "https://acme.mykreezalid.com/l/oak-dining-chair", "date_online": "2026-10-13 14:03:10", "metafields": null }}{ "type": "order.status.new", "created": "2026-10-13 18:41:02", "status": "success", "data": { "object": "Order", "id": 4242, "number": "R-4242", "status": "new", "fulfillment_status": null, "amount": "164.00", "currency": "EUR", "amount_with_currency": "€164.00", "requires_shipping": true, "customer": { "object": "User", "id": 2210, "email": "sam@example.com", "…": "…" }, "supplier": { "object": "User", "id": 1187, "business_name": "Doe Furniture", "…": "…" }, "order_items": [ { "object": "OrderItem", "id": 6001, "listing_id": 9050, "listing_title": "Oak dining chair", "listing_sku": "SKU-CHAIR-01", "qty": 1, "amount": "149.00", "total_amount": "149.00", "currency": "EUR", "status": "new" } ], "shippings": { "carrier": "Colissimo", "amount": "15.00", "tracking_number": null, "address": { "object": "Address", "name": "Sam Example", "street": "1 rue de la Paix", "postcode": "75002", "city": "Paris", "country": "FR" } }, "payout": { "status": "not_available", "amount": "134.10", "amount_with_currency": "€134.10" }, "customer_url": "https://acme.mykreezalid.com/users/sam", "supplier_url": "https://acme.mykreezalid.com/users/jane-doe", "metafields": null }}Deleted objects
Section titled “Deleted objects”When the object no longer exists at delivery time, typically after a deletion, data only
holds its kind and identifier:
{ "type": "listing.delete", "created": "2026-10-13 16:20:31", "status": "success", "data": { "id": 9050, "object": "Listing" }}Keep the identifiers you need (your own external_id mapping for instance) on your side:
you cannot read a deleted object back. user.delete is the exception: it carries the
account as it was when it was deleted.
Body encoding
Section titled “Body encoding”Signed webhooks, the default for every webhook created today, send the envelope as
JSON (Content-Type: application/json, UTF-8). Verify the signature against these
exact bytes before parsing them: see Verifying signatures.