# Send Embers leads to a Make scenario

URL: https://useembers.com/help/integrations/make/
Category: Integrations
Plan: Solo and above
Updated: 2026-10-28
Last verified: 2026-10-28

> Feed a Make custom webhook from a signed Embers endpoint, verify the HMAC, and route each qualified lead through a scenario you build.

Make suits Embers leads when you want branches: one route for high scores, another for everything else, a filter for leads that already have contact details. The connection is the same [signed HTTPS webhook](/help/integrations/webhooks/) Embers sends to any receiver.

> **Warning: Solo and above, administrators only**
>
> Webhook endpoints require Solo or above, and only a workspace admin can create them. There is no Embers app in Make's library: on **Integrations** in the sidebar (`/integrations`), Make is a row on the **Build your own** shelf, and its **Set up** adds the webhook for you. A member sees "Administrators only" with **Read the guide**, and below Solo the row reads "Solo and above" with **See plans**.

## Before you start

- A Make account that can create scenarios with a custom webhook.
- A free endpoint slot. A workspace can have up to 10 webhook endpoints.

## Connect Make

### Open Set up Make

In Embers, open **Integrations** in the sidebar and choose **Set up** on the **Make** row. A side sheet, **Set up Make**, opens with three steps.

### Add a custom webhook module

The sheet's first step: "In Make, add a Custom webhook module and copy its URL." In Make, start a scenario with **Webhooks**, then **Custom webhook**, and add a new webhook.

If the scenario will verify signatures, as below, open its advanced settings before you copy the address: turn on **Get request headers** so the scenario sees the signature headers, and **JSON pass-through** so it receives the body as unparsed text.

### Add the endpoint

The second step: "Paste the URL here. Embers sends it every new lead." Paste the address under **Webhook URL** and choose **Add endpoint**. Embers creates an endpoint named Make, subscribed to **New ICP lead** (`lead.created`) only: one event per newly qualified lead, carrying the engagement that qualified them.

The sheet then shows the signing secret once, with **Copy**, and says Make does not need it. Copy the `whsec_` secret now if you will verify signatures; it is not shown again.

### Send a sample so Make learns the shape

The third step: "Send a test so Make learns the fields, then build the rest of the scenario." While the webhook module waits to determine the data structure, choose **Send test**. The sample arrives as `webhook.test` with `data.is_test` set to `true` and a lead shaped like the real event, so Make records the structure and your filters can tell the sample apart.

The row now reads "Sending to Make" with **Manage**, which opens the Webhooks page. Edit the endpoint there to add events: **New engagement** (`lead.engagement.added`) is the highest-volume one, even batched to one event per lead per scan, **Lead status changed** and **Report ready** react to pipeline moves and finished [client reports](/help/reports-and-workspaces/client-reports/), and **Lead changed** (`lead.changed`) to a [company change](/help/leads/company-changes/) at a lead, such as a new role or a funding round.

### Verify the signature and build the scenario

Check the signature before any module writes data. With request headers on, Make gives you an array of name and value pairs; `get(map(1.headers; "value"; "name"; "webhook-id"); 1)` pulls one out by name. The signed content is `{webhook-id}.{webhook-timestamp}.{raw body}`, and the expected value is its HMAC-SHA256, base64-encoded, keyed with the secret after `whsec_` decoded from base64. Make's `sha256()` function returns an HMAC when you pass it a key and a key encoding. Put the comparison in a filter right after the trigger, and confirm a fresh test passes it before you go live. [Verify webhook signatures](/help/integrations/verify-webhook-signatures/) explains the scheme in full.

Then parse the body with **JSON**, then **Parse JSON**, and build the rest. Fields worth routing on:

| Field | Why it is useful |
| --- | --- |
| `data.lead.linkedin_urn` | The join key. Vanity URLs change, this does not |
| `data.lead.score` | 0 to 100, the number the app shows |
| `data.lead.icp_match`, `data.lead.icp_confidence` | Filter for the strongest matches |
| `data.lead.contact.included` | True only when Embers has a stored email or phone |
| `data.engagement.recent` | Comment text, post URL, and timestamps on `lead.created` |
| `account.id`, `account.name` | Route [client workspaces](/help/reports-and-workspaces/agency-workspaces-and-client-feeds/) through one scenario |

On `lead.engagement.added` the engagement list is `data.engagement.engagements` instead, and each item's `engaged_at_precision` says whether the time was measured (`exact`, comments and replies) or substituted. The [webhook payload reference](/help/integrations/webhook-payload-reference/) lists every field.

## What reaches the scenario

A lead event fires when the person qualifies: a score above zero, an ICP match or a manual approval, and a company that is not blocklisted. Delivery rules do not filter webhooks, so put narrower conditions in the scenario.

Delivery is at least once, and retries can arrive out of order, so deduplicate on the `webhook-id` header. Any `2xx` within about 10 seconds counts as delivered.

## Troubleshooting

**The filter rejects every request.** JSON pass-through is off, so the body you hash has been parsed and rebuilt. Turn it on, redetermine the data structure, and send a new test from Embers.

**Make stopped receiving.** On the Webhooks page, pick the Make endpoint under **Activity**. Each row gives Make's answer in words, and its chevron opens **Delivery details**: every attempt, with the start of Make's response.

**The endpoint paused itself.** The Make row reads "Paused" with **Fix**. Make answered with a `4xx`, often because the webhook was deleted or replaced, or eight attempts failed. See [webhook retries and pauses](/help/integrations/webhook-retries-and-pauses/).

**Names split badly.** The webhook carries one `name` field. Split it in the scenario, or use HubSpot or a CSV export with split names.

## Related

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

- [Send Embers leads to Zapier](/help/integrations/zapier/): The same recipe with a Catch Raw Hook.

- [Webhook retries and pauses](/help/integrations/webhook-retries-and-pauses/): What happens when the scenario is down.

## Frequently asked questions

**Is there an Embers app in Make?**

No. Embers reaches Make as an incoming HTTP request to a custom webhook, the same signed request any receiver gets.

**Can one scenario handle several client workspaces?**

Yes. Every event carries account.id and account.name, so a router can branch on the workspace.
