Alerts & triage

tinymon emails you the first time a new error appears in a project, when a resolved error regresses, and when an uptime or heartbeat monitor changes state. You can route the same alerts to Slack, Discord, or any HTTPS endpoint. Once an issue is in your dashboard, resolve it, ignore it permanently, or silence it for a while.

Alert channels

Every channel you configure receives every kind of alert. The fingerprint groups identical-looking errors so you don't get spammed by the same bug, and error alerts are suppressed when the issue's effective status is resolved, ignored, or silenced — you only hear about things you haven't dismissed.

What triggers an alert

ReasonFires when
new_issueA new error fingerprint is seen for the first time in a project.
regressionA resolved error fires again — it auto-reopens, marked regressed in the release it returned on. See Release tracking.
count_milestoneAn issue's total event count crosses a number you set (e.g. 100). Fires once, when the count lands on the threshold.
uptime_downAn uptime monitor failed its threshold of consecutive checks. See Uptime monitoring.
uptime_upA down uptime monitor recovered.
heartbeat_missingA cron/heartbeat didn't ping within its window. See Heartbeat / cron.
heartbeat_recoveredA missing heartbeat pinged again.
ChannelSetup
EmailOn by default, to the address you signed in with. Configurable — see Email & notification settings.
SlackAdd an incoming webhook URL in project settings.
DiscordAdd a channel webhook URL in project settings.
GenericAny HTTPS endpoint that accepts a JSON POST.

Open your project → settings → Channels. Give each channel a name (e.g. "Eng Slack") so you can tell them apart, and use the "send test" button to confirm a payload arrives before relying on it in prod.

Reliability: each channel POSTs independently with a 5-second timeout. A broken Slack URL never blocks your Discord, your webhook, or the email.

Alert rules

By default tinymon emails you on every new issue and regression. Alert rules let you decide exactly what fires and where it goes — open your project → settings → Alert rules. Each rule reads:

notify <channels + email> WHEN <trigger> IF <conditions>

New projects start with two default rules ("New issues" and "Regressions", both → email) so you're covered out of the box. Resolved, ignored, and silenced issues never alert, regardless of rules. Rule changes take effect within ~30 seconds.

Adding a channel? Channels aren't auto-added to existing rules — open the rule and tick the new channel under Notify so it starts receiving alerts.

Cutting down noise

tinymon keeps alerts from becoming spam in three ways:

Email & notification settings

Open your project → settings → Notifications to control how tinymon emails you:

Verifying a new alert email

To prevent typos from silently sending your errors to the wrong inbox, every custom alert address must be verified before tinymon delivers anything to it:

  1. Enter the new address under Send to → Change and click Send code.
  2. tinymon emails a 6-digit code to that address (valid for 10 minutes).
  3. Enter the code to confirm. Until you do, alerts keep going to your previously verified address — there's no gap in delivery.
The email you signed in with is already trusted (verified by Google sign-in), so it never needs a code. Codes expire after 10 minutes and lock out after 5 wrong attempts — just request a new one.

Slack

Create an incoming webhook for the channel you want:

  1. Go to api.slack.com/appsCreate New App → from scratch.
  2. Enable Incoming WebhooksAdd New Webhook to Workspace, pick a channel.
  3. Copy the URL (starts with https://hooks.slack.com/services/…).
  4. In tinymon, project settings → Channels → Add: type Slack, paste the URL.

The Slack body is a simple { "text": "…" } with project name, error title, culprit, environment, and a deep link back to the issue in tinymon.

Discord

  1. Open your Discord channel → Edit Channel → Integrations → Webhooks → New Webhook.
  2. Copy the URL.
  3. In tinymon, project settings → Channels → Add: type Discord, paste the URL.

Same message format; Discord just reads it from the content field.

Generic webhook

For PagerDuty, OpsGenie, your own bot, an n8n flow — anything that takes an HTTPS POST. Configure the URL in project settings; tinymon sends:

{
  "event":       "new_issue",
  "project":     "web-app",
  "issue_id":    "…",
  "title":       "TypeError: Cannot read .id",
  "culprit":     "getUserHandler (handlers/users.ts)",
  "environment": "production",
  "release":     "1.0.0",
  "level":       "error",
  "first_seen":  "2026-06-08T17:24:00Z",
  "url":         "https://console.tinymon.dev/dashboard/<project>/issues/<id>"
}

Triage: resolve, ignore, silence

Open any issue in the dashboard. Four actions:

ActionEffectAlerts?
ResolveYou fixed it. Hides from the default list.No
IgnorePermanently muted (e.g. a noise from a 3rd-party script).No
SilenceMuted until a timestamp (1h / 24h / 7d / 30d).No, until window passes
Reopen / UnsilenceReturns to unresolved.Yes

Silence in detail

A silenced issue has a silenced_until timestamp. While the window is active:

After the window passes the issue is treated as unresolved again — it returns to the default list and the next sighting can alert. You don't need to do anything.

No regression alerts (yet). A resolved issue that comes back doesn't re-alert today. Silence is the right tool when you want temporary muting with automatic re-alerting later.