Webhooks
Overview
The Webhooks API allows you to create, manage, and monitor webhooks for real-time event notifications from SellerCenter. Webhooks are HTTP callbacks that notify your system when specific events occur in SellerCenter, enabling you to build reactive integrations and automate workflows.
In SellerCenter, webhooks enable you to:
- Real-time notifications: Receive instant notifications when events occur (orders created, products updated, etc.)
- Event-driven workflows: Trigger automated processes based on SellerCenter events
- Integration building: Connect SellerCenter with your external systems seamlessly
- Callback monitoring: Track webhook delivery status and retry failed callbacks
Important: Webhooks require your system to have a publicly accessible endpoint that can receive HTTP POST requests. SellerCenter will retry failed callbacks automatically with exponential backoff for up to 30 days.
Get List of Webhooks
GET /v2/webhooks
Summary: Get a list of webhooks.
Description: Retrieve a list of all webhooks configured for your seller account. You can optionally filter by webhook public IDs. If no parameter is provided, this endpoint returns all webhooks.
Parameters:
publicIds[](query, optional): Array of webhook public IDs to filter by
Note:
- Returns paginated results with webhook details including callback URL, events, and status
- Each webhook includes its public ID (UUID), creation source, and enabled status
- Use the public ID to update or delete specific webhooks
Create Webhook
POST /v2/webhook
Summary: Creates a webhook.
Description: Create a new webhook to receive notifications for specific events. When events occur in SellerCenter, your callback URL will receive HTTP POST requests with event payloads.
Possible event aliases:
onConsignmentLowStock- Triggered when a consignment product's stock falls below its replenishment alert levelonConsignmentReportCreated- Triggered when an acceptance report (send-to-warehouse or return-from-warehouse) is createdonConsignmentRequestCreated- Triggered when a consignment request is created by the system rather than by youonConsignmentStatusChanged- Triggered when a consignment request changes toAPPROVAL_NEEDED,ACCEPTEDorREJECTEDonFeedCompleted- Triggered when a feed processing is completedonFeedCreated- Triggered when a new feed is createdonOrderCreated- Triggered when a new order is createdonOrderItemsStatusChanged- Triggered when order item status changesonProductCreated- Triggered when a new product is createdonProductQcStatusChanged- Triggered when product QC status changesonProductUpdated- Triggered when a product is updatedonReturnStatusChanged- Triggered when return status changesonStatisticsUpdated- Triggered when statistics are updated
Request Body:
callbackUrl(required): The webhook URL that will be called by SellerCenterevents(required): Array of event aliases to subscribe to
Note:
- Your callback URL must be publicly accessible and respond with HTTP 200 for successful callbacks
- You can subscribe to multiple events in a single webhook
- The webhook will be created in enabled state by default
Update Webhook
PUT /v2/webhook/{uuid}
Summary: Update a webhook.
Description: Update an existing webhook's callback URL and/or subscribed events. Use this endpoint to modify webhook configuration without deleting and recreating it.
Parameters:
uuid(path, required): Webhook UUID (public ID)
Request Body:
callbackUrl(optional): The new webhook URLevents(optional): Array of event aliases to subscribe to
Note:
- Only provided fields will be updated
- You can change the callback URL or events independently
- The webhook status (enabled/disabled) is managed separately
Delete Webhook
DELETE /v2/webhook/{uuid}
Summary: Removes a webhook
Description: Permanently delete a webhook by its UUID. Once deleted, you will no longer receive notifications for the events that were subscribed to by this webhook.
Parameters:
uuid(path, required): Webhook UUID (public ID)
Note:
- This operation cannot be undone
- Deleting a webhook stops all future callbacks immediately
- Pending callbacks may still be processed, but no new callbacks will be created
Update Webhook Status
POST /v2/webhook/{uuid}/status
Summary: Updates a webhook status.
Description: Enable or disable a webhook without deleting it. Disabled webhooks will not trigger callbacks, but can be re-enabled later.
Parameters:
uuid(path, required): Webhook UUID (public ID)
Request Body:
isEnabled(required): Boolean value to enable (true) or disable (false) the webhook
Note:
- Disabling a webhook stops new callbacks but doesn't affect pending retries
- Use this to temporarily pause webhook notifications without losing configuration
- Re-enabling restores normal callback behavior
Get Webhook Entities
GET /v2/webhook-entities
Summary: Get a list of webhook entities. Checkout our payload definitions here.
Description: Retrieve information about all available webhook events and their payload structures. This endpoint provides details about what events you can subscribe to and what data each event payload contains.
Note:
- Returns a list of entities (Feed, Product, Order, Statistics, Consignment, etc.) and their associated events
- Each event includes its alias (e.g.,
onOrderCreated) and human-readable name - Use this endpoint to discover available events and understand payload structures
- See the detailed payload definitions below for each event type
Get Webhook Callback Detail
GET /v2/webhook/callback/{callbackId}
Summary: Get a webhook callback detail by ID
Description: Retrieve detailed information about a specific webhook callback, including its status, payload, and timestamps. Use this endpoint to investigate individual callback attempts.
Parameters:
callbackId(path, required): Numeric ID of the webhook callback
Note:
- Returns complete callback information including status, event type, and payload
- Useful for debugging failed callbacks or verifying callback content
- The payload field contains the JSON payload that was sent to your callback URL
Retry Webhook Callback
POST /v2/webhook/callback/{callbackId}/retry/
Summary: Retry webhook callback
Description: Manually retry a failed webhook callback. Use this endpoint to immediately retry a callback that has failed, without waiting for the automatic retry schedule.
Parameters:
callbackId(path, required): Numeric ID of the webhook callback to retry
Note:
- Immediately triggers a new callback attempt
- Useful for testing or when you've fixed an issue with your callback endpoint
- The callback will follow the same retry schedule if it fails again
callbackIdmust be a positive integer — a non-positive value (for example0or-1) returns a404response
Get Webhook Callbacks by URL
GET /v2/webhook/callbacks/{callbackUrl}
Summary: Get a list of webhook callbacks by callback url.
Description: Retrieve all callbacks for a specific callback URL with pagination and sorting options. This endpoint helps you monitor callback delivery for a particular webhook endpoint.
Parameters:
callbackUrl(path, required): The webhook callback URL (encoded)sort(query, optional): Field to sort by (callbackUrlorlastCall)sortDir(query, optional): Sort direction (ascordesc, default:asc)limit(query, optional): Maximum number of items to return (default: 100)offset(query, optional): Starting point in the collection (default: 0)
Note:
- Returns paginated results of all callbacks for the specified URL
- Useful for monitoring callback success rates and debugging delivery issues
- Results can be sorted by callback URL or last call timestamp
Webhook Payload Definitions
HTTP Response Requirements
A callback will be considered successful if your endpoint responds with HTTP status code 200. The response content doesn't matter - SellerCenter only checks the status code.
Retry Behavior
SellerCenter will automatically retry failed callbacks with exponential backoff. Retries continue for up to 30 days, after which the callback is permanently deleted even if it never succeeded.
Retry Schedule:
| Retry | Delay (Minutes) | Cumulative Delay |
|---|---|---|
| Retry 1 | 1 | 00:00:01 |
| Retry 2 | 5 | 00:00:06 |
| Retry 3 | 10 | 00:00:16 |
| Retry 4 | 30 | 00:00:46 |
| Retry 5 | 60 | 00:01:46 |
| Retry 6 | 120 | 00:03:46 |
| Retry 7 | 300 | 00:08:46 |
| Retry 8 | 600 | 00:18:46 |
| Retry 9 | 1440 | 01:18:46 |
| Retry 10+ | 1440 | Continues daily |
Feed Events
Feed events are only triggered for the following feed types:
- Product create
- Product update
- Product remove
- Image
onFeedCreated
{
"event": "onFeedCreated",
"payload": {
"Feed": "829a8d2a-d370-4fa6-8613-8554f43d5fed"
}
}Feed(String): A feed identifier to be used to get more details using the API
onFeedCompleted
{
"event": "onFeedCompleted",
"payload": {
"Feed": "829a8d2a-d370-4fa6-8613-8554f43d5fed"
}
}Feed(String): A feed identifier to be used to get more details using the API
Note: After receiving onFeedCompleted, call the FeedStatus API to get details. The event is only triggered for "Finished" feeds. If you don't receive a callback for a long time, check the FeedStatus API to see if the feed was "Canceled" or "Error".
Product Events
onProductCreated
{
"event": "onProductCreated",
"payload": {
"SellerSkus": ["NI006ELAAGWDNAFAMZ-43340"]
}
}SellerSkus(String[]): List of seller SKUs to be used to get more details using the API
onProductUpdated
{
"event": "onProductUpdated",
"payload": {
"SellerSkus": ["NI006ELAAGWDNAFAMZ-43340", "NI006ELAAGWDNAFAMZ-43341"]
}
}SellerSkus(String[]): List of seller SKUs to be used to get more details using the API
onProductQcStatusChanged
{
"event": "onProductQcStatusChanged",
"payload": {
"SellerSkus": ["NI006ELAAGWDNAFAMZ-43341", "NI006ELAAGWDNAFAMZ-43342"]
}
}SellerSkus(String[]): List of seller SKUs to be used to get more details using the API
Order Events
onOrderCreated
{
"event": "onOrderCreated",
"payload": {
"OrderId": 190,
"OrderNr": "123221"
}
}OrderId(Int): Order identifier to be used to get more details using the APIOrderNr(String): Order number
onOrderItemsStatusChanged
{
"event": "onOrderItemsStatusChanged",
"payload": {
"OrderId": 190,
"OrderItemIds": [2, 3],
"NewStatus": "ready_to_ship"
}
}OrderId(Int): Order identifier to be used to get more details using the APIOrderItemIds(Int[]): Order Item identifiers to be used to get more details using the APINewStatus(String): New item status
Statistics Events
onStatisticsUpdated
{
"event": "onStatisticsUpdated",
"payload": {}
}This event is triggered when statistics are updated. The payload is empty.
Consignment Events
These events tell you that something changed in your consignment (fulfillment) account. The payload only identifies what changed; use the Consignment APIs to read the details. A notification can occasionally be missed or delivered more than once, so keep using the APIs to reconcile.
onConsignmentLowStock
{
"event": "onConsignmentLowStock",
"payload": {
"seller_sku": "NI006ELAAGWDNAFAMZ-43340"
}
}seller_sku(String): Seller SKU of the product whose stock fell below its replenishment alert level
This event is sent once when the available stock of a product drops below its replenishment alert level. It is not sent while the alert level is 0, and it is sent again only after the stock has recovered and dropped below the alert level again. Use GET /v2/fulfillment-products/stock-on-hand with sellerSku[] to read the stock. The lowStockOnly filter of that API uses a broader definition of low stock than this event.
onConsignmentStatusChanged
{
"event": "onConsignmentStatusChanged",
"payload": {
"po_number": "PO-10203-v2591519"
}
}po_number(String): Purchase order number of the consignment request
This event is sent when a request changes to APPROVAL_NEEDED, ACCEPTED or REJECTED. It is not sent when a request is set to the status it already has, or for other status changes. Use GET /v2/purchase-orders with poNumber[] to read the current status.
onConsignmentRequestCreated
{
"event": "onConsignmentRequestCreated",
"payload": {
"po_number": "PO-10203-v2591519"
}
}po_number(String): Purchase order number of the new consignment request
This event is sent when a consignment request is created by the system rather than by you, whatever its status. Use GET /v2/purchase-orders with poNumber[] to read the request.
onConsignmentReportCreated
{
"event": "onConsignmentReportCreated",
"payload": {
"po_number": "PO-10203-v2591519"
}
}po_number(String): Purchase order number the report belongs to
This event is sent when an acceptance report is created, either a send-to-warehouse report or a return-from-warehouse report. Use GET /v2/purchase-orders/send-to-warehouse-report or GET /v2/purchase-orders/return-from-warehouse-report with poNumber[] to read it.