Webhooks — send data to Zapier, Make or your CRM
Webhooks send what happens in Preflight to another system the moment it happens — a CRM like HubSpot or Jobber, a spreadsheet, a text to your crew — usually through Zapier or Make. Owners and admins set them up on the office web page.
Set one up
- In Zapier, start a Zap with Webhooks by Zapier → Catch Hook and copy its address. (In Make: a Custom webhook module.)
- On the office web page: Settings → Connections → Webhooks → + Add Webhook.
- Paste the address (it must start with
https://), give it a name, and tick the events it should get. - Save, then Send Test — Zapier shows the test, so you can map its fields.
You can add several webhooks (one per Zap), turn one off without deleting it, and see the last delivery under each.
Events
- New customer, Customer changed — the customer with its address, billing, notes and contacts.
- Estimate sent, Estimate accepted, Estimate declined — title, total, each line, the service plan, payment terms, the accept link, who accepted, their note and how they plan to pay, plus the customer and contact.
- Appointment scheduled, Appointment changed, Appointment canceled — kind, start and end, address, the customer, contact and who's assigned.
For developers
Each event is a POST of JSON: { "id", "event", "occurredAt", "companyId", "data" }. Dates are ISO 8601. The header X-Preflight-Event names the event, and X-Preflight-Signature: t=<unix time>,v1=<hex> is an HMAC-SHA256 of <t>.<body> with the webhook's signing secret (Show under the webhook). Answer with any 2xx within 10 seconds. If your system doesn't answer, times out, or answers 408, 429 or 5xx, Preflight tries again after 5 minutes, 30 minutes, 2 hours, 8 hours and 24 hours, with the same event id (so you can skip duplicates). Other 4xx answers aren't retried. The last result is shown on the webhook.
Only public https addresses are allowed.