Event tracking & routing for product teams

Track once.

Deliver everywhere.

Your app has things to say: signups, failed payments, deploys. Track each one with a single HTTP request: EventSend records it for search and analytics, then delivers it where your team already works. No bots to build, no infrastructure to babysit.

Talks to your AI Claude ChatGPT HowLive pipeline

Watch an event travel

From 'payment.failed' in your code, or a Stripe webhook you never wrote a line for, to a ping in your phone or team's channels. Watch how every event finds its way, even when a destination misbehaves.

Duplicates get dropped, failures get retried — and you didn't have to build any of it

How it works

Three steps to production

Create a route

Sign up, create a route, copy its es_

token, that's the whole setup. No OAuth dance, no SDK, no config

files. Flip on debug mode to experiment without pinging anyone.

POST your events

Fire a tiny JSON payload from your backend, a cron job, a CI script,

anything that speaks HTTP. Add a unique_key

and retries never double-post.

We fan out & deliver

Events are logged and land in Slack, Discord, Telegram, your own phone, or in any webhook you point us at. Retries, rate limits, and flaky endpoints handled while you sleep.

Let your agent do step 02.

Copy the ready-made prompt for your tool and paste it in. Your agent reads the codebase, lists the moments worth knowing about in your product, and instruments them server-side, failure paths included.

Sources

No code? Paste one URL.

Sources flip the pipeline around: instead of your app POSTing to EventSend, tools like Stripe, GitHub and Vercel do. Paste one URL into Stripe and every payment lands in your channels; paste one into GitHub and every push, merged PR and failed CI run does too; paste one into Vercel and so does every deploy that ships or breaks — formatted, deduped, and retried. About 2 minutes, zero code.

Create a source, copy its URL

Pick Stripe, pick the route it feeds — we mint a private webhook endpoint for it.

Paste it into Stripe

Add it as a webhook endpoint in the Stripe Dashboard, then paste the signing secret Stripe hands back. From then on every delivery is signature-verified before we touch it — and anything Stripe sends in the meantime gets retried, so nothing is lost.

That's it — "cha-ching" in Slack

A source is just another producer on a route, so its events flow through the same topics, destinations, retries, and delivery history as the ones your code sends. Stripe's retries? Deduplicated automatically.

customer.subscription.created

customer.subscription.deleted

charge.dispute.created

// opinionated defaults, on from the first webhook

Alerting

Signal when it matters. Silence when it doesn't.

Getting events into a channel is the easy part — surviving them is harder. Threshold alerts, rollups, quiet hours, and digests turn a noisy stream into the handful of messages worth reading. No per-seat pager bill attached.

Escalation

Threshold alerts

Ten payment failures in five minutes is one incident, not ten pings. Set a threshold on any route and a single critical alert goes to the destination you chose.

How threshold alerts workBoundaries

Quiet hours

Give each destination a daily window in your org's timezone. Only critical events break through overnight — everything else is held for your digest, not dropped.

How quiet hours workBuild vs buy

Your time is worth more than glue code

Every destination you wire up by hand is another API to learn, another token to rotate, another failure mode to babysit. Or you can send one POST.

Doing it yourself

weeks of workWith EventSend

one POST requestCapabilities

The reliability layer you'd rather not build

Every card below is shipped and running on every event you send — so a flaky endpoint or a duplicate deploy never becomes your team's problem.

Security

Signed webhook deliveries

Receivers can trust that every webhook really came from you — each delivery is signed and timestamped, with a secret you can rotate anytime.

Reliability

Automatic retries

Endpoints flake; your events shouldn't vanish. Failed deliveries retry on their own with smart backoff — easing off politely when a destination pushes back — until the message lands.

Consistency

Idempotent ingestion

Deploy retries, network blips, double-fired jobs — send a unique_key and the duplicate dies with a 409 instead of spamming your team twice.

Protection

Circuit breakers

When a destination goes down, we stop hammering it and recover automatically — no wasted quota, no pile-up when it comes back.

Throughput

Distributed rate limiting

Traffic spike at 3am? Cluster-wide limits smooth out bursts and respect each destination's own rules, so nothing gets throttled or dropped.

Observability

