Receive. Transform. Forward.

A simple webhook relay for developers. Point webhooks here, transform the payload, forward it where it needs to go.

Read the Docs Quick Start →

How It Works

1

Create an API key and hook

Hit the API to generate a key, then create a hook with your transform rules and destination URL.

2

Define transform rules

Map fields, filter payloads, and rename keys using JSON configuration. Dot notation supported for nested fields.

3

Point webhooks at your endpoint

Your hook gets a public URL. Incoming payloads are saved, transformed, and forwarded with automatic retry on failure.

What You Get

🔄

Smart Retry

Automatic retry with exponential backoff. Free tier gets 3 attempts; Pro gets up to 10 with configurable intervals.

⚙️

Payload Transforms

Field mapping with dot notation, conditional filtering (equals, contains, exists, regex), field renaming, and static field injection.

✍️

Signature Validation

Verify webhook signatures from GitHub, Stripe, or any HMAC-based provider. Reject unsigned or tampered payloads before they reach your app.

📊

Request Logging

Every webhook received is logged with timestamps, transform results, and forwarding status. Inspect and debug from the dashboard.

🔐

Secrets Encrypted

API keys hashed with SHA-256. Signing secrets encrypted with AES-256-GCM at rest. Management API is key-authenticated.

🔁

Inspect & Replay

Every payload is stored in the database. Inspect what arrived, see what was transformed, and replay failed deliveries with one API call.

☁️

Provider Adapters

Built-in handling for Azure Event Grid validation handshakes, with more providers coming. No configuration needed — just works.

🚦

Rate Limiting

Per-hook rate limiting protects your endpoints from floods. Tier-based limits scale with your plan.

Get Started in 3 Requests

1. Create an API key:

curl -X POST https://hookpipe.app/api/auth/keys \
  -H "Content-Type: application/json" \
  -d '{"name": "my-key"}'

2. Create a hook:

curl -X POST https://hookpipe.app/api/hooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "github-events",
    "destinationUrl": "https://your-app.com/webhook",
    "transformConfig": {
      "fieldMapping": {
        "repo": "repository.name",
        "actor": "sender.login"
      }
    }
  }'

3. Send a webhook:

curl -X POST https://hookpipe.app/hooks/YOUR_HOOK_ID \
  -H "Content-Type: application/json" \
  -d '{"repository": {"name": "my-repo"}, "sender": {"login": "dev"}}'

Pricing

Free

$0

  • 20 requests/minute per hook
  • Up to 5 hooks
  • Signature validation (1 secret)
  • 3 retries with fixed backoff
  • 7-day log & payload retention
  • Full transform engine
  • Inspection & replay
Get Started

Pro

$9/mo

  • 1,000 requests/minute per hook
  • Unlimited hooks
  • Signature validation (5 secrets — key rotation)
  • 10 retries with configurable intervals
  • 30-day log & payload retention
  • Full transform engine
  • Inspection & replay
Upgrade in Dashboard