Install
openclaw skills install hookpipeReliable webhook infrastructure for AI agents. Receive webhooks from Stripe, GitHub, Slack, Shopify, Vercel with signature verification, durable queuing, and automatic retries. Use when: (1) setting up webhook listeners for external services, (2) agent needs real-time events from Stripe/GitHub/Slack, (3) webhooks are being lost during restarts or downtime, (4) need durable event buffering with guaranteed delivery. NOT for: sending outgoing webhooks to customers (use Svix), direct API polling, or cron-based scheduled checks.
openclaw skills install hookpipehookpipe receives webhooks from external services, queues them durably, and delivers them to your agent with automatic retries. Your agent never misses an event, even during restarts or downtime.
Without hookpipe, webhooks sent while your OpenClaw gateway is restarting or offline are lost forever. Most providers send once and move on. hookpipe sits in between — it's always online (Cloudflare Workers, 300+ edge locations), accepts the webhook immediately, and retries delivery to your gateway until it succeeds.
hookpipe dev --port 18789 --provider stripe --secret whsec_xxx
This creates a secure tunnel to your OpenClaw gateway. Paste the printed Webhook URL into your Stripe Dashboard. No port forwarding, no IP exposure.
# 1. Deploy hookpipe (one-click on Cloudflare, or self-host)
# 2. Configure CLI
hookpipe config set api_url https://your-hookpipe.workers.dev
hookpipe config set token hf_sk_xxx
# 3. Connect a provider to your OpenClaw gateway
hookpipe connect stripe \
--secret whsec_xxx \
--to http://localhost:18789/webhook \
--events "payment_intent.*"
hookpipe returns a Webhook URL — register it in Stripe's dashboard. Events are now durably queued and delivered to your gateway with retries.
hookpipe providers ls
| Provider | Events | Use case |
|---|---|---|
| stripe | payment_intent, customer, invoice, charge | Payment notifications |
| github | push, pull_request, issues, release | Code events, PR review |
| slack | message, app_mention, reaction | Team notifications |
| shopify | orders, products, customers | E-commerce events |
| vercel | deployment, domain | Deploy monitoring |
Discover a provider's events:
hookpipe providers describe stripe --json
Not limited to the 5 built-in providers. For any service already sending webhooks to your agent, use generic HMAC verification:
hookpipe connect my-service --secret my_signing_secret --to http://localhost:18789/webhook
For services with non-standard signature formats, the community can create custom providers with defineProvider() — a single file that defines verification method, event types, and payload schemas. See Provider Design Guide.
hookpipe connect stripe --secret whsec_xxx --to http://localhost:18789/webhook --events "payment_intent.payment_failed"
Agent receives failed payment events and can draft follow-up emails, create support tickets, or alert the team.
hookpipe connect github --secret ghsec_xxx --to http://localhost:18789/webhook --events "pull_request"
Agent receives PR events instantly and can review code, post comments, or run checks.
hookpipe connect stripe --secret whsec_xxx --to http://localhost:18789/webhook --name stripe-prod
hookpipe connect github --secret ghsec_xxx --to http://localhost:18789/webhook --name github-prod
hookpipe connect vercel --secret vsec_xxx --to http://localhost:18789/webhook --name vercel-prod
All events flow to your gateway through one durable pipeline. Restart your gateway freely — nothing is lost.
hookpipe tail --json
Stream events as they arrive. Pipe to scripts or other agents:
hookpipe tail --json | jq '.event_type'
Your gateway goes down at 2:00 AM
↓
Stripe sends payment_intent.succeeded at 2:15 AM
→ hookpipe accepts (202), queues durably
↓
GitHub sends push at 2:30 AM
→ hookpipe accepts (202), queues durably
↓
hookpipe retries delivery every few minutes (exponential backoff)
↓
Your gateway comes back at 6:00 AM
→ hookpipe delivers both events automatically
→ Agent processes them as if nothing happened
No manual replay needed. No events lost. Circuit breaker protects your gateway from being overwhelmed on recovery.
hookpipe connect <provider> --secret <s> --to <url> [--events <filter>]
hookpipe dev --port <n> [--provider <name>] [--secret <s>]
hookpipe providers ls [--json]
hookpipe providers describe <name> [--json]
hookpipe tail [--json] [--source <id>]
hookpipe events ls [--json] [--limit <n>]
hookpipe health [--json]
All commands support --json for structured output and --dry-run for validation.