# Send Embers leads to Zapier

URL: https://useembers.com/help/integrations/zapier/
Category: Integrations
Plan: Solo and above
Updated: 2026-09-12
Last verified: 2026-09-12

> Point a signed Embers webhook at a Zapier Catch Hook, map the lead fields, and fan each qualified lead out to the rest of your stack.

Zapier is the quickest way to put an Embers lead somewhere Embers does not talk to directly: a sheet, a sequencer, a CRM Embers has no destination for. You do it by pointing a signed Embers webhook at a Zapier Catch Hook.

> **Warning: A recipe, not a native integration**
>
> Embers has not built a Zapier app. There is no Embers trigger to search for in Zapier's directory. What exists is a recipe on top of the signed HTTPS webhook, listed in the app under **Settings**, then **Integrations** (`/settings/integrations`). Do not create a second Embers destination for Zapier: the webhook you already have is the integration.

> **Warning: Solo and above, administrators only**
>
> The Integrations and Webhooks screens require Solo or above, and only an account administrator can reach them.

## Before you start

- A Zapier account that can create a Catch Hook trigger.
- Somewhere to send the lead once Zapier has it.
- Somewhere to store the signing secret, if you plan to verify the signature inside the Zap.

## Connect Zapier

### Create a Catch Hook in Zapier

In Zapier, start a Zap with a Catch Hook trigger. Zapier gives you a public HTTPS URL. Copy that receiving URL, not the URL of the page you are looking at.

### Register the URL in Embers

In the Embers app, go to **Developer**, then **Webhooks** (`/developer/webhooks`) and add the Catch Hook URL as an endpoint. Endpoints must be public HTTPS on port 443, and a URL with a `#` fragment is rejected because browsers never send fragments in an HTTP request.

An account can have up to 10 endpoints.

### Subscribe to the events you want

Subscribe the endpoint to `lead.created` first. That is one event per newly qualified lead, and it already carries the engagement that qualified them.

`lead.engagement.added` fires every time an existing lead engages again. It is the highest-volume event and new endpoints are not subscribed to it by default. Add it only if your Zap is built to handle repeats.

### Send a test and map the fields

Use the sample send on the Webhooks screen while Zapier is listening. The delivery arrives with the event type `webhook.test` and the nested lead shaped like the production event, so Zapier can record the field structure without a test creating a real CRM record.

Then map what you need:

| Embers field | Use it for |
| --- | --- |
| `data.lead.linkedin_urn` | The join key. Stable even when someone changes their vanity URL |
| `data.lead.name` | Full name. The payload has no first or last name field |
| `data.lead.title`, `data.lead.company` | Role and employer |
| `data.lead.score`, `data.lead.icp_confidence` | Both on the same 0 to 100 scale as the app |
| `data.lead.icp_reason` | One sentence on why they matched |
| `data.lead.top_signals` | The signals behind the score |
| `data.lead.contact.email`, `.phone` | Only when `data.lead.contact.included` is true |
| `data.engagement.recent` | The comment text, post URL, and timestamps |

There is no grade field. Derive it from the score: A at 80 or above, B at 60, C at 40, D at 20, F below that.

### Verify the signature

Anyone who learns a Catch Hook URL can post to it, so check the signature before the Zap writes anything. Embers sends Standard Webhooks headers: `webhook-id`, `webhook-timestamp`, and `webhook-signature` in the form `v1,<base64 HMAC-SHA256>`.

Decode the `whsec_` secret from base64 and compute the HMAC over `{webhook-id}.{webhook-timestamp}.{raw body}`. [Verify webhook signatures](/help/integrations/verify-webhook-signatures/) has the full recipe.

## What Embers sends and when

A lead is delivered when its score is above zero, it matched your ICP or you approved it manually, and its company is not blocklisted. Nothing else reaches the Zap.

Delivery is at least once. Retries can arrive out of order, so deduplicate on `webhook-id` and keep the Zap safe to run twice on the same event.

## Troubleshooting

**The Zap fires twice for one person.** That is normal at-least-once delivery, or a `lead.created` followed later by a `lead.engagement.added`. Deduplicate on `webhook-id` for exact repeats and on `linkedin_urn` for the person.

**Embers paused the endpoint.** Zapier returned a `4xx`, or eight attempts failed over roughly 6.3 days. Fix the receiver, then edit the endpoint URL to clear the pause and replay from the delivery log. See [Webhook endpoint is paused](/help/troubleshooting/webhook-endpoint-paused/).

**Email and phone are empty.** Contact fields carry only what Embers has already stored. The webhook never triggers a fresh lookup, and `included` is false when there is nothing stored.

## Related

- [Signed webhooks](/help/integrations/webhooks/): Endpoints, events, retries, and the delivery log.

- [Webhook payload reference](/help/integrations/webhook-payload-reference/): Every field in every event.

- [Make](/help/integrations/make/): The same recipe with a Make scenario.
