> 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: Business: `https://www.datadoe.com/hub/docs/datadoe-webhooks/business.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: Introduction

DataDoe Webhooks send an HTTPS `POST` request to an endpoint you control when selected events happen. Use them to start automations, sync events into your enterprise resource planning (ERP) or warehouse management system (WMS), or start downstream jobs without polling DataDoe or Amazon.

## Which webhook type do I need?

DataDoe has 2 webhook types. You choose the type when you create a webhook. To use another type, create a new webhook.

|                       | Business webhooks                                                                          | Platform webhooks                                                                             |
| --------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| Type in DataDoe       | **Amazon**                                                                                 | **Platform**                                                                                  |
| Events                | Amazon events for your Sellers and Vendors, such as orders, listings, offers and inventory | Events about your Organization, such as initial loads, AI Tokens, Actions, billing and access |
| Scope                 | The Sellers and Vendors you select                                                         | Your whole Organization, including Sellers and Vendors you add later                          |
| Who can manage them   | Users with the **Webhooks** permission                                                     | Organization Admins only                                                                      |
| Cost                  | 0.05 AI Tokens for each delivered message                                                  | Free, 0 AI Tokens                                                                             |
| Messages in a request | Up to 100                                                                                  | 1                                                                                             |
| Guide                 | [Webhooks: Business](/hub/docs/datadoe-webhooks/business)                                  | [Webhooks: Platform](/hub/docs/datadoe-webhooks/platform)                                     |

The [webhook catalog](/hub/webhooks) lists every message type with its summary and payload schema. Platform message types have the **Platform (free)** label. Amazon message types that can send many events have the **High volume** label. AI agents can read the [machine-readable catalog](https://api.datadoe.com/api/v1/spec/webhook-scheme).

## How do I set up a webhook?

1. Open [Integrations > Webhooks](https://app.datadoe.com/integrations/webhooks).
2. Select **New webhook** and choose the webhook type.
3. Enter a name and the HTTPS target URL of your endpoint.
4. Select the message types. For a Business webhook, also select the Sellers and Vendors.
5. Add a secret header name and value. This step is optional, but we recommend it for every webhook.
6. Save the webhook.

A new webhook is **Active**. It receives events that happen after you save it. You can create several webhooks, for example one for your ERP and another for an internal queue. DataDoe delivers an event to each active webhook that subscribes to it.

## What are the target URL requirements?

Your target URL must:

- use HTTPS
- use a public domain name, not an IP address, `localhost` or a name without a dot
- resolve only to public IP addresses
- accept `POST` requests

DataDoe checks the URL when you save the webhook and checks its DNS again before each delivery. A domain that resolves to a private network address fails delivery. DataDoe does not follow redirects, so a 3xx response is a failed delivery.

## How do I secure my webhook?

Add a secret HTTP header so that your endpoint can reject forged requests. In [Integrations > Webhooks](https://app.datadoe.com/integrations/webhooks), set a header name and a long, random value when you create or edit a webhook. DataDoe sends this header with every request.

Store the value securely on your server. Compare the incoming header with the stored value before you process the request. Reject the request if the header is missing or wrong.

## What does DataDoe send to my endpoint?

DataDoe sends an HTTPS `POST` with `Content-Type: application/json`. The body has this shape:

```json
{
    "deliveryId": "550e8400-e29b-41d4-a716-446655440000",
    "organizationId": "11111111-1111-4111-8111-111111111111",
    "webhookId": "33333333-3333-4333-8333-333333333333",
    "messages": [
        {
            "organizationId": "11111111-1111-4111-8111-111111111111",
            "sellerOrVendorId": "22222222-2222-4222-8222-222222222222",
            "messageId": "44444444-4444-4444-8444-444444444444",
            "messageType": "AMAZON_ORDER_UPDATE",
            "messageSummary": {},
            "messageData": {}
        }
    ]
}
```

| Field              | Meaning                                                                                       |
| ------------------ | --------------------------------------------------------------------------------------------- |
| `deliveryId`       | Unique ID of this HTTPS request. It changes for each request.                                 |
| `organizationId`   | Your DataDoe Organization.                                                                    |
| `webhookId`        | The webhook that receives this request.                                                       |
| `messages`         | The events in this request.                                                                   |
| `sellerOrVendorId` | The DataDoe Seller or Vendor of the event. Platform events about the Organization use `null`. |
| `messageId`        | Unique ID of a single event. Use it to detect a message you already processed.                |
| `messageType`      | The event type, for example `AMAZON_ORDER_UPDATE`.                                            |
| `messageSummary`   | Short metadata about the event. Its fields depend on the message type.                        |
| `messageData`      | The event payload. Its fields depend on the message type.                                     |

The [webhook catalog](/hub/webhooks) shows the `messageSummary` and `messageData` fields of each message type.

## What should my endpoint return?

Return any 2xx status within 30 seconds to confirm that you received the request. Then process the messages separately, so that slow processing does not cause a timeout.

DataDoe treats any other status, a timeout or a network error as a failed delivery.

## What happens when a delivery fails?

When a delivery fails, DataDoe:

1. Pauses the webhook.
2. Emails the active Organization Admins.

DataDoe does not retry a failed request. A paused webhook does not receive events, and DataDoe does not send them later. After you fix your endpoint, open [Integrations > Webhooks](https://app.datadoe.com/integrations/webhooks) and select **Resume**. The webhook then receives new events.

Webhooks can also pause for other reasons, such as missing AI Tokens or lost access. See [Webhooks: Business](/hub/docs/datadoe-webhooks/business) and [Webhooks: Platform](/hub/docs/datadoe-webhooks/platform) for the details of each type.

If you think a failed delivery is caused by DataDoe, use the [contact form](https://forms.clickup.com/9015200219/f/8cnj2ev-38615/AOYF9I35QFOXWJQXIG?type=Form&source=hub-webhooks-docs).

## How are webhooks related to real-time data?

Webhooks complement the scheduled and real-time data pipelines described in [Data Fetch Periods](/hub/docs/datadoe-data/data-fetch-periods). They are the recommended way to get real-time updates.

## Where can I get help?

Use the [contact form](https://forms.clickup.com/9015200219/f/8cnj2ev-38615/AOYF9I35QFOXWJQXIG?type=Form&source=hub-webhooks-docs).
