Observiply Oncall

On-Call modernized

Observiply Oncall notifies scheduled responders, runs automated responses, and connects systems together to de-escalate quickly.

1
binary to deploy
3
channels per person
∞
integration possibilities
Observiply Oncall incident list with open, acknowledged, silenced and resolved incidents
Observiply Oncall on iPhone: current on-call responders and the day view of the layered schedule

Preconfigured integration presets : Choose from default configurations or write one yourself

AlertmanagerGrafanaGeneric webhookServiceNow CreateServiceNow LookupGitHub ActionsGitLabBambooElasticsearchGeneric pollTwilio voiceTwilio SMSSMTPiCal feeds + anything you can templateAlertmanagerGrafanaGeneric webhookServiceNow CreateServiceNow LookupGitHub ActionsGitLabBambooElasticsearchGeneric pollTwilio voiceTwilio SMSSMTPiCal feeds + anything you can template

Paging and Responding

Fire an alert, then acknowledge, resolve, or leave it alone for 12 seconds to notify the backup.

Incident state idle

Fire an alert to view the incident lifecyle.

incident timeline

$ waiting for an alert…▌

Four-stage Incidents

Incidents as code mean every stage is inspectable, templated and testable.

01
Ingest

An integration or a raw webhook posts to a trigger holding its own rotatable token.

POST /ingest/t_9f2c…
02
Shape

Sandboxed Go templates turn that payload into an incident: title, severity, dedupe key, links.

{{ .body.labels.alertname }}
03
Route

Targets resolve to schedules or users. Silences suppresses the alarm before it wakes anyone.

→ schedule:payments-primary
04
Escalate

Notify, wait, advance. Acknowledgements halt escalations from the app, a text or the call itself.

step 1 → step 2 → step 3

Tip: Fire a test alert to add more incidents, and click an incident's title to see its payload and escalation.

open
3m ago

postgres-primary:DiskPressure:prod

State: firing 3× seen 1 updates
Owner: Platform Primary

Intuitive Rotations

Configure your rotation layers however you want. Set schedules however you want. Target whatever services you want. Cover whoever (whomever?) you want.

Check out the calendar snippet! Jump between weeks, switch views, or click a shift. The calendar also exports as an iCal feed.

What's In The Box?

Major components of Observiply Oncall

Schedules

Stacked layers with rotation, cadence and time restrictions. Overrides let you swap a person in for given time-frame.

Layers · rotations · restrictions · overrides · iCal feed

Triggers

Every alert lands on a trigger with its own rotatable ingest token. Templating interpolates the incident, targets route it to schedules or people, and silences suppress unwanted notifications

Ingest tokens · Go templates · targets · silences

Integrations

Presets ship for the tools you already run. Custom connections are built and owned by you

Alertmanager · Grafana · ServiceNow · webhooks · your own

Delivery

Email, SMS, voice, and personal integration options. Notifications are routed through a transactional outbox for preservation

Transactional outbox · retries · per-user channels

Teams, RBAC and PII

Teams are authorization namespaces with (resource, verb) roles over view / write / delete. Emails and phone numbers are redacted at the API for everyone besides global admins and the team owner.

Team-scoped resources · OIDC SSO · boundary redaction

Package

A Go binary embedding the frontend and coupled with Postgres. No agent fleet or per-seat billing surprises. Deploy it in seconds!

Go + Postgres · embedded SPA · self-hosted or run by us

Talk to Me

Oncall offers a myriad of communication methods

  • Say it: "acknowledge", "escalate" or "resolve" via speec.
  • Press it: Keypad input for mobile users on-the-go
  • Text it: Reply to the SMS directly
  • Ignore it: Voicemail is supported as an event and able to auto-advance escalation instead of burning precious time.
timeline events · INC-2291
10:14:02 notified priya · voice
10:14:31 answered_human
10:14:49 speech "acknowledge"
10:14:49 incident acknowledged
10:24:49 escalation step 2 cancelled
also possible: voicemail, no_input, no_answer, busy, auto_advanced

IaC, Your Way

Connections are defined by custom templates, not by providers. Write your own inbound, outbound, and polling mode connection types!

This enables proprietary systems to benefit from an engineer's custom template. You can test your template renders from sample inputs.

Credentials are write-only and encrypted at rest.

inbound outbound poll
{
  "incident": {
    "title":    "{{ .body.labels.alertname }}",
    "severity": "{{ .body.labels.severity }}",
    "dedupe":   "{{ .body.fingerprint }}",
    "service":  "{{ .body.labels.service }}"
  },
  "targets": ["schedule:payments-primary"],
  "policy":  "notify → wait 12s → escalate"
}
sandboxed Go templates · Sprig minus env/network/filesystem · missingkey=error

Presets that ship in the box

AlertmanagerGrafanaGeneric webhookServiceNow CreateServiceNow LookupGitHub ActionsGitLabBambooElasticsearchGeneric pollTwilio voiceTwilio SMSSMTPiCal feeds + your own, unlimited

FAQ

Can we host it ourselves?

Yep, its one Go binary plus Postgres. The binary embeds the frontend and serves the API, BFF and Twilio webhooks. We can also run it for you!

How does login work?

OpenID Connect. You bring your own provider (Azure, GitHub, etc.) and set it at runtime

What if our alerting tool is not on the list?

Just build a configuration template for it, and its now supported! Anything that can POST JSON or be polled over HTTP works

Pricing

Contact us!