Opsgenie shuts down April 2027 - migrate to Pagerly in one click
PagerlyPagerly
← All postsEngineering

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-call goes 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 channel topic showing the current PagerDuty on-call

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.

Slack user group synced with a PagerDuty schedule

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.

Mentioning the current on-call in a Slack thread

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.

Grouping multiple on-call rotations in Slack

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.

PagerDuty on-call schedule shown in Slack

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.

On-call handover report in Slack

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):

  1. In PagerDuty, go to Integrations → API Access Keys under Developer Tools.
  2. Click Create New API Key.
  3. Enter a Description so you can identify the key later.
  4. 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).

Finding the schedule ID in PagerDuty
  1. In PagerDuty, open People → On-Call Schedules.
  2. Select the schedule you want to use.
  3. 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

Setting up Slack user group sync for a PagerDuty schedule in Slack

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.

MethodUser group auto-updatedCovers overridesChannel topic syncMaintenance
PagerDuty native Slack integrationNoNoNoManual group updates
Manual updatesNoOften missedNoHigh (every rotation change)
Custom API scriptYes (on a schedule)Depends on implementationNeeds extra codeMedium
PagerlyYes (at each change)YesYesNone

Best Practices for PagerDuty to Slack Group Sync

  1. 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.
  2. Cover overrides, not just the base rotation. Temporary cover should update the group like any other change.
  3. One user group per rotation. A single @on-call across several services makes it unclear which team is being paged.
  4. Update the channel topic alongside the group. People joining an incident channel mid-incident should see who is on call without tagging anyone.
  5. 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.