# Add every qualified lead to a Clay table

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

> Point a signed Embers webhook at a Clay table so each qualified lead arrives as one row, keyed on the LinkedIn URN, ready for your enrichments.

Clay is where many teams do the second half of the work: take a person who showed intent, enrich them, and decide what happens next. Embers can drop each qualified lead into a Clay table as one row, with the score, the ICP verdict, and the engagement that triggered it already attached.

> **Warning: Solo and above, administrators only**
>
> Clay is a recipe on [signed webhooks](/help/integrations/webhooks/), not a separate connection, so it needs what webhooks need: Solo or above and a workspace admin. On **Integrations** in the sidebar (`/integrations`), Clay is a row on the **Build your own** shelf, and its **Set up** adds the endpoint 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 Clay workspace with room for the rows you are about to add, and a table to receive them. A dedicated table is easier to reason about than a shared one.
- A plan for which enrichments run on arrival, because they spend Clay credits per row.
- A free endpoint slot. A workspace can have up to 10 webhook endpoints.

## Push leads into Clay

### Open Set up Clay

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

### Create the table and its webhook source

The sheet's first step: "In Clay, open a table, add a Webhook source and copy its URL." The source gives that table its own receiving URL; copy it, not the address of the page you are on.

### Add the URL as an Embers endpoint

The second step: "Paste the URL here. Embers sends it every new lead." Paste the Clay URL under **Webhook URL** and choose **Add endpoint**. It must be public HTTPS on port 443, with no `#` in it. Embers creates an endpoint named Clay, subscribed to `lead.created` only: it fires once per newly qualified lead, which maps to one row per person.

The sheet then shows the signing secret once, with **Copy**, and says Clay does not need it. Every request is signed; if it passes through your own code on the way to Clay, keep the secret and [verify the signature](/help/integrations/verify-webhook-signatures/) there.

Leave `lead.engagement.added` off unless you want another row every time a known lead engages again. It is the busiest event; add it later by editing the endpoint.

### Send a sample and map the columns

The third step: "Send a test, and use linkedin_urn as the row key, so a lead that comes back updates its row instead of adding one." With the source listening, choose **Send test**, then **Done**. The sample arrives as a `webhook.test` event with the lead shaped like a real one, so Clay can build columns without a test polluting anything downstream. The row now reads "Sending to Clay" with **Manage**, which opens the Webhooks page.

Keep the columns that earn their place:

| Column source | What you get |
| --- | --- |
| `data.lead.linkedin_urn` | LinkedIn's permanent member id. Use it as the row key |
| `data.lead.linkedin_url` | The profile link, for people rather than joins |
| `data.lead.name`, `title`, `company` | Who they are today |
| `data.lead.score`, `icp_match`, `icp_confidence` | The qualification, on a 0 to 100 scale |
| `data.lead.icp_reason` | One sentence explaining the match |
| `data.lead.top_signals` | The signals behind the score |
| `data.lead.work_history`, `certifications` | Up to 10 entries each |
| `data.engagement.recent` | Comment text, post URL, author type, and timestamps |
| `data.lead.contact` | Stored email and phone, with `included` true when one exists |

The [webhook payload reference](/help/integrations/webhook-payload-reference/) lists every field.

### Key the table on the LinkedIn URN

Key on `linkedin_urn`, as the sheet says, rather than the profile URL: members change their vanity slug, and some are only ever seen in URN form, so the same person can arrive under two URLs. Where the URN is blank on an older record, fall back to `data.lead.id`, the Embers id for that person in your workspace.

Then run your Clay enrichments on arrival, or behind a filter such as a score above 70.

## Which leads reach Clay

A lead is sent when its [score](/help/leads/how-scoring-works/) is above zero, it matched your ICP or you approved it by hand, and its company is not [blocklisted](/help/leads/company-blocklist/). Webhooks ignore [delivery rules](/help/integrations/delivery-rules/), so filter inside Clay if you want a narrower table.

Contact fields are a copy of what Embers already stores. The webhook never triggers a fresh lookup, so `email` and `phone` are `null` for anyone Embers has not [enriched](/help/outreach/lead-enrichment-and-contact-info/). During the [free trial](/help/account-and-billing/free-trial/) the `contact` object is left out entirely. Either way, a sound split is to let Embers hand over the person and the intent, and let Clay do the finding.

## Troubleshooting

**Two rows for one person.** Delivery is at least once, and retries can arrive out of order. Deduplicate on the `webhook-id` header for exact repeats and on `linkedin_urn` for the person.

**Rows arrive with empty email columns.** Check `data.lead.contact.included` before you branch on email. It is true only when a stored value exists.

**Rows stopped arriving.** The endpoint pauses on most `4xx` responses from Clay, or after retries run out about 6.3 days after the first attempt; the Clay row then reads "Paused" with **Fix**. **Activity** on the Webhooks page shows which. See [Webhook endpoint is paused](/help/troubleshooting/webhook-endpoint-paused/).

## Related

- [Send lead events to your own endpoint](/help/integrations/webhooks/): Endpoints, events, retries, and the delivery log.

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

- [Send Embers leads to Zapier](/help/integrations/zapier/): The same webhook, into a Zap.

## Frequently asked questions

**Is there a native Clay integration?**

No. Clay receives the same signed HTTPS webhook every other receiver does. Do not create a second Embers destination for it.

**Will every lead arrive with an email?**

No. The webhook copies only contact details Embers already holds, on a paid plan. Let Clay do the finding for the rest.
