Webhook events

Webhook event: invoice.sent

The payload Cooledge sends when an invoice is sent to a customer.

Updated 17/06/2026

invoice.sent

Sent when an invoice is sent (emailed) to the customer. 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
invoice_idstringUUID of the sent invoice.
invoice_numbernumberThe internal invoice number.
invoice_seqnumberThe per-business sequence number for the invoice.
display_numberstringThe customer-facing invoice number, for example "1042", "1042-2" or "INV-58".
statusstringThe invoice status at the time it was sent.
totalnumberThe invoice total.
amount_duenumberThe amount still outstanding.
amount_paidnumberThe amount already paid against the invoice.
subtotalnumber or nullThe pre-tax subtotal. Null when not recorded.
tax_totalnumber or nullThe total tax. Null when not recorded.
due_datestring or nullThe invoice due date as an ISO date. Null when no due date is set.
note_publicstring or nullThe public note shown to the customer. Null when there is none.
line_itemsarray of objectsThe invoice line items. Each object has description, qty, unit_price and line_total. See the line item shape below.
job_idstring or nullUUID of the linked job, when one is set. Null otherwise.
customer_idstring or nullUUID of the linked customer, when one is set. Null otherwise.
sent_tostringThe email address the invoice was sent to.
sent_atstringISO 8601 timestamp the invoice was sent.
email_idstring or nullThe id of the email that was sent, when one is recorded. Null otherwise.
external_ghl_contact_idstring or nullThe matching GoHighLevel contact id, from the linked customer when one exists.
external_ghl_opportunity_idstring or nullThe matching GoHighLevel opportunity id, from the linked lead when one exists.
customer_namestring or nullThe customer's name from the live customer row.
customer_emailstring or nullThe customer's email from the live customer row.
customer_phonestring or nullThe customer's phone from the live customer row.

Each entry in line_items is an object with these four keys:

KeyTypeNotes
descriptionstring or nullThe line item description. Null when there is none.
qtynumberThe quantity.
unit_pricenumberThe price per unit.
line_totalnumberThe line total for this item.

The customer_* and external_ghl_* fields are the shared correlation block, resolved from the live customer and lead rows.

Example

{
  "version": "v1",
  "event_type": "invoice.sent",
  "event_id": "b3f1d8a2-6c47-4e09-9a51-2d7e0c4b8f63",
  "business_id": "a7f3c9d1-2e84-4b6f-8c01-5d9e2a1f7b30",
  "occurred_at": "2026-06-17T09:14:03.221Z",
  "invoice_id": "7d2c9e64-1a38-4b05-8f72-3e1a0c5d9b48",
  "invoice_number": 1042,
  "invoice_seq": 58,
  "display_number": "1042-2",
  "status": "sent",
  "total": 2310.00,
  "amount_due": 2310.00,
  "amount_paid": 0,
  "subtotal": 2100.00,
  "tax_total": 210.00,
  "due_date": "2026-07-01",
  "note_public": "Thanks for your business. Payment is due within 14 days.",
  "line_items": [
    {
      "description": "Split system supply and install",
      "qty": 1,
      "unit_price": 1800.00,
      "line_total": 1800.00
    },
    {
      "description": "Labour",
      "qty": 4,
      "unit_price": 75.00,
      "line_total": 300.00
    }
  ],
  "job_id": "5c1a0e74-3d29-4b06-9f81-2e7a0c4d6b18",
  "customer_id": "8c3e1a72-5d49-4b06-9f81-2e7a0c4d6b18",
  "sent_to": "priya.nair@example.com",
  "sent_at": "2026-06-17T09:14:03.221Z",
  "email_id": "9f4d2b61-7c08-4a3f-bf52-1e0c4d8a9f63",
  "external_ghl_contact_id": "x9TpL2mQ7sV4nB1k",
  "external_ghl_opportunity_id": "pT8wK3rN6vM1jQ5d",
  "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