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

# Getting started

> What Grow CRM webhooks are, how delivery works, and the payload envelope every event shares.

# Getting started

The Webhooks module lets Grow CRM notify **your own server** in real time when things happen in the
CRM — an invoice is created, a lead converts, a payment comes in. You give the module a URL and pick
the events you care about; when they occur, the CRM sends an HTTP POST with a JSON payload.

This module is self-contained and does not require the Api module to be installed.

## Where to manage webhooks

**Settings → Webhooks → Endpoints**. Each endpoint is a destination URL plus a set of subscribed
events. You can have as many endpoints as you like, each subscribed to a different set of events.

## How delivery works

Delivery is **asynchronous**. When a subscribed event fires in the CRM:

1. The event is queued as a **delivery** — one row per subscribed, active endpoint.
2. A background process (running every minute) sends due deliveries.
3. The receiving server should respond with a `2xx` status. Requests time out after **15 seconds**;
   anything other than a `2xx` (including a timeout) counts as a failure and is retried.

Do the real work *after* responding where you can — acknowledge the delivery quickly, then process
it. A receiver that does slow work before replying risks tripping the timeout and being sent a
duplicate on retry.

Because delivery happens in the background, a slow or unreachable endpoint never affects the CRM
itself — creating an invoice, for example, is never slowed down by a webhook receiver being down.

## The payload envelope

Every delivery is a JSON object with the same top-level shape:

```json theme={null}
{
  "event": "invoice.created",
  "id": 295,
  "created": "2026-07-13T10:15:00+00:00",
  "data": { }
}
```

| Field     | Description                                                                                                                                                                                             |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event`   | The event key, e.g. `invoice.created`. See **[Event reference](/events)** for the full list.                                                                                                            |
| `id`      | The affected record's id. The one exception is `<resource>.imported`, where a whole batch is delivered rather than a single record — there `id` is the import's reference **string**, not a numeric id. |
| `created` | ISO 8601 timestamp of when the event was queued.                                                                                                                                                        |
| `data`    | The record's data, shaped for the event's resource type. For deletion events, `data` is just `{ "id": ... }` — the record no longer exists to describe.                                                 |

## Retries and auto-disable

A failed delivery is retried twice more, then given up on:

| Attempt | Timing      |
| ------- | ----------- |
| 1       | Immediately |
| 2       | +5 minutes  |
| 3       | +30 minutes |

If an endpoint accumulates **10 consecutive** exhausted deliveries (no successful delivery in
between), it is automatically **disabled** and the CRM's main administrator is emailed. A disabled
endpoint stops receiving new deliveries until it is manually re-enabled from **Settings → Webhooks →
Endpoints**.

## Next steps

* **[Endpoints](/endpoints)** — creating endpoints, subscribing to events, testing and the delivery log.
* **[Verification](/verification)** — confirming a request genuinely came from Grow CRM.
* **[Event reference](/events)** — every event key and its payload shape.
