Features

Monitoring without the mystery.

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.

01 · Probes

Many probe types, one mental model

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/SStatus code, body keyword, header, latency, redirect chain
TCPPort reachability — Postgres, Redis, SMTP, game servers
PINGICMP reachability and round-trip time
SSLCertificate expiry & chain — warned 14 days out
DNSResolve a record and assert the answer
PUSHCron heartbeats — your job POSTs when it finishes
PROCProcess watcher — pgrep on your host pushes UP/DOWN
DBMySQL, Postgres, Mongo, Redis — alive or full health-inspector
MOREgRPC, Kafka, RabbitMQ, JSON-query, Docker container state
DNSBLDaily IP blacklist check across 10+ DNSBLs — email alert on new listings
monitor.yml — declarative config (optional)
- name: API Gateway
  type: http
  url: https://api.acme.dev/health
  interval: 60s
  expect:
    status: 200
    body_contains: "ok"
    max_latency: 500ms
  regions: [us-east, us-west, eu]

# or just paste a URL in the dashboard —
# the YAML is generated for you.
consensus engine
14:33:07 us-east → 503
14:33:07 us-west → timeout
14:33:08 eu → 200 (stale edge?)
14:33:09 re-probe us-east → 503
14:33:09 re-probe us-west → 503
✗ DOWN — 2/3 regions agree, threshold met
→ alert fired in 2.1s
02 · Detection

Multi-region consensus kills false alarms

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.

  • Confirmation re-checks on the first failure
  • Configurable quorum (e.g. 2 of 3 regions)
  • Retry-with-backoff before the incident opens
  • Median latency across regions, not the worst outlier
03 · Latency

Percentiles, not just averages

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.

p50 · 41 ms p95 · 142 ms p99 · 612 ms

Response time · 24h

142 ms p95
24h agonow
04 · Alerts

Routed, de-duplicated, escalated

One outage should be one notification — to the right place, with enough context to act before you've opened a laptop.

Every channel you use

Email, Slack, Discord, generic webhook, PagerDuty, ntfy and SMS (BYO Twilio). Route by severity or by monitor tag.

Branded HTML or plain text

Email alerts ship as a rich, branded HTML template by default. Flip the per-channel toggle if your inbox prefers bare text.

Quiet during deploys

Open a maintenance window from the UI or POST /maintenance in your CI so a deploy never pages the on-call.

Escalate if unacked

No acknowledgement in N minutes? Escalate to the next channel. Recovery sends an all-clear automatically.

Discord status board

Team plan ships a rich-embed status board for your Discord channel — updated every 90 seconds with per-monitor custom emoji.

Shared SMTP · bring your own

Send via our managed SMTP at no extra cost, or wire in your own provider. Bring-your-own Twilio for SMS.

Daily IP blacklist check

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.

POST https://hooks.slack.com/… — alert payload
{
  "event": "monitor.down",
  "monitor": "API Gateway",
  "status_code": 503,
  "regions": ["us-east", "eu"],
  "latency_ms": null,
  "started_at": "2026-06-21T14:33:07Z",
  "dashboard_url": "https://app.duckingstats.com/m/api-gw"
}
05 · Push & process

Watch boxes behind NAT

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.

$ curl -fsS \
  https://stats.duckingstats.com/api/push/$TOKEN?status=up
06 · DB Health Inspector

More than “is it up”

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.)

07 · Status pages

Public status, on your domain

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 →
08 · API & data

Your data, exportable

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.

$ curl -H "Authorization: Bearer …" \
  https://stats.duckingstats.com/api/v1/monitors
09 · Wall view

Put the whole stack on one screen

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 →
10 · WHMCS plugin

Hosting business? Monitor servers from inside WHMCS

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 →
WHMCS plugin: admin monitor editor, client issues panel, public network status
Web analytics

Who actually showed up

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.

One script tag

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.

Cookieless — no consent banner

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.

The numbers that matter

Pageviews, unique visitors, sessions, bounce rate and time on page — plus top pages, entry pages, referrers, campaigns, countries, browsers and devices.

Goals & revenue

Fire duck('signup') from any button and turn it into a tracked conversion. Attach a value and the dashboard reports revenue per campaign.

UTM campaigns, attributed

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.

Share it without a login

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.

the entire install
<script defer data-site="your_site_id" src="https://dk.duckingstats.com/dk.js"></script>

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.

See it watching your own stack

Add your first monitor free. It takes about two minutes and zero installs.

Start monitoring free