API Gateway vs. Webhook Ingress: Why Your Gateway Isn't Enough
API Gateway vs. Webhook Ingress: Why Your Gateway Isn't Enough The modern software ecosystem runs on events.

API Gateway vs. Webhook Ingress: Why Your Gateway Isn't Enough
The modern software ecosystem runs on events. Whether it's a Stripe payment succeeding, a Shopify order being placed, or a GitHub pull request merging, applications increasingly rely on asynchronous event notifications to keep data synchronized and trigger downstream workflows. To receive these events, providers use webhooks — HTTP POST requests sent from their servers to yours.
When faced with the requirement to ingest these webhooks, many engineering teams instinctively reach for the infrastructure they already have in place. Often, this means routing incoming webhooks through a standard API Gateway like AWS API Gateway, Kong, or Apigee. On paper, it makes sense: an API Gateway handles incoming HTTP traffic, routes it to the correct backend service, and provides a layer of security. Why not use it for webhooks?
As systems scale, the cracks in this approach begin to show. Teams routing high volumes of provider traffic through a general-purpose gateway tend to run into dropped events, processing bottlenecks, and hours spent digging through logs to recover lost data.
This article looks at why a traditional API Gateway struggles with webhook traffic, what's actually changed in AWS's own limits recently, what a proper webhook ingress architecture looks like, and where the current webhook infrastructure market stands in 2026.
1. The Fundamental Disconnect: API Gateway vs. Webhook
The API Gateway: Synchronous and Client-Driven
API Gateways were built for synchronous, client-driven communication. When a user opens your mobile app, the app sends a request to your API Gateway. The gateway routes the request to a microservice, waits for a response, and sends it back to the user.
If something goes wrong — say, the database is overloaded — the API Gateway returns a 503 Service Unavailable. The client is expected to handle that error and retry later. In this model, the client owns state and retry logic.
The Webhook: Asynchronous and Server-Driven
Webhooks flip this paradigm. A webhook is a push-based, asynchronous notification sent by a third-party server (the producer) to your application (the consumer).
When Stripe sends a webhook notifying you of a successful payment, it doesn't care about your database's internal state — it fires the payload at your endpoint and expects a fast 2xx response. If your server returns a 500 and your database is down, most providers will retry a handful of times before giving up. Once retries are exhausted, the event is gone unless you've built a way to recover it.
In the webhook model, the receiver is responsible for ensuring the event isn't lost — the opposite of the client-driven API model.
Forcing a synchronous, stateless tool to do an asynchronous, stateful job is the root cause of most webhook ingestion failures.
2. The Pitfalls of Using AWS API Gateway for Webhooks
AWS API Gateway is a strong tool for routing RESTful APIs, but it's frequently misused as a webhook receiver. A typical setup looks like:
Third-Party Provider -> AWS API Gateway -> AWS Lambda -> Database
At low volumes this works fine. At scale, the synchronous chain introduces real vulnerabilities.
The Integration Timeout Limit
This is the part of the original conversation around API Gateway that's most often stated inaccurately, so it's worth being precise. As of a June 2024 AWS launch, the picture is:
- REST API (Regional or private): default integration timeout is 29 seconds, but you can now request a Service Quota increase above 29 seconds. AWS says this exists specifically for workloads — including LLM/GenAI use cases — that need longer synchronous responses. Raising it may require a corresponding reduction in your account-level throttle quota.
- REST API (edge-optimized): cannot be increased beyond 29 seconds.
- HTTP API: default and maximum is 30 seconds, and this one is not raisable via quota request.
So the claim that AWS API Gateway has a "hard, unchangeable" 29-second ceiling is now out of date for Regional and private REST APIs — but it's still true for edge-optimized REST APIs and for HTTP APIs, which is what most new AWS API Gateway deployments use by default. Practically, this means: if your webhook processing occasionally spikes past 30 seconds during traffic bursts, an out-of-the-box API Gateway setup can still silently return 504s to the provider, and the provider will interpret that as a failed delivery.
Lack of Built-In Durable Queues
API Gateways are stateless routers — they don't store messages. If your backend is down, the gateway simply rejects the webhook.
You can bolt on durability by integrating API Gateway directly with SQS or EventBridge, but this isn't a default behavior. The classic pattern uses VTL (Velocity Template Language) mapping templates to transform the HTTP request into an SQS message — brittle to write and maintain. AWS has since made this easier with EventBridge Pipes and API destinations, which reduce (but don't eliminate) the amount of custom glue code needed to get a webhook safely onto a queue. Either way, you're assembling a queuing layer yourself; API Gateway doesn't provide one.
No Replay UI or Observability
If a bad deployment corrupts your handling of, say, Shopify order webhooks for three hours, a standard API Gateway gives you no built-in way to see what was lost or replay it. There's no payload history and no "replay" button. Recovery means manually working through the provider's own dashboard or writing a one-off reconciliation script against their API.
Custom Security Overhead
Webhook security typically relies on validating an HMAC (Hash-based Message Authentication Code) signature so you can confirm a payload actually came from the provider and wasn't tampered with. Stripe, GitHub, and Shopify all sign their webhooks this way. A growing number of providers are converging on the open Standard Webhooks specification, which standardizes this as an HMAC-SHA256 signature carried in a webhook-signature header, alongside a webhook-id and webhook-timestamp, with a recommended 300-second tolerance window to block replay attacks. Older providers still use their own conventions — GitHub's X-Hub-Signature-256, for instance.
API Gateways don't natively understand any of these schemes. To validate signatures at the gateway layer, you have to write and maintain a custom Lambda authorizer per provider, and keep it in sync as providers rotate keys or move to newer signing schemes (some providers are now shifting toward short-lived, rotated signing keys published via a JWKS-style endpoint, rather than one long-lived static secret).
3. The Anatomy of a Proper Webhook Ingress Architecture
A resilient webhook ingress architecture is built on a "queue-first" philosophy, with several components a bare API Gateway lacks.
1. The Fast ACK. Providers expect near-immediate acknowledgment — GitHub specifically expects a 2xx response within 10 seconds, and will mark the delivery as a timeout failure if you're slower. A proper ingress layer saves the raw payload to durable storage immediately and returns 202 Accepted, decoupling ingestion from processing.
2. Message Brokering and Queuing. Once saved, the event goes onto a durable queue (Kafka, RabbitMQ, SQS, or similar). Backend workers pull from the queue at their own pace, so a burst of traffic gets absorbed instead of crashing your backend.
3. Automated Exponential Backoff. If a worker fails to process a queued webhook, the ingress layer should retry with increasing delays (e.g., 1 minute, then 5, then 30) rather than hammering your backend immediately.
4. Dead-Letter Queues (DLQ). Messages that fail repeatedly — usually due to a code bug or an unexpected schema change from the provider — get routed to a DLQ so they don't clog the primary queue or trigger infinite retry loops.
5. Idempotent Processing. Most providers operate on an "at-least-once" delivery guarantee, meaning duplicate deliveries of the same event happen in normal operation, not just as an edge case. This is why providers increasingly attach a unique event ID or an Idempotency-Key-style header — so your system can recognize and discard a duplicate instead of, say, charging a card twice.
6. A Centralized Replay and Debugging UI. A searchable log of every webhook received — filterable by provider or status, with visible headers, payload, and a one-click replay — turns debugging from a multi-hour log dig into a few minutes of work.
4. Build vs. Buy
When a standard API Gateway stops being enough, teams face a choice: build a custom ingress, or use a dedicated platform.
Building it on AWS today typically looks like:
- API Gateway (or an ALB) to receive the HTTP request
- Custom Lambda authorizers to verify signatures per provider
- SQS or EventBridge (increasingly via EventBridge Pipes) for the queuing layer
- DynamoDB to store payloads for replay
- Step Functions to manage backoff and retries
- A custom frontend so developers can actually see and replay events
This is achievable, but it's effectively building a small distributed messaging product just to support your main application — and someone has to keep updating the signature-verification logic as each provider changes its scheme.
5. The Current Webhook Infrastructure Landscape (2026)
Rather than build the above from scratch, a distinct "webhook infrastructure" category has emerged, sitting alongside message queues (Kafka, NATS) and job queues (BullMQ, Inngest) as its own layer of the stack. It's worth being clear that this market splits into two related but different problems:
- Inbound (ingress): receiving and safely queuing webhooks sent to you by providers like Stripe or GitHub — the subject of this article.
- Outbound (delivery): sending your own webhooks reliably to your customers' endpoints.
Some vendors specialize in one side, some cover both. As of mid-2026, the notable names include:
| Platform | Primary focus | Notes |
|---|---|---|
| Hookdeck (Event Gateway / Outpost) | Inbound gateway + outbound delivery | Event Gateway targets exactly the inbound problem this article describes: signature verification, deduplication, durable queueing, filtering, and replay at the ingress edge, ahead of 160+ pre-configured provider sources. Outpost handles outbound delivery. |
| Svix (Dispatch) | Outbound delivery | Widely used for sending webhooks to end customers at scale, with published SOC 2 / HIPAA / PCI-DSS compliance and a reported very high measured uptime. Not primarily an inbound tool. |
| Convoy | Outbound delivery, self-hosted | Source-available (Elastic License v2.0). Independent write-ups note the company behind it wound down and it's now maintained as a side project, with measured uptime reported below 99% over a recent 12-month period — worth factoring in before relying on it for production. |
| Hook0 | Outbound delivery | Small, bootstrapped EU vendor aimed at low-volume teams needing EU-only data residency. |
| AWS-native (API Gateway + EventBridge/SQS + Lambda) | Inbound, DIY | No licensing cost beyond usage, but you own the maintenance of every component described in Section 4. |
| InstaWebhook | Inbound ingestion | A newer entrant aimed squarely at the ingress problem: durable endpoints, queued delivery with configurable backoff, a dashboard showing received/queued/attempted/retried/delivered/dead-lettered states, native DLQs, idempotency-key support, and a "bring your own database" mode for storing payloads in your own Postgres instance. Its published documentation and product pages describe these features directly; independent, third-party uptime or scale benchmarks (of the kind available for Svix or Hookdeck above) aren't yet publicly available, so it's worth confirming current SLAs and pricing directly with the vendor before committing production traffic. |
The practical takeaway: if your problem is specifically receiving provider webhooks reliably, look first at tools built for the inbound side (Hookdeck Event Gateway, a dedicated inbound-focused newer entrant like InstaWebhook, or the AWS-native DIY stack) rather than an outbound-delivery product like Svix or Convoy, which solve an adjacent but different problem. Whichever you choose, weigh the same things you'd weigh for any piece of infrastructure you don't control: published compliance certifications, independently reported uptime, pricing at your actual event volume, and how much of Section 3's checklist they cover out of the box versus what you'd still have to build yourself.
Conclusion
The API Gateway vs. webhook debate comes down to choosing the right tool for the job. API Gateways remain excellent for synchronous, client-facing APIs. They're structurally mismatched for the asynchronous, stateful, at-least-once nature of third-party webhooks — a mismatch that AWS's 2024 timeout-quota change narrows slightly but doesn't eliminate, since durable queueing, replay, and provider-specific signature verification still aren't things API Gateway does natively.
Whether you build a queue-first ingress layer yourself or adopt one of the dedicated platforms above, the goal is the same: treat webhooks as mission-critical data, not as an afterthought bolted onto infrastructure that was designed for a different traffic pattern.
Frequently Asked Questions
What's the main difference between an API Gateway and a webhook? An API Gateway sits between a client and backend services, handling synchronous, client-initiated requests (a mobile app asking for data). A webhook is an asynchronous, server-to-server push notification triggered by an event (Stripe notifying your server of a payment). Gateways expect the client to handle retries; webhooks require the receiver to handle retries and queuing.
Can I use AWS API Gateway for webhooks? Yes, but not safely as a standalone solution. HTTP APIs and edge-optimized REST APIs cap out at 30 and 29 seconds respectively with no way to raise the limit. Regional and private REST APIs can now have their integration timeout raised above 29 seconds via a Service Quota request (as of a June 2024 AWS change), but you'd still need to bolt on a queuing layer (SQS/EventBridge) and custom signature verification yourself — none of that comes built in.
What is a dead-letter queue (DLQ) in webhook processing? A DLQ is a specialized queue where events land after failing to process successfully through all configured retry attempts. It isolates "poison pill" messages so they don't block the main queue, letting engineers inspect and later replay them once the underlying issue is fixed.
Why do webhooks need a replay UI? Because you don't control the sender, you generally can't force a provider to resend an event on demand if your server was down when it arrived. A replay UI gives developers visibility into every webhook received and a way to manually re-trigger delivery of the exact original payload, which is often the only practical way to recover from an outage without data loss.
What is the "Fast ACK" principle?
It's the practice of never doing heavy business logic synchronously inside a webhook handler. Instead, the handler immediately persists the raw payload (to a database or queue) and returns a 2xx/202 response right away, deferring actual processing to a background worker. This avoids provider-side timeouts (10 seconds for GitHub, for example) and ensures the provider knows the event was safely received.
Sources checked for this piece include AWS's own documentation and 2024 launch notes on API Gateway integration timeouts, GitHub's current webhook documentation, the Standard Webhooks open specification, and independent comparison write-ups of current webhook infrastructure vendors (Svix, Hookdeck, Convoy, Hook0) published in 2026. Vendor-reported figures (uptime, compliance, feature sets) are noted as such where independent verification wasn't available.