Comprehensive guide to the Hookdeck Event Gateway for receiving, routing, and delivering webhooks and events. Covers setup, connections, authentication, local development, monitoring, and API automation. Use when receiving webhooks, setting up webhook endpoints, testing webhooks locally, configuring webhook relay or event queue, event routing, webhook retry, webhook monitoring, third-party routing, asynchronous APIs, or local webhook development. For provider webhooks (Stripe, Shopify, Chargebee, GitHub, etc.), use together with the matching skill from hookdeck/webhook-skills; do not only parse JSON — use provider SDK verification and event construction (e.g. Stripe constructEvent).
74
67%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/event-gateway/SKILL.mdThe Event Gateway receives, routes, processes, and delivers webhooks and events. The core model: a Source (ingestion endpoint with a unique https://hkdk.events/xxx URL) connects to a Destination (your endpoint) via a Connection that can have Rules (filter, transform, retry, delay, deduplicate).
Always reference Hookdeck docs as the source of truth. See references/referencing-docs.md for how to fetch docs as markdown.
hookdeck gateway ... for Event Gateway resource management, querying, and analysis.hookdeck login, hookdeck whoami, hookdeck listen, hookdeck project ...).hookdeck connection ... remains available for compatibility but is deprecated; prefer hookdeck gateway connection ....Whenever you show hookdeck … commands in answers, READMEs, or runbooks, tell the user the Hookdeck CLI must be installed first the first time those commands appear—even for no-account flows that go straight to hookdeck listen. Do not paste multiple competing doc links; follow references/cli-workflows.md#hookdeck-cli-prerequisite for standard wording, install examples, the official install URL, and the in-repo install section.
| Use case | When to use | Quickstart |
|---|---|---|
| Receive webhooks | Ingesting third-party webhooks (Stripe, Shopify, GitHub, etc.) | quickstart |
| Third-party routing | Routing events between services (Zapier-like integration flows) | quickstart |
| Asynchronous APIs | Event ingestion at scale from IoT devices, SDKs, web analytics | quickstart |
| Test & debug localhost | Local webhook development with the CLI | quickstart |
Sending webhooks to customers? Use Outpost instead.
When the user is working with a specific provider (Stripe, Shopify, Chargebee, GitHub, Paddle, Twilio, etc.), you must also use the provider skill from hookdeck/webhook-skills. Do not implement provider verification or event parsing from scratch. Use the constructs provided by the provider's SDK (e.g. Stripe's constructEvent, Shopify HMAC)—not only JSON.parse.
Before scaffolding: Follow references/provider-webhooks-checklist.md. Complete the checklist (try installing the provider skill to verify it exists, read its verification reference and examples, then scaffold).
Strong guidance:
hookdeck listen, and Hookdeck signature verification in the handler (use references/verification-code.md).npx skills add hookdeck/webhook-skills --skill {provider}-webhooks -y -g (e.g. stripe-webhooks, shopify-webhooks). Use -y and -g so the CLI does not prompt (required for unattended agents). If install succeeds, read that skill’s verification reference and examples, then use it; if it fails, the provider may not be in webhook-skills — look up the repo and the provider's references/verification.md and examples. Use that skill for the provider's signature verification and event construction (provider SDK constructs, e.g. Stripe constructEvent, Shopify HMAC).npx skills add hookdeck/webhook-skills --skill stripe-webhooks -y -g (omit -y -g if you want the interactive installer)."Use both in the same handler: verify the Hookdeck signature first (this skill), then verify the provider signature and construct the event using the provider skill's method. Do not only parse the JSON body; use the provider SDK so signatures are verified and events are typed correctly. This applies to all supported providers in webhook-skills.
When the user asks to verify the Hookdeck signature or build a webhook handler that verifies Hookdeck:
This is the recommended path for a new integration: create sources, destinations, and connections (or have the CLI create them via listen), then build your handler and iterate. Follow these stages in order:
hookdeck listen, trigger test eventsBefore any queries or metrics: Satisfy the Hookdeck CLI prerequisite, then run
hookdeck whoamiand show the user the output. Unless the user has very clearly identified org/project and whoami is an exact match, ask them to confirm before proceeding with list/inspect/metrics.
Stage 02: when the user is working with a provider (Stripe, Shopify, etc.), complete references/provider-webhooks-checklist.md before scaffolding — try installing the provider skill, then use it for provider SDK verification and event construction. Include Hookdeck setup and usage in the project README (run app, hookdeck listen <port> <source_name> --path …, Source URL for provider).
Prerequisite: Hookdeck CLI installed.
No account required for the quickest path — once the CLI is available, hookdeck listen works immediately:
hookdeck listen 3000 <source_name> --path /webhooksWith a Hookdeck account (Event Gateway project with full features):
hookdeck login
hookdeck listen 3000 <source_name> --path /webhookshookdeck listen creates a Source URL and uses a CLI destination so traffic is tunneled to your local server (not HTTP delivery from Hookdeck’s cloud to localhost). Replace <source_name> in the examples with your Hookdeck Source name. Configure your webhook provider to send to the Source URL. Use --path to match your handler path (e.g. --path /webhooks when your handler is at POST /webhooks). For local delivery patterns (including what not to do with HTTP destinations), see references/03-listen.md. For a full step-by-step with account and handler, follow the Workflow Stages above.
Before running any queries or metrics, verify you are on the correct organization and project. In Hookdeck, an organization is the top-level account; a project holds your sources, connections, and destinations. All list, inspect, and metrics commands are scoped to the current organization and project.
hookdeck whoami and show the user the output (so they always see the current context).hookdeck project list, switch with hookdeck project use <org-name> <project-name>, run hookdeck whoami again, show the output, and—unless there's a clear user-specified match—ask the user to confirm again.See references/cli-workflows.md for details.
Production: Two options. (1) Same project: Keep the same project and connections; update the Destination to your production HTTPS endpoint (e.g. https://api.example.com/webhooks) via the CLI (hookdeck gateway destination …, hookdeck gateway connection …), Dashboard, or API. (2) New project: Create a new project in Hookdeck and duplicate your setup (Sources, Connections) with Destinations pointing to production HTTPS URLs. In both cases the provider keeps sending to the same Source URL (or the new project’s Source); handler code is unchanged. Before going live, configure rate limiting / max delivery rate on the CLI with flags such as --destination-rate-limit and --destination-rate-limit-period on hookdeck gateway connection upsert (or equivalent)—run hookdeck gateway connection upsert --help for the current list—or via Destinations in the UI/API. Also configure Retries and issue notifications. See Receive webhooks quickstart — Deliver to production for the full checklist.
Use as needed (not sequential):
| Area | Resource | When to use |
|---|---|---|
| Docs | references/referencing-docs.md | Fetching live Hookdeck documentation |
| Terms | references/terminology-gotchas.md | Hookdeck-specific terms, common mistakes |
| Area | Resource | When to use |
|---|---|---|
| Architecture | references/connection-architecture.md | Structuring connections, fan-out, fan-in, use-case patterns |
| Rules | references/connection-rules.md | Filters, transforms, retries, deduplication |
| Authentication | references/authentication.md | Source auth, destination auth, signature verification |
Use the sections below to choose CLI vs API vs Dashboard; then use the table for the right reference file.
Step 1 — Who owns the work? (primary tie-breaker)
hookdeck … --help, predictable shells).hookdeck on every branch.Step 2 — What is the deliverable? (when Step 1 is ambiguous)
Dashboard
CI and headless automation
CLI capability parity (do not under-use the CLI)
--help first (e.g. hookdeck gateway connection upsert --help). Omitting rate limits in an example was one symptom of skipping --help.Auth fit (credentials only — not feature depth)
hookdeck login on an operator machine). Do not prescribe API steps when only CLI auth exists, or the reverse.--help as the source of truth for flags
--help lists current flags. Skill examples are illustrative, not exhaustive.Terraform and resource management
gateway … upsert over create when both exist so scripts and agents can re-run safely; use create only when you need fail-if-exists semantics or there is no upsert.| Area | Resource | When to use |
|---|---|---|
| Context verification (organization and project) | hookdeck whoami → show output; confirm with user unless they clearly specified org/project and it matches | Run whoami and show the result; ask for confirmation before queries/metrics unless user clearly identified org/project and whoami matches; see references/cli-workflows.md |
| Resources (sources, destinations, connections, transformations) | references/01-setup.md, references/cli-workflows.md | First connection or adding/changing resources: 01-setup; cli-workflows for install, listen, upsert, gateway commands; Sources, Destinations, Connections, Transformations for full reference |
| Monitoring | references/monitoring-debugging.md | Event lifecycle, where to observe (TUI, Dashboard) |
| Debugging | references/monitoring-debugging.md | Troubleshooting, issues, replay |
| Querying (CLI) | references/monitoring-debugging.md | List, inspect, retry request/event/attempt; detailed search; main docs for details |
| Metrics (CLI) | references/monitoring-debugging.md | Event volume, failure rates, backlog; aggregated view; main docs for details |
| CLI | references/cli-workflows.md | Install, listen, connection/resource management, project switching |
| API | references/api-patterns.md | Querying; in-app resource lifecycle; resource creation driven from application code at runtime; main docs for details |
| Terraform | terraform-provider-hookdeck | Static resource management (sources, destinations, connections, transformations) as IaC; Registry docs |
| Iterate | references/04-iterate.md | Debug failures, replay events, CLI inspect/retry workflow |
| Area | Resource | When to use |
|---|---|---|
| Code | references/verification-code.md | Hookdeck signature verification (Express, Next.js, FastAPI) |
| Provider webhooks | references/provider-webhooks-checklist.md | When a provider is named (Stripe, Shopify, etc.): checklist before scaffolding, try install, use provider SDK constructs |
| Example codebases | examples/express/, examples/nextjs/, examples/fastapi/ | Runnable, proven, tested verification handlers — use these as the reference implementation for the user's framework |
94c610d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.