Skip to main content
Grow CRM fires six distinct event keys for lead records: lead.created, lead.updated, lead.deleted, lead.sundry, lead.activity, and lead.imported. Use these events to power pipeline automation, sync leads into external CRMs, trigger follow-up workflows on status changes, and process bulk imports as a single batched notification.
The webhook envelope structure, delivery semantics, retry behaviour, and signature verification conventions are documented in Introduction and Verification. Those rules apply to every event on this page and are not repeated here.

The lead object

Every event key except lead.deleted carries the full lead object. For lead.created it appears flat directly inside data; for lead.updated and lead.sundry it is nested under data.lead.
integer
The lead’s primary key (lead_id).
string
The lead title / opportunity name.
string
Monetary value of the lead, expressed as a decimal string.
object
{ id, title, color } — the pipeline status currently assigned to this lead.
string
Either active or archived.
object
{ id, name } — the lead category.
string | null
How the lead was acquired; null when not set.
object
first_name, last_name, email, phone, company_name. There is no separate top-level name, phone, or email — sundry field events still deliver this full nested object.
object
is_converted (boolean), client_id, and date — all populated once the lead converts to a client.
array
[{ id, name }] — one entry per user currently assigned to this lead.
array of strings
Tag titles attached to the lead.
object
created and updated, both ISO 8601 timestamps with microseconds.

lead.created

Grow CRM fires lead.created immediately after a new lead record is saved, including when a lead is cloned. data is the full lead object shown above.
Leads created through a bulk import do not trigger lead.created. Use lead.imported instead to capture those records.

lead.updated

Grow CRM fires lead.updated whenever a significant field on the lead changes. Inspect data.change to determine what changed; data.lead always carries the complete, up-to-date lead object.

lead.sundry

Grow CRM fires lead.sundry for minor, inline field edits that don’t warrant a full lead.updated signal. Inspect data.field to identify which field changed; data.lead carries the full lead object — it is not a partial diff.

lead.activity

Grow CRM fires lead.activity whenever a child record attached to a lead is created, updated, or deleted. Use data.type and data.action together to identify the exact operation; data.item describes the child record.
Leads have two separate attachment systems. Files added through the lead’s own attachment control and files uploaded through the Files section both fire type: "attachment", but their item shapes differ slightly — see the table below.

lead.deleted

Grow CRM fires lead.deleted after the lead record is permanently removed. Because the record no longer exists, data contains only the lead’s id.

lead.imported

Grow CRM fires lead.imported once when a bulk lead import job completes. Imported leads do not individually fire lead.created. See Imports for the batch shape, batching rules, and the fields common to every import event. Each record inside data.records carries the following fields:
batch_count tells you the total number of delivery batches for this import run. Wait until you have received all batch_count payloads sharing the same import_ref before treating the import as fully processed.