Every channel you use
Email, Slack, Discord, generic webhook, PagerDuty, ntfy and SMS (BYO Twilio). Route by severity or by monitor tag.
Duck Stats is built on one honest idea: a monitor is a probe plus an assertion, run on a schedule. For services we can reach: probes run from our external fleet. For boxes behind NAT: your host pushes UP/DOWN to us. No agents, no sidecars, no magic. Here's exactly what runs, where it runs, and what you get back.
Each monitor names a target and a pass condition. Pull-based probes (HTTP, TCP, DNS, SSL, ping, DB) hit you from our fleet. Push-based probes (cron, process) let your box ping us — perfect for things behind NAT.
| HTTP/S | Status code, body keyword, header, latency, redirect chain |
| TCP | Port reachability — Postgres, Redis, SMTP, game servers |
| PING | ICMP reachability and round-trip time |
| SSL | Certificate expiry & chain — warned 14 days out |
| DNS | Resolve a record and assert the answer |
| PUSH | Cron heartbeats — your job POSTs when it finishes |
| PROC | Process watcher — pgrep on your host pushes UP/DOWN |
| DB | MySQL, Postgres, Mongo, Redis — alive or full health-inspector |
| MORE | gRPC, Kafka, RabbitMQ, JSON-query, Docker container state |
| DNSBL | Daily IP blacklist check across 10+ DNSBLs — email alert on new listings |
The fastest way to get ignored is to cry wolf. Before Duck Stats marks anything down, it re-probes from independent regions and requires agreement. A single flaky network hop between us and you won't wake you at 3am. Available on Pro and Team across our four regions: US East, US Central, US West and Europe.
An average hides your worst customer's experience. Duck Stats records every probe and rolls it into p50 / p95 / p99 by the minute, so a slow tail shows up as a rising line — long before it becomes a support ticket.
One outage should be one notification — to the right place, with enough context to act before you've opened a laptop.
Email, Slack, Discord, generic webhook, PagerDuty, ntfy and SMS (BYO Twilio). Route by severity or by monitor tag.
Email alerts ship as a rich, branded HTML template by default. Flip the per-channel toggle if your inbox prefers bare text.
Open a maintenance window from the UI or POST /maintenance in your CI so a deploy never pages the on-call.
No acknowledgement in N minutes? Escalate to the next channel. Recovery sends an all-clear automatically.
Team plan ships a rich-embed status board for your Discord channel — updated every 90 seconds with per-monitor custom emoji.
Send via our managed SMTP at no extra cost, or wire in your own provider. Bring-your-own Twilio for SMS.
Enable per-monitor to have Duck Stats resolve the target every day at 04:00 and query 10+ DNSBLs (Spamhaus ZEN, Barracuda, SORBS, SpamCop, DroneBL, PSBL, Manitu, Interserver, CBL/Abuseat). If your IP hits a blocklist you get an email — no channel setup needed. Included with all plans.
For services we can't reach from the public internet — home labs, internal apps, anything behind NAT — use a push monitor. Your box POSTs UP/DOWN to a unique URL on your interval. The Process Monitor variant is a tiny pgrep script you drop on the host: it pushes UP while the process exists, DOWN when it doesn't.
MySQL monitors have an optional DB Health Inspector mode. Each tick runs a multi-query diagnostic sweep — SHOW GLOBAL STATUS, SHOW PROCESSLIST, SHOW SLAVE STATUS, top slow queries from performance_schema — and surfaces connection count, buffer-pool hit rate, replication lag and slow-query digests on the detail page. (Postgres flavor coming.)
A clean, fast page at status.yourdomain.com with 90-day uptime bars, live incident updates and an email subscribe box. CNAME it, theme it, done. Pro: 5 pages. Team: unlimited and full white-label.
See a live example →A REST API for every monitor, raw heartbeats for 7 days, rolled-up stats up to 1 year, CSV export, and Prometheus-compatible metrics so Duck Stats plugs into dashboards you already run.
One-click fullscreen Wall view — every monitor as a live tile, a probe-network radar, region latency and a streaming event log. Cast it to the office TV and the room knows the second anything turns amber. Share a read-only public link for stakeholders.
Open the live wall →If you run a hosting company on WHMCS, drop in our addon and every server you sell appears in the admin panel with live up/down status. Assign monitors to specific products — clients on the “London VPS” product see the London VPS status, clients on “Dallas dedi” see Dallas. Auto-sync from your Duck Stats account; no manual upkeep. Pro tier and up.
Dedicated WHMCS page → See pricing →
Uptime tells you the site was reachable. Analytics tells you whether anyone came, where from, and what they did. Both on one bill, one login — no second vendor, no second invoice.
Paste one line before </head> and you're collecting. Single-page apps are handled automatically — React and Vue route changes count as pageviews without extra wiring.
No cookies, no local storage, no fingerprinting. Visitors are counted with a salted hash that rotates every day and is never stored in reversible form, so there is nothing to ask consent for.
Pageviews, unique visitors, sessions, bounce rate and time on page — plus top pages, entry pages, referrers, campaigns, countries, browsers and devices.
Fire duck('signup') from any button and turn it into a tracked conversion. Attach a value and the dashboard reports revenue per campaign.
Campaign links are attributed to the campaign, not to whichever site linked them last. Tracking parameters are stripped from page paths so your top-pages report stays readable.
Publish a read-only dashboard link for a client or a colleague. Revoke it whenever you like — re-sharing mints a fresh URL rather than reviving the old one.
Honest about the limits: visitors running ad blockers are not counted, so expect to under-report by roughly 10–25%. That is true of every analytics product, including Google Analytics — anyone claiming otherwise is guessing.
Add your first monitor free. It takes about two minutes and zero installs.
Start monitoring free