Webhook event: lead.updated
The payload Cooledge sends when a lead is updated.
lead.updated
Sent when a lead is updated in Cooledge, including when a lead is archived (archived is true then). Delivered to your webhook subscriptions. Deliveries are at-least-once, so dedupe on X-Cooledge-Event-Id.
Envelope
Every event shares the flat envelope: event_type, version ("v1"), event_id, business_id, occurred_at, plus the fields below. See the events overview for the envelope detail and webhooks for signature verification and delivery semantics.
Fields
| Field | Type | Notes |
|---|---|---|
lead_id | string | UUID of the lead that changed. |
name | string | The lead's name. |
email | string or null | The lead's email, normalized. |
phone | string or null | The lead's phone, normalized to E.164 where possible. |
status | string | The lead's current status, for example contacted, quoted, won or archived. |
source | string | Where the lead came from. Defaults to api for leads created through the API. |
type | string | The lead's type. Defaults to General. |
customer_id | string or null | UUID of the linked customer, when one is set. Null otherwise. |
site_id | string or null | UUID of the linked customer site, when one is set. Null otherwise. |
archived | boolean | Whether the lead is now archived. true when the lead's status is archived. |
external_ghl_opportunity_id | string or null | The matching GoHighLevel opportunity id. Agencies match lead events on this field. |
external_ghl_contact_id | string or null | The matching GoHighLevel contact id, from the linked customer when one exists. |
customer_name | string or null | The linked customer's name, when the lead is linked to a customer. |
customer_email | string or null | The linked customer's email, when the lead is linked to a customer. |
customer_phone | string or null | The linked customer's phone, when the lead is linked to a customer. |
This payload carries the same fields as lead.created plus archived. The archived flag is derived from the saved row, so a change that touches other fields on an already-archived lead still reports archived: true. The external_ghl_* and customer_* fields come from a correlation re-read of the linked customer and lead.
Example
{
"version": "v1",
"event_type": "lead.updated",
"event_id": "7a0d3f29-1c64-4b8e-9f37-6d2a8c1e0b45",
"business_id": "a7f3c9d1-2e84-4b6f-8c01-5d9e2a1f7b30",
"occurred_at": "2026-06-17T09:14:07.902Z",
"lead_id": "2f6d9a18-4c73-4e85-bf02-7a1e5c8d3b96",
"name": "Priya Nair",
"email": "priya.nair@example.com",
"phone": "+61498765432",
"status": "quoted",
"source": "api",
"type": "General",
"customer_id": "8c3e1a72-5d49-4b06-9f81-2e7a0c4d6b18",
"site_id": "b1f47a90-3e26-4d58-8c09-5a2e7d1f6c83",
"archived": false,
"external_ghl_opportunity_id": "pT8wK3rN6vM1jQ5d",
"external_ghl_contact_id": "x9TpL2mQ7sV4nB1k",
"customer_name": "Priya Nair",
"customer_email": "priya.nair@example.com",
"customer_phone": "+61498765432"
}
See webhooks for signature verification and delivery semantics, and all events.
Need a hand with an integration? Contact support