Webhook events

Webhook event: lead.updated

The payload Cooledge sends when a lead is updated.

Updated 17/06/2026

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

FieldTypeNotes
lead_idstringUUID of the lead that changed.
namestringThe lead's name.
emailstring or nullThe lead's email, normalized.
phonestring or nullThe lead's phone, normalized to E.164 where possible.
statusstringThe lead's current status, for example contacted, quoted, won or archived.
sourcestringWhere the lead came from. Defaults to api for leads created through the API.
typestringThe lead's type. Defaults to General.
customer_idstring or nullUUID of the linked customer, when one is set. Null otherwise.
site_idstring or nullUUID of the linked customer site, when one is set. Null otherwise.
archivedbooleanWhether the lead is now archived. true when the lead's status is archived.
external_ghl_opportunity_idstring or nullThe matching GoHighLevel opportunity id. Agencies match lead events on this field.
external_ghl_contact_idstring or nullThe matching GoHighLevel contact id, from the linked customer when one exists.
customer_namestring or nullThe linked customer's name, when the lead is linked to a customer.
customer_emailstring or nullThe linked customer's email, when the lead is linked to a customer.
customer_phonestring or nullThe 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