Zendesk Proactive Outage Bulk Notify
When an outage is declared (status page / form / Teams command), the flow finds open and recently active Zendesk tickets matching the affected product, posts a templated update to each, sets status, and creates a proactive notification ticket for impacted customers. Turns one outage declaration into coordinated customer comms.
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 flow turns a single outage declaration into coordinated Zendesk customer communications. An incident commander declares an outage by posting an /outage <product> command in a designated Microsoft Teams channel. The flow then finds open/active Zendesk tickets that mention the affected product, posts a templated public update and sets status on each, creates one proactive notification ticket to track outbound comms, and posts coordinated summaries to Teams and Outlook.
Why it matters: During incidents, agents cannot update every relevant ticket fast enough. Bulk, consistent updates reduce inbound volume and keep customers informed from one trusted declaration.
Built: CF-722 · Solution FlowLibs - Zendesk Proactive Outage Bulk Notify · Ships Off (demo). Going live requires only connection authorization + environment-variable values.
Use Case
Support and operations want to mass-update relevant tickets and notify customers the moment an outage is declared — without copy-pasting the same update into dozens of tickets by hand. A single Teams command fans out into consistent, auditable customer comms.
Flow Architecture
When a new channel message is added
Teams OnNewChannelMessage (poll 5 min, splitOn body/value)Watches the outage-command channel; one run per message
Initialize Message Text
Initialize Variable (String)Captures the message HTML (triggerOutputs()?['body/body/content'])
Initialize Affected Product
Initialize Variable (String)Holds the parsed product name (set later)
Initialize Zendesk Api Base
Initialize Variable (String)Builds https://{subdomain}.zendesk.com/api/v2 from the subdomain env var
Initialize Outage Update Template
Initialize Variable (String)The customer-facing update text posted to each ticket
Initialize New Ticket Status
Initialize Variable (String)Zendesk status to set on affected tickets (open)
Initialize Proactive Ticket Subject
Initialize Variable (String)Subject prefix for the proactive notification ticket
Initialize Updated Count
Initialize Variable (Integer)Running count of tickets updated
Check If Outage Command
Condition (If)Proceeds only if the message contains the outage keyword; else Terminate Succeeded
Set Affected Product
Set VariableStrips the keyword + <p>/</p> tags to extract the product name
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_OutageCommandTeamGroupId | String | <your-team-id> | Teams team (group) ID of the outage-command channel |
| flowlibs_OutageCommandChannelId | String | <your-channel-id> | Teams channel ID watched for /outage commands |
| flowlibs_OutageCommandKeyword | String | /outage | Keyword that marks a message as an outage declaration |
| flowlibs_ZendeskSubdomain | String | (subdomain) | Zendesk subdomain, used to build the REST base URL |
| flowlibs_ZendeskAuthHeader | String | Basic base64(email/token:APITOKEN) | Full Authorization header for the HTTP calls |
| flowlibs_OpsNotifyTeamGroupId | String | <your-team-id> | Teams team (group) ID for the ops summary post |
| flowlibs_OpsNotifyChannelId | String | <your-channel-id> | Teams channel ID for the ops summary post |
| flowlibs_CommsLeadEmail | String | alerts@yourcompany.com | Recipient of the summary email |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Zendesk | shared_zendesk | GetItems |
| Microsoft Teams | shared_teams | OnNewChannelMessage PostMessageToConversation |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
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.
- All-clear sweep
- Clone the branch to send a resolution update + reset status to the same matched set when the incident closes.
- Product → tag mapping
- Replace the subject/description contains filter with a Zendesk tag filter for precise scoping.
- Severity templates
- Swap varOutageUpdateTemplate by severity, or add a Switch on a severity token parsed from the command.
- Declaration source
- Replace the Teams trigger with a Microsoft Forms or status-page webhook trigger to declare outages from elsewhere.
- Throttling
- The loop runs sequentially (concurrency 1); raise concurrency for large ticket volumes once rate limits are confirmed.
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.01Outage-command gate
Only proceed when the message contains the outage keyword
EXPR.02Parse product
Extract the product name from the command message HTML
EXPR.03Zendesk base URL
Build the Zendesk REST base URL
EXPR.04Match filter
Keep tickets mentioning the affected product
EXPR.05Per-ticket update URI
Build the per-ticket REST update URL
EXPR.06Comment body (HTTP)
Public comment + status update body for the Zendesk REST PUT
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.