ChatOps is the right pattern for small engineering teams. Most DevOps activity is short, status-driven, and naturally collaborative — exactly the kind of thing that fits in a Slack thread. PagerDuty + Spacelift + Statuspage stacks up fast: 21 euro per user for PagerDuty, 200 euro per month for Spacelift starter, 29 euro per month for Statuspage. A custom Slack bot replaces the team-internal portions of all three for 5,200 euro.
The four commands that cover 90% of DevOps work
/deploy
Syntax: /deploy api-service staging. The bot looks up the service in a Postgres registry, checks the user's RBAC role, then fires a repository_dispatch event to GitHub Actions. The deploy workflow has a step that posts a Slack webhook for each stage (build, test, deploy, smoke test). The bot streams those updates into the original thread.
On failure: the bot pings the deployer with a "Rollback?" button. Click it, and another repository_dispatch reverts to the previous tag. Total downtime from "deploy broke prod" to "rolled back" is typically under 90 seconds.
/incident
Syntax: /incident login-broken. Creates a private channel #inc-2026-05-27-login-broken, invites the current on-call engineer, posts an Incident Commander (IC) checklist, and starts timestamped logging. The bot also opens a Statuspage incident if configured.
The IC checklist (posted automatically): assign IC, assign communications lead, set severity (SEV1-3), open external comms, declare end-of-incident criteria. Each item is a button to claim or mark done.
/oncall
Syntax: /oncall who shows the current on-call engineer. /oncall swap @bob swaps tonight's slot. /oncall schedule opens a Block Kit calendar with the next 2 weeks.
Rotation engine: a config table with engineer Slack IDs, time zones, and a rotation pattern (weekly, daily, follow-the-sun). The bot computes the current on-call at request time. SMS paging via Twilio when a SEV1 incident is declared and Slack mention goes unanswered for 5 minutes.
/incident-close
Closes the incident, archives the channel after 30 days, and generates a postmortem draft. The draft pulls all messages from the channel, extracts the first/last timestamps, finds messages tagged with key emoji (:rotating_light: = decision, :memo: = action item), and templates them into a Confluence page draft.
Implementation — 4 weeks
Week 1. Slack app, OAuth scopes, Postgres schema (services, on-call rotation, incidents, audit log). Basic slash command routing.
Week 2. /deploy with GitHub Actions integration, RBAC enforcement, log streaming via webhook callback, rollback button.
Week 3. /incident and /oncall — channel creation, IC checklist, rotation engine, Twilio SMS paging.
Week 4. Postmortem auto-draft (Confluence API), Statuspage integration, audit log dashboard (who deployed what, when), final testing with a chaos drill.
RBAC: who can deploy to prod
The deploy_permissions table has 3 columns: user_slack_id, service_name, environment. A row grants permission. Missing row = denied with a Slack ephemeral message.
Patterns we use:
- Senior engineers get prod access to all services they own.
- Junior engineers get staging-only by default.
- On-call gets temporary prod access to all services during their shift. This is computed dynamically — no row in the table — based on the current on-call rotation.
When to use SaaS instead
- Multi-region team with complex escalation policies. PagerDuty's policy engine is good; rebuilding it is a project of its own.
- Compliance requirements (SOC2 audit). Auditors prefer named SaaS vendors with their own attestations.
- You need response analytics. MTTA, MTTR by team, fatigue metrics — PagerDuty has dashboards. Building those from scratch is 2 extra weeks.
Comparison
| Tool | 10 engineers, year 1 |
|---|---|
| PagerDuty Professional (21 euro per user) | 2,520 euro |
| Spacelift Starter (deploy automation) | 2,400 euro |
| Statuspage Business | 708 euro |
| FireHydrant (incident management) | 3,600 euro |
| SaaS total | 9,228 euro |
| Custom Slack bot build | 5,200 euro (one-time) |
| Custom Slack bot hosting + Twilio | 720 euro/year |
| Custom total year 1 | 5,920 euro |
| Custom total year 2+ | 720 euro/year |
FAQ
Can this replace PagerDuty?
For teams under 20 engineers in a single time zone, yes. The bot covers on-call rotation, Slack DM paging, and SMS via Twilio.
How does the /deploy command work?
It triggers a GitHub Actions workflow via repository_dispatch. The bot streams the deploy log into the Slack thread. RBAC controls who can deploy where.
What goes into an incident channel?
Private channel #inc-YYYY-MM-DD-slug, on-call engineer + team list invited, IC checklist posted, timestamped logging starts.
How does postmortem auto-draft work?
On close, the bot pulls all channel messages, finds decisions and action items by emoji tag, and creates a Confluence draft for the IC to finalize.
Stop paying per-engineer for ChatOps
5,200 euro fixed price, 4 weeks, deployed to your Slack workspace with GitHub Actions wiring.
Book a discovery call