Get an alert when sales, sign-ups or traffic go wrong.
Your site can be up while checkouts fail, a webhook goes quiet or a scheduled job dies. CountWatch learns the normal pattern of each count, hour by hour and day by day, and tells you, and your agent, when it spikes, drops or stops. No thresholds to set.
A spike got you.
Free for 50 watches. No credit card.
Use Claude Code? Let your agent set it up.
Sound familiar?
Everything looked fine. It wasn't.
Spike
Bots flooded the sign-up form.
Thousands of fake accounts in one night. Every page loaded and no error fired. You found out from the e-mail bill.
Drop
Checkout broke after a deploy.
Payments failed, the site stayed up and no error was logged. You heard about it from a customer, hours later.
Stopped
The import job stopped.
The hourly sync died in a server move. Nobody noticed until a customer asked where their data was.
Uptime checks ask if your site answers.
CountWatch asks if your numbers still look normal.
CountWatch learns each count's normal rhythm, hour by hour and day by day, and alerts you the moment it breaks. No thresholds to set.
What happens
Your agent gets the call.
CountWatch watches your numbers. When one breaks, you and your agent hear at once, so your agent can start looking right away.
Spike. 1,245 orders in an hour when about 300 is usual.
CountWatch
orders rose to 1,245 in the last hour. Usually about 300 on a Wednesday afternoon.
Alert sentYour agent
Found it: the 13:50 deploy retries failed payments in a loop. Each retry counts as an order.
Your agent
Fixed with your OK: stop after 3 retries. Orders are back to normal.
Example. Alerts go to Slack, e-mail, a webhook your agent reads, or PagerDuty on Pro. You stay in charge of what ships.
Use cases
Watch the numbers your business runs on.
Online store
orders · checkouts · payments
Know when checkouts drop after a release.
SaaS
sign-ups · logins · trials
Know when sign-ups spike from bots, or logins stop.
Webhooks
Stripe and GitHub events
Know when events stop arriving, even with no error.
Background jobs
imports · backups · e-mails sent
Know when an hourly job stops running.
AI apps and agents
agent runs · tokens · failed tool calls
Know when token use spikes or runs fail.
Marketing
form leads · newsletter sign-ups
Know when leads drop after a site change.
Send counts from
- Stripe
- Supabase
- GitHub
- n8n
- Your app's code
- Any tool that calls a URL
Alerts go to
- Slack
- Webhooks
- PagerDuty (Pro)
Set up by your agent
- Claude Code
- Cursor
- Other MCP clients
Step-by-step guides for each source are in the docs.
Set up
Add one line. Get alerts.
Count events where they happen. CountWatch notices when a number moves, or when a sender goes quiet.
claude mcp add --transport http countwatch https://api.countwatch.com/mcpRun this in your project, then sign in when it asks. No key needed. In Cursor or Claude Desktop, add the same address as a custom connector. Then ask your agent: “Watch our orders and tell me when they stop.”
npm install countwatchimport { CountWatch } from "countwatch";
const cw = new CountWatch(); // reads COUNTWATCH_API_KEY
cw.count("orders");
cw.count("orders", 3, { plan: "pro" });Put your write API key in COUNTWATCH_API_KEY. A running app sends its counts every 5 minutes, zeros included, so an app that stops raises an alert. No dependencies. Node 20.19 and later, Bun and Deno. No package? Paste the counter file instead.
pip install countwatchfrom countwatch import CountWatch
cw = CountWatch() # reads COUNTWATCH_API_KEY
cw.count("orders")
cw.count("orders", 3, {"plan": "pro"})Put your write API key in COUNTWATCH_API_KEY. A running app sends its counts every 5 minutes, zeros included, so an app that stops raises an alert. Standard library only. Python 3.9 and later. No package? Paste the counter file instead.
# last line of the nightly backup script
curl -fsS "$COUNTWATCH_WEBHOOK_URL"Each run counts one. For a job that runs every few minutes or every hour, a missed run shows as a drop and you get an alert. Make the webhook URL in the dashboard, or let your agent set it up.
curl -fsS "$COUNTWATCH_WEBHOOK_URL?plan=pro"A private webhook URL for each thing you count. Zapier, a Stripe webhook or a cron job calls it, and each call counts one. Make it in the dashboard.
Pricing
Free to start. $49 to grow.
Pro adds more watches, more requests and PagerDuty.
Free
For one project, to try it out.
$0
No credit card needed.
Start free- Includes:
- 50 watches
- Checks every 5 minutes
- 30,000 requests a month
- Slack, e-mail and webhook
- 90 days of history
Pro
For apps in production.
$49 / month
Two months free when paid yearly.
Get Pro- Everything in Free, plus:
- 1,000 watches
- Checks every 5 minutes
- 1 million requests a month
- $5 per extra million
- PagerDuty
- 10 custom rules per watch
Enterprise
For larger teams and many accounts.
Custom
A plan built with you.
Talk to us- Tell us what you need, for example:
- More watches and accounts
- Faster checks
- Longer history
- Single sign-on and an audit log
A request is one call to CountWatch. A batch of up to 10,000 counts is one request. The Free plan stops at its limit and never charges you.
Questions
What people ask first.
What can I watch?
Anything that happens again and again: orders, sign-ups, payments, failed logins, agent runs, finished jobs. Add a label such as plan=pro and each value is watched on its own.
Is this uptime monitoring?
No. An uptime check asks if your site answers. CountWatch asks if your business still does what it usually does. Your site can be up while checkouts stop or a webhook goes quiet.
When do alerts start?
Simple starter rules begin after about 2 days, while CountWatch learns your normal week (about 22 days). Bring in about 22 days or more of past counts and it knows your normal from the first day.
How soon does an alert arrive?
CountWatch checks every 5 minutes, on both plans, and sends the alert from the check that sees the problem. A limit you set fires at the first check after the count crosses it. If your app stops sending, the no-data alert fires after 3 missed sends: about 15 minutes when it sends every 5. A change in the pattern must hold for part of the rule's window (1 hour for the fastest rules) to stand out from normal ups and downs, so a large jump shows sooner than a small one. If your webhook does not answer, CountWatch tries 4 more times over about 45 minutes.
What can CountWatch not see?
Only the counts you send: not why they changed. A change smaller than a count's normal ups and downs. A short blip that hardly moves the hour's total. One huge event on its own, which is not a spike: set a limit for that. A slow drift over weeks, which becomes the new normal. And a webhook count that is quiet anyway is seen to stop only slowly: tell CountWatch how often it should arrive, through your agent or the API.
How do I avoid false alarms?
Tell CountWatch about a planned sale or deploy (on the watch's page, or ask your agent), and alerts hold while it runs. If an alert was wrong, press False alarm: CountWatch learns from it.
Is there AI in it?
No AI decides your alerts. They come from your own numbers, checked the same way every time. Your agent can set CountWatch up and read alerts, but it never decides them.
What data do you store?
Counts and their labels, your alerts, rules and settings, and your e-mail address. Counts are kept for 90 days, and alerts for 90 days after they close. No request bodies, page content or customer records. Details: Privacy.
Do I need to write code?
No. Make a webhook URL in the dashboard and paste it into Stripe, GitHub, n8n or any tool that can call a URL. Or ask your coding agent to set it up. Code is there when you want it: see the docs.
Which number would you hate to find out about late?
Free for 50 watches, for as long as you like. No credit card, no trial that runs out.