Free for 10 watches · No credit card
Get an alert when sales, sign-ups or traffic go wrong.
Know when orders spike, sign-ups drop or a nightly job stops. CountWatch learns what normal looks like and tells you, and your agent, when it changes.
A spike got you.
Free for 10 watches. No credit card.
Use Claude Code? Let your agent set it up.
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 a nightly job does not run.
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.
Dashboard
Every watch on one screen.
Open alerts first, then every watch with its last 24 hours.
| Watch | Status | Last 24 h | Now (1 h) | Usual |
|---|---|---|---|---|
| orders | Spike | 1,245 | 300 | |
| checkout_completed {browser=safari} | Drop | 38 | 121 | |
| nightly_import | No data | — | 1 | |
| signups | Normal | 42 | 40 | |
| llm_tokens {model=large} | Normal | 1.9M | 2.1M | |
| agent_runs | Learning | 310 | — |
Preview with example data.
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 with your e-mail 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.”
import { CountWatch } from "countwatch";
const cw = new CountWatch(); // reads COUNTWATCH_API_KEY
cw.count("orders");
cw.count("orders", 3, { plan: "pro" });No dependencies. Runs on Node, Bun, Deno and Cloudflare Workers.
from countwatch import CountWatch
cw = CountWatch() # reads COUNTWATCH_API_KEY
cw.count("orders")
cw.count("orders", 3, {"plan": "pro"})Standard library only. Python 3.9 and later.
# at the end of the backup script
npx countwatch send backups_doneSends one count each time the job runs.
curl -fsS "$COUNTWATCH_PING_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 and checks four times as often.
Free
For one project, to try it out.
$0
No credit card needed.
Start free- 10 watches
- Checks every hour
- 10,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. Early access: we turn Pro on and invoice you.
Talk to us about Pro- Everything in Free, plus:
- 1,000 watches
- Checks every 15 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 1,000 counts is one request. The Free plan stops at its limit and never charges you.
Questions
Before you start.
What can I count?
Anything that happens a number of times: orders, sign-ups, failed logins, agent runs, tokens spent, jobs finished. Add a label such as plan=pro and each value gets its own watch.
Is this uptime monitoring?
No. Uptime checks ask if your site answers. CountWatch asks if your business still does what it usually does: a site can be up while checkouts stop, a webhook goes quiet or a nightly job never runs.
When do alerts start?
Import 2 weeks or more of past counts (up to 90 days) and alerts start the same day. Your agent can show which alerts that history would have raised. Without history, CountWatch learns as counts arrive.
How do I avoid false alarms?
Tell CountWatch about a planned sale or deploy (ask your agent), and alerts hold while it runs. If an alert was wrong, press False alarm, and CountWatch learns from it for that watch.
Is there AI in it?
No. Each check compares your counts with the same hour in past weeks, using fixed statistics. The same data always gives the same result. Your coding agent can set CountWatch up and read alerts, but it does not decide them.
What data do you store?
Counts and their labels, your alerts, rules and settings, and your e-mail address. Counts and alerts are kept for 90 days. No request bodies, page content or customer records. Details: Privacy.
What if my process stops?
The client sends a zero for every quiet 5-minute slot. If the process stops, the zeros stop too, and you get an alert that it stopped.