PagerDuty Slack Integration: On-Call Schedules, User Groups and Incidents in Slack
How to set up a PagerDuty Slack integration that shows who is on call, keeps Slack user groups in sync with PagerDuty schedules, and runs incidents in Slack.

A PagerDuty Slack integration should answer one question instantly: who is on call right now, and how do I reach them? PagerDuty knows the answer - it holds your on-call schedules, escalation policies and incidents. But most of the actual teamwork during an incident happens in Slack, and by default Slack does not know who is on call.
This guide covers what PagerDuty's own Slack integration does and does not do, how to bring PagerDuty on-call schedules into Slack with Pagerly, how to keep Slack user groups such as @sre-on-call in sync with the live PagerDuty rotation, and a step-by-step setup. For the product page, see PagerDuty and Slack 2-way sync.
What PagerDuty and Slack Each Do
PagerDuty is an incident management platform: real-time alerts, on-call rotations identified by a schedule ID, escalation policies so alerts don't fall through the cracks, services that group incidents by application or business function, and an API for automation.
Slack is where teams talk: channels, direct messages, Slack user groups for tagging the right people, and the Slack API and workflow builder for automations.
Integrating the two puts alerts and the conversation about them in one place, so the right person gets the right information at the right time - without context-switching between the PagerDuty web app and Slack.
What PagerDuty's Native Slack Integration Does - and Doesn't
PagerDuty has a native Slack integration that posts incident notifications to a designated Slack channel, and engineers can acknowledge incidents from Slack using the PagerDuty bot. That covers alert delivery. It does not manage schedule visibility in Slack:
- No automatic user group updates: the integration does not write to Slack user groups, so
@sre-on-callgoes stale as the rotation moves on. - Manual updates required: someone has to edit the group every time the rotation changes.
- No channel topic sync: channel topics are not updated to show the current on-call engineer.
That gap is what Pagerly fills.
What Pagerly Adds to PagerDuty in Slack
Pagerly connects to your PagerDuty account with an API key and manages the on-call and incident lifecycle inside Slack.
See the Current On-Call in Slack
Pagerly auto-fetches the current on-call PagerDuty user from each schedule, so anyone can find who is on call from any Slack channel. Daily notifications can announce who is on call today, and on-call shift changes are posted as they happen.
Channel Topic Updated with the Current On-Call
Pagerly keeps your team channel topic updated with the current on-call, so everyone - including product and customer support - knows who is responsible without leaving Slack. Several teams can share one channel.

Slack User Groups Synced with PagerDuty Schedules
Connect a Slack user group to a PagerDuty schedule and Pagerly keeps its membership equal to whoever is on call, including overrides and swaps. Anyone can then tag @sre-on-call and reach the right person. The full walkthrough is below.

Mention the Current On-Call in Any Thread
Use @Pagerly <teamName> in any channel or thread to mention that team's current on-call, and set custom automated responses for when someone does. See mentioning the current on-call.

Group Multiple On-Call Rotations
Incidents often span teams. Pagerly's group multiple on-calls feature notifies every relevant rotation at once - for example @frontend-oncall @android-oncall @ios-oncall @web-oncall.

Check Schedules and Create Overrides from Slack
See your team's PagerDuty schedule and escalation policy in Slack, and override or reassign the current on-call to another Slack user without opening PagerDuty.

Reminders for Upcoming Rotation Changes
Get reminded before your on-call shift starts, with the option to swap or override, and post daily, weekly or monthly reminders of upcoming changes to the team channel.
On-Call Handover Reports
At each handover Pagerly can post a report to Slack: incident notifications with the correct PagerDuty user tagged, handoff requests, open incidents with assignees, and closed incidents for tracking wins and MTTR. The full report can be exported as CSV.

Incidents in Dedicated Slack Channels
When a new incident is triggered in PagerDuty, Pagerly can create a dedicated Slack channel pre-populated with the incident details (severity, impact, service), a link back to PagerDuty and the assigned on-call user, and tag the relevant user groups. Incident updates - acknowledged, resolved, escalated - flow into that channel in real time, and responders can acknowledge, resolve or reassign from Slack. Escalations follow your PagerDuty escalation policy, with each step visible as a Slack message.
How to Set Up the PagerDuty Slack Integration
Step 1: Add Pagerly to Your Slack Workspace
Go to Pagerly and add the app to Slack. Some workspaces only let admins install apps, so you may need your Slack workspace admin.
Step 2: Connect PagerDuty with an API Key
You can reuse an existing key from https://<company>.pagerduty.com/api_keys, or create a new one for Pagerly (full instructions):
- In PagerDuty, go to Integrations → API Access Keys under Developer Tools.
- Click Create New API Key.
- Enter a Description so you can identify the key later.
- Click Create Key. The key needs full (read and write) access.
Step 3: Add Your PagerDuty Schedule ID
In PagerDuty every service has an escalation policy, and each escalation policy has an on-call schedule. Pagerly reads the current on-call from that schedule. The schedule ID is the last part of the schedule page URL: https://<company>.pagerduty.com/schedules/#<scheduleId> (full guide).

