> AI agents: this is one page from Mammoth Analytics documentation. The index of all pages as Markdown is https://docs.mammoth.io/llms.txt. Append `.md` to any docs URL, or send `Accept: text/markdown`, to get Markdown.

# Webhooks

> Create a webhook dataset so external systems can push JSON or form data to a Mammoth URL, with Combine or Replace mode and an optional secure header.

Webhooks let external systems push data directly into Mammoth. Instead of Mammoth pulling data from a source on a schedule, your external system sends data to a Mammoth-generated URL whenever an event occurs. Payloads that Mammoth receives are held until they are processed into a batch in your dataset, ready for transformation and analysis.

This makes Webhooks the right choice when data originates from event-driven systems—applications, forms, payment platforms, or custom APIs—and the source system pushes the data to Mammoth instead of Mammoth pulling it.

## When to use webhooks

Use Webhooks when:

- An external platform supports outbound webhooks (for example, a payment platform, a CRM, or a custom-built app)
- You want the source system to send data to Mammoth without Mammoth pulling it on a schedule
- Your source system pushes data on events (new order, form submission, status change) rather than making data available for polling
- You are building an automated pipeline where another system sends data to Mammoth as part of a larger workflow

Use a Connector instead when you need Mammoth to pull data from a database or API on a recurring schedule. Use File Upload when data arrives as files manually or periodically.

## Create a webhook dataset

1. Click **+ New Dataset** in the Data Library
2. Select **Webhooks** from the left panel
3. Enter a **New dataset name**—use a name that reflects the source system or event type (for example, `Shopify_Orders` or `Form_Submissions`)
4. Select a **Dataset mode**:
   - **Combine with older data**—each processed set of payloads is appended as a new batch, preserving the full history of all events received. Use this for transaction logs, event streams, form submissions, or any data where history matters.
   - **Replace the older data**—each processed set of payloads replaces the previous batches entirely. Use this when the external system sends a complete current-state snapshot each time and you only need the latest version. New webhooks default to this mode.
5. Click **Create new dataset**

The new dataset appears in the Data Library, ready to receive data.

![New Dataset dialog with Webhooks selected, a New dataset name field, and the Dataset mode set to Combine with older data](https://docs.mammoth.io/api/v1/images/20260408_152258_webhook.png.jpg)

## Find your webhook URL and settings after creation

Once the dataset is created, open it from the Data Library. The **Settings** section of the dataset's preview panel shows the following:

- **Webhook URL**—the unique address your external system sends data to. Copy this and paste it into your external system's webhook configuration.

- **API key**—the unique key of this webhook. It is also the last part of the Webhook URL.

- **Secure header**—an optional secret that verifies incoming requests. Set it to **Enabled** and Mammoth shows the secret next to the toggle as `X-SECRET: <value>`. Your external system must then send that value in an `X-SECRET` request header. Mammoth ignores requests whose `X-SECRET` header is missing or does not match. When it is **Disabled**, Mammoth accepts requests to the URL without header validation. New webhooks are created with Secure header **Disabled**. Enable it for production integrations.

Configure the Webhook URL (and the `X-SECRET` header, if you enabled Secure header) in your external system's webhook settings before expecting data to arrive.

## How incoming webhook data works

Each time your external system sends a POST request to the Webhook URL, Mammoth accepts the payload (JSON, or form fields; query parameters on a GET request also work) and holds it until it is processed. Processing turns all held payloads into one new batch, according to the Dataset mode you configured:

- In **Combine** mode, the batch is added alongside all previous batches
- In **Replace** mode, the batch replaces the previous batches

Held payloads are processed once a day. To process them sooner, click **Refresh** on the dataset in the Data Library. This option appears only while the dataset has payloads waiting to be processed.

You can open the dataset at any time to see received batches, check row counts, and verify data is arriving as expected. The dataset has a single text column named JSON, and each payload is stored as one raw JSON row. Parse the JSON into separate columns in a View, then apply further transformations or connect the dataset to an automation pipeline for automated processing.

## Troubleshoot webhook datasets

### No data arriving in the dataset

Verify the Webhook URL is correctly configured in your external system, and that the `X-SECRET` header matches if Secure header is Enabled. Check that the external system is actually sending POST requests—most webhook platforms include a delivery log or test button. Confirm the dataset has not been deleted. Payloads are processed into a batch once a day, so click **Refresh** on the dataset to see them sooner.

### Payload received but data looks unexpected

Open the dataset and inspect the most recent batch. If the schema does not match what you expected, check whether the external system changed its payload structure. You may need to update your transformation pipeline to handle the new structure.

### Requests ignored when Secure header is Enabled

Check that your external system sends the secret shown in the Settings section in an `X-SECRET` request header. If Secure header is Enabled on the dataset, Mammoth ignores requests without the matching secret. You can temporarily disable Secure header for testing, then re-enable it for production.

---
Source: https://docs.mammoth.io/learn/data-sources/webhooks.md · Updated: 2026-10-13