

How to Send Help Scout Ticket Assignments to Slack with Power Automate
Polls Help Scout for newly assigned tickets and posts a direct Slack message to the assigned team member with ticket details.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Microsoft 365 teams who already pay for Power Automate and want ticket assignment alerts in Slack without adding another tool.
Not ideal for
Teams that need sub-60-second notification latency — Power Automate polls Help Scout, so expect 1-5 minute delays.
Sync type
scheduledUse case type
notificationReal-World Example
A 12-person customer support team at a B2B SaaS company routes Help Scout tickets by product area. Before this flow, agents refreshed Help Scout every 20-30 minutes to check for new assignments and tickets sat untouched for up to an hour. After setup, each agent gets a Slack DM within 3 minutes of assignment, including the customer name, subject line, and a direct link to the ticket.
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 | |
| Conversation ID | id | |
| Assignee Email | assignee.email | |
| Assigned At Timestamp | assignedAt | |
| Conversation Status | status | |
3 optional fields▸ show
| Assignee First Name | assignee.first |
| Customer Name | primaryCustomer.first |
| Mailbox Name | mailboxId |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Scheduled cloud flow
Create a new Automated cloud flow in Power Automate
Go to make.powerautomate.com and sign in. In the left sidebar, click 'My flows', then click '+ New flow' at the top. Select 'Scheduled cloud flow' from the dropdown — you'll use a recurrence trigger to poll Help Scout on an interval since Help Scout's Power Automate connector does not support instant webhook triggers. Name the flow something like 'Help Scout Ticket Assignment to Slack'.
- 1Click 'My flows' in the left sidebar
- 2Click '+ New flow' at the top of the page
- 3Select 'Scheduled cloud flow' from the dropdown menu
- 4Enter a flow name: 'Help Scout Ticket Assignment to Slack'
- 5Set the recurrence to every 5 minutes, then click 'Create'
Flow designer > + New step > Search: Help Scout > List conversations
Connect your Help Scout account
Click '+ New step' below the Recurrence trigger. In the action search bar, type 'Help Scout' and select the Help Scout connector. Choose the action 'List conversations'. A 'Sign in' prompt will appear — click it to authenticate with your Help Scout credentials. Power Automate stores this as a named Connection you can reuse across flows.
- 1Click '+ New step' under the Recurrence trigger card
- 2Type 'Help Scout' in the search bar
- 3Select the 'Help Scout' connector from the results
- 4Choose 'List conversations' as the action
- 5Click 'Sign in' and enter your Help Scout email and password
Flow designer > List conversations card > Status / Assigned / Sort field
Filter conversations to assigned status
Inside the 'List conversations' action card, set the 'Status' field to 'active' and set 'Assigned' to 'true'. These filters narrow results to conversations that have been assigned to a team member. You'll also want to set 'Sort field' to 'createdAt' and 'Sort order' to 'desc' so the most recently assigned tickets appear first in the response.
- 1In the 'Status' dropdown, select 'active'
- 2Set 'Assigned' to 'true'
- 3Set 'Sort field' to 'createdAt'
- 4Set 'Sort order' to 'desc'
- 5Leave 'Page' and 'Page size' at defaults (page 1, size 25)
Flow designer > + New step > Data Operation > Filter array
Add a Filter array step to catch only recently assigned tickets
The List conversations action returns up to 25 conversations — many of which were assigned in previous polling cycles. Add a 'Filter array' action (found under 'Data Operation') to isolate tickets assigned in the last 5 minutes. This prevents duplicate Slack notifications from firing on old assignments every time the flow runs.
- 1Click '+ New step'
- 2Search for 'Filter array' and select it under 'Data Operation'
- 3In the 'From' field, select the dynamic content 'value' from the List conversations output
- 4In the left condition field, select 'assignedAt' from dynamic content
- 5Set the operator to 'is greater than' and enter the expression: addMinutes(utcNow(), -5)
Flow designer > + New step > Control > Apply to each
Add an Apply to each loop over filtered tickets
Because multiple tickets may be assigned within the 5-minute window, you need to loop over each result and send a Slack message per ticket. Add an 'Apply to each' action and point it at the 'Body' output of the Filter array step. All remaining steps go inside this loop.
- 1Click '+ New step'
- 2Search for 'Apply to each' under 'Control'
- 3In the 'Select an output from previous steps' field, pick 'Body' from the Filter array output
- 4Confirm the loop card expands with an '+ Add an action' button inside it
Flow designer > Apply to each > + Add an action > Data Operation > Parse JSON
Extract the assignee's email using a Parse JSON action
Help Scout's List conversations response nests assignee details inside a 'assignee' object. Add a 'Parse JSON' action inside the Apply to each loop to cleanly extract the assignee's email, first name, and last name. You'll use this email to look up the Slack user in the next step. Generate the schema by clicking 'Generate from sample' and pasting a sample Help Scout conversation object.
- 1Inside the Apply to each loop, click '+ Add an action'
- 2Search for 'Parse JSON' and select it under 'Data Operation'
- 3In the 'Content' field, select the current item from dynamic content (the loop item)
- 4Click 'Generate from sample' and paste a sample Help Scout conversation JSON object
- 5Click 'Done' to auto-generate the schema
Flow designer > Apply to each > + Add an action > Slack > Look up a user by email
Look up the Slack user by email
Add a Slack action inside the loop to resolve the assignee's Help Scout email to a Slack user ID. Search for the Slack connector and select 'Look up a user by email'. Pass the 'email' field from the Parse JSON output. This returns the Slack user ID (e.g., U012AB3CD) needed to send a direct message — you cannot DM someone using just their email address.
- 1Inside the Apply to each loop, click '+ Add an action'
- 2Search for 'Slack' in the connector search bar
- 3Select 'Look up a user by email' from the Slack action list
- 4Sign in to your Slack workspace when prompted — select the correct workspace from the dropdown
- 5In the 'Email' field, insert the 'email' dynamic content from the Parse JSON output
Flow designer > Apply to each > + Add an action > Control > Condition
Add a Condition to handle unmatched Slack users
The user lookup will fail silently if no Slack account matches the Help Scout email — the flow won't error, but the next step will try to DM a null user ID. Add a 'Condition' action to check whether the 'User ID' from the lookup step is not empty before proceeding. Put the Slack DM action in the 'Yes' branch and a fallback (or nothing) in the 'No' branch.
- 1Inside the Apply to each loop, click '+ Add an action'
- 2Search for 'Condition' under 'Control' and add it
- 3In the left field of the condition, select 'User ID' from the Slack lookup dynamic content
- 4Set the operator to 'is not equal to'
- 5Leave the right field blank (empty string)
Flow designer > Apply to each > Condition > Yes branch > + Add an action > Slack > Send a direct message
Send the Slack direct message in the Yes branch
Inside the 'Yes' branch of the Condition, add the Slack action 'Send a direct message'. Set the 'User Name or ID' to the 'User ID' from the lookup step. Write the message text using a mix of static text and dynamic content fields from Parse JSON: ticket subject, ticket ID, assignee first name, and the Help Scout conversation URL. Keep the message short — one line of context plus the link.
- 1In the 'Yes' branch, click '+ Add an action'
- 2Search for 'Slack' and select 'Send a direct message'
- 3In 'User Name or ID', insert the 'User ID' dynamic token from the Slack lookup step
- 4In the 'Message Text' field, type: 'Hi [firstName], you've been assigned ticket #[id]: "[subject]". View it here: https://secure.helpscout.net/conversation/[id]'
- 5Replace bracketed placeholders with the matching dynamic content tokens from Parse JSON
channel: {{channel}}
ts: {{ts}}
Flow designer > Save > Test > Manually > Run flow
Save and test the flow
Click 'Save' in the top right of the flow designer. Once saved, click 'Test' and select 'Manually' to trigger an immediate run. Assign a Help Scout ticket to a team member who has a matching Slack account, then click 'Run flow'. Watch the flow run detail page — each step shows green checkmarks on success or red X marks with error detail on failure.
- 1Click 'Save' in the top right corner
- 2Click 'Test' next to the Save button
- 3Select 'Manually' when asked how to trigger the test
- 4Assign a real Help Scout ticket to a team member before clicking 'Run flow'
- 5Click 'Run flow' and watch the run detail expand step by step
make.powerautomate.com > My flows > [Flow name] > 28-day run history
Enable the flow and verify the recurrence schedule
After a successful test, your flow is already turned on — the recurrence will fire automatically every 5 minutes from this point forward. Go to 'My flows', find your flow, and confirm the status shows 'On'. Click into the flow detail page and check the '28-day run history' panel to verify the first scheduled run completed without errors.
- 1Navigate to 'My flows' in the left sidebar
- 2Locate 'Help Scout Ticket Assignment to Slack' in your flow list
- 3Confirm the status toggle shows 'On'
- 4Click the flow name to open the detail page
- 5Check the '28-day run history' section and confirm runs show as 'Succeeded'
This expression goes in the Filter array condition's right-hand value field. It dynamically calculates the cutoff timestamp based on your recurrence interval, so you don't have to hardcode a fixed time. Paste it into the 'Enter custom value' box after clicking the expression editor (fx icon) in the Filter array condition.
JavaScript — Code Step// Power Automate expression for Filter array condition right-hand value▸ Show code
// Power Automate expression for Filter array condition right-hand value // Paste into the expression editor (fx) for the 'is greater than' condition addMinutes(utcNow(), -5)
... expand to see full code
// Power Automate expression for Filter array condition right-hand value
// Paste into the expression editor (fx) for the 'is greater than' condition
addMinutes(utcNow(), -5)
// Full condition reads:
// assignedAt [is greater than] addMinutes(utcNow(), -5)
// To make the window match your recurrence interval exactly, change -5 to
// match whatever interval you set on the Recurrence trigger.
// Example for 3-minute polling:
// addMinutes(utcNow(), -3)
// Bonus: format the assignedAt field for display in the Slack message
formatDateTime(items('Apply_to_each')?['assignedAt'], 'h:mm tt')
// Output example: 10:32 AMGoing 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 already pays for Microsoft 365 E3/E5 or a Power Automate per-user plan. The Help Scout connector exists, the Slack connector exists, and your IT department probably already manages both connections centrally. If your team has no Microsoft licensing and isn't already in the Power Automate ecosystem, pay $9/month for Make instead — you'll spend less time fighting premium connector paywalls.
Real cost math: this flow runs every 5 minutes, which is 288 runs per day and roughly 8,640 runs per month. Power Automate counts each action inside a run separately — you have 5-6 actions per run, so that's around 51,840 action executions per month. The per-user plan includes 40,000 non-premium actions and 500 premium connector actions per month. Help Scout and Slack are both premium here, so you'll blow through the premium action allotment fast on a busy team. A per-flow plan at $100/month removes those caps for this single flow. Make handles the same workflow for free under 1,000 operations/month, or $9/month up to 10,000. For small teams, Make is cheaper by $91-$106/month.
Honest comparison: Make has a native HTTP module that can hit Help Scout's API directly using an API key, bypassing the connector authentication problem entirely — no SSO issues, no password-based auth. Zapier's Help Scout trigger fires on 'New Conversation' and 'Conversation Assigned' as distinct events, meaning you don't need to build a polling filter at all; it's a cleaner setup in about 10 minutes. n8n's Help Scout node supports webhook-style triggers in self-hosted setups, getting you closer to real-time. Pipedream has a Help Scout source that uses webhooks natively — notifications arrive in under 30 seconds versus Power Automate's 5-minute lag. Power Automate wins if Microsoft governance, SSO policy, and centralized connection management matter more than cost or latency.
Three things you'll hit after go-live: first, the Help Scout 'assignedAt' field occasionally returns null for tickets that were auto-assigned by a workflow rule rather than manually assigned — your Filter array will silently discard these. Add a null check in the condition or log them to a SharePoint list for review. Second, Slack's 'Look up a user by email' action returns a 200 response even when no user is found — it just returns an empty object instead of an error. That's why the Condition step is non-optional; without it, Power Automate will try to DM an empty string and fail at the last step. Third, Power Automate scheduled flows that consistently return zero results don't generate errors — they show as 'Succeeded' in run history. Build a simple counter action that logs zero-result runs somewhere visible, or you won't know if the filter broke and you've been missing assignments for three days.
Ideas for what to build next
- →Add a fallback channel notification for unmatched users — In the 'No' branch of the Condition step, post a message to a shared Slack channel like #support-ops when no Slack user is found for an assignee email. This prevents silent failures and gives a team lead visibility to manually reassign.
- →Include ticket priority in the Slack message — Help Scout tags conversations with custom fields — pull the priority tag from the 'tags' array in the API response and prepend an emoji to the Slack message (🔴 for urgent, 🟡 for high) so agents can triage at a glance without opening the ticket.
- →Build a daily digest instead of per-ticket DMs — Change the recurrence to once per day at 9am, remove the 5-minute filter, and group all tickets assigned to each agent in the last 24 hours into a single Slack message. This reduces notification noise for high-volume teams while maintaining accountability.
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