A webhook posts JSON to your system within seconds of a change. Account admins: Team, Webhooks.
Add one
- Under Add a webhook, type the https address to post to. A Zapier Catch Hook address works.
- Pick what to send: new leads, stage changes, appointments booked, appointments cancelled.
- Press Add webhook, and copy its secret (
whsec_...), shown once. - Press Send test to post a
ping.
What arrives
{
"id": 81234,
"event": "lead.stage_changed",
"created_at": "2026-10-29T15:04:05Z",
"account": "Acme Mortgage",
"lead": { "id": 612345, "type": "mortgage", "first_name": "Ana" },
"stage_change": { "from": { "id": 11, "name": "New" }, "to": { "id": 12, "name": "Contacted" } }
}
The events are lead.created, lead.stage_changed, appointment.booked and appointment.cancelled.
Answer quickly
Answer with any 2xx within 10 seconds. Otherwise LeadVault tries again after 1 minute, 5 minutes, 30 minutes, 2 hours, 8 hours and 24 hours. After 20 posts in a row fail, the webhook is turned off, and the page says why. Recent posts shows the last 50 with their results.
Check it came from LeadVault
Each post has a LeadVault-Signature header: t=<time>,v1=<hex>, where v1 is the HMAC-SHA256 of the time, a dot and the raw body, keyed with the secret. The API reference has the code to check it.
Didn't answer it? Ask us.