> ## 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.

# Clients

> Payload reference for client.created, client.updated, client.sundry, client.activity and client.deleted webhooks.

# Clients

> New to webhooks? Start with **[Getting started](/getting-started)** (envelope, delivery, retries)
> and **[Verification](/verification)** (confirming a request came from Grow CRM). Those conventions
> apply to every event below and are not repeated here.

Clients expose all five keys plus an import key: `client.created`, `client.updated`,
`client.deleted`, `client.sundry`, `client.activity`, `client.imported`.

## The client object

Every key except `.deleted` carries this shape, either flat (`.created`) or nested under `client`
(`.updated`/`.sundry`):

```json theme={null}
{
  "id": 12,
  "company_name": "Acme Inc",
  "description": "Key account.",
  "status": "active",
  "phone": "+1 555 0100",
  "website": "https://acme.example",
  "category": { "id": 2, "name": "Standard" },
  "billing": {
    "street": "1 Market St",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94105",
    "country": "United States"
  },
  "dates": { "created": "2026-06-15T09:30:00.000000Z", "updated": "2026-07-16T08:12:00.000000Z" },
  "tags": ["priority", "retainer"]
}
```

| Field          | Type             | Notes                                                                                                                                   |
| -------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `id`           | integer          | `client_id`.                                                                                                                            |
| `company_name` | string           |                                                                                                                                         |
| `description`  | string\|null     |                                                                                                                                         |
| `status`       | string           | `active` or `suspended`.                                                                                                                |
| `phone`        | string\|null     |                                                                                                                                         |
| `website`      | string\|null     |                                                                                                                                         |
| `category`     | object           | `{ id, name }`.                                                                                                                         |
| `billing`      | object           | Billing address only — no shipping address or VAT on this shape.                                                                        |
| `dates`        | object           | `created`, `updated` — both ISO 8601 with microseconds (`…T…Z`), since `Client` recasts these via Eloquent's `CREATED_AT`/`UPDATED_AT`. |
| `tags`         | array of strings | Tag titles.                                                                                                                             |

## `client.created`

Fires when a client is created. `data` is the full client object above.

```json theme={null}
{
  "event": "client.created",
  "id": 12,
  "created": "2026-07-16T08:00:00+00:00",
  "data": {
    "id": 12,
    "company_name": "Acme Inc",
    "description": null,
    "status": "active",
    "phone": null,
    "website": null,
    "category": { "id": 1, "name": "Default" },
    "billing": { "street": null, "city": null, "state": null, "zip": null, "country": null },
    "dates": { "created": "2026-07-16T08:00:00.000000Z", "updated": "2026-07-16T08:00:00.000000Z" },
    "tags": []
  }
}
```

## `client.updated`

Fires on a significant change. `data.change` tells you which; `data.client` is the full object.

| `change` | Fires when                                                                                          |
| -------- | --------------------------------------------------------------------------------------------------- |
| `edited` | The main client edit form is saved (name, phone, website, category, billing address, status, tags). |
| `owner`  | The client's primary account owner is reassigned.                                                   |

```json theme={null}
{
  "event": "client.updated",
  "id": 12,
  "created": "2026-07-16T08:05:00+00:00",
  "data": {
    "change": "owner",
    "client": { "id": 12, "company_name": "Acme Inc", "...": "..." }
  }
}
```

## `client.sundry`

Fires on a minor, cosmetic field edit. `data.field` names it; `data.client` is the full object (same
shape as `.updated`, just a lower-significance discriminator).

| `field`       | Fires when                                                                      |
| ------------- | ------------------------------------------------------------------------------- |
| `description` | The client's description is edited on its own (inline edit, not the main form). |
| `logo`        | The client's logo is changed.                                                   |

```json theme={null}
{
  "event": "client.sundry",
  "id": 12,
  "created": "2026-07-16T08:07:00+00:00",
  "data": {
    "field": "description",
    "client": { "id": 12, "company_name": "Acme Inc", "...": "..." }
  }
}
```

## `client.activity`

Fires when a child record on the client changes.

| `type`       | `action`                      | Item shape                                                                                                                                                 |
| ------------ | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attachment` | `added`, `deleted`            | `{ id, uniqueid, filename }` — files uploaded to the client's Files tab. The delete event reads the record before removal, so the full shape is available. |
| `note`       | `added`, `updated`, `deleted` | `{ id, title, text, created }` — notes marked **private** are never delivered, as the CRM restricts those to their author.                                 |

There are no client-level comments or logs — the CRM has no client comments feature, so unlike
projects, leads and tasks, `client.activity` never carries `type: "comment"`.

```json theme={null}
{
  "event": "client.activity",
  "id": 12,
  "created": "2026-07-16T08:10:00+00:00",
  "data": {
    "type": "note",
    "action": "added",
    "item": { "id": 72, "title": "Renewal", "text": "Renewed for another year.", "created": "2026-07-16T08:10:00.000000Z" }
  }
}
```

A `deleted` comment carries the same full item shape (the comment is fetched and transformed before
it's removed, not after).

## `client.deleted`

Fires after the client is deleted. `data` is just the id — the record no longer exists to describe.

```json theme={null}
{
  "event": "client.deleted",
  "id": 12,
  "created": "2026-07-16T08:15:00+00:00",
  "data": { "id": 12 }
}
```

## `client.imported`

Fires when a bulk client import finishes. Imported clients do **not** fire `client.created` — see
**[Imports](/events#imports)** for the batch shape, batching rules and the fields common to every
import event.

Each client record in the batch carries:

| Field     | Type         |
| --------- | ------------ |
| `id`      | integer      |
| `name`    | string       |
| `email`   | string\|null |
| `created` | string       |

```json theme={null}
{
  "event": "client.imported",
  "id": "8f3ka92m",
  "created": "2026-07-31T10:00:00+00:00",
  "data": {
    "import_ref": "8f3ka92m",
    "imported_by": 3,
    "batch": 1,
    "batch_count": 2,
    "totals": { "imported": 1420, "skipped": 8, "errors": 0 },
    "records": [
      { "id": 12, "name": "Acme Inc", "email": "billing@acme.example", "created": "2026-07-31T10:00:00.000000Z" }
    ]
  }
}
```
