Slack ChatOps

Your On-Call Workflow,
Inside Slack

Alerts land as rich cards. Ack with a button. Check who's on-call with a command. Full context in one thread — no app-switching at 3 AM.

See it in action ↓ How it works
#all-ops-ping  ·  Ops Ping workspace
OP
OpsPing APP 3:47 AM
P1 Checkout service — 502 spike
SourceDatadog — apm
On-callAlice Chen (Platform)
Message502 rate exceeded 5% for 10m on checkout-api
Alice Chen acked this alert · 3:49 AM
AC
Alice Chen 3:52 AM
/opsping status
Active alerts (3)
P1 · Checkout service — 502 spike #a4f2
P2 · DB replica lag > 30s #c891
P3 · Disk usage 82% on web-3 #1d0e
AC
Alice Chen 3:53 AM
/opsping oncall
👤 Currently on-call
Alice Chen — Platform (until 6 AM)
Marcus Webb — Data (until 8 AM)
Next: Priya Sharma — Platform (6 AM)

Everything in the channel

No tab-switching. No "wait, which app was that in?" Your entire alert lifecycle lives where your team already is.

Rich alert cards

Block Kit cards with priority badge, service, source, on-call, and message. One glance tells you everything.

One-click actions

Ack, snooze, or resolve directly from the card. The ops-side state updates instantly — no round-trip to the dashboard.

Thread updates

Status changes post as thread replies. Full alert lifecycle in one thread — who acked, when, what changed.

Slash commands

/opsping status · oncall · ack <id> · link <code> — answers without leaving Slack.

Account linking

Link your Slack identity to your OpsPing account with one click. Email auto-link or one-time code — your choice.

Self-hostable

Socket Mode (no public endpoint) or HTTP (App Directory). Works behind your firewall or in the cloud. Your call.

Delivery rules — route alerts where they need to be

#ConditionChannelMatchStatus
1 priority = P1 #incident-command exact active
2 service = checkout-api #checkout-team exact active
3 source = Datadog #datadog-alerts exact active
4 tag contains "staging" #staging-noise contains disabled

Ordered evaluation — first match wins. Conditions: priority, service, source, tag, entity, regex. All optional — empty rule = catch-all to default channel.