Intercom Daily Support Digest
Each morning the flow pulls Intercom conversation metrics (new, open, closed, median first-response and resolution times, CSAT, by team) and posts an HTML scorecard to a Teams support channel plus an email to the manager. Flags rising backlog or slipping response times. A simple, no-click daily readout of support health.
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 gives a daily, no-click readout of Intercom support health. Each morning at 08:00 it pulls conversation metrics — new, open, closed, average first-response and resolution times, CSAT, and open backlog by team — builds an HTML scorecard, posts it to a Teams support channel, and emails the support manager. It compares today's numbers against yesterday's snapshot (stored in Dataverse) and raises banners when the backlog is rising or first response is slipping.
Status: BUILT (CF-535) · Flow ships Off (demo). Going live needs only connection auth + env-var values.
Why it matters: Support health usually lives in dashboards nobody opens. A concise scorecard pushed to Teams and inbox makes trends visible and prompts action at standup.
Use Case
A support team wants a consistent morning summary of volume and response performance so standups focus on hotspots instead of pulling numbers by hand. The Dataverse snapshot also seeds a Power BI trend over time.
Flow Architecture
Daily Morning
Recurrence (Day/1, 08:00 EST)Daily scheduled run that builds the Intercom support scorecard.
Initialize Variables
Initialize Variable (15)Correlation id (guid()), Unix now/since window, backlog & SLA thresholds, Intercom base/token/version, six accumulators, and the team-rows HTML buffer.
Search Open Conversations
HTTP — POST /conversations/searchAll OPEN conversations (state = open, per_page 150) = current backlog.
Search Recent Conversations
HTTP — POST /conversations/searchConversations updated within the lookback window (updated_at > since) = source of new/closed/response/CSAT.
Get Teams
HTTP — GET /teamsTeam id → name map for the by-team table.
Normalize & Count
Compose / QueryCoalesce each response to an array; compute open backlog count, new (created in window) and closed (last_close_at in window).
Accumulate Metrics
Foreach Recent (sequential, 3 If branches)Accumulate first-response seconds, resolution seconds and CSAT (rating ≥ 4).
Compose Averages
ComposeAverage FRT and resolution in minutes; CSAT %.
Group Backlog By Team
Select / Compose / ForeachGroup open backlog by team (distinct via union), look up team name, build HTML rows.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_IntercomApiBase | String | https://api.intercom.io | Intercom REST base URL. |
| flowlibs_IntercomApiToken | String | <configure> | Intercom access token (conversation read scope). |
| flowlibs_IntercomVersion | String | 2.11 | Intercom-Version header value. |
| flowlibs_IntercomWorkspaceId | String | <configure> | Workspace id for the Open Intercom inbox link. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Support Teams team (group) id. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Support Teams channel id. |
| flowlibs_ManagerEmail | String | manager@contoso.com | Digest email recipient. |
| flowlibs_BacklogBanner | String | 50 | Open count at/above which the backlog banner turns RED. |
| flowlibs_IntercomSlaMinutes | String | 30 | First-response SLA (min); avg above this flags slipping response. |
| flowlibs_DigestLookbackHours |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| HTTP | http | POST /conversations/search GET /teams |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord |
| Microsoft Teams | shared_teams | 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.
- Schedule
- Change the Daily Morning recurrence (hour/timezone) for a different readout time, or add a second afternoon run.
- Thresholds
- Tune flowlibs_BacklogBanner, flowlibs_IntercomSlaMinutes and flowlibs_DigestLookbackHours without touching logic.
- Pagination
- The searches fetch one page (150). For high-volume workspaces, add a Do-Until loop following Intercom's pages.next cursor.
- True median
- Replace the average composes with an Office Script / Azure Function sort step if a median is required.
- Per-agent leaderboard
- Add a group-by on admin_assignee_id (same pattern as the by-team loop) for resolved-per-agent.
- Power BI
- Point a dataset at flowlibs_intercomsupportsnapshots for a historical trend dashboard.
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.01Unix now
Convert ticks(utcNow()) to Unix seconds.
EXPR.02Window lower bound
Lookback window start in Unix seconds.
EXPR.03First-response avg (min)
Average first-response time in minutes.
EXPR.04CSAT %
Satisfied over rated, as a percentage.
EXPR.05Backlog banner
RED when open count exceeds the threshold.
EXPR.06Distinct teams
Distinct team ids via union of a list with itself.
EXPR.07Closed-in-window filter
Conversation closed within the lookback window.
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.