Are orders still coming in?
CountWatch learns the normal rhythm of your orders, sign-ups and jobs, and tells you when one drops, stops or spikes.
A spike got you.
Free for 50 watches. No credit card.
Use Claude Code, Cursor or Codex? 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.
Silence
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.
What happens
Your agent gets the call
When a number breaks, you and your agent hear at once, so your agent can start looking.
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, a webhook, e-mail or PagerDuty (Pro). You decide 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
- Codex
- 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 a sender stops.
claude mcp add --transport http countwatch https://api.countwatch.com/mcpRun this in your project and sign in when asked. No key needed. Then tell 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" });Run npx countwatch init and approve it in the browser: it saves a write key as COUNTWATCH_API_KEY. The app sends every 5 minutes, zeros included, so an app that stops raises an alert. No dependencies. Node 20.19+, Bun, 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"})Run npx countwatch init and approve it in the browser: it saves a write key as COUNTWATCH_API_KEY. The app sends every 5 minutes, zeros included, so an app that stops raises an alert. Standard library only. Python 3.9+. No package? Paste the counter file instead.
# last line of the job's script
curl -fsS "$COUNTWATCH_WEBHOOK_URL"Each run counts one. So that a stopped job alerts you, set Silence on the watch page a little above the longest normal gap between runs. Without it, a stopped job shows as Stopped under Senders and you get a setup notice, not 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 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, webhook and e-mail
- 90 days of history
- 3 custom rules per watch
- 14 days of sent messages
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
- 60 days of sent messages
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. Up to 10,000 counts in one call is one request. Free stops at its limit and never charges you.
Questions
What people ask first
What can I watch?
Anything that repeats: orders, sign-ups, payments, failed logins, agent runs, jobs. Add a tag such as plan:pro to watch each value on its own.
Is this uptime monitoring?
No. An uptime check asks if your site answers. CountWatch asks if your business still works as usual: checkouts can stop while the site is up.
When do alerts start?
Starter rules alert on big changes from day 2. Import past counts and CountWatch knows your normal from day one.
How soon does an alert arrive?
CountWatch checks every 5 minutes. A limit you set alerts at the next check. If your app stops sending, you hear after 3 missed sends: about 15 minutes when it sends every 5. A big jump shows within the hour; a small one takes longer. If your webhook does not answer, it tries 4 more times over about 45 minutes.
What can CountWatch not see?
Why a count changed. A change smaller than its normal ups and downs. A short blip. One huge single event: set a limit for that. A slow drift over weeks, which becomes the new normal. A webhook that is often silent is slow to look stopped: tell CountWatch how often it should arrive.
How do I avoid false alarms?
Tell CountWatch about a sale or a deploy, and alerts hold while it runs. Mark a wrong alert as a false alarm: the weekly re-test then picks calmer rules.
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 things up and read alerts, never decide them.
What data do you store?
Your counts, tags, alerts, rules, settings, where alerts go, and your e-mail address. Counts stay 90 days; alerts stay 90 days after they close. No request bodies, page content or customer records. Details: Privacy.
Do I need to write code?
No. Paste a Webhook URL into Stripe, GitHub, n8n or any tool that calls a URL, or let your coding agent set it up. Code is there when you want it: see the docs.