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

# Automation Recipes: Zapier, Make, n8n and Clay

> Four ready-made flows that connect outreach to your spreadsheet, your Slack, your enrichment tool and your CRM.

There is no native app in any of these tools yet, and none is needed. All four speak plain HTTP, which is all the [public API](/integrations-api/public-api) and [webhooks](/integrations-api/outbound-webhooks) need.

Set up once:

<Steps>
  <Step title="Create an API key">
    **Settings → API & webhooks → API keys**. Give it the smallest role that works — `member` for most recipes. Copy it now; it is shown once.
  </Step>

  <Step title="Store it as a connection">
    In Zapier use a Webhooks by Zapier action with a header; in Make an HTTP module; in n8n a Header Auth credential; in Clay an HTTP API column. Never paste the key into a step your whole team can read.
  </Step>

  <Step title="Add an idempotency key to every write">
    All four tools retry on timeouts. Send `Idempotency-Key` with a value from your own data — a row id plus the step name works well — and a retry can never act twice.
  </Step>
</Steps>

## 1. New interested reply → Slack or your CRM

The one everyone builds first.

* **Trigger:** a [webhook](/integrations-api/outbound-webhooks) subscribed to `message.classified`.
* **Filter:** `data.intent` is `interested`.
* **Lookup:** `GET /v1/leads/{data.lead_id}` for the name, company and LinkedIn URL.
* **Action:** post to Slack, or create the contact or deal in your CRM.

Verify `x-signature` before trusting the payload — every tool can do an HMAC-SHA256 check — and use `x-delivery-id` to drop duplicates.

<Tip>
  For a full CRM relationship rather than a one-way notification, use the [native CRM sync](/integrations-api/crm-sync) instead. This recipe is for anything it doesn't cover.
</Tip>

## 2. New row in a sheet → create the lead → enrol

* **Trigger:** new row in Google Sheets, Airtable or a Clay table.
* **Step 1:** `POST /v1/leads` with the LinkedIn URL or email. Existing people are updated, not duplicated, and fields you leave out are never blanked.
* **Step 2:** `POST /v1/enrollments/preview` with the sequence and the new lead's id.
* **Step 3:** if `eligible_ids` is not empty, `POST /v1/enrollments` with `"confirm": true`.

Keeping the preview step means a suppressed or recently-replied lead is caught before anything is sent, exactly as in the app.

## 3. Found an email elsewhere → fill it on the lead

* **Trigger:** your enrichment tool finds a work email (Clay's waterfall, for example).
* **Action:** `PATCH /v1/leads/{id}` with `email_work`.

The email is only written when the field is **empty**. A lead who already has a verified address keeps it, and the response lists the field under `unchanged_fields` so your flow can tell the difference.

## 4. Meeting booked → CRM deal

* **Trigger:** a webhook subscribed to `meeting.booked`.
* **Payload:** `lead_id`, `sender_id`, `provider`, `starts_at`, `booking_id`.
* **Action:** create the deal, and optionally `GET /v1/leads/{id}/timeline` for the whole conversation history to attach to it.

## Tool notes

| Tool       | Watch out for                                                                                                              |
| ---------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Zapier** | *Webhooks by Zapier* for both the catch and the calls. Zapier retries silently — the idempotency header matters most here. |
| **Make**   | The HTTP module's "parse response" must be on to use fields in later modules.                                              |
| **n8n**    | A Header Auth credential keeps the key out of the workflow JSON you export.                                                |
| **Clay**   | Use an HTTP API column, and set the rate to stay under 600 reads an hour per key.                                          |

Longer step-by-step versions of each recipe, with the exact JSON bodies, ship with the API reference.

## Related articles

* [The Public API](/integrations-api/public-api)
* [Outbound Webhooks](/integrations-api/outbound-webhooks)
* [CRM Sync](/integrations-api/crm-sync)
