Events from anywhere.
Delivered everywhere.
hooksnode receives webhooks, reads inboxes, watches URLs and turns bank alerts into typed events. Then it sends each event to your APIs and agents with retries, signing and a live inspector. No SDK required.
No credit card required.
Point any HTTP sender at your source URL. Works with any stack.
curl -X POST https://hooksnode.com/p/YOUR_SOURCE_ID \
-H "Content-Type: application/json" \
-H "X-Idempotency-Key: evt_123" \
-d '{"event":"payment.succeeded"}'Works with
- Paystack
- Flutterwave
- Stripe
- GitHub
- Gmail
- Outlook
- Any IMAP inbox
- Any URL
Sources
Not every system sends webhooks. Connect it anyway.
A Pro project can have up to 10 sources. Mail and polled sources send events with a known type, so one filter works for Gmail, Outlook and IMAP alike.
Webhook
Pushyour payload
One HTTPS URL for any sender. Checks HMAC signatures on the way in.
WhatsApp Cloud API
PushMeta payload
Answers the Meta handshake and checks X-Hub-Signature-256 for you.
Gmail
Betaemail.received
Connect with Google. New mail in chosen labels becomes an event.
Outlook
Betaemail.received
Connect with Microsoft. Works with Outlook.com and Microsoft 365.
IMAP mailbox
Pollemail.received
Any hosted mailbox: cPanel, Zoho, Yahoo and more. Read only.
Watch a URL
Pollhttp_poll.*
Poll a JSON API or page. Get an event only when data changes.
Bank alerts
Your bank sends email. Your code gets JSON.
Most banks give business accounts no webhooks. Turn on bank alerts on a Gmail, Outlook or IMAP source. hooksnode reads each alert and sends bank.credit.received or bank.debit.posted, with money in minor units.
- • Rules for the main Nigerian banks and fintechs
- • Optional AI fallback. Every value is checked against the email
- • No clear amount, no event. The parser never guesses
{
"type": "bank.credit.received",
"bank": { "name": "GTBank", "sender": "gens@gtbank.com", "known": true },
"transaction": {
"direction": "credit",
"amount_minor": 4500000,
"currency": "NGN",
"account_last4": "0231",
"counterparty": "ADA OKAFOR",
"narration": "INV-9311"
},
"confidence": "high",
"parser": "rules"
}How it works
Add a source: a webhook URL, a mailbox or a URL to watch.
Add destinations. Filter, transform and sign per destination.
Watch events live. Retry or replay any event in one click.
Delivery
Built so an event is never lost.
Saved before queued
Every event is written to the database before we queue it. A queue outage does not lose it.
Retries for 17 hours
Up to 25 attempts per destination, with backoff capped at one hour. Down overnight? It still lands.
One queue per destination
A slow CRM never blocks your ledger. Each destination has its own attempts and log.
Idempotent by key
Send X-Idempotency-Key and we store a duplicate once. Polled sources set keys for you.
Batch retry
The "needs retry" view lists failed events. Retry all of them to the failed destinations only.
Signed on the way out
Turn on signing for a destination. X-Hooksnode-Signature carries an HMAC-SHA256 of the body.
Routing
Each destination gets the event it expects.
Filters
Send only matching events to each destination. Dotted paths walk nested JSON.
{ "type": "bank.credit.received" }Transforms
Reshape the body per destination with a Go template.
{"ref": {{printf "%q" .data.reference}}}Extra headers
Add an API key or tenant header to every request.
{ "Authorization": "Bearer sk_..." }Local development
Real events on localhost. No tunnel.
The hooksnode CLI streams the webhooks your project receives and sends each one to a local port, with the original method, path, headers and body. Provider signatures still verify. Your destinations still get their copy.
curl -fsSL https://github.com/mantissatech/hooksnode-cli/releases/latest/download/install.sh | sh$ hooksnode login
✓ logged in to https://hooksnode.com — 2 project(s) available
$ hooksnode listen 3000 --project 7f3a…
POST /p/7f3a… → 200 (12ms)
POST /p/7f3a… → (3ms)Operate
Know when something breaks. Fix it in one click.
Live inspector
See each event arrive. Open headers, body and every delivery attempt. Search payloads with a regex.
Failure alerts
An email when a destination starts to fail, with counts, trend and top errors. A second email when it recovers.
Daily summaries
Daily, weekly and monthly reports at local midnight: events, success rate and lost deliveries.
Workspaces and roles
Owner, admin, billing and member roles. Limit a member to the projects they need.
REST API and keys
List events, fetch the raw request and retry from your own code with a workspace API key.
Pay per event
One event uses one credit. No per-seat fees. Pay with Paystack or Flutterwave.
Case Study
Shuttlers
MobilityShuttlers replaced 5+ separate webhook endpoints with a single hooksnode URL to multiplex Flutterwave payment callbacks across ride payments, subscription passes, wallet top-ups, and more. Each downstream service gets its own queue, retry policy, and payload format — zero webhook loss since deployment.
100%
Callback persistence
1 URL
Replaced 5+ endpoints
~15 min
To add a new service