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 exceptlead.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.
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.- attachment added
- attachment deleted
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.