Hookbase
LoginGet Started Free
Back to Blog
Product Update

Introducing the Hookbase Terraform Provider: Webhook Infrastructure as Code

Manage your entire webhook pipeline — inbound and outbound — with Terraform. 9 resources, full CRUD, import support, and the only provider that covers both directions.

Hookbase Team
March 31, 2026
6 min read

Webhook Infrastructure Deserves the Same Rigor as the Rest of Your Stack

Your servers are defined in Terraform. Your DNS is in Terraform. Your databases, queues, and monitoring — all in Terraform. But your webhook routing? That lives in a dashboard, configured by hand, with no version history, no code review, and no way to reproduce it.

Today we're changing that. The Hookbase Terraform Provider is now available on the Terraform Registry.

What You Can Manage

The provider covers 9 resource types across both inbound and outbound webhooks — making it the only Terraform provider in the webhook space that handles both directions.

Inbound Resources

| Resource | What It Does | |----------|-------------| | hookbase_source | Webhook receivers with signature verification, IP filtering, deduplication | | hookbase_destination | HTTP endpoints that receive delivered events | | hookbase_route | Rules that connect sources to destinations with optional transforms and filters | | hookbase_transform | JSONata, JavaScript, Liquid, or XSLT transformations applied to events | | hookbase_filter | Conditional logic that controls which events get routed |

Outbound Resources

| Resource | What It Does | |----------|-------------| | hookbase_event_type | Event catalog with schemas and example payloads | | hookbase_webhook_application | Customer-facing webhook apps with rate limiting | | hookbase_webhook_endpoint | Delivery endpoints with circuit breakers, retry policies, and signing | | hookbase_webhook_subscription | Subscriptions connecting endpoints to event types |

Every resource supports create, read, update, delete, and import.

Quick Start

terraform {
  required_providers {
    hookbase = {
      source  = "HookbaseApp/hookbase"
      version = "~> 0.1"
    }
  }
}

provider "hookbase" {
  api_key = var.hookbase_api_key
}

Set your API key via the HOOKBASE_API_KEY environment variable or pass it directly. The provider auto-detects your organization from the key — no org ID needed.

Example: Full Inbound Pipeline

Define a complete Stripe-to-Slack webhook pipeline in a single file:

resource "hookbase_source" "stripe" {
  name          = "stripe-production"
  slug          = "stripe-prod"
  provider_type = "stripe"
  signing_secret = var.stripe_webhook_secret
  reject_invalid_signatures = true
  dedup_enabled  = true
  dedup_strategy = "provider_id"
}

resource "hookbase_transform" "stripe_to_slack" {
  name           = "format-for-slack"
  transform_type = "jsonata"
  code           = <<-EOT
    {
      "text": "Payment received: $" & $string(data.object.amount / 100),
      "event": type
    }
  EOT
}

resource "hookbase_destination" "slack" {
  name = "slack-payments"
  slug = "slack-payments"
  url  = var.slack_webhook_url
}

resource "hookbase_route" "stripe_to_slack" {
  name           = "stripe-to-slack"
  source_id      = hookbase_source.stripe.id
  destination_id = hookbase_destination.slack.id
  transform_id   = hookbase_transform.stripe_to_slack.id
}

Run terraform apply and your pipeline is live. Change the transform, open a PR, get it reviewed, merge, apply. That's it.

Example: Outbound Webhooks for Your Customers

Set up a complete outbound webhook system for a customer:

resource "hookbase_event_type" "order_created" {
  name        = "order.created"
  description = "Fired when a new order is placed"
  category    = "orders"
}

resource "hookbase_webhook_application" "acme" {
  name        = "Acme Corp"
  external_id = "cust_acme_123"
  rate_limit_per_second = 50
}

resource "hookbase_webhook_endpoint" "acme_orders" {
  application_id  = hookbase_webhook_application.acme.id
  url             = "https://acme.com/webhooks/orders"
  timeout_seconds = 15
}

resource "hookbase_webhook_subscription" "acme_order_created" {
  endpoint_id   = hookbase_webhook_endpoint.acme_orders.id
  event_type_id = hookbase_event_type.order_created.id
}

One terraform apply creates the event type, the customer's application, their endpoint with signing and circuit breakers, and the subscription linking them together.

Why This Matters

Version Control for Webhook Config

Every change to your webhook routing goes through git. You can see who changed what, when, and why. Roll back by reverting a commit.

Code Review for Infrastructure Changes

No more "who changed the transform and broke deliveries?" Changes go through pull requests. A teammate reviews the diff before it hits production.

Reproducible Environments

Spin up identical webhook pipelines across dev, staging, and production with different variable files:

terraform apply -var-file=staging.tfvars
terraform apply -var-file=production.tfvars

Import Existing Resources

Already using Hookbase? Import your existing resources into Terraform state:

terraform import hookbase_source.stripe <source-id>
terraform import hookbase_destination.slack <destination-id>

Both Directions, One Provider

Most webhook platforms focus on one direction — either receiving webhooks or sending them. Hookbase handles both, and now the Terraform provider does too. One terraform apply configures your entire webhook infrastructure: inbound sources, routing rules, transforms, outbound event types, customer endpoints, and subscriptions.

No other Terraform provider in the webhook space offers this.

Get Started

  1. Install from the Terraform Registry
  2. Browse the documentation for all 9 resources
  3. Check out the source code on GitHub

The provider is open source and we welcome contributions. If you run into issues or want to request a feature, open an issue.

terraforminfrastructure-as-codedevopswebhooksproduct-update

Related Articles

Product Update

The Architecture Diagram Is Now an Interactive Canvas

The topology view used to be a static Mermaid render that kept erroring out on perfectly valid input. It is now a pan / zoom / drag canvas built on React Flow with dagre auto-layout — interactive, dark-mode aware, and stable across every diagram we have thrown at it.

Product Update

Smart Monitoring — Catch Provider Changes and Traffic Anomalies Before They Break You

Anomaly detection learns each source's normal traffic pattern and alerts when volume spikes or drops vs. that baseline. Schema drift auto-infers a JSON schema from observed payloads and tells you the moment a provider adds, removes, or retypes a field. Both ship today on Pro and Business.

Product Update

Hookbase CLI v2.4 — Scaffold, Filter, and Sign in One Release

The new hookbase init command scaffolds a working webhook handler in any of five frameworks. hookbase listen filters tunnel traffic before it reaches localhost. And hookbase trigger now signs payloads using the live provider catalog. Three additions, one upgrade.

Ready to Try Hookbase?

Start receiving, transforming, and routing webhooks in minutes.

Get Started Free
Hookbase

Reliable webhook infrastructure for modern teams. Built on Cloudflare's global edge network.

Product

  • Features
  • Pricing
  • Use Cases
  • Integrations
  • ngrok Alternative

Resources

  • Documentation
  • API Reference
  • CLI Guide
  • Blog
  • FAQ

Free Tools

  • All Tools
  • Webhook Bin
  • HMAC Calculator
  • JSONata Playground
  • Cron Builder
  • Payload Formatter
  • Local Testing

Legal

  • Privacy Policy
  • Terms of Service
  • Contact
  • Status

© 2026 Hookbase. All rights reserved.