</> ConvertAtlas Developer Tools
Web

Webhooks Explained: Event-Driven Integration Done Right

How webhooks differ from polling, why signature verification matters, and how to build a reliable receiver.

Event POST + signature Your endpoint

Webhooks turn integrations from "keep asking" into "get told". Instead of polling an API every few seconds to check for changes, you give a provider a URL, and they call it the moment something happens. It is efficient and elegant — but only if you handle security and reliability correctly, which many implementations get wrong.

Event POST + signature Your endpoint
A webhook is a POST request the provider sends to your endpoint when an event occurs.

Webhooks versus polling

Polling means repeatedly asking "has anything changed?" — wasteful, slow to react, and hard on rate limits. A webhook inverts this: the provider sends an HTTP POST to your endpoint the instant an event occurs. You get near-real-time updates with no wasted requests. The trade-off is that you now run a public endpoint that must be secure and resilient.

Always verify the signature

Your webhook URL is public, so anyone could POST fake events to it. Reputable providers sign each payload with a shared secret using HMAC, and include the signature in a header. Your receiver must recompute the HMAC over the raw body with that secret and compare it to the header. If they do not match, reject the request. Skipping this is a serious security hole.

Try it: HMAC GeneratorGenerate HMAC signatures using SHA-256, SHA-1, SHA-384 or SHA-512.

Handle retries and idempotency

Networks fail, so providers retry deliveries — which means you may receive the same event more than once. Make your processing idempotent: use the event’s unique ID to detect and ignore duplicates, so processing the same webhook twice has no extra effect. Respond quickly with a 2xx to acknowledge receipt, and do slow work asynchronously rather than making the provider wait.

Build a reliable receiver

  • Verify the signature before doing anything else.
  • Acknowledge fast with a 2xx; queue heavy work for later.
  • Deduplicate using the event ID.
  • Log everything — webhooks are hard to debug without a record.