What is a webhook? Why it matters for your business

A small operations team standing around a laptop in an office, one person pointing at the screen
TL;DR

A webhook is a vendor-initiated HTTP call to a URL you control. When an event happens on their system, the vendor pushes the data to your endpoint instead of waiting for your software to ask. For SMEs, webhooks are usually the difference between an integration that feels real-time and one that lags by 15 to 60 minutes. The procurement question is whether the vendor implements them well enough to rely on.

Key takeaways

- A webhook is the inverse of an API call. The vendor pushes events to a URL you provide rather than your software polling and asking "anything new?" - Polling wastes calls because fewer than 2% of polls find an update. Webhooks fire only when something happens, which is why they replace polling for any latency-sensitive integration. - Stripe, GitHub, Mailchimp, Slack, and the major AI vendors all use webhooks as their first-class integration method. Zapier and Make turn them into no-code automations for SMEs without a dev team. - Four security gotchas every vendor must answer cleanly: signature verification (HMAC-SHA256), replay protection (timestamp plus event ID), IP allowlisting, and idempotent processing on your end. - Vendors retry on failure but the policy varies wildly. Stripe retries for three days, Shopify disables the endpoint after eight failures in four hours. Ask the question before you wire it in.

A 17-staff e-commerce business sells subscriptions through Stripe. The accounting tool needs to know when payments succeed, fail, or refund. There are two ways to wire it up. Way one: a script polls the Stripe API every fifteen minutes and asks “anything new?” Acceptable on a quiet Tuesday, but every payment is delayed up to fifteen minutes from event to accounting reflection, and on a busy Black Friday morning the delay piles up while the queue grows.

Way two: a Stripe webhook fires the moment a payment event happens. The webhook posts to a URL the e-commerce site exposes, the accounting tool processes it within seconds, and the customer gets their confirmation email immediately. The architectural difference is small. The customer-experience difference is the gap between “instant confirmation” and “wait, did that go through?” Owners do not usually choose between push and pull architecturally. They discover their integration is slow and then learn that webhooks are the fix.

What is a webhook?

A webhook is an HTTP endpoint your software exposes that another vendor calls when an event happens on their system. You provide a URL, the vendor provides events. The format is almost always JSON, the security model is almost always signature verification. The pattern is sometimes called a reverse API, because it inverts the usual flow where your code asks the vendor for data.

Concretely, you log into a SaaS platform like Stripe or Mailchimp, find the webhooks panel, and tell the vendor “when this kind of event happens, send the details to https://my-business.com/webhooks/payments and I will take it from there”. From that point on, the vendor pushes events to your URL the instant they occur. Your endpoint receives the JSON, validates the signature, processes the data, and returns a 200 OK within a few seconds. That exchange is a webhook in action.

Why does it matter for your business?

It matters because the alternative is polling, and polling is wasteful. Hookdeck’s analysis finds that fewer than 2% of polling calls return new data, so 98% are empty round trips you pay for in API quota, server time, and latency. If your business connects to seven SaaS platforms and each polls every five minutes, you generate thousands of empty calls a day chasing stale data.

Webhooks reverse that economics. They fire only when something has happened, which means no idle queries and no waiting window. For SME workflows where real-time matters, payment confirmations into a CRM, support tickets into the team’s queue, subscriber events into Slack, the webhook is the difference between a system that feels live and one that feels like overnight batch processing. The exception is high-volume continuous streams, thousands of events per hour to a single consumer, where webhook overhead becomes uneconomical and bulk-fetched polling is the better fit. Few SMEs hit that scale, so the default for owner-managed firms is webhooks first, polling as a reconciliation fallback.

Where will you actually meet webhooks?

You will meet them on the integration page of every vendor in your stack. Stripe is the canonical implementation: HMAC-SHA256 signatures, idempotency keys, and a replay dashboard for failed deliveries. Mailchimp fires on subscribe, unsubscribe, bounce, and click events. GitHub fires on push and release events, which is how CI/CD pipelines trigger deployments. Slack uses incoming webhooks the other way, as a destination for messages.

You will also meet them in AI vendors. Google’s Gemini API, OpenAI, and Anthropic all support webhook callbacks for batch jobs, video generation, and other long-running tasks. Instead of polling “is it done yet?” every ten seconds, you provide a webhook URL and the vendor pings you when the job finishes. OpenAI’s webhooks follow the Standard Webhooks specification, which gives a consistent signature format across vendors. For SMEs without a dev team, Zapier and Make sit on top of all of this. You configure a trigger (“when Stripe receives a payment”) and an action (“post to Slack and add a row in Xero”), and the orchestrator handles the HTTP, signature checks, and retries.

When should you use webhooks vs ignore them?

Use webhooks when the work is event-shaped and timing matters. Payment confirmations into the CRM, new subscribers into Slack, document signatures into the project file, code commits into a deploy pipeline, AI batch jobs into your dashboard. The event happens unpredictably, the action needs to follow within seconds, and a polling loop would either lag or burn through quota. Webhooks fit the shape; polling does not.

