Event tracking & routing for product teams
Send once.
Deliver everywhere.
Your app has things to say: signups, failed payments, deploys. EventSend is the notification layer that gets the word out: one HTTP request logs and lands where your team already works. No bots to build, no complex 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.
Building with AI?
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.
Pick your tool
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.
checkout.session.completed
customer.subscription.created
invoice.payment_failed
customer.subscription.deleted
charge.dispute.created
// opinionated defaults, on from the first webhook
Works on the free tier — see it pay for itself before you pay for it.
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 workNoise control
Smart rollups
The same event firing twenty times becomes one message — payment-failed ×20. Your channel stays readable; every underlying event stays in your history.
How rollups 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 workPerspective
Email digests
A daily or weekly email with your top events, level breakdown, delivery failures, and whatever quiet hours held back — the whole story in one read.
How digests 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 work- A different API, auth flow, and message format for every destination
- Retry queues, rate limits, and duplicate protection to build and test yourself
- Failures you discover only when someone misses an alert
- Maintenance forever — provider changes, deprecations, expired tokens
- Weeks before the first notification ever lands
With EventSend
one POST request- One endpoint and one JSON shape, whatever the destination
- Retries, rate limits, and duplicate protection on from day one
- Live delivery status for every event, all in one dashboard
- Broken destinations pause themselves and let you know
- New destinations appear in your account — no code changes on your side
Capabilities
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.
Success rate & usage
Delivery success rate and monthly usage, always one glance away.
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 away
Ask 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 churned
Send 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 have
Sign 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.
Pick your client
Raw events reach back as far as your plan's retention; daily counts are kept for twelve months.
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 soonNeed a destination we don't cover yet?
Request an integrationPricing
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.
Free
For side projects
- 2,500 events/month
- 2 seats
- 3 team destinations
- 1 source
- 7-day event retention
- AI assistant access (MCP)
- Hard-capped — no overage
Starter
For solo builders and small teams
- 50,000 events/month
- Unlimited seats
- Unlimited team destinations
- Unlimited sources
- $0.0005 per extra event
- 30-day event retention
- AI assistant access (MCP)
Growth
For growing teams
- 150,000 events/month
- Unlimited seats
- Unlimited team destinations
- Unlimited sources
- $0.0005 per extra event
- 60-day event retention
- AI assistant access (MCP)
Scale
For steady businesses
- 500,000 events/month
- Unlimited seats
- Unlimited team destinations
- Unlimited sources
- $0.0005 per extra event
- 90-day event retention
- AI assistant access (MCP)
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
Get started
Start routing events in minutes.
A free tier that stays free, no credit card required — your first "it works!" can hit Slack before your coffee cools.