Security
How CountWatch keeps your counts, keys and alerts safe, and how to report a problem.
What we keep
Counts and the tags you send with them, the alerts they raise, and where alerts go. Counts are kept for 90 days, and alerts for 90 days after they close. We never store request bodies, page content or customer records. The privacy notice lists everything.
Keys and access
- API keys are stored only as one-way hashes: we show each one once, and nobody can read it back, not even us. Of an API key we also keep its last 4 characters, so you can tell your keys apart.
- Webhook URLs for sending counts are stored as a one-way hash, plus a copy encrypted with a key kept apart from the database, so the account owner can see a URL again in Senders. We also keep its last 4 characters, to tell Webhook URLs apart. A Webhook URL can only add counts to one metric.
- A write key only sends counts. An admin key manages the account. Name each key, and revoke it in Settings at any time.
- Agents connect over MCP after you sign in. Each gets its own access, never your API keys or signing secrets; it gets a Webhook URL only when you approve it, to set up a tool for you. Disconnect an agent in Settings.
Signing in
Sign in with a link sent to your e-mail, or with Google or GitHub where offered: no password to steal or reuse. Two cookies keep you signed in, both secure and not readable by scripts.
Alerts you can trust
Webhook alerts are signed (Standard Webhooks, HMAC-SHA256) with a secret made for each destination, so your receiver can check that an alert came from CountWatch. Slack and PagerDuty get alerts only when you add them.
Where it runs
CountWatch runs on Cloudflare. Your account's data is stored in Cloudflare's EU jurisdiction.
Your control
Export everything in Settings. The owner can erase the account and all its data at once.
Report a problem
Found a security issue? Write to hello@countwatch.com. Please give us time to fix it before you tell others.