---
id: webhooks
title: Webhooks
description: Push captured leads to your CRM, Zapier, or a custom endpoint in real time.
---

Webhooks let Chatley push **captured leads** straight to your own systems — a
CRM, a Zapier/Make automation, or a custom API — the moment a lead is submitted
through one of your lead forms.

Instead of polling for new leads, you give Chatley a URL and it sends each new
lead there automatically as an HTTP request.

![Webhook flow — a submitted lead is sent by Chatley as an HTTP POST to your endpoint, which replies with a 2xx status](/img/webhooks-flow.svg)

## Before you begin

- Sign in and open the workspace where your lead forms live.
- Have an **HTTPS endpoint** ready that can accept a `POST` request. This can be:
  - a Zapier / Make "Catch Hook" webhook URL,
  - a CRM's inbound webhook, or
  - your own API route.

## Step 1 — Open the Webhooks tab

1. In your workspace, go to **Lead forms**.
2. Select the **Webhooks** tab.

You'll see the **Lead Webhooks** panel with a field labelled **Your Webhook
Endpoint URL**.

## Step 2 — Add your endpoint URL

1. Paste your endpoint into **Your Webhook Endpoint URL**, for example:

   ```
   https://your-api.com/webhooks/leads
   ```

2. The URL must be a well-formed `http://` or `https://` address with a real
   host. Invalid values are rejected inline — use HTTPS in production.
3. Click **Save**. When the saved URL matches what's in the field, the panel
   shows a green **Active** indicator and a **Saved** state on the button.

## Step 3 — Send a test payload

Once a URL is saved, a **Test** button appears next to **Save**.

1. Click **Test** to send a sample lead payload to your endpoint.
2. A success toast confirms the payload was sent. If it fails, make sure your
   endpoint is reachable and returns a success response.

:::tip
Use the test payload to build and verify your integration before real leads
start flowing.
:::

## What Chatley sends

When a visitor submits one of your lead forms, Chatley sends a `POST`
request to your endpoint with a JSON body describing the lead. A payload looks
similar to this (fields depend on your form and whether a call was made):

```json
{
  "name": "Jane Doe",
  "phone": "+15551234567",
  "formId": "665f0c9b2a...",
  "agentId": "665f0a1e77...",
  "createdAt": "2026-07-03T12:34:56.000Z",
  "customData": {
    "company": "Acme Inc.",
    "budget": "5000"
  },
  "summary": "Caller asked about pricing and booked a follow-up.",
  "recordingUrl": "https://.../recording.mp3"
}
```

:::note
Custom fields you add to a form appear under `customData`. Call-related fields
such as `summary`, `transcript`, `recordingUrl`, `durationSeconds`, and `cost`
are included when the lead is linked to a call.
:::

Your endpoint should respond with a `2xx` status to acknowledge receipt.

## Quote events

If you use the [Quote Agent](./quote-agent/overview.md), the same URL also receives
`quote.created`, `quote.sent`, `quote.accepted` and `quote.declined` events, each
with the full itemized quote. See [CRM & webhooks](./quote-agent/crm.md) for the payload.

## Using with Zapier

Zapier is the quickest way to get leads into another tool without writing code.
Create a **Catch Hook** trigger in Zapier, copy the hook URL it gives you, and
paste that as your webhook endpoint. Every captured lead then arrives in Zapier
as a new run, and the rest of the Zap is yours to build.

Make and any other service that accepts an inbound webhook work the same way.

## Troubleshooting

| Problem | What to check |
| --- | --- |
| **"Webhook URL must start with http:// or https://"** | Enter a complete URL including the scheme and a real host. |
| Save button stays disabled | The URL is empty or invalid — fix the format shown in the inline error. |
| **Webhook test failed** | Confirm the endpoint is live, publicly reachable, and returns a `2xx` response. |
| No leads arriving | Verify the URL is **Saved** (green *Active*), and that your forms are collecting submissions. |

## Next steps

- [Talk to Assistant](./talk-to-assistant.md) — test your agent live.
- [Getting started](./getting-started.md) — workspaces and agents overview.
