> ## Documentation Index
> Fetch the complete documentation index at: https://docs.davazmysel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Send conversions from Shopify, Stripe, HubSpot, and other platforms into your funnel.

Webhook receivers let external platforms push events into Dava — a paid Shopify order or a successful Stripe payment lands in your funnel as an Acquisition, attributed back to the campaign that brought the customer.

Webhooks are inbound only: platforms send events to Dava. Receivers are account-wide, not per domain — one receiver covers every domain in your workspace.

## Supported platforms

| Platform       | Trigger                  | Becomes                            |
| -------------- | ------------------------ | ---------------------------------- |
| Shopify        | Order paid               | Conversion with order value        |
| Stripe         | Payment succeeded        | Conversion with amount             |
| Stripe         | Subscription created     | Conversion with subscription value |
| HubSpot        | Deal moved to closed-won | Conversion with deal value         |
| Klaviyo        | Order placed             | Conversion with order value        |
| ActiveCampaign | Campaign sent            | Send event                         |
| Mailchimp      | Campaign sent            | Send event                         |
| Zapier         | Any Zap                  | Custom event you define            |

## Create a receiver

<Steps>
  <Step title="Add the receiver">
    In **Settings → Workspace → Settings & Integrations**, find the **Webhooks** card and click **Add receiver**, then pick the platform and event type.

    For **Stripe and Shopify**, paste the signing secret from that platform — Dava uses it to verify each request's signature. For the other platforms, Dava generates a token for you.
  </Step>

  <Step title="Copy the URL and secret">
    Dava shows the webhook URL and the secret **once**. Copy both before closing the panel.
  </Step>

  <Step title="Paste into the platform">
    Add the webhook URL in the external platform's webhook settings (for example Shopify → Settings → Notifications → Webhooks).
  </Step>
</Steps>

Each receiver row has a toggle to pause it, a **Rotate** action that issues a new secret (the old one stops working immediately), and a **Revoke** action that deletes the receiver permanently.

## How conversions match visitors

Dava ties an incoming webhook event to the visitor's journey using, in order:

1. **Contact ID** — the platform's customer ID, if it was previously seen on a tracked visit.
2. **Email** — hashed and matched against emails captured by the [tracking snippet](/tracking/install-snippet) on form submissions.

If neither matches yet, the conversion is stored and links up later, once the snippet sees that email on one of your pages.

## Zapier and custom payloads

The Zapier receiver accepts any JSON payload with two required fields:

```json theme={null}
{
  "email": "customer@example.com",
  "external_id": "order_123",
  "value": 99.99,
  "currency": "USD"
}
```

`email` drives identity matching and `external_id` prevents duplicates if the same event is delivered twice. `value`, `currency`, `event_type`, `contact_id`, and a free-form `properties` object are optional — if `properties` includes `transaction_id` (or `order_id`/`quote_id`/`policy_id`), that takes priority over `external_id` for matching duplicates, so a browser-fired and a server-confirmed delivery of the same purchase merge into one conversion even if their platform-assigned IDs differ. See [Deduplication](/tracking/server-side-events#deduplication) for the full merge behavior.

<Note>
  Platform quirks: HubSpot delivers webhooks with a 5–15 minute delay, and Mailchimp's campaign-sent webhook doesn't include recipient emails — per-recipient attribution for Mailchimp needs the snippet capturing emails on your pages.
</Note>
