Webhooks for developers and AI agents

Stripe webhooks on localhost. Pull events with the SDK or CLI.

Stop using ngrok. Add one SDK call and your local app receives real webhook events over WebSocket. Or pull events from the API with npx @simplehook/cli pull — perfect for AI agents.

Get started How it works
import express from "express";
import { listenToWebhooks } from "@simplehook/express";

const app = express();
listenToWebhooks(app, process.env.SIMPLEHOOK_KEY);

app.post("/stripe/events", (req, res) => {
  console.log("Webhook:", req.body);
  res.json({ received: true });
});

Works with Stripe, GitHub, Twilio, Shopify, and every webhook provider.

How it works

Three steps. Zero config.

1. Install the SDK

npm install @simplehook/express — one package, zero config.

2. Add one line of code

listenToWebhooks(app, apiKey) — opens an outbound WebSocket to simplehook.

3. Receive webhooks

Webhooks arrive as normal HTTP requests. Your response flows back to the caller.

Features

Everything you need

Instant delivery

Webhooks arrive at your local server in milliseconds via persistent WebSocket.

Automatic retries

Failed deliveries are retried with exponential backoff. Nothing gets lost.

Encrypted in transit

All webhook payloads are encrypted. No request bodies stored on our servers.

Stable URLs

Your webhook URL never changes. Set it once in Stripe, GitHub, or any provider.

Real responses

Your Express/Flask response flows back to the webhook caller — full passthrough.

AI agent API

Pull events via HTTP — instant, long-poll, or SSE stream. Built for agents.

Pricing

Simple, transparent pricing

Free

For trying things out

$0/mo

  • 1 project
  • 500 events/month
  • Community support

Pro

For teams and production

$9/mo

  • Unlimited projects
  • 50k events/month
  • Priority support

From the blog

Recent writing

Start receiving webhooks in 30 seconds

One install. One line of code. Every webhook provider works. Read the docs or check the FAQ.

Get started