Real-time delivery feed

Know what happened without SSH-ing anywhere. Watch events stream in live, and filter by status, level, route, or channel when something looks off.

Collaboration

Organizations & teams

Solo today, five people next quarter — invite teammates with owner, admin, or member roles and share routes, channels, and history safely.

Hygiene

Broken endpoint detection

Rotated a token and forgot a webhook? Dead integrations pause themselves and email the owner — before silence gets mistaken for good news.

Development

Debug mode per route

Wire up staging without waking up the team — debug routes check every event and drop it, without recording or delivering a single one.

Security

SSRF-safe webhooks

Your infrastructure stays yours — webhook targets are DNS-resolved and checked against private IP ranges before we ever open a connection.

// One HTTP endpoint instead of a pile of integrations.

Insights

Every event, the moment it happens

Post an event and watch it arrive. The dashboard streams deliveries live, and the full story of every attempt is one click away — no log-diving required.

❗ Payment failed for acme.io — card declined

🎉 New user subscribed to the Growth plan

🚀 v2.4.1 is live on production

💾 Nightly database backup completed

Live event stream

Every event appears the moment it hits your route — no refresh, no polling.

Analytics & usage

Volume, error rate, delivery health and quota burn-down, with 12 months of history on every plan.

Search & filters

Slice your event history by status, level, route, channel, or free text.

Full delivery history

Every attempt for every destination, with the exact error when something fails.

On the roadmap

Alerting has shipped — delivery assurance is next.

Heartbeat monitors

Know when your nightly job doesn't run.

Event replay

Resend any failed delivery with one click.

Know what happened

Ask your AI what happened.

You stepped away, and things happened: a checkout failed, a customer cancelled, a webhook went quiet. Instead of digging through logs, ask. Claude or ChatGPT can read your event history and tell you what went wrong overnight, what a customer did before they churned, and whether anything is stuck right now.

you

claude search_events

Two errors in checkout since midnight, both already delivered:

- 09:14 payment.failed card declined for acme.io Slack ✓

- 07:41 checkout.timeout card authorization timed out, cus_9Xk2 Slack ✓ Telegram ✓

Nothing else at error level in the last 24 hours.

you

claude get_user_timeline

Three events over 15 days, oldest first:

- Sep 02 user.signup subscribed to the Growth plan

- Sep 15 payment.failed card declined, retried twice

- Sep 17 subscription.canceled two days after the second decline

// example exchange — nine read-only tools, your assistant picks which to call

-

What happened while you were awayAsk for the errors since last night, the events from a deploy, or everything a route saw this week, and get each one back with where it was delivered.

-

Why a customer churnedSend the same customer id from your app and from Stripe, and one question tells the story in order: the signup, the failed payment, the cancellation.

-

The assistant you already haveSign in from claude.ai or ChatGPT, or paste a key into Claude Code or Cursor. It only reads, never changes anything, and it is on every plan, Free included.

Integration

Works with any stack

Node, Python, Elixir, Ruby, Go, C# — if it can send an HTTP request, it can notify your team. No SDK to install, nothing to maintain.

// Using fetch

const response = await fetch(

'https://eventsend.io/api/events/YOUR_WEBHOOK_ID',

{

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify({

event: 'user.signup',

message: 'A new user subscribed to the service',

payload: {

user_id: '12345',

email: '[email protected]'

}

})

}

);

console.log('Event sent:', await response.json());Destinations

Deliver where your team already works

Your team lives in chat, not in another dashboard. Send to Slack, Discord, and Telegram natively, wake your own phone with Pushover or browser push, reach everything else with webhooks — and new destinations are always on the way.

Slack

AvailableDiscord

AvailableTelegram

AvailableWebhooks

AvailablePushover

AvailableWeb Push

AvailableMS Teams

Coming soonntfy

Coming soonPricing

Simple, transparent pricing

Start free on your side project, upgrade when your team does — overage is billed per event, never as a surprise tier jump.

Enterprise

Unlimited events and seats, custom retention, and priority help — let's talk about your volume.

Prices in US dollars. Outside the US, checkout may show your local currency at the current exchange rate.

Coming from LogSnag? Compare the plans side by side