Webhooks

Webhook events

The index of every Cooledge webhook event. Covers the shared event envelope every delivery carries, at-least-once delivery with deduping on the event id and the full list of the thirteen event types you can subscribe to, each linking to its own payload page.

Updated 17/06/2026

Webhook events

This is the index of every event Cooledge can send to a webhook. When something happens in your business, Cooledge makes a signed HTTP POST to your subscription URL with the event as JSON. Each event has its own page with the exact fields it carries. This page covers what every event has in common and links to all thirteen.

If you are setting up a subscription for the first time, start with the webhooks guide. It covers managing subscriptions in the portal, verifying the signature, retries and replay. This page is the catalogue of what you can subscribe to.

The event envelope

Every event body is a single JSON object. It always starts with the same five envelope fields, then the fields specific to that event type are merged in alongside them. The envelope is what lets you route and dedupe an event without knowing its type.

FieldWhat it is
versionThe envelope version. Always the string "v1" today.
event_typeThe event name, for example "customer.created". Switch on this to decide how to handle the body.
event_idA stable UUID for this event. It is the same across every redelivery and replay, so it is your dedupe key. It is also sent as the X-Cooledge-Event-Id header.
business_idThe Cooledge business the event belongs to.
occurred_atAn ISO 8601 timestamp for when the event happened.

A body looks like this. The five envelope fields are always present, and the rest depends on the event_type (the trailing fields below stand in for whatever that specific event carries):

{
  "version": "v1",
  "event_type": "customer.created",
  "event_id": "3b1c0e2a-7d44-4e91-9a2c-1f0b8e6d5a23",
  "business_id": "a7f3c9d1-2e84-4b6f-8c01-5d9e2a1f7b30",
  "occurred_at": "2026-06-17T03:21:44.512Z",

  "...": "event-specific fields are merged in here"
}

The exact event-specific fields live on each event's own page, linked in the table below. New fields may be added to any payload over time, so ignore fields you do not recognise rather than failing on them.

Delivery and deduping

Cooledge delivers at least once. The same event can reach you more than once, because a retry can land after your endpoint already processed the first attempt, or because you replayed it from the portal. So your handler must be idempotent.

Dedupe on event_id. The same value is on the X-Cooledge-Event-Id header, and it is stable across every redelivery and replay of the same event. Store the event ids you have already processed and skip any you have seen before.

The signature scheme, the retry and dead-letter behaviour and replaying a delivery all live in the webhooks guide. They are the same for every event type, so they are documented once there rather than repeated here.

The events

There are thirteen event types, grouped by the record they are about. Each links to its own page with the full payload shape.

Customers

EventWhat it meansPage
customer.createdA new customer was added.customer.created
customer.updatedAn existing customer's details changed.customer.updated

Leads

EventWhat it meansPage
lead.createdA new lead came in.lead.created
lead.updatedAn existing lead's details or status changed.lead.updated
lead.convertedA lead became an active opportunity, with its first quote or job.lead.converted
lead.wonA lead was won, with a quote accepted or paid or a first invoice paid.lead.won

Quotes

EventWhat it meansPage
quote.sentA quote was sent to a customer.quote.sent
quote.acceptedA customer accepted a quote.quote.accepted
quote.paidA quote with a deposit or upfront amount was paid.quote.paid

Invoices

EventWhat it meansPage
invoice.sentAn invoice was sent to a customer.invoice.sent
invoice.paidAn invoice was paid.invoice.paid

Jobs

EventWhat it meansPage
job.completedA job was marked complete.job.completed

Bookings

EventWhat it meansPage
booking.createdA booking or scheduled visit was created.booking.created

Where to go next

  • Webhooks covers subscriptions, signature verification, retries and replay.
  • Authentication covers the scope list, including webhooks:manage for the planned subscription API.
  • The API changelog records new event types and other additive changes to the contract.

Need a hand with an integration? Contact support