Gareth Wilson Gareth Wilson

Hookdeck Event Gateway vs Temporal: Webhook Gateway and Durable Workflow Orchestrator Compared

Published


Hookdeck Event Gateway and Temporal both show up in conversations about reliable event-driven systems. Both deal with failure, retries, and state that has to survive crashes. Both are pitched at teams who care about getting events from A to B without losing them. So when a team is designing the backend for webhook-driven processing, the two often end up on the same evaluation shortlist.

However, they're not really competing for the same job - they solve different halves of the same problem. Hookdeck Event Gateway is a webhook gateway: it sits at the ingress edge, receives webhooks from third-party providers, verifies signatures, queues, filters, routes, and reliably delivers them to your services. Temporal is a durable workflow orchestrator: it executes your code as deterministic workflows with checkpointed state, so a process that runs for hours, days, or years survives crashes, deploys, and infrastructure failures and resumes exactly where it left off.

This comparison breaks down what each platform actually provides, where they overlap, where they don't, and when it makes sense to use one, the other, or both.

At a glance

CapabilityHookdeck Event GatewayTemporal
Primary roleWebhook gateway / ingress layerDurable workflow orchestrator / execution layer
Pre-configured webhook sources120+ with built-in signature verificationNone — no native HTTP webhook intake
Signature verificationPer-provider, at the gatewayImplemented in handler code
Durable queueing at ingressYes, with backpressure absorptionNo (queueing is internal to task queues for workers)
FilteringField-level rules at the edgeDone in workflow or handler code
DeduplicationExact and field-based, configurable windowWorkflow ID-based (start-workflow idempotency)
RoutingDynamic rules, fan-out, multiplexingWorkflow logic, child workflows, signals
TransformationsCode editor and visual builder at ingressDone in workflow or handler code
Durable execution / step state— (delivers to your code)Yes — full event-sourced workflow history
Per-activity retries— (delivery-level retries only)Yes — every activity has its own retry policy
Long-running workflowsWorkflows can run for years, surviving deploys and restarts
Waitpoints (signals, timers)Yes — Signals, Timers, and Queries are first-class
Webhook observabilityVisual trace per request, full-text search, replayWorkflow execution history with full event log
ReplayReplay any past webhook, singly or in bulkDeterministic workflow replay from event history
Default retriesConfigurable, linear or exponential backoffUnlimited retries by default with configurable policy
Developer toolsHookdeck CLI (local tunneling), Console (request inspector)Temporal CLI, local dev server, Web UI
SDK / language coverageStack-agnostic (HTTP delivery to any backend)Go, Java, TypeScript, Python, .NET, PHP, Ruby
Operating modelFully managed cloudTemporal Cloud or self-hosted; workers always run on your infrastructure
Self-hostableCloud-onlyYes (open source, Apache 2.0)
Uptime SLA99.999% on all paid tiers99.9%–99.99% on Temporal Cloud (tier-dependent)
Pricing modelEvent-based, paid plans from $39/moPer action (state transition) on Temporal Cloud; free self-hosted

The Event Gateway approach

Hookdeck Event Gateway is purpose-built for the inbound webhook problem: making sure that when an external provider fires an event, you receive it, you can prove you received it, and your downstream systems eventually process it — without writing and maintaining the boilerplate yourself. The product covers:

  • Receiving webhooks from any source, with 120+ pre-configured integrations that handle signature verification for providers like Stripe, Shopify, GitHub, Twilio, and Paddle out of the box.
  • Delivering webhooks to any destination reachable over HTTP — your application servers, a queue, a Lambda, a handler that starts a Temporal workflow, or anywhere else.
  • Filtering events at the gateway so you only forward the subset of webhooks your services care about.
  • Transforming payloads to match the shape downstream systems expect.
  • Durable queueing with backpressure absorption so a webhook storm doesn't take down your application.
  • Retries and replay with linear or exponential backoff, plus bulk retry from the dashboard.
  • Observability: a visual trace per request, full-text search across payloads, headers, and paths, and team workflows for tracking issues.
  • Developer tools: a CLI that proxies live webhooks to localhost without breaking on restarts, and the Hookdeck Console for inspecting requests without an account.

The Event Gateway's job ends the moment your code receives the event. What happens next — running the workflow, calling APIs, writing to a database — is your application's problem.

The Temporal approach

