> Note: This page is part of the DataDoe Docs. You can find the root of the documentation at `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe`.
> JSON Table of Contents: `https://www.datadoe.com/hub/docs/toc.json`.
> Data Scheme (Markdown index, one page per table): https://api.datadoe.com/api/v1/spec/data-scheme.md. Full JSON: https://api.datadoe.com/api/v1/spec/data-scheme.
> Actions (Markdown, every Action type with limits and group guides): https://api.datadoe.com/api/v1/spec/action-scheme.md. Full JSON with input schemas: https://api.datadoe.com/api/v1/spec/action-scheme.
> Other pages in the DataDoe Docs:
> - DataDoe Basics/Benefits: `https://www.datadoe.com/hub/docs/basics/benefits.md`
> - DataDoe Basics/Connecting Accounts: `https://www.datadoe.com/hub/docs/basics/connecting-accounts.md`
> - DataDoe Basics/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.md`
> - DataDoe Basics/Groups: `https://www.datadoe.com/hub/docs/basics/groups.md`
> - DataDoe Basics/Integrations: `https://www.datadoe.com/hub/docs/basics/integration-customization.md`
> - DataDoe Basics/Introduction to DataDoe: `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe.md`
> - DataDoe Basics/Keys and service accounts: `https://www.datadoe.com/hub/docs/basics/keys-and-service-accounts.md`
> - DataDoe Basics/Roles and permissions: `https://www.datadoe.com/hub/docs/basics/roles-and-permissions.md`
> - DataDoe Basics/Subscription and pricing: `https://www.datadoe.com/hub/docs/basics/subscription-pricing.md`
> - DataDoe Basics/Users and access: `https://www.datadoe.com/hub/docs/basics/access-user-management.md`
> - DataDoe Data/Ads Product Catalog: `https://www.datadoe.com/hub/docs/datadoe-data/ads-product-catalog.md`
> - DataDoe Data/Amazon Ads Partner Opportunities: `https://www.datadoe.com/hub/docs/datadoe-data/amazon-ads-partner-opportunities.md`
> - DataDoe Data/Data Fetch Periods: `https://www.datadoe.com/hub/docs/datadoe-data/data-fetch-periods.md`
> - DataDoe Data/Data Sources: `https://www.datadoe.com/hub/docs/datadoe-data/data-sources.md`
> - DataDoe Data/Initial Loads: `https://www.datadoe.com/hub/docs/datadoe-data/initial-loads.md`
> - DataDoe Data/Managing Data Tables: `https://www.datadoe.com/hub/docs/datadoe-data/managing-data-tables.md`
> - DataDoe Data/Migrating from SellerBoard: `https://www.datadoe.com/hub/docs/datadoe-data/migrating-from-sellerboard.md`
> - DataDoe Data/SAT migration to profit tables: `https://www.datadoe.com/hub/docs/datadoe-data/sat-migration-to-profit-tables.md`
> - DataDoe Data/SQP Data: `https://www.datadoe.com/hub/docs/datadoe-data/search-query-performance.md`
> - DataDoe Data/Timezones: `https://www.datadoe.com/hub/docs/datadoe-data/orders-purchase-date-timezones.md`
> - DataDoe Data/Uploading COGS: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-cogs.md`
> - DataDoe Data/Uploading KDP Royalty Parameters: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-kdp-royalty-parameters.md`
> - DataDoe Data/Uploading Vendor Codes: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-vendor-codes.md`
> - DataDoe Features/Amazon Marketing Cloud: `https://www.datadoe.com/hub/docs/datadoe-features/amc.md`
> - DataDoe Features/AMC query templates: `https://www.datadoe.com/hub/docs/datadoe-features/amc-query-templates.md`
> - DataDoe Features/Features Overview: `https://www.datadoe.com/hub/docs/datadoe-features/overview.md`
> - DataDoe Features/Files: `https://www.datadoe.com/hub/docs/datadoe-features/files.md`
> - DataDoe Features/Plugins: `https://www.datadoe.com/hub/docs/datadoe-features/plugins.md`
> - DataDoe Features/Usage Logs: `https://www.datadoe.com/hub/docs/datadoe-features/usage-logs.md`
> - DataDoe Actions/Actions: External Fulfillment: `https://www.datadoe.com/hub/docs/datadoe-actions/external-fulfillment.md`
> - DataDoe Actions/Actions: FBA eligibility: `https://www.datadoe.com/hub/docs/datadoe-actions/fba-eligibility.md`
> - DataDoe Actions/Actions: FBA inbound: `https://www.datadoe.com/hub/docs/datadoe-actions/fba-inbound.md`
> - DataDoe Actions/Actions: Introduction: `https://www.datadoe.com/hub/docs/datadoe-actions/introduction.md`
> - DataDoe Actions/Actions: KDP authors: `https://www.datadoe.com/hub/docs/datadoe-actions/kdp-authors.md`
> - DataDoe Actions/Actions: Listing images: `https://www.datadoe.com/hub/docs/datadoe-actions/listing-images.md`
> - DataDoe Webhooks/Webhooks: Introduction: `https://www.datadoe.com/hub/docs/datadoe-webhooks/introduction.md`
> - DataDoe Webhooks/Webhooks: Platform: `https://www.datadoe.com/hub/docs/datadoe-webhooks/platform.md`
> - DataDoe MCP/Overview: `https://www.datadoe.com/hub/docs/datadoe-mcp/overview.md`
> - DataDoe MCP/Using Antigravity: `https://www.datadoe.com/hub/docs/datadoe-mcp/antigravity.md`
> - DataDoe MCP/Using ChatGPT: `https://www.datadoe.com/hub/docs/datadoe-mcp/chatgpt.md`
> - DataDoe MCP/Using Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude.md`
> - DataDoe MCP/Using Claude Agent SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-agents-sdk.md`
> - DataDoe MCP/Using Claude Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-code.md`
> - DataDoe MCP/Using Codex: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex.md`
> - DataDoe MCP/Using Codex Sites: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex-sites.md`
> - DataDoe MCP/Using CrewAI: `https://www.datadoe.com/hub/docs/datadoe-mcp/crewai.md`
> - DataDoe MCP/Using Cursor: `https://www.datadoe.com/hub/docs/datadoe-mcp/cursor.md`
> - DataDoe MCP/Using Excel + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/excel.md`
> - DataDoe MCP/Using Gemini CLI: `https://www.datadoe.com/hub/docs/datadoe-mcp/gemini-cli.md`
> - DataDoe MCP/Using Genspark: `https://www.datadoe.com/hub/docs/datadoe-mcp/genspark.md`
> - DataDoe MCP/Using Glama: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama-chat.md`
> - DataDoe MCP/Using Glama MCP Inspector: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama.md`
> - DataDoe MCP/Using Grok: `https://www.datadoe.com/hub/docs/datadoe-mcp/grok.md`
> - DataDoe MCP/Using GrokBot: `https://www.datadoe.com/hub/docs/datadoe-mcp/grokbot.md`
> - DataDoe MCP/Using Gumloop: `https://www.datadoe.com/hub/docs/datadoe-mcp/gumloop.md`
> - DataDoe MCP/Using Hermes Agent: `https://www.datadoe.com/hub/docs/datadoe-mcp/hermes.md`
> - DataDoe MCP/Using Littlebird: `https://www.datadoe.com/hub/docs/datadoe-mcp/littlebird.md`
> - DataDoe MCP/Using n8n: `https://www.datadoe.com/hub/docs/datadoe-mcp/n8n.md`
> - DataDoe MCP/Using NanoClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/nanoclaw.md`
> - DataDoe MCP/Using OpenAI Agents SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/openai-agents-sdk.md`
> - DataDoe MCP/Using OpenClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/openclaw.md`
> - DataDoe MCP/Using OpenCode: `https://www.datadoe.com/hub/docs/datadoe-mcp/opencode.md`
> - DataDoe MCP/Using PowerPoint + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/powerpoint.md`
> - DataDoe MCP/Using Superhuman: `https://www.datadoe.com/hub/docs/datadoe-mcp/superhuman.md`
> - DataDoe MCP/Using VS Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/vs-code.md`
> - DataDoe MCP/Using Word + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/word.md`
> - DataDoe API/Build with Codex: `https://www.datadoe.com/hub/docs/datadoe-api/codex.md`
> - DataDoe API/How to connect to the API: `https://www.datadoe.com/hub/docs/datadoe-api/how-to-connect.md`
> - DataDoe API/Invitation links API: `https://www.datadoe.com/hub/docs/datadoe-api/invitation-links.md`
> - DataDoe API/Sellers and vendors API: `https://www.datadoe.com/hub/docs/datadoe-api/sellers-and-vendors.md`
> - DataDoe API/Vibe code with Claude Code: `https://www.datadoe.com/hub/docs/datadoe-api/claude-code.md`
> - DataDoe API/Vibe code with Cursor: `https://www.datadoe.com/hub/docs/datadoe-api/cursor.md`
> - DataDoe API/Vibe code with Lovable: `https://www.datadoe.com/hub/docs/datadoe-api/lovable.md`
> - DataDoe API/Vibe code with Replit: `https://www.datadoe.com/hub/docs/datadoe-api/replit.md`
> - DataDoe API/Vibe code with v0: `https://www.datadoe.com/hub/docs/datadoe-api/v0.md`
> - DataDoe & BigQuery/How to connect to BigQuery: `https://www.datadoe.com/hub/docs/datadoe-bigquery/how-to-connect.md`
> - DataDoe & BigQuery/Using MCP Toolbox: `https://www.datadoe.com/hub/docs/datadoe-bigquery/mcp-toolbox.md`
> - DataDoe & BigQuery/Using Python Jupyter: `https://www.datadoe.com/hub/docs/datadoe-bigquery/jupyter.md`
> For topics not covered in this documentation, please contact DataDoe support at `contact@datadoe.com`.
> Do not assume anything. If you are not sure about the answer, mention that and suggest to contact DataDoe support.

