Skip to content
Bugtail Docs
Menu

Alerts

Alert rules decide who hears about what. Without a rule, issues are still recorded, but nobody is told about them. Set rules up under Settings > Alerts.

A rule

Every rule has:

  • a project and a trigger, described below;
  • a minimum level, for rules about errors and log lines;
  • an optional environment, such as production, to ignore the rest;
  • a cooldown in minutes, so a burst of events does not send the same alert over and over;
  • one or more places to send to.

Ignored issues never trigger an alert. The Recently sent list on the same screen shows each alert that went out, and each that failed.

Triggers

New issue

An issue is seen for the very first time.

Regression

A resolved issue happened again.

Occurrence threshold

An issue happened at least a number of times within a number of minutes. Checked every few minutes against hourly counts, so it suits "more than 100 in the last hour" better than "5 in the last minute".

Log match

A log line at or above the minimum level contains a text. The match is case-insensitive. Leave the text empty to match every line at that level.

Metric threshold

A metric crosses a line over a time window. Choose:

  • what to take: the total, the mean, the highest or lowest value, or the newest reading;
  • whether it has to be above or below the threshold;
  • the window, rounded out to whole hours;
  • optionally, which series to watch, as status=500, route=/orders.

A window without any readings never fires, in either direction: a metric that stops arriving is not a metric below the threshold.

Where alerts go

Channel What arrives
Email A message to each address, comma separated.
Webhook A JSON POST to your URL, described below.
Slack A message through an incoming webhook URL.
Microsoft Teams A message through an incoming webhook URL.

A delivery that fails is retried a few times before it is marked as failed.

Webhook payload

{
  "reason": "A new issue was seen for the first time",
  "rule": {"id": 3, "name": "New errors in the shop", "trigger": "new_issue"},
  "project": {"id": 1, "name": "Shop"},
  "metric": null,
  "issue": {
    "id": 42,
    "short_id": "SHOP-14",
    "title": "TypeError: cart is undefined",
    "culprit": "checkout",
    "level": "error",
    "status": "unresolved",
    "times_seen": 12,
    "first_seen_at": "2026-09-24T10:02:11+00:00",
    "last_seen_at": "2026-09-24T10:14:40+00:00"
  }
}
  • rule.trigger is new_issue, regression, issue_threshold, log_match or metric_threshold. Use it, not reason, to decide what to do in code: reason is a sentence for people, in your organisation's language.
  • issue is null for log and metric rules.
  • metric is set for metric rules, with its id, name, kind and unit.