Temporal is a durable workflow orchestrator. You write workflows and activities using its SDK in your language of choice, and Temporal persists the full event history of every workflow execution. That history is the source of truth — workflows are replayed from history on recovery, which is how they survive crashes, deploys, and infrastructure failures without losing progress. The platform covers:

  • Durable workflows that can run for seconds, days, months, or years. The execution state is event-sourced and persisted, so a workflow paused for six months wakes up exactly where it left off.
  • Activities — the units of work that perform side effects (API calls, database writes, LLM calls). Each activity has its own retry policy and timeout.
  • Per-activity retries with configurable policies — by default, retries are unlimited with exponential backoff, on the assumption that durable workflows should tolerate long outages.
  • Signals, Timers, and Queries — Signals let a workflow receive external input mid-execution, Timers let a workflow sleep for arbitrary durations, Queries let external callers inspect workflow state.
  • Child workflows for composing complex orchestrations out of smaller reusable units.
  • Workers — your processes that connect to the Temporal service and execute workflow and activity code. The Temporal service itself is essentially a state machine coordinator; your code always runs on infrastructure you operate.
  • A Web UI and CLI for inspecting workflow histories, querying live executions, and signalling running workflows.
  • A local dev server (temporal server start-dev) that runs the full Temporal service locally for development.

Temporal's job begins after a workflow is started — usually by your code calling client.start_workflow(). How that call gets triggered, whether a webhook provider fired an event, a user clicked a button, or a scheduled job fired, is an upstream concern. Temporal does not have a native HTTP webhook intake.

For a broader take on where webhook gateways and durable runtimes fit relative to each other, see Webhook Gateways and Durable Runtimes: Two Tools for Reliable Agent Workflows.

Pre-configured webhook sources

The first practical difference shows up at the edge.

Hookdeck Event Gateway ships with 120+ pre-configured webhook sources. Each one knows how that provider signs its requests, what content types to expect, what the retry headers mean, and where the timestamp lives. Pointing Stripe, Shopify, or GitHub at Hookdeck is configuration, not code.

Temporal has no concept of a webhook source. To start a workflow from a third-party webhook, you operate an HTTP endpoint that receives the webhook, verifies the signature, parses the payload, and calls client.start_workflow() to kick off a Temporal workflow. That intake server is yours to write, deploy, scale, and monitor.

If you're receiving webhooks from external providers, a gateway absorbs the per-provider quirks and the operational burden of running the intake layer. Temporal is the wrong abstraction for the ingress problem and wasn't designed to solve it.

Signature verification and edge security

Hookdeck Event Gateway verifies signatures at the gateway, before any forwarding happens. The configuration is per-source: paste in the Stripe secret, the Shopify shared secret, the GitHub webhook token, and the gateway rejects unsigned or tampered requests at the edge.

Temporal has no role in signature verification — webhooks never reach Temporal directly. Verification happens in the HTTP intake server you write in front of it.

Centralizing signature verification at the gateway means every downstream consumer (your Temporal intake, your app, an analytics pipeline) gets pre-verified events without having to know how each provider signs them.

Queueing and backpressure

Hookdeck Event Gateway absorbs the request from the provider into a durable queue and acknowledges it immediately. Downstream systems consume events from the queue at their own pace. If a downstream is slow or briefly unavailable, Hookdeck holds the events and retries delivery without the provider ever knowing there was a problem.

Temporal uses task queues internally to feed work to workers, but those queues live behind the workflow boundary. If your intake server is up but slow to call client.start_workflow(), or if the Temporal service is temporarily unreachable from your intake, you're responsible for buffering. Webhook providers won't wait politely for your intake to recover.

For high-volume, bursty traffic (a Shopify flash sale, a Stripe end-of-month dispatch), a gateway in front absorbs the burst before any workflow logic runs. For a deeper look at how delivery guarantees compare across managed services, see Webhook Delivery Guarantees: Comparing Hookdeck, Svix, Inngest, and AWS EventBridge.

Filtering and routing

Hookdeck Event Gateway lets you write filter rules against any field in the headers, path, query, or body. Events that don't match can be dropped, routed to a different destination, or flagged. Routing decisions happen at the gateway, before any downstream compute is spent.

