Alerts and emails
Hear about a revenue drop, a traffic swing, a goal hit or broken tracking the same day, by email, Slack or webhook.
Alerts
Open Alerts → New alert, pick a kind, a threshold and where it goes. Every rule can be edited later: kind, threshold, goal and channel.
| Revenue drop | Revenue so far today is the chosen percentage below the usual for the same hours over the last 7 days. Needs usual revenue of at least 50. |
|---|---|
| Traffic drop | Pageviews so far today are the chosen percentage below the usual for the same hours. Needs at least 100 usual pageviews. |
| Traffic spike | Pageviews so far today are the chosen percentage above the usual. Needs at least 100 usual pageviews. |
| Goal reached | A goal's conversions today (UTC) reach the number you set. |
| Over plan limit | Pageviews this calendar month, across all the workspace's sites, reach 80, 90 or 100% of the plan's quota. |
| Tracking stopped | No pageviews for 3 hours when there are normally at least 20 in that window. Usually a broken deploy or a removed script. |
- Alerts are checked every hour and send at most one message per alert a day.
- Each check stores what it measured and what it compared with. A rule whose condition holds shows as Firing with those numbers until a later check clears it, and history lists each message with its values, for example “Revenue $310, usual $720”.
- Days run in UTC, and revenue and traffic alerts wait until 6 hours into the day so a quiet morning doesn't trigger them.
- Email recipients must be members of the workspace.
- Send test delivers a labelled test message to the rule's channel right away.
Slack and webhooks
Slack: create an incoming webhook in Slack (Apps → Incoming Webhooks) and paste its https://hooks.slack.com/services/… URL. The message is the alert's title, one line of context and a link.
Webhook: any public https:// URL. atrby POSTs JSON such as { "type": "alert.fired", "site": "acme.io", "alert": { "id": "al_…", "kind": "revenue_drop", "threshold": 30 }, "value": 310, "usual": 720, "message": "…", "at": "2026-10-21T12:05:00Z" } (alert.test for tests). Redirects aren't followed and the request times out after 5 seconds.
Each webhook gets its own signing secret, shown once when you save it. Verify requests by computing HMAC-SHA256 of {X-Atrby-Timestamp}.{raw body} with the secret, hex-encoded, and comparing it with X-Atrby-Signature after sha256=. Reject old timestamps.
Slack and webhook URLs and secrets are stored encrypted. A failed delivery is retried on the next hourly check.
Weekly digest
Every Monday at 08:00 UTC, members get a summary of each site: visitors, revenue and the top sources for the last 7 days against the 7 before. Revenue appears only for members allowed to see it. Each digest has an unsubscribe link.
Account emails
atrby also sends sign-in codes, invites, receipts, failed-payment notices, a trial-ending reminder and an over-limit notice. Usage notices can be turned off from their unsubscribe link; sign-in, invite and billing emails can't.