All posts

February 14, 2026 · 4 min read

How to Actually Check Whether Your Webhook Endpoint Verifies Anything at All

If your app receives webhooks, notifications from a payment processor, an email service, or any third party telling your server that something happened, there's a specific check worth running that most people never think to try: can you fake one yourself.

Why this matters more than it sounds like it should

A webhook endpoint's whole job is to trust that an incoming request really came from the service it claims to be from, a payment happened, an email bounced, a subscription renewed, and to act on that information. Most webhook providers sign their requests with a secret only your server and the provider know, specifically so your endpoint can verify the request is real before acting on it. Building the endpoint to receive the webhook is easy and works immediately. Adding the verification step is a separate task, and it's the one that's easy to skip, because the endpoint appears to work perfectly without it, right up until someone sends it a fake request.

The test itself

  • Find your webhook endpoint's URL. It's usually visible in your provider's dashboard settings, or discoverable in your own code.
  • Using a tool like curl or Postman, send a request to that URL shaped like a real webhook payload, for example claiming a payment succeeded, but without any real signature attached, or with an obviously fake one.
  • Watch what your server does. If it processes the fake event, marking an order paid, granting access, sending a confirmation, that's the whole problem in one test.
  • If it rejects the request because the signature doesn't check out, verification is actually happening.

What it means if the fake request goes through

This isn't a small gap. It means anyone who finds your webhook URL, which is often guessable or visible in client-side code, can trigger whatever that endpoint is built to do, with no real event ever having happened. For a payment webhook, that can mean marking an order as paid with no money ever changing hands. For other integrations, it can mean triggering account changes, sending unauthorized notifications, or kicking off any action the endpoint is wired to perform.

How to actually fix it

Every major provider documents exactly how to verify their webhook signatures, usually a few lines of code using a signing secret they give you in their dashboard. The fix isn't building something custom. It's making sure the verification step your provider already documented actually made it into your endpoint, rather than getting skipped while the feature was being wired up quickly.

Run this test on every webhook endpoint your app has, not just the payment one. Each one is a separate place the same shortcut can happen, and each one takes the same five minutes to check.

Related reading

Harbova is a security service for apps built with AI tools. Start with a free scan, and if it finds something serious, we can fix it and prove it is closed.