Product

Everything between the alert and the person.

An alert comes in, Transmit opens an incident, works out who is on call at that moment, and pages them, step by step, until someone acknowledges. Here is each part, and what it does today.

Paging and escalation

Keeps going until someone answers.

An escalation policy is a list of steps, each a number of minutes after the incident opens. A step pages people by name, or whoever is on call on a schedule right then. After the last step it can run the steps again, up to twenty times.

  • Alerts group. Alerts with the same dedup key join the open incident instead of paging again.
  • Nobody is skipped silently. If nobody on a step can be paged, Transmit pages the organization’s owners and admins and says so in the timeline.
  • Each person chooses how. Notification rules say which contact method to use and how many minutes after being paged.
  • Priorities P1 to P5, as in Opsgenie, on every incident.

Schedules

Rotations that are right at 2am on the day the clocks change.

Layers of rotations by the hour, day or week, with time restrictions for working hours or nights, and overrides for swaps and sick days. Each schedule has its own time zone.

  • Tested on time itself. Rotation arithmetic is checked with property tests across time zones and daylight-saving changes, ten thousand cases each. They have caught real bugs, like a midnight DST gap in Santiago.
  • Ask who is on call. For any stretch of time, the API returns runs of who is on call, so you can check a schedule before it matters.

Heartbeats

Know when the nightly job didn’t run.

A heartbeat expects a ping every so often from a cron job, a backup, or anything that should keep happening. When a ping is late, Transmit opens an incident on the service and pages through its policy. The next ping resolves it.

  • A key reaches only its own service. One service’s key cannot silence another service’s heartbeat.
  • Wrong names fail loudly. An unknown heartbeat name is a 404, so curl -ffails the job instead of leaving the heartbeat to expire quietly.
# Opsgenie's ping, with only the URL and key changed
curl -fsS https://oncall-api.transmit.dev/v2/heartbeats/nightly-backup/ping \
  -H "Authorization: GenieKey tik_..."

# Or Transmit's own: the key in the URL, GET or POST
curl -fsS https://oncall-api.transmit.dev/v1/intake/heartbeat/tik_.../nightly-backup

Integrations

Send alerts the way you already do.

Every service gets its own integration keys. Keys are stored hashed and shown once.

Opsgenie Alert API

Create, acknowledge and close alerts, add notes, and update messages and descriptions, on the same paths as Opsgenie’s /v2/alerts. Anything that can change its Opsgenie URL works as it is.

Prometheus Alertmanager

Use Alertmanager’s built-in Opsgenie receiver with Transmit’s URL, or its webhook receiver. Firing opens an incident; resolved closes it.

Generic webhook

POST a JSON body with a title, a dedup key and a priority to trigger, acknowledge or resolve. For anything that can send a webhook.

REST API

Everything in the dashboard is in the API, described by generated OpenAPI 3.1 and 3.0 documents. Read the API docs.

Send test alert

Prove it works before 3am does.

One button on a service opens a real, low-priority incident and pages whoever the service’s policy pages right now, as a real alert would. It keeps escalating until someone acknowledges, so you find out who would have missed it.

Acknowledge from the email

One click from the page you got.

Every page links to a short page where you acknowledge or resolve, signed in or not. The link only shows the page: acknowledging takes a button press, so a mail scanner that opens every link cannot acknowledge for you.

  • Email today, from alerts@alerts.transmit.dev. The migration guide shows how to make it break through Do Not Disturb.
  • SMS and voice calls are coming soon. Only numbers their owner has verified will ever be texted or called.

Built so one customer can never reach another.

Every request’s organization comes from its key, never from what the request says. Security

Move before the deadline, not on it.

Transmit is in early access. Tell us about your on-call setup, and we will help you import it and check it against Opsgenie before you switch.