Mantissa Hooksnode is a Mantissa product A Mantissa product mantissatech.xyz
New: sources without webhooks →

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.

Example: Paystack webhooks, bank alert emails and a watched URL go through hooksnode to your apps. A failed delivery retries and then succeeds.

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
  • WhatsApp
  • 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

Push

your payload

One HTTPS URL for any sender. Checks HMAC signatures on the way in.

WhatsApp Cloud API

Push

Meta payload

Answers the Meta handshake and checks X-Hub-Signature-256 for you.

Gmail

Beta

email.received

Connect with Google. New mail in chosen labels becomes an event.

Outlook

Beta

email.received

Connect with Microsoft. Works with Outlook.com and Microsoft 365.

IMAP mailbox

Poll

email.received

Any hosted mailbox: cPanel, Zoho, Yahoo and more. Read only.

Watch a URL

Poll

http_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
How bank alerts work →
{
  "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

01 · Connect

Add a source: a webhook URL, a mailbox or a URL to watch.

02 · Route

Add destinations. Filter, transform and sign per destination.

03 · Observe

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
Set up the CLI →
$ 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… → 500 (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

Mobility

Shuttlers 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

Read the full case study →

Start free. Pay for events, not seats.

Use Pro for live payment webhooks.