- In PagerDuty, open People → On-Call Schedules.
- Select the schedule you want to use.
- Copy the last part of the URL and paste it into the team configuration as the Schedule ID.
Step 4: Choose a Slack Channel and Map User Groups
Pick one dedicated channel or several for on-call notifications - handovers, shift changes, previous and current on-call - and link each PagerDuty schedule to its Slack user group, for example @oncall-backend → the backend schedule.
Step 5: Test It
Trigger a test incident in PagerDuty and check that it lands in Slack with the current on-call tagged, and that the user group and channel topic show the right person.
Sync PagerDuty On-Call Schedules to Slack User Groups
Your PagerDuty schedule knows who is on call right now. Your Slack workspace does not. When an engineer types @sre-on-call, that mention reaches whoever was added to the user group weeks ago - not necessarily the person currently on call in PagerDuty.
Why Slack User Groups Matter for On-Call
Slack user groups are named sets of members you can mention as @groupname. Unlike a channel, which is a place, a user group is a list of people who can be tagged. For on-call they do two jobs: anyone can reach the on-call engineer without checking a schedule, and monitoring tools and bots can mention the group in an alert channel and be confident the right person is notified. By default, though, user groups are static - they stay the same until someone edits them.
Keeping them in sync matters because:
- Alert routing: alerts that mention a stale group reach the wrong person, exactly when speed matters most.
- Incident channels: the group needs to reach the engineer on call now, not last week's.
- Cross-team requests: engineers outside the SRE team tag the group to ask questions or report issues.
- Escalations: bots that escalate to the group break when it doesn't match PagerDuty's primary responder.
- Handovers: if the group isn't updated at handover, the incoming engineer is on call in PagerDuty but unreachable via Slack.
Option 1: Update the Group by Hand
In Slack, user groups are managed under People and User Groups; changing members takes about a minute. In practice manual updates fail for predictable reasons: rotations change at awkward times (midnight Sunday, 9 AM Monday), nobody clearly owns the task, one-off overrides and cover swaps get missed, and a team with five rotations has five groups to maintain. Some teams track it in Google Sheets, which only moves the problem.
Option 2: Script It with the PagerDuty and Slack APIs
A scheduled script (cron job or serverless function) can:
- query the PagerDuty API for the current on-call user on a schedule, using the schedule ID and API key;
- resolve that user to their Slack user ID with the Slack API;
- set the Slack user group's membership to that user.
It works, but it needs infrastructure to run reliably, secrets for both APIs, error handling for when either API is down, and updates whenever schedule or group IDs change. A polling script can also be wrong for up to one interval after each handover.
Option 3: Automate It with Pagerly

Pagerly updates the Slack user group whenever the rotation changes - regular handovers, PagerDuty overrides and approved cover swaps - with no scripts to maintain. It also updates the channel topic, supports one user group per schedule (SRE, backend, frontend, payments), offers a Slack command to look up who is on call, lets engineers request and approve swaps in Slack, sends shift reminders 6 hours, 12 hours and 1 day ahead, and posts handover notifications with context on active incidents.
| Method | User group auto-updated | Covers overrides | Channel topic sync | Maintenance |
|---|---|---|---|---|
| PagerDuty native Slack integration | No | No | No | Manual group updates |
| Manual updates | No | Often missed | No | High (every rotation change) |
| Custom API script | Yes (on a schedule) | Depends on implementation | Needs extra code | Medium |
| Pagerly | Yes (at each change) | Yes | Yes | None |
Best Practices for PagerDuty to Slack Group Sync
- Sync at the rotation change, not on a polling interval. An hourly cron leaves the group wrong for up to an hour after each handover.
- Cover overrides, not just the base rotation. Temporary cover should update the group like any other change.
- One user group per rotation. A single
@on-callacross several services makes it unclear which team is being paged. - Update the channel topic alongside the group. People joining an incident channel mid-incident should see who is on call without tagging anyone.
- Re-test after schedule changes. A new PagerDuty user who isn't linked to their Slack account breaks the sync for their shifts.
Use Cases
- Engineering teams: see on-call schedules and handle incident workflows without leaving Slack.
- DevOps request channels: route incoming requests to whoever is on call, and triage in Slack instead of pushing every thread into Jira.
- Support teams: get incident notifications in dedicated channels and escalate to engineering with one mention.
- War rooms: spin up a dedicated channel for a critical incident with the right people already in it.
- IT requests: make sure requests reach the team that owns them straight away.
Need more - Salesforce, Zendesk, custom workflows? Pagerly supports those too.
FAQ
Do I need a PagerDuty account to use Pagerly with PagerDuty?
Yes. Pagerly connects to your PagerDuty account to read schedules, services and incidents.
How does Pagerly know who is on call?
It reads the current on-call user from your PagerDuty schedule ID.
Can Pagerly update Slack user groups automatically?
Yes. Each Slack user group can be mapped to a PagerDuty schedule and is updated when the on-call changes, including overrides.
Does PagerDuty's own Slack app update user groups?
No. It posts incident notifications and lets you acknowledge from Slack, but it doesn't change user group membership or channel topics.
Conclusion
PagerDuty is the backbone of many incident response setups, but Slack is where the team actually talks. A PagerDuty Slack integration through Pagerly puts on-call schedules, user groups, reminders, handovers and incidents where your team already works, so the right person is always one mention away. Get started free.
