What is a webhook? A plain guide for small businesses
A webhook is a message one app sends another the moment something happens, like a new lead. How webhooks work, how to check them and how to use them.

On this page
A webhook is a message one app sends to another the moment something happens. Instead of your CRM asking your website every few minutes “any new leads?”, the website calls the CRM’s web address straight away with the lead’s details. It’s faster, and nothing is missed between checks.
How a webhook works, step by step
- You give the sending app a web address (a URL) that belongs to the app receiving the data, such as a Zapier “Catch Hook”, your developer’s server or your CRM’s inbound address.
- You choose the events. New lead, lead changed, booking made.
- When the event happens, the sender makes an HTTPS
POSTto that address with the details as JSON. - The receiver replies
200 OKto say “got it”. If it doesn’t, a good sender tries again later.
A new-lead webhook might carry something like this:
{
"event": "lead.created",
"data": {
"name": "Priya Shah",
"email": "[email protected]",
"service": "Driveway resin bound, about 60 m²",
"estimate": { "low": 4800, "high": 6200, "currency": "GBP" }
}
}
How to know a webhook is genuine
Anyone who learns the address could post fake leads to it. Good webhook senders sign each message: they use a secret only you and they know to make a code (an HMAC) from the message, and put it in a header. Your receiver makes the same code and checks they match.
Do three things when you receive one:
- Check the signature against the raw body, before reading the JSON.
- Check the timestamp in the signature, and refuse anything older than a few minutes, so an old message can’t be replayed.
- Ignore repeats. A retry carries the same delivery ID. If you’ve seen it, reply 200 and do nothing.
Webhook vs API
An API is a set of doors you knock on when you want something (“give me today’s leads”). A webhook is the other app knocking on your door when something happens. Most integrations use both: a webhook to say “new lead”, and the API to fetch more or update it.
Webhook vs Zapier
Zapier often uses webhooks under the hood. If you want no-code, point the webhook at a Zapier Catch Hook. If you have a developer, point it at your own code and skip the per-task cost. Zapier vs native integrations compares the options.
Doing it in RoughFigure
In RoughFigure we’ve built signed webhooks in on the Pro plan. Under Integrations → Webhooks, add your address and tick the events: lead.created, lead.updated and booking.created. Each message carries RoughFigure-Event, RoughFigure-Delivery (the same on every retry) and RoughFigure-Signature (a timestamp plus an HMAC-SHA256 of the body). We retry for about four hours if your system is down, and keep a delivery log you can resend from. Read the webhooks guide.
Questions
Do I need a developer to use webhooks?
Not if you send them to Zapier, Make or a CRM that accepts them. You need a developer to write your own receiver.
What happens if my server is down when a webhook is sent?
A well-built sender retries with growing gaps, for hours. Check your sender’s delivery log for anything that never got through.
Are webhooks secure?
They travel over HTTPS, and signed webhooks let you prove who sent them. Never trust an unsigned webhook that can create or change records.


