What are DataDoe Webhooks?
DataDoe Webhooks let your systems receive HTTPS callbacks when selected events happen for your Sellers and Vendors. Instead of polling DataDoe or the Selling Partner API (SP API) for changes, DataDoe POSTs a JSON payload to an endpoint you control as soon as matching events are ready.
Use Webhooks to trigger automations, sync Amazon events into your enterprise resource planning (ERP) or warehouse management system (WMS), or wake up downstream jobs when new notification data becomes available.
How do I set up a webhook?
- Open Integrations > Webhooks (opens in a new tab) in DataDoe.
- Click New webhook and fill in:
- Name — a label you recognize later
- Target URL — your HTTPS endpoint that accepts
POSTrequests - Message types — which events to subscribe to
- Sellers and Vendors — which DataDoe accounts should be included
- Secret header (optional) — a custom header name and value DataDoe sends on every delivery so you can verify requests
- Save the subscription. It starts in the Active state.
You can create multiple subscriptions per Organization, for example one endpoint for your ERP and another for an internal queue. When a single event matches more than one active subscription, DataDoe delivers it to each matching subscription separately.
What do webhook deliveries cost?
Each delivered message costs 0.05 AI Tokens and can pause the subscription if the AI Token balance runs out. See Subscription and pricing.
High-volume message types can deliver many events. The catalog marks those types as high volume. The token cost applies to every message type.
How to secure my webhooks?
A secret HTTP header helps your endpoint reject forged webhook requests. In Integrations > Webhooks (opens in a new tab), set a header name and a long, random value when you create or edit a webhook. Store the value securely on your server. Compare the incoming header with the stored value before processing the payload, and reject requests if the header is missing or incorrect.
Which message types are available?
| Message type | Description |
|---|---|
AMAZON_ORDER_UPDATE | An Amazon order was created or updated. |
AMAZON_ORDER_BUYER_INFO_UPDATE | Buyer or recipient information for an Amazon order was updated. |
AMAZON_ACCOUNT_STATUS_CHANGED | The status of an Amazon selling account changed. |
AMAZON_ANY_OFFER_CHANGED | Offer information for an item on an Amazon marketplace changed. High volume. |
AMAZON_B2B_ANY_OFFER_CHANGED | Business offer information for an item changed. High volume. |
AMAZON_BRANDED_ITEM_CONTENT_CHANGE | Content for an item associated with a registered brand changed. Brand Registry only. |
AMAZON_DETAIL_PAGE_TRAFFIC_EVENT | Traffic on an Amazon product detail page changed. High volume. |
AMAZON_FBA_OUTBOUND_SHIPMENT_STATUS | The status of an outbound Fulfillment by Amazon shipment changed. Brazil FBA Onsite only. |
AMAZON_FEE_PROMOTION | An Amazon fee promotion became available or changed. |
AMAZON_ITEM_INVENTORY_EVENT_CHANGE | Inventory information for an Amazon item changed. |
AMAZON_ITEM_SALES_EVENT_CHANGE | Sales information for an Amazon item changed. High volume. |
AMAZON_ITEM_PRODUCT_TYPE_CHANGE | The product type assigned to an Amazon item changed. Brand Registry only. |
AMAZON_LISTINGS_ITEM_STATUS_CHANGE | The status of an Amazon listings item changed. |
AMAZON_LISTINGS_ITEM_ISSUES_CHANGE | Issues associated with an Amazon listings item changed. |
AMAZON_LISTINGS_ITEM_MFN_QUANTITY_CHANGE | The merchant-fulfilled quantity for a listings item changed. |
AMAZON_PRICING_HEALTH | An Amazon offer became ineligible for the Featured Offer because of an uncompetitive price. |
AMAZON_TRANSACTION_UPDATE | Amazon transaction information became available or changed. |
AMAZON_FBA_INVENTORY_AVAILABILITY_CHANGES | Fulfillment by Amazon inventory availability changed. |
AMAZON_SHIPMENT_TRACKING_MILESTONE_CHANGED | An Amazon Tracking API shipment milestone changed. Available for the US Tracking API. Requires a subscription for each tracking identifier. DataDoe does not subscribe automatically. |
What does DataDoe send to my endpoint?
DataDoe sends an HTTPS POST with Content-Type: application/json. The body has this shape:
1{
2 "deliveryId": "550e8400-e29b-41d4-a716-446655440000",
3 "organizationId": "11111111-1111-4111-8111-111111111111",
4 "webhookId": "33333333-3333-4333-8333-333333333333",
5 "messages": [
6 {
7 "organizationId": "11111111-1111-4111-8111-111111111111",
8 "sellerOrVendorId": "22222222-2222-4222-8222-222222222222",
9 "messageId": "44444444-4444-4444-8444-444444444444",
10 "messageType": "AMAZON_ORDER_UPDATE",
11 "messageSummary": {},
12 "messageData": {}
13 }
14 ]
15}Each body field is described below:
| Field | Meaning |
|---|---|
deliveryId | Unique ID for this HTTPS delivery attempt. |
organizationId | Your DataDoe Organization. |
webhookId | The subscription ID that received this delivery. |
messages | One or more events batched into this POST. |
sellerOrVendorId | DataDoe Seller or Vendor context ID for the event. |
messageId | Unique ID for a single event. Use this for idempotency and deduplication. |
messageType | Event type, for example AMAZON_ORDER_UPDATE. |
messageSummary | Short metadata about the event (structure varies by message type). |
messageData | Event payload fields (structure varies by message type). |
Detailed webhook message schemas are in the interactive Webhooks Messages Schemas page.
The 16 SP-API notification message types share a stable contract. Their messageSummary always includes marketplaceId, sellerOrVendorId, spApiNotificationId, spApiNotificationType, and eventTimeUtc. It can also include marketplaceCountryCode, marketplaceCountryName, sellerOrVendorName, and marketplaceSellerId. Their messageData includes the Amazon notificationMetadata and the payload routed to the selected Seller or Vendor connection. The two order message types retain their order-specific schemas.
How do I subscribe to shipment tracking updates?
DataDoe does not subscribe to shipment tracking automatically. Before you can receive AMAZON_SHIPMENT_TRACKING_MILESTONE_CHANGED events, start an AMAZON_SHIPMENT_TRACKING_SUBSCRIBE Action for each tracking identifier. This Action is available to Sellers and Vendors on the US Tracking API only.
In MCP, use actions_details_schema_get to load the Action details, then call actions_start. Each entry in trackingIdentifiers must contain exactly one identifier field. For example:
1{
2 "type": "AMAZON_SHIPMENT_TRACKING_SUBSCRIBE",
3 "sellerOrVendorId": "YOUR_SELLER_OR_VENDOR_ID",
4 "details": {
5 "trackingIdentifiers": [
6 {
7 "carrierTracking": {
8 "trackingNumber": "YOUR_TRACKING_NUMBER"
9 }
10 }
11 ]
12 }
13}After Amazon accepts the subscription, create a DataDoe webhook and select AMAZON_SHIPMENT_TRACKING_MILESTONE_CHANGED as a message type. See Actions for the full Action workflow and the REST API option.
If you configured a secret header, DataDoe includes it on every request using the header name you chose.
What should my endpoint return?
Return any 2xx HTTP status to acknowledge successful processing. Non-2xx responses or network errors are treated as delivery failures.
What happens when a delivery fails?
If your endpoint returns a non-2xx status or the request cannot be completed, DataDoe:
- Pauses the subscription automatically.
- Emails Organization members.
After you fix the endpoint, open Integrations > Webhooks (opens in a new tab) and select Resume.
If you believe an invalid delivery is an error on DataDoe's side, please use the contact form (opens in a new tab).
What are the target URL requirements?
Target URLs must:
- use HTTPS
- use a domain name (not a raw IP address)
- not use
localhostor*.localhost - accept
POSTrequests
How is this related to real-time data?
Webhooks complement DataDoe's scheduled and real-time data pipelines described in Data Fetch Periods. Webhooks are the recommended way to get real-time data updates.
Where can I get help?
Use the contact form (opens in a new tab).

