

How to Send Help Scout Ticket Updates to Slack with Power Automate
Automatically posts a Slack message to a designated channel whenever a Help Scout ticket is closed, reopened, or reassigned — no manual monitoring required.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Support teams already inside the Microsoft 365 ecosystem who want ticket status visibility in Slack without switching tools.
Not ideal for
Teams needing sub-60-second alerts — Power Automate's Help Scout connector polls every 1–5 minutes, so use Make or Zapier if instant notification matters.
Sync type
scheduledUse case type
notificationReal-World Example
A 12-person SaaS support team uses this to post updates to #support-ops in Slack whenever a Help Scout ticket is closed or reassigned to a new agent. Before this flow, team leads checked Help Scout manually twice per shift and often missed reassignments for 2–3 hours. Now every status change surfaces in Slack within 5 minutes with the ticket subject, assignee name, and a direct link.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Ticket Subject | subject | |
| Ticket Status | status | |
| Conversation ID | id | |
| Last Updated At | updatedAt | |
| Slack Channel | ||
5 optional fields▸ show
| Assignee First Name | assignee.firstName |
| Assignee Last Name | assignee.lastName |
| Assignee Email | assignee.email |
| Customer Name | customer.fullName |
| Mailbox Name | mailboxId |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Automated cloud flow
Open Power Automate and create a new Automated cloud flow
Go to make.powerautomate.com and sign in with your Microsoft 365 account. In the left sidebar, click 'My flows', then click '+ New flow' at the top. Select 'Automated cloud flow' from the dropdown. A dialog will appear asking you to name the flow and choose a trigger — type a name like 'Help Scout Ticket Status to Slack' and then search for 'Help Scout' in the trigger search box.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' at the top right
- 3Select 'Automated cloud flow'
- 4Name the flow 'Help Scout Ticket Status to Slack'
- 5Search 'Help Scout' in the trigger search field
Trigger picker > Recurrence > Interval: 5, Frequency: Minute
Configure the Help Scout polling trigger via HTTP or custom connector
Since Power Automate has no certified Help Scout connector, select 'Recurrence' as your trigger to run the flow on a schedule. Set the interval to 5 minutes and the frequency to 'Minute'. This creates a polling loop that will query Help Scout's API for tickets modified since the last run. You'll store a timestamp in a variable to track the last checked time.
- 1Search for 'Recurrence' in the trigger picker
- 2Select the 'Recurrence' trigger (Schedule category)
- 3Set Interval to '5'
- 4Set Frequency to 'Minute'
- 5Click 'Show advanced options' and set Start time to now
New step > Variables > Initialize variable
Initialize a variable to store the last-checked timestamp
Click '+ New step' and search for 'Initialize variable'. Add this action and name the variable 'LastChecked' with a type of 'String'. Set the default value to a UTC timestamp from 5 minutes ago using the expression: addMinutes(utcNow(), -5). This variable tells the Help Scout API query where to start looking for updated tickets on each run.
- 1Click '+ New step' below the Recurrence trigger
- 2Search for 'Initialize variable' and select it
- 3Set Name to 'LastChecked'
- 4Set Type to 'String'
- 5Set Value to the expression: addMinutes(utcNow(), -5)
New step > HTTP > Method: GET
Call the Help Scout API to fetch recently modified tickets
Click '+ New step' and search for 'HTTP'. Select the HTTP action. Set the Method to GET and the URI to https://api.helpscout.net/v2/conversations?status=all&modifiedSince=@{variables('LastChecked')}&sortField=modifiedAt&sortOrder=desc. In the Authentication dropdown, select 'Basic' and enter your Help Scout API key as the Username with a blank Password — Help Scout uses API key as Basic auth username.
- 1Click '+ New step' and search for 'HTTP'
- 2Select the 'HTTP' action
- 3Set Method to 'GET'
- 4Paste the Help Scout API URL with the LastChecked variable inserted
- 5Expand Authentication, choose 'Basic', enter your API key as Username and leave Password blank
New step > Data Operations > Parse JSON
Parse the JSON response from Help Scout
Add a 'Parse JSON' action after the HTTP step. Set Content to the Body output from the HTTP action using the dynamic content picker. For the Schema, paste a JSON schema matching Help Scout's conversation list response — include fields like id, subject, status, assignee (name, email), mailboxId, and updatedAt. Click 'Generate from sample' and paste a real API response from Help Scout's API explorer to auto-generate the schema.
- 1Click '+ New step' and search for 'Parse JSON'
- 2Set Content to the 'Body' output from the HTTP step
- 3Click 'Generate from sample'
- 4Paste a sample Help Scout conversation list response
- 5Click 'Done' to generate the schema automatically
New step > Control > Apply to each
Add an Apply to each loop over the conversations array
Add an 'Apply to each' control action. Set the 'Select an output from previous steps' field to the conversations array from the Parse JSON output — this will be something like body/_embedded/conversations. Every item inside this loop represents one changed Help Scout ticket. All subsequent filtering and Slack actions go inside this loop.
- 1Click '+ New step' and search for 'Apply to each'
- 2Select 'Apply to each' under Control
- 3Click inside 'Select an output from previous steps'
- 4In the dynamic content panel, find and select the conversations array from Parse JSON
- 5Confirm the loop block appears on the canvas with an '+ Add an action' area inside it
Apply to each > + Add an action > Control > Condition
Add a Condition to filter by relevant status changes
Inside the Apply to each loop, add a 'Condition' control. Set the left value to the 'status' field from the current conversation item. Set the operator to 'is equal to' and the right value to 'closed'. To catch multiple statuses, click '+ Add row' and add OR conditions for 'active' (reopened) and 'pending' (assigned). This prevents the flow from sending Slack messages for every minor ticket update.
- 1Inside the Apply to each loop, click '+ Add an action'
- 2Search for 'Condition' and select it
- 3Set left value to the 'status' field from Parse JSON dynamic content
- 4Set operator to 'is equal to', right value to 'closed'
- 5Click '+ Add row', change connector to 'Or', add status equals 'active', repeat for 'pending'
Condition (Yes branch) > + Add an action > Slack > Post message > Sign in
Connect your Slack account as a Power Automate Connection
Inside the 'Yes' branch of the Condition, click '+ Add an action' and search for 'Slack'. Select the 'Post message' action. A sign-in prompt will appear — click 'Sign in' to authenticate with Slack using OAuth. Power Automate will open a Slack authorization window in a new tab. Approve the permissions for the Power Automate app to post to channels. After authorizing, the connection appears in the Connections section of Power Automate.
- 1Inside the Yes branch, click '+ Add an action'
- 2Search for 'Slack' and select the Slack connector
- 3Choose 'Post message' action
- 4Click 'Sign in' in the connection prompt
- 5Authorize Power Automate in the Slack OAuth window that opens
Slack > Post message > Channel + Message Text
Configure the Slack message with ticket details
Set the Channel field to the Slack channel where updates should post — type the channel name directly (e.g., #support-ops) or select from the dropdown. In the Message Text field, build a message using dynamic content from the Parse JSON step. Include ticket subject, current status, assignee name, and a direct link to the ticket. Use the format: Ticket Update: [subject] is now [status]. Assigned to: [assignee firstName] [assignee lastName]. View: https://secure.helpscout.net/conversation/[id].
- 1Click the Channel field and type or select your target channel (e.g., #support-ops)
- 2Click into the Message Text field
- 3Type 'Ticket Update: ' then insert the 'subject' dynamic value
- 4Continue building: ' is now ' + status + '. Assigned to: ' + assignee firstName + ' ' + assignee lastName
- 5Append the Help Scout conversation URL using the conversation id field
Canvas top right > Save > Test > Manually > Run flow
Test the flow with a real Help Scout ticket change
Click 'Save' in the top right of the canvas, then click 'Test' (also top right). Choose 'Manually' to trigger a test run immediately. While the flow is waiting, go to Help Scout and close or reassign an existing ticket. Return to Power Automate and click 'Run flow'. Watch the run history — each action block shows green (success) or red (failure) with input/output data you can inspect.
- 1Click 'Save' in the top right
- 2Click 'Test' next to the Save button
- 3Select 'Manually' in the test panel
- 4In Help Scout, close or reassign a ticket to trigger the change
- 5Back in Power Automate, click 'Run flow' and watch the live run log
make.powerautomate.com > My flows > [Flow name] > ... > Turn on
Turn on the flow for production
Once the test passes, go back to 'My flows' in the left sidebar. Find your flow in the list — it will show as 'Off' if you created it in test mode. Click the three-dot menu next to the flow name and select 'Turn on'. The flow will now run every 5 minutes automatically. Monitor the run history for the first hour to confirm it's catching real ticket changes without errors.
- 1Go to My flows in the left sidebar
- 2Find 'Help Scout Ticket Status to Slack' in the list
- 3Click the three-dot '...' menu on the right
- 4Select 'Turn on'
- 5Refresh the page and confirm the flow shows 'On' status
Paste this expression into a Compose action between your Parse JSON step and the Apply to each loop. It formats the raw UTC timestamp from Help Scout into a readable local time and uppercases the status string — both changes make the Slack message more readable without adding extra actions.
JavaScript — Code Step// Power Automate expression — use in a Compose action▸ Show code
// Power Automate expression — use in a Compose action
// Reference output as: outputs('Format_Ticket_Message')
// Place between Parse JSON and Apply to each... expand to see full code
// Power Automate expression — use in a Compose action
// Reference output as: outputs('Format_Ticket_Message')
// Place between Parse JSON and Apply to each
concat(
'Ticket Update: ''',
items('Apply_to_each')?['subject'],
''' is now ',
toUpper(items('Apply_to_each')?['status']),
'. Assigned to: ',
if(
empty(items('Apply_to_each')?['assignee']),
'Unassigned',
concat(
items('Apply_to_each')?['assignee']?['firstName'],
' ',
items('Apply_to_each')?['assignee']?['lastName']
)
),
'. Updated: ',
formatDateTime(items('Apply_to_each')?['updatedAt'], 'MMM d h:mm tt'),
'. View: https://secure.helpscout.net/conversation/',
string(items('Apply_to_each')?['id'])
)Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Power Automate for this if your team runs on Microsoft 365 and you want everything governed under your existing tenant — SSO, DLP policies, audit logs, the works. It's also the right call if your IT team has blocked third-party automation tools and Power Automate is already approved. A third reason: if you're already using SharePoint or Azure Table Storage to persist state, the integration is native and costs nothing extra. The one scenario where you'd pick something else: if your support team needs alerts in under 60 seconds, go straight to Make or Zapier. Power Automate's Help Scout support is polling-only, which means a built-in delay of up to 5 minutes.
On cost: a Power Automate per-user plan costs $15/month and includes 40,000 flow runs. This workflow runs every 5 minutes — that's 8,640 runs per month — leaving you roughly 31,000 runs for other flows. If you're on the free Microsoft 365 plan, you get 750 runs/month, which this flow will blow through in under 3 days. The Power Automate per-flow plan at $100/month is overkill for just this workflow. Compare that to Make's free tier at 1,000 operations/month: a Make scenario for this use case uses 3–4 operations per changed ticket, so at 50 ticket changes per month you'd stay on the free tier indefinitely. Zapier's equivalent Zap costs 1 task per ticket update — at 50 updates/month you're on the free plan too. Power Automate is cheaper only if you're already paying for Microsoft 365 Business and have run quota to spare.
Make has a genuine edge here: it offers an event-based Help Scout module that receives webhooks, meaning Slack messages fire within seconds of a ticket change — no polling loop, no timestamp management. Zapier also has a 'Ticket Status Changed' trigger that's webhook-backed and takes 8 minutes to set up versus the 45 minutes this Power Automate flow requires. n8n's Help Scout node is polling-based like Power Automate, but n8n lets you self-host, which matters for teams with strict data residency requirements. Pipedream's HTTP source can receive Help Scout webhooks directly and transform the payload in Node.js before posting to Slack, which gives you the most flexibility for custom message formatting. Power Automate is still the right choice when Microsoft 365 governance is non-negotiable and your team isn't going to maintain a self-hosted tool or manage a third-party SaaS bill.
Three things you'll hit after setup. First, the null assignee problem — roughly 15–20% of ticket status changes involve tickets with no assigned agent, and Power Automate renders null as the string 'null' in message text. The fix is in the troubleshooting section, but expect to encounter this in your first week. Second, the in-memory variable reset: every time the Recurrence trigger fires, a new flow instance starts and any Initialize variable action sets back to its default — meaning LastChecked always resets to 'now minus 5 minutes' rather than carrying forward the previous run's timestamp. This causes duplicates unless you persist LastChecked externally in SharePoint or Azure. Third, Help Scout's OAuth2 token expires every 48 hours and must be refreshed — Power Automate handles this automatically via the connection refresh mechanism, but if your Microsoft tenant's conditional access policies block token refresh for non-Microsoft apps, the flow will silently fail until you re-authenticate manually.
Ideas for what to build next
- →Route alerts to different Slack channels by mailbox — Add a Switch control inside the Apply to each loop that checks the mailboxId field and posts to a different Slack channel for each Help Scout mailbox — #billing-support, #tech-support, #enterprise — instead of dumping everything into one channel.
- →Add a daily digest instead of per-event messages — Create a second Scheduled flow that runs at 9 AM each day, queries Help Scout for all tickets closed in the last 24 hours, and posts a single formatted summary to Slack — cuts down on notification noise for lower-volume teams.
- →Log every status change to a SharePoint list for reporting — Inside the Yes branch, add a 'Create item' SharePoint action alongside the Slack post — record the ticket ID, status, assignee, and timestamp. After 30 days you'll have a clean dataset to build a Power BI report on ticket resolution trends.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup