PagerDuty Critical Alert On-Call Bridge
Triggers when a PagerDuty incident is triggered or escalated, looks up who is currently on call, posts a rich incident card to Teams, and sends a high-importance Outlook email to the responder and their manager. Writes acknowledgement state back so the Teams thread reflects the live PagerDuty status.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This solution bridges critical PagerDuty incidents into Microsoft 365 collaboration. When an incident is triggered in PagerDuty, the flow looks up who is currently on call, posts a rich incident card to a Teams response channel, and emails the responder (and, for high-urgency incidents, the escalation manager) at high importance. When the incident is later resolved, a companion flow posts a threaded resolution reply into the same Teams conversation so the thread reflects the live PagerDuty status without anyone leaving Teams.
It ships as two cloud flows + one Dataverse ledger table in a single solution. The ledger carries the Teams message id and a correlation id from the notify flow to the resolution-sync flow, which is what makes the threaded "live status" update possible.
Why it matters: PagerDuty pages the phone, but the team coordinates in Teams. This bridge gives everyone shared context the moment an alert fires, loops management in on escalations automatically, and closes the loop in the same Teams thread when the incident resolves. Both flows ship Off (Stopped); going live requires only connection authorization and environment-variable configuration.
Use Case
An SRE / operations team uses PagerDuty for on-call rotations and paging but runs incident comms in Microsoft Teams. They want every triggered critical incident to open a Teams thread with the on-call person identified, the responder and manager emailed, an audit note written back onto the PagerDuty incident, and the same Teams thread updated when the incident is resolved.
Flow Architecture
When a PagerDuty Incident Is Triggered
PagerDuty — OnNewIncidentCreated (batch, splitOn body/incidents)Fires once per newly triggered incident.
Initialize Config
Initialize VariableMint a guid() correlation id and bind env vars: PagerDuty base/token, from-user, Teams group/channel, manager email, urgency filter.
Get Incident Details
PagerDuty — GetIncidentByIdFull incident (urgency, escalation policy, service).
Condition Should Bridge
ConditionOnly bridge incidents matching the urgency filter (or all when filter = all).
Get On-Call Responder
HTTP — GET /oncalls + PagerDuty — GetUserCurrent on-call user for the incident's escalation policy (connector has no on-call op); resolve responder name + email.
Post Incident Card
Compose + Microsoft Teams — PostMessageToConversationBuild the rich incident-card HTML and post it to the response channel; capture the returned message id.
Email Responder + Manager
Office 365 Outlook — SendEmailV2 (High) ×2 (manager gated on high urgency)High-importance page summary to the responder and, on high-urgency incidents, the escalation manager.
Add Bridge Note
PagerDuty — AddNoteToIncidentWrite an audit note back onto the incident.
Create Ledger Record
Compose + Microsoft Dataverse — CreateRecordLedger the incident id, Teams message id, on-call user and status = Notified.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_PagerDutyApiBase | String | https://api.pagerduty.com | PagerDuty REST base URL (on-call lookup). |
| flowlibs_PagerDutyApiToken | String | <configure> | PagerDuty REST API token. |
| flowlibs_PagerDutyFromUserId | String | <configure> | From user for the incident note. |
| flowlibs_PagerDutyEscalationPolicyId | String | <configure> | Fallback escalation policy for the on-call lookup. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team (group) id of the response channel. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id of the response channel. |
| flowlibs_EscalationManagerEmail | String | oncall-mgr@contoso.com | Manager emailed on high-urgency incidents. |
| flowlibs_PagerDutyUrgencyFilter | String | high | Only incidents of this urgency are bridged (all = every incident). |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| PagerDuty | shared_pagerduty | OnNewIncidentCreated OnIncidentResolved GetIncidentById GetUser AddNoteToIncident |
| HTTP | http | GET /oncalls |
| Microsoft Teams | shared_teams | PostMessageToConversation PostReplyToMessage |
| Office 365 Outlook | shared_office365 |
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Urgency scope
- Set flowlibs_PagerDutyUrgencyFilter to high (default), low, or all to control which incidents open a bridge.
- On-call source
- The on-call lookup uses the incident's own escalation policy, falling back to flowlibs_PagerDutyEscalationPolicyId. Point it at a schedule-based /oncalls query if you rotate by schedule rather than policy.
- Adaptive cards
- Replace the HTML Teams posts with an Adaptive Card carrying Acknowledge / Resolve buttons that call back to PagerDuty.
- Acknowledged status
- Add a third flow on OnIncidentAcknowledged that mirrors Flow 2 (ledger lookup → PostReplyToMessage Acknowledged by…) to also thread acknowledgements.
- ServiceNow / ITSM
- Chain to an ITSM bridge so the incident is also opened/updated in ServiceNow.
- Quiet hours
- Batch low-urgency incidents into a digest rather than paging immediately.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01On-call responder name
First on-call user summary from the roster.
EXPR.02On-call user id
Feeds the PagerDuty GetUser action.
EXPR.03On-call lookup URI
PagerDuty /oncalls query scoped to the escalation policy.
EXPR.04Should-bridge gate
Bridge when filter = all or matches the incident urgency.
EXPR.05High-urgency / escalation gate
Email the manager only on high-urgency incidents.
EXPR.06Resolution thread key (Flow 2)
Stored Teams message id for the threaded reply.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.