A hybrid setup works well too: webhooks drive the live workflow, a nightly poll reconciles totals as a safety net. Ignore the webhook option when updates are continuous and high-volume, when latency does not matter (overnight batch reporting is fine on a poll), or when the vendor implements webhooks poorly. The four questions to ask each vendor before you wire one in: do you sign payloads with HMAC-SHA256 and how do I verify; what is your retry policy when my endpoint fails; can I see and replay failed deliveries in your dashboard; can I rotate the signing secret without downtime. Vendors who answer cleanly have built webhooks as a product. Vendors who deflect have built them as an afterthought, and the difference shows up the first time something goes wrong in production.

An API is the request half of the same picture. Your software calls the vendor and asks for data on demand. Webhooks are the push half. Production integrations almost always use both: read state via the API, receive event notifications via webhooks. The pairing is the standard pattern for any SaaS platform built after about 2018.

API keys and OAuth are how the two ends authenticate each other. The webhook signing secret is conceptually similar to an API key but used in reverse: the vendor signs the payload with the shared secret so your endpoint can prove the call really came from them. Rotation, secure storage, and revocation discipline apply to both.

The Model Context Protocol (MCP) is the newer pattern for connecting AI agents to tools and data, and it sits one layer above webhooks. MCP defines how an agent discovers what a tool can do, calls it, and handles results. Under the hood, MCP servers often expose webhooks for asynchronous events, so the same security and reliability questions apply.

The honest framing for any owner sitting opposite a vendor pitch is this. “We support webhooks” is a starting position, not a feature claim. The questions that decide whether you can rely on the integration are about signatures, retries, and replay. If the vendor cannot answer those cleanly in the call, treat the webhook as experimental until proven otherwise.

Sources

Stripe (2026). Webhook documentation, including signature verification and retry policy. The canonical reference for production-grade webhook implementation. https://stripe.com/docs/webhooks GitHub (2026). About webhooks, plus best practices for using webhooks. Covers HMAC validation, idempotency via X-GitHub-Delivery, and IP allowlisting. https://docs.github.com/en/webhooks/about-webhooks Mailchimp (2026). Webhook guide for syncing subscriber events into downstream systems. https://mailchimp.com/developer/marketing/guides/sync-audience-data-webhooks/ Slack (2026). Sending messages using incoming webhooks. The canonical pattern for using webhooks as a destination, not a source. https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks Google (2025). Event-driven webhooks for the Gemini API, used for long-running batch jobs. https://blog.google/innovation-and-ai/technology/developers-tools/event-driven-webhooks/ OpenAI (2026). Webhooks guide, following the Standard Webhooks specification with HMAC-SHA256 signatures. https://developers.openai.com/api/docs/guides/webhooks Hookdeck (2025). Webhook retry best practices and at-least-once delivery guarantees, with comparison data across major vendors. https://hookdeck.com/webhooks/guides/webhook-retry-best-practices webhooks.fyi (2024). Independent reference on HMAC signature verification and replay-attack prevention, with adoption data across leading providers. https://webhooks.fyi/security/hmac OWASP (2024). Webhook security guidance covering signature verification, secret storage, and replay prevention. https://cheatsheetseries.owasp.org Zapier (2026). Webhook trigger and orchestration patterns for no-code SME use. https://zapier.com/apps/webhook/integrations

Frequently asked questions

How is a webhook different from an API?

An API is a request you make to the vendor: your software calls them and asks for data. A webhook is the inverse: the vendor calls your software when an event happens. APIs are pull, webhooks are push. The two are usually paired in production. You read data via the API and receive event notifications via webhooks. Modern SaaS platforms commonly expose both because each is right for a different shape of work.

Do I need a developer to use webhooks?

Not for the common SME cases. Tools like Zapier, Make, and n8n let you receive a webhook and trigger actions in other systems without writing code. You configure the source ("when Stripe receives a payment"), the action ("post to Slack and add a row in the accounting sheet"), and the orchestrator handles the HTTP, signature checking, and retries. You only need a developer when you are building custom logic, processing high volumes, or integrating with a vendor your no-code tool does not support.

What happens if my server is down when a webhook fires?

Vendors retry, but the policy varies. Stripe retries with exponential backoff for three days. Shopify disables the webhook subscription after eight failures over four hours and you have to re-enable it manually. AI vendors typically retry three to five times within an hour. The practical move is to ask each vendor their retry window before you go live and keep a dead-letter queue or replay dashboard so events you missed can be re-sent once your endpoint is back.

This post is general information and education only, not legal, regulatory, financial, or other professional advice. Regulations evolve, fee benchmarks shift, and every situation is different, so please take qualified professional advice before acting on anything you read here. See the Terms of Use for the full position.

Ready to talk it through?

Book a free 30 minute conversation. No pitch, no pressure, just a useful chat about where AI fits in your business.

Book a conversation

Related reading

If any of this sounds familiar, let's talk.

The next step is a conversation. No pitch, no pressure. Just an honest discussion about where you are and whether I can help.

Book a conversation