Temporal routes by workflow definition — whatever workflow your intake calls is the one that runs. Filtering and routing happen either in the intake code (decide which workflow to start) or inside workflows (early return if the payload doesn't match criteria). Both work, but both cost compute and contribute to Temporal's per-action billing.

If 80% of a provider's webhooks aren't relevant to a particular workflow, filtering at the gateway saves you from spinning up workflow executions you'd discard immediately.

Deduplication

Hookdeck Event Gateway supports exact and field-based deduplication on a configurable window, applied at ingress. Duplicates are dropped before they ever reach downstream systems.

Temporal offers workflow ID-based idempotency: if you start a workflow with an ID that's already running (or already completed within a configurable retention period), Temporal rejects the start as a duplicate. To make webhook deduplication work cleanly, you typically derive the workflow ID from the webhook event ID — but you have to know which field is the event ID for each provider, which is provider-specific knowledge.

The two are complementary. Edge dedup at the gateway keeps duplicates out of your processing pipeline entirely; workflow ID idempotency in Temporal ensures that even if a duplicate sneaks through, the same workflow doesn't run twice.

Transformations

Hookdeck Event Gateway provides a code editor and a visual transformation builder for reshaping payloads at ingress. Common uses include flattening nested fields, splitting one webhook into multiple events, normalising provider-specific shapes into your internal event schema, or stripping personal data before forwarding downstream.

Temporal expects strongly typed workflow inputs defined by the SDK. Transformation from raw webhook payload to workflow input happens either in your intake server or as the first step of the workflow. There's no first-class transformation layer between "webhook arrived" and "workflow runs."

If you want every downstream consumer to receive a normalised event shape (your Temporal intake, your app, your data warehouse) a gateway transformation does it once at the edge rather than in every consumer.

Durable execution

This is where Temporal's category genuinely shines, and where the differentiation from a gateway is sharpest.

Hookdeck Event Gateway delivers the event to your code and is done. If your handler runs for 45 seconds and crashes at second 40, Hookdeck will retry the delivery, and your handler will run again from the start. The gateway has no model of what your code was in the middle of doing.

Temporal persists the full event history of every workflow. Activities (the side-effecting units of work) are checkpointed individually, so if a workflow makes three API calls, a database write, and waits four days for a human approval, and your worker process crashes after the third API call, Temporal resumes from there on the next worker pickup — the prior activities are not re-run. Workflows can survive worker restarts, version upgrades, region failovers, and outages that span days. This is the strongest durable execution model of any platform in this category.

The trade-off is that this power is overkill for handlers that finish in seconds and don't have meaningful step boundaries. If your code is "receive webhook, call one model, write one row, return," there's no workflow state worth event-sourcing. For when that distinction matters, see Why Most Webhook-Triggered Agents Don't Need a Workflow Engine.

Retries

Hookdeck Event Gateway retries delivery with linear or exponential backoff, configurable per connection. If your endpoint returns 500, Hookdeck retries the request until it succeeds, the retry policy is exhausted, or you intervene from the dashboard. The original request stays in storage for replay either way.

Temporal retries activities — and by default, retries are unlimited with exponential backoff, on the assumption that durable workflows should tolerate long outages. You configure retry policies (max attempts, initial interval, backoff coefficient, max interval, non-retryable error types) per activity. Activities that aren't idempotent get the same idempotency tooling — heartbeats, idempotency keys — but the framework leaves the correctness to you.

These are different retry models. A gateway retries until your code returns 2xx. An orchestrator retries activities until each one returns success, potentially over hours or days. When both are in front of the same handler, the gateway's retry of delivery and the orchestrator's retry of activities cooperate rather than overlap.

Replay

Hookdeck Event Gateway stores every webhook with the full request (headers, body, signature, response) and lets you replay any of them (singly or in bulk) from the dashboard, with full-text search and filters across history. The replay answers "the provider sent us an event — did our pipeline handle it correctly?"

Temporal has a different concept of replay: every workflow execution is reconstructible from its event history. The Temporal Web UI and CLI let you inspect the full history of any execution and replay it deterministically for debugging. This is internal replay over workflow code, not over webhooks — it answers "what did this workflow do, and would the current code do the same?"

The two replay models address different questions and don't substitute for each other. Hookdeck's replay is about the edge; Temporal's is about the execution. Production teams running webhook-triggered workflows usually want both.

Observability

Hookdeck Event Gateway gives you a per-request visual trace: what the provider sent, whether the signature verified, what filters and transforms applied, what was delivered, and what the response was. Full-text search runs across payloads, headers, paths, and queries. Issues are first-class, with custom triggers, status, and team workflows.

Temporal gives you a per-workflow-execution view: the full event history, every activity invocation with inputs and outputs, every Signal received, every Timer fired, every retry. The Web UI is excellent for understanding what a long-running workflow has done and where it currently is in its execution.

These are different views on different layers. A gateway's dashboard tells you about webhooks; an orchestrator's dashboard tells you about workflows. The two views are complementary — neither alone gives you the whole story when your system spans both.

Developer tools

Hookdeck Event Gateway ships the Hookdeck CLI for proxying live webhooks to localhost. Unlike ngrok, it supports multiple developers simultaneously, preserves history across restarts, and has bookmarks for replayable test events. The Hookdeck Console is a free, no-signup tool for inspecting webhooks and trying out 60+ provider samples.

Temporal ships a CLI (temporal), a Web UI, and a local development server (temporal server start-dev) that runs the full Temporal service locally for development. The tooling is mature and well-loved, with good support for writing and debugging workflow code locally before deploying to a worker fleet.

Both are good at what they're for. For the local development of webhook handlers, the Hookdeck CLI is the lower-friction tool. For local development of workflows, Temporal's dev server is. They coexist nicely.

Operating model and self-hostability

Hookdeck Event Gateway is a managed cloud service. There is no self-hosted version. You configure sources, destinations, and rules; Hookdeck operates the infrastructure.

Temporal has two operating modes. Self-hosted Temporal is open source (Apache 2.0) and runs on infrastructure you operate — Cassandra or PostgreSQL for persistence, plus the Temporal service and your workers. Temporal Cloud is a managed service that runs the Temporal service for you; you still run your own workers. Workers are always your responsibility, regardless of operating mode, because they execute your workflow and activity code.

Teams with strict data residency, air-gapped, or sovereign-cloud requirements often choose self-hosted Temporal; teams that don't want to operate the orchestration service choose Temporal Cloud. Either way, the worker fleet is operational work you take on. Hookdeck Event Gateway's managed model is meaningfully simpler operationally — there are no workers to run.

Pricing model

Hookdeck Event Gateway prices on events. There's a free tier; the paid Team plan starts at $39/mo. Throughput-based, so cost scales with the number of webhooks you process rather than how complex your processing is.

Temporal Cloud prices per action (a state transition in a workflow's history) plus storage and support tiers. Self-hosted Temporal has no licence cost but real operational cost — the people, the database, the upgrades, the monitoring. Both models reward keeping workflows efficient and avoiding chatty signalling or excessive activity counts.

For pure pass-through webhook workloads (receive webhook, do one thing, return) putting Temporal in front of the work is generally over-provisioned. The workflow has no meaningful state to event-source, but you'd pay per state transition for it anyway. Gateway pricing is generally lower for that pattern.

Using Hookdeck Event Gateway and Temporal together

The standard production pattern is to put Hookdeck in front of a thin intake service that starts Temporal workflows:

  1. Third-party providers (Stripe, Shopify, GitHub, Twilio, and so on) send signed webhooks to a Hookdeck Source URL.
  2. Hookdeck verifies the signature, deduplicates, filters out events that don't need a workflow, and transforms the payload into your normalised internal event shape.
  3. Hookdeck delivers the event to an HTTP intake endpoint that you operate. That intake is a thin wrapper that authenticates the request and calls client.start_workflow() with a deterministic workflow ID derived from the event.
  4. Temporal starts (or rejects as duplicate) the workflow, persists its history, and runs activities through your worker fleet — with all the durability, retries, signalling, and long-running guarantees Temporal provides.

Each tool owns the layer it's good at. The gateway handles the edge (verification, dedup, observability of what the provider actually sent, replay over raw webhook traffic). Temporal handles the execution (durable state, per-activity retries, signals, timers, and the ability to run a workflow for as long as the business process actually takes). Failure modes are scoped too: a Temporal outage or a worker fleet outage doesn't lose webhooks because Hookdeck queues them and retries delivery to your intake; a downstream bug doesn't lose webhooks because Hookdeck has the original request stored for replay.

This is the same shape as the architecture described in GitHub Agent Automation: Hookdeck, Trigger.dev, and Claude — Trigger.dev is a different durable runtime, but the principle is identical. The gateway is the ingress; the orchestrator is the execution.

When to choose Hookdeck Event Gateway alone

If your workload is "receive webhook from an external provider, do one or two simple things, return," Hookdeck alone is enough. A reliable gateway in front of a normal HTTP handler covers the failure modes that actually bite at this scale: timeouts, duplicates, transient downstream failures, provider retry storms. There's no need for event-sourced workflow state when your handler has no real workflow.

Choose Hookdeck alone when you're integrating third-party webhooks into a conventional backend, when your processing is short-lived, when you care most about webhook-level observability and replay, and when the operational and conceptual overhead of a workflow orchestrator would dwarf the benefit for the work you're actually doing.

When to choose Temporal alone

If you're not receiving webhooks from external providers at all — your workflows are triggered by your own code, internal events, schedules, or user actions — you don't have a webhook ingress problem to solve. Calling client.start_workflow() from your code is the natural integration point. You get durable execution, activity retries, signals, timers, and long-running workflows out of the box without needing a gateway in front.

Choose Temporal alone when your workflows are genuinely long-running (hours to years), when they need to survive infrastructure failures and version upgrades without losing progress, when they involve compensating transactions or sagas, when they wait for external systems or human approvals, when they fan out to many child workflows, or when you have multiple language teams that each need to participate in the same orchestration in their preferred SDK.

When to use both

Use both when you're receiving webhooks from third-party providers and your downstream processing is a real long-running workflow. Hookdeck Event Gateway pays for itself at the ingress edge (signature verification, dedup, replay, observability of what the provider actually sent); Temporal pays for itself at the execution layer (event-sourced workflow state, activity retries, signals, timers, multi-day or multi-month durability).

This is a particularly common pairing in fintech, healthcare, and other regulated domains where webhook events kick off mission-critical, long-running business processes — a payment notification that triggers a multi-day reconciliation flow, a KYC submission that triggers a multi-step verification with human review, an enrolment event that triggers a 90-day onboarding journey. The gateway makes the ingress trustworthy and observable; the orchestrator makes the workflow durable.

The combination is also a low-risk starting point. Putting Hookdeck in front of a conventional handler is cheap. The day a workflow actually emerges (a multi-day onboarding flow, a human-approval step, etc.) you put Temporal behind the gateway and migrate the affected handlers. The webhook producers don't notice; the ingress URLs don't change; the signature verification, dedup, and observability stay where they are.

Conclusion

Hookdeck Event Gateway and Temporal sit on either side of the line between receiving an event and processing an event. The gateway is purpose-built for the ingress layer: 120+ pre-configured providers, durable queueing with backpressure, filtering and transformations at the edge, full-text searchable observability, and replay over webhooks. Temporal is purpose-built for the execution layer: event-sourced durable workflows that can run for years, per-activity retries, signals, timers, and a rich multi-language SDK ecosystem.

For teams receiving third-party webhooks who run conventional handlers, Hookdeck alone covers the failure modes that matter. For teams whose workflows are genuinely long-running and mission-critical, Temporal covers durable orchestration. For teams that have both (webhooks from outside, real long-running workflows inside) Hookdeck and Temporal are complementary rather than competing, and putting one in front of the other gets each tool doing the part it's best at.

FAQs

When should I use Hookdeck Event Gateway instead of Temporal?

Use Hookdeck when your primary problem is receiving webhooks reliably from external providers — especially when you need per-provider signature verification, durable queueing, edge filtering, and observability over the raw webhook traffic. If your processing is short-lived HTTP handlers, the gateway alone is enough; you don't need an orchestrator for code that has no orchestration.

When should I use Temporal instead of Hookdeck Event Gateway?

Use Temporal when your processing is a real long-running workflow — one that has many activities, waits for external systems or human approvals, runs for hours or months, and needs to survive deploys and infrastructure failures without losing progress. If you aren't receiving third-party webhooks at all, Temporal alone is plenty; the gateway is for ingress.

Can I use Hookdeck Event Gateway and Temporal together?

Yes — they're complementary. The typical pattern is Hookdeck receiving webhooks from third-party providers, verifying, dedup, and transforming them, then delivering to an HTTP intake service that starts Temporal workflows. Hookdeck handles the ingress layer (receiving, validating, deduplicating, observability over webhooks). Temporal handles the execution layer (event-sourced durable workflows, per-activity retries, signals, timers). Each does something the other doesn't.

Does Temporal replace a webhook gateway?

No. Temporal has no native HTTP webhook intake. To receive webhooks, you operate an HTTP server that verifies signatures, parses payloads, and calls `client.start_workflow()`. That intake server is the layer a webhook gateway replaces — Hookdeck does the per-provider signature verification, dedup, filtering, and replay for you, so the intake server becomes a thin wrapper rather than a system to build and maintain.

Is Temporal overkill for webhook processing?

For most webhook handlers, yes. If your handler is "verify webhook, call one model, write one row, return," there's no workflow state worth event-sourcing and the operational cost of running workers will outweigh the benefit. Temporal becomes worth the investment when you genuinely have long-running, multi-step processes with state that must survive failures. For shorter handlers, a webhook gateway in front of a conventional HTTP service covers the failure modes that actually matter.


Gareth Wilson

Gareth Wilson

Product Marketing

Multi-time founding marketer, Gareth is PMM at Hookdeck and author of the newsletter, Community Inc.