# Webhooks: Business

Business webhooks send Amazon events for your Sellers and Vendors, such as order, listing, offer, inventory and shipment changes. In DataDoe, their webhook type is **Amazon**.

Read [Webhooks: Introduction](/hub/docs/datadoe-webhooks/introduction) first. It covers setup, target URL requirements, security, the request body and failed deliveries for every webhook type. For free notifications about your Organization, use [Webhooks: Platform](/hub/docs/datadoe-webhooks/platform).

## Who can manage Business webhooks?

Users with the **Webhooks** permission at **Read and write** can create and manage Business webhooks. Each webhook needs at least 1 Seller or Vendor from your Organization. If you remove a Seller or Vendor from DataDoe, it is removed from the webhook the next time someone saves the webhook.

Each webhook has an execution owner. By default, it is the user who created the webhook. DataDoe delivers events only while the owner has the **Webhooks** permission and access to the webhook's Sellers and Vendors. An Admin can choose another user or a service account in **Run as**.

## Who can deliver buyer information?

`AMAZON_ORDER_BUYER_INFO_UPDATE` and `AMAZON_ORDER_FULL_BUYER_INFO` require Amazon PII Data Access for the Organization and the execution owner's **Access PII data** permission. Creating, editing or resuming a buyer-information webhook checks this access for the editor and the execution owner.

