Skip to main content

Invoices

New to webhooks? Start with Getting started (envelope, delivery, retries) and Verification (confirming a request came from Grow CRM). Those conventions apply to every event below and are not repeated here.
Invoices expose all five keys: invoice.created, invoice.updated, invoice.deleted, invoice.sundry, invoice.activity. See also Payments — a payment that fully pays off an invoice also fires invoice.updated with change: "paid".

The invoice object

Every key except .deleted carries this shape, either flat (.created) or nested under invoice (.updated/.sundry):

invoice.created

Fires when an invoice is created, including via clone. data is the full invoice object above.

invoice.updated

Fires on a significant change. data.change tells you which; data.invoice is the full object.

invoice.sundry

Fires on a minor, cosmetic field edit. data.field names it; data.invoice is the full object (same shape as .updated, just a lower-significance discriminator).

invoice.activity

Fires when a child record on the invoice changes. Invoices only produce type: "attachment" — invoices are not part of core’s comment system.
Note: unlike estimates, the invoice file-deleted core event has no pre-delete hook — by the time the webhook listener runs, the file row may already be gone. The lookup is best-effort: if the file record is still found, the full item shape above is delivered; if not, no invoice.activity delivery is queued for that deletion at all (not even a minimal { id }).

invoice.deleted

Fires after the invoice is deleted. data is just the id — the record no longer exists to describe.