Alerts
Configure daily stat reports and revenue alerts (2 ad channels + 3 payment channels) via Slack, Discord, Telegram, or Webhook.
Last updated: 2026-05-18
Opseer supports two types of alerts: project alerts (daily stat reports) and personal alerts (2 ad channels + 3 payment channels revenue reports). Both are sent automatically at your configured time each day.
Channel connections are now OAuth-based (May 2026). Channels registered with the old method (pasting webhook URL / Chat ID) need to be reconnected from the Alerts page.
Project alerts
Project alerts send daily stat reports based on your configured stat columns. When stats are collected, the results are formatted into a report and delivered to your enabled channels.
Supported channels
Slack
Click "Connect"
On the Alerts page, click the "Connect" button on the Slack card. A new tab (or same tab on mobile) opens the Slack OAuth consent screen.
Pick workspace + approve
Select your workspace → approve 8 scopes (commands, chat:write, chat:write.public, channels:read, groups:read, im:read, im:write, users:read) → Allow.
Pick a channel
After OAuth, a channel picker dialog opens automatically. Public/private channels + DM (your 1:1) are listed. DMs are shown by your real name.
Save
Click Save and the card shows a "Connected" badge.
Discord
Click "Connect"
Click the Connect button on the Discord card → Discord OAuth consent page opens.
Pick server + add bot
Select your Discord server → approve adding the bot (ViewChannel + SendMessages + EmbedLinks permissions). Only servers where you are admin are eligible.
Pick a channel
After OAuth, a channel picker opens automatically. Choose a text channel where the bot should post (default #general works).
Telegram
Telegram supports two connection modes. Clicking "Connect" opens a selection dialog.
- **1:1** — Receive alerts as a direct message from the bot (simplest, you only)
- **Group** — Add the bot to a group you participate in, alerts go to the group (shareable with teammates)
The bot is linked automatically once added. For Group, the modal lists groups where you are admin, and on mobile Telegram you can also create a new group right from the modal.
To accept short slash commands (e.g. /revenue) directly in a group, promote the bot to admin. Otherwise use the autocomplete menu (type `/` to see the command list) — Telegram will auto-append `@OpseerBot` to the command.
Webhook
Send reports to a custom HTTPS endpoint. Click "Connect" on the Webhook card to open a URL input dialog. The URL is stored encrypted (AES-256-GCM). Use this for Zapier, Make, or your own services.
Slash commands
Once a channel is connected, you can use slash commands on Telegram/Slack/Discord to fetch revenue/stats instantly.
- `/opseer` — commands + help (Free, locked items show 🔒)
- `/revenue [channel] [period]` — revenue across connected channels (all periods call the channel APIs in realtime)
- `/stats [project] [period]` — project stats (today = realtime query against your DB, others = aggregate from `project_stats_data`)
**Multi-step picker** — omit arguments to pick via buttons (2026-05-14 unification):
- If **2+ channels/projects are connected**, the first screen shows an `[All]` option + only the connected ones → period picker
- If only **1 channel/project is connected**, the first picker is skipped automatically → go straight to the period picker
- **6 periods**: `today` / `yesterday` / `7d` / `this-month` / `last-month` / `30d`
- **Free plan** can use `today` only. The other 5 periods are Starter+ (shown with 🔒)
- `/revenue all` fans out to every connected channel in parallel and combines the results into one message. `/stats all` runs across every project linked to the chat in parallel (output is auto-truncated with a notice if the message length limit is exceeded)
Per-chat command scope
Each command's availability is determined by what alert types are linked to that chat (2026-05-14):
- **Chat with personal alert linked** → `/revenue` works. `/stats` is rejected
- **Chat with project alert linked** → `/stats` works (lists only the projects linked to this chat). Revenue commands rejected
- **Chat with both personal + project alerts** → all commands work (`/stats` still scoped to chat's linked projects)
- **Chat with no alert linked** → the bot responds with a "notLinked" error message (no data returned)
Only the user who connected the alert can fetch data. Other group/channel members are rejected. Replies are posted publicly in the chat so teammates see them (team-sharing policy).
If multiple users each connect their personal alert to the same chat (e.g. user1 and user2 both linked to group A), each gets their own revenue replies.
In Telegram groups, append `@OpseerBot` to commands (e.g. `/revenue@OpseerBot`), or use `/` autocomplete — Telegram will auto-append `@OpseerBot`. Promote the bot to admin in the group to also accept short `/revenue` typed directly.
Alert time
Each project has its own alert time setting. Choose your timezone and preferred time (hour and minute). Opseer converts this to UTC and runs collection + report delivery at that time every day.
Alert time is shared between stats collection and report delivery. When the alert time fires, Opseer first collects stats, then sends the report with the fresh data.
Test delivery
After configuring a channel, click the "Test" button to send a sample report. This verifies that the message is delivered successfully. Personal-alert test sends use today's data + delta vs yesterday (based on your account timezone).
Personal alerts (Revenue Report)
Personal alerts are separate from project alerts and bundle yesterday's revenue from 2 ad channels (AdMob/AdSense) and 3 payment channels (Stripe/RevenueCat/Polar) into a single daily report. The 3 payment channels share a unified 5-metric format (MRR / Revenue / Orders / New Subs / Churned). They are configured per-user, not per-project.
- Requires a paid plan (Starter / Plus / Max) — plan check applies only when a channel is enabled AND at least one of the 5 channels is selected
- AdMob/AdSense connect via Google OAuth; Stripe via a Restricted API Key; RevenueCat & Polar via OAuth (all read-only)
- Configured from the "Personal Alerts" sidebar menu (/dashboard/alert)
- Has its own independent alert time and channel settings
- Supports Slack, Discord, Telegram, and Webhook channels
See the AdMob, AdSense, Stripe, RevenueCat, and Polar integration guides for detailed setup instructions.
How alert activation works
Alerts are automatically considered active when at least one channel is enabled for the project. You do not need to toggle alerts on or off separately. Simply enable a channel and configure the alert time, and reports will start arriving at the next scheduled time.