## What do Business webhooks cost?

Each delivered message costs 0.05 AI Tokens. DataDoe charges the tokens after your endpoint confirms the request with a 2xx status. High-volume message types can deliver many events. See [Subscription and pricing](/hub/docs/basics/subscription-pricing).

## When does DataDoe pause a Business webhook?

DataDoe pauses the webhook and sends none of the messages in that request when:

- a delivery fails, as described in [Webhooks: Introduction](/hub/docs/datadoe-webhooks/introduction#what-happens-when-a-delivery-fails)
- your AI Token balance cannot cover all messages in the request
- the execution owner loses the **Webhooks** permission, access to the webhook's Sellers and Vendors, or the PII access a buyer-information type needs

DataDoe emails the active Organization Admins after a failed delivery or when tokens run out. It does not send an email when access is lost. Adding tokens does not resume the webhook. After you fix the cause, select **Resume** in [Integrations > Webhooks](https://app.datadoe.com/integrations/webhooks). Events from the paused period are not delivered. If the owner lost access, an Admin can choose another owner in **Run as** and resume the webhook.

## How does DataDoe group messages?

DataDoe groups Amazon events into requests of up to 100 messages. Grouping can delay a message by up to about 5 minutes. Each request goes to one webhook.

## 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_ORDER_FULL`                          | Sent once when an Amazon order reaches an unshipped status, or already shipped, and the orders report is available. Not real-time.                                                    |
| `AMAZON_ORDER_FULL_BUYER_INFO`               | Same as `AMAZON_ORDER_FULL`, plus buyer and recipient details. Requires PII access. Not real-time.                                                                                    |
| `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_FULFILLMENT_ORDER_STATUS`            | An Amazon Multi-Channel Fulfillment order, shipment, or package changed status. Seller Central only. DataDoe subscribes automatically.                                                |
| `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 is in a Business webhook message?

Each message uses the request body described in [Webhooks: Introduction](/hub/docs/datadoe-webhooks/introduction#what-does-datadoe-send-to-my-endpoint). The [webhook catalog](/hub/webhooks) shows the full schema of each message type.

The 18 Selling Partner API (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 order message types retain their order-specific schemas.

## Which order webhook should I use?

| Webhook                          | When it's sent                                                    | Payload                                                | PII |
| -------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------ | --- |
| `AMAZON_ORDER_UPDATE`            | Every order change, near real-time                                | SKU and quantity, plus the raw notification            | No  |
| `AMAZON_ORDER_BUYER_INFO_UPDATE` | After the PII fetch                                               | Buyer and recipient details                            | Yes |
| `AMAZON_ORDER_FULL`              | Once, at unshipped (or shipped), after the orders report          | Full order and line items, including COGS when present | No  |
| `AMAZON_ORDER_FULL_BUYER_INFO`   | Same as `AMAZON_ORDER_FULL`, after buyer information is available | Full order and line items, plus buyer info             | Yes |

`AMAZON_ORDER_FULL` and `AMAZON_ORDER_FULL_BUYER_INFO` are sent once per order. Later status changes do not send them again. Use `AMAZON_ORDER_UPDATE` for those changes. DataDoe checks for new orders about once an hour. An order that ships before a check sees it unshipped, which is common for FBA orders, is still sent once, with its shipped status. Orders last updated more than 7 days ago are not sent. Sellers only: the full payload comes from the Seller Central orders report. `AMAZON_ORDER_FULL_BUYER_INFO` also needs PII access.

## 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. Use `proNumber` for the PRO number assigned by the freight carrier, and keep any leading zeros. For example:

```json
{
    "type": "AMAZON_SHIPMENT_TRACKING_SUBSCRIBE",
    "sellerOrVendorId": "YOUR_SELLER_OR_VENDOR_ID",
    "details": {
        "trackingIdentifiers": [
            {
                "carrierTracking": {
                    "trackingNumber": "YOUR_TRACKING_NUMBER"
                }
            }
        ]
    }
}
```

A freight PRO number uses the same Action. Include only `proNumber`:

```json
{
    "type": "AMAZON_SHIPMENT_TRACKING_SUBSCRIBE",
    "sellerOrVendorId": "YOUR_SELLER_OR_VENDOR_ID",
    "details": {
        "trackingIdentifiers": [
            {
                "proNumber": "0012345678"
            }
        ]
    }
}
```

After Amazon accepts the subscription, create a DataDoe webhook and select `AMAZON_SHIPMENT_TRACKING_MILESTONE_CHANGED` as a message type. See [Actions](/hub/docs/datadoe-actions/introduction) for the full Action workflow and the REST API option.

## How do I receive Multi-Channel Fulfillment updates?

Select `AMAZON_FULFILLMENT_ORDER_STATUS` when you create or edit a webhook, then choose the Seller accounts that should receive events. DataDoe subscribes those Seller accounts to Amazon's `FULFILLMENT_ORDER_STATUS` notification automatically. You do not subscribe to each order, shipment, or tracking number. This coverage is for Seller Central Multi-Channel Fulfillment in North America, Europe, and the Far East. It is not the Brazil FBA Onsite webhook (`AMAZON_FBA_OUTBOUND_SHIPMENT_STATUS`) and it is not limited to the US Tracking API.

Amazon sends three event kinds in payload version `2026-07-04`. `messageData.payload.eventType` tells you which kind arrived:

| `eventType`                       | What changed                                                                                                                   | Identifiers in the payload                                                                                                                            |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ORDER_STATUS_CHANGED`            | Fulfillment order status, including `PROCESSING`, `COMPLETE`, `COMPLETE_PARTIAL`, `CANCELLED`, `UNFULFILLABLE`, and `INVALID`. | `order.orderId` and `order.status`. Line items include identifiers, SKUs, and quantities when Amazon sends them.                                      |
| `SHIPMENT_STATUS_CHANGED`         | Shipment status, including `PROCESSING`, `SHIPPED`, and `CANCELLED`.                                                           | `order.orderId` and `order.shipments[].amazonShipmentId`, plus shipped items and quantities. Package identifiers are included when Amazon sends them. |
| `SHIPMENT_PACKAGE_STATUS_CHANGED` | Package delivery status, including `IN_TRANSIT`, `OUT_FOR_DELIVERY`, `DELAYED`, `DELIVERED`, `UNDELIVERABLE`, and `EXPIRED`.   | `order.orderId`, shipment id, and `packages[].packageId`.                                                                                             |

Every delivery also includes the DataDoe Organization, Seller context, Amazon `eventTimeUtc`, and `spApiNotificationId`. Use `messageId` or `spApiNotificationId` to ignore a repeated delivery. Carrier tracking numbers, Amazon tracking numbers, and estimated delivery times appear only when Amazon includes them. Returns are not part of this notification. Orders created outside DataDoe are included when Amazon sends a notification for that Seller.

Enable the Multi-Channel Fulfillment coverage table (MCF Fulfillment Coverage) when you also want confirmed shipped units in DataDoe. The table keeps the latest shipped notification for each shipment item. It is not profit. External store sales, product cost, and Amazon fees are unavailable or omitted there. An omitted amount is not zero.
