

How to Send Help Scout Tickets to Slack with Power Automate
When a new conversation is created in Help Scout, Power Automate polls the Help Scout API and posts a formatted notification to a Slack channel with the ticket subject, customer name, and a direct link.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Microsoft 365 shops that already have Power Automate Premium and want ticket alerts in Slack without adding another tool.
Not ideal for
Teams that need true real-time alerts under 60 seconds — Help Scout has no native webhook support in Power Automate, so the minimum delay is 1–5 minutes.
Sync type
scheduledUse case type
notificationReal-World Example
A 12-person e-commerce support team handles 80–120 Help Scout tickets per day across two inboxes. Before this flow, agents refreshed Help Scout manually and urgent tickets sat unread for 10–15 minutes during busy periods. After setup, every new ticket posts to #support-alerts in Slack with the customer name, subject, and inbox — agents respond 4–6 minutes faster on average.
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 | |
| Created At | createdAt | |
6 optional fields▸ show
| Customer First Name | _embedded.customer.firstName |
| Customer Last Name | _embedded.customer.lastName |
| Customer Email | _embedded.customer.email |
| Mailbox ID | mailboxId |
| Status | status |
| Thread Count | threads |
Step-by-Step Setup
make.powerautomate.com > My flows > + New flow > Scheduled cloud flow
Open Power Automate and create a new Scheduled flow
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 — this is what powers the polling loop. Help Scout does not have a real-time trigger in Power Automate's connector library, so a scheduled flow running every 1–5 minutes is the correct architecture here.
- 1Go to make.powerautomate.com and sign in
- 2Click 'My flows' in the left sidebar
- 3Click '+ New flow' at the top of the page
- 4Select 'Scheduled cloud flow' from the dropdown menu
- 5Name the flow something like 'Help Scout → Slack: New Ticket Alerts'
Flow canvas > Recurrence trigger block
Configure the recurrence trigger interval
In the flow setup dialog, set 'Repeat every' to 1 and choose 'Minute' from the unit dropdown. Click 'Create'. The canvas opens with a Recurrence trigger block already placed. Click the Recurrence block to expand it — confirm the interval shows 1 minute. You can increase this to 5 minutes if your team doesn't need near-real-time alerts, which will reduce your action runs and keep costs down.
- 1Set 'Repeat every' to 1
- 2Select 'Minute' from the unit dropdown
- 3Click 'Create' to open the flow canvas
- 4Click the Recurrence block to confirm the interval is set correctly
Flow canvas > + New step > Search 'HTTP' > HTTP (Microsoft)
Add an HTTP action to call the Help Scout Conversations API
Power Automate does not have a native Help Scout connector, so you'll call the Help Scout API directly using the HTTP action. Click '+ New step' below the Recurrence block. Search for 'HTTP' in the action picker and select the 'HTTP' action (published by Microsoft). You'll configure it to call the Help Scout Mailboxes API endpoint and filter for conversations created in the last polling window.
- 1Click '+ New step' below the Recurrence block
- 2Type 'HTTP' in the search bar
- 3Select the 'HTTP' action published by Microsoft (not an HTTP webhook trigger)
- 4Set Method to 'GET'
- 5Paste the URL: https://api.helpscout.net/v2/conversations?status=active&sortField=createdAt&sortOrder=desc&pageSize=10
HTTP action block > Authentication > Type: Basic
Add Help Scout API authentication to the HTTP action
Help Scout uses OAuth 2.0 for API access. In the HTTP action block, expand the 'Authentication' section at the bottom. Set Authentication type to 'Basic'. In the Username field, enter your Help Scout API key (found in Help Scout under Your Profile > API Keys). Leave the Password field blank — Help Scout's Basic auth scheme uses the API key as the username with an empty password. This is correct and intentional.
- 1Click 'Show advanced options' inside the HTTP action block
- 2Find the 'Authentication' dropdown and set it to 'Basic'
- 3In the 'Username' field, enter your Help Scout API key
- 4Leave the 'Password' field completely empty
- 5Click elsewhere to confirm
Flow canvas > + New step > Data Operation > Parse JSON
Add a Parse JSON action to extract ticket fields
The HTTP action returns raw JSON from Help Scout. You need to parse it before you can map individual fields like subject or customer name to your Slack message. Click '+ New step', search for 'Parse JSON', and select the 'Data Operation - Parse JSON' action. In the Content field, click inside and select 'Body' from the dynamic content panel — this is the HTTP response body. For the Schema, click 'Generate from sample' and paste a sample Help Scout conversations API response.
- 1Click '+ New step'
- 2Search for 'Parse JSON' and select 'Data Operation - Parse JSON'
- 3Click in the 'Content' field and select 'Body' from the dynamic content panel on the right
- 4Click 'Generate from sample'
- 5Paste a sample Help Scout /v2/conversations response and click 'Done'
Flow canvas > + New step > Control > Apply to each
Add an Apply to Each loop over the conversations array
The Help Scout API returns an array of conversations. You need to loop over them to process each ticket. Click '+ New step', search for 'Apply to each', and select it. In the 'Select an output from previous steps' field, click into it and from the dynamic content panel select the conversations array from your Parse JSON output — it will likely appear as '_embedded conversations' or similar depending on your schema. All subsequent steps for filtering and posting to Slack go inside this loop.
- 1Click '+ New step'
- 2Search for 'Apply to each' and select it under Control
- 3Click in the 'Select an output from previous steps' field
- 4From the dynamic content panel, select the conversations array from the Parse JSON output
- 5Confirm the loop block expands to show an 'Add an action' button inside it
Apply to each loop > Add an action > Control > Condition
Add a Condition to filter only tickets created in the last polling window
Without a filter, you'll re-notify on the same tickets every minute. Inside the Apply to Each loop, click 'Add an action' and select 'Condition' under Control. Set the left value to the createdAt field from the current conversation item. Set the operator to 'is greater than'. For the right value, use the expression: addMinutes(utcNow(), -2). This compares each ticket's creation time against 2 minutes ago, catching only tickets created since your last poll. Adjust -2 to match your recurrence interval.
- 1Inside the Apply to each loop, click 'Add an action'
- 2Search for 'Condition' and select it under Control
- 3In the left value field, select 'createdAt' from the dynamic content panel
- 4Set the operator dropdown to 'is greater than'
- 5In the right value field, click 'Expression' tab and type: addMinutes(utcNow(), -2) then click OK
Condition > If yes > Add an action > Slack > Post message (V2)
Connect your Slack account and configure the notification action
In the 'If yes' branch of the Condition, click 'Add an action'. Search for 'Slack' and select 'Post message (V2)' — this is the current stable Slack action in Power Automate. Click 'Sign in' to create a new Slack connection. A browser popup will open asking you to authorize Power Automate to post to your Slack workspace. Select your workspace, click Allow, and the connection will appear in the Connections sidebar.
- 1Inside the 'If yes' branch, click 'Add an action'
- 2Search for 'Slack' in the action picker
- 3Select 'Post message (V2)' from the Slack connector
- 4Click 'Sign in' and authorize Power Automate in the Slack OAuth popup
- 5Select your Slack workspace and click 'Allow'
Slack > Post message (V2) > Channel + Message Text
Map Help Scout fields to the Slack message
In the Post message (V2) action, set the Channel field to your target channel (e.g. #support-alerts). In the Message Text field, build your notification using dynamic content from the Parse JSON output. A clear format is: '🎫 New ticket: [subject] | From: [customer firstName] [customer lastName] | Inbox: [mailboxId] | View: https://secure.helpscout.net/conversation/[id]'. Click inside each part of the message and insert the matching dynamic content token.
- 1Click the Channel field and type or select your target Slack channel (e.g. #support-alerts)
- 2Click in the Message Text field
- 3Type '🎫 New ticket: ' then select 'subject' from the dynamic content panel
- 4Type ' | From: ' then select 'firstName' and 'lastName' from the customer object
- 5Type ' | View: https://secure.helpscout.net/conversation/' then select 'id'
Flow canvas > Save > Test > Manually > Test
Save, test, and verify the first Slack notification
Click 'Save' in the top right of the flow canvas. Once saved, click 'Test' (top right), select 'Manually' and click 'Test' again. Power Automate will run the flow immediately. While it runs, create a test ticket in Help Scout from a different browser tab. After the flow completes, check the run history — click each action block to see its inputs and outputs. Then open Slack and confirm the notification appeared in your target channel.
- 1Click 'Save' in the top right
- 2Click 'Test', select 'Manually', then click 'Test' again
- 3In a separate browser tab, create a new Help Scout conversation
- 4Return to Power Automate and watch the run complete
- 5Open your Slack channel and confirm the notification message appears
My flows > [flow name] > 28 day run history
Turn the flow on and monitor the first 24 hours
After a successful test, click the back arrow to return to the flow detail page. Confirm the flow status toggle shows 'On'. Power Automate will now run every minute automatically. For the first 24 hours, check the run history once or twice to make sure no steps are failing. Pay attention to the HTTP action — if Help Scout rate-limits you, you'll see 429 errors there. The run history is at My flows > [your flow name] > 28 day run history.
- 1Click the back arrow from the canvas to the flow detail page
- 2Confirm the status toggle shows 'On'
- 3Check My flows > [flow name] > '28 day run history' after 10 minutes
- 4Click individual run entries to expand action-level inputs and outputs
- 5Look for any red failed steps, especially on the HTTP action
Paste this expression into a 'Compose' action placed before the Slack step, inside the Apply to Each loop. It builds a formatted message string and handles cases where the customer name is missing, falling back to the email address. Reference the Compose action's output in your Slack message field instead of manually concatenating tokens.
JavaScript — Code Stepif(▸ Show code
if(
and(
not(empty(items('Apply_to_each')?['_embedded']?['customer']?['firstName'])),... expand to see full code
if(
and(
not(empty(items('Apply_to_each')?['_embedded']?['customer']?['firstName'])),
not(empty(items('Apply_to_each')?['_embedded']?['customer']?['lastName']))
),
concat(
'🎫 New ticket: ',
items('Apply_to_each')?['subject'],
' | From: ',
items('Apply_to_each')?['_embedded']?['customer']?['firstName'],
' ',
items('Apply_to_each')?['_embedded']?['customer']?['lastName'],
' | View: https://secure.helpscout.net/conversation/',
string(items('Apply_to_each')?['id'])
),
concat(
'🎫 New ticket: ',
items('Apply_to_each')?['subject'],
' | From: ',
coalesce(items('Apply_to_each')?['_embedded']?['customer']?['email'], 'Unknown customer'),
' | 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 organization is already paying for Microsoft 365 E3/E5 or Dynamics 365, because Power Automate Plan 2 is often included and the marginal cost is zero. It also makes sense if your IT department controls app approvals — getting Zapier or Make approved can take weeks, while Power Automate is already in the Microsoft tenant. A third reason: if other parts of your support workflow touch SharePoint, Teams, or Azure, keeping this flow in Power Automate avoids credential sprawl. The one scenario where you'd pick something else immediately: if you don't have a Premium license and aren't willing to buy one. The HTTP action is non-negotiable here because Help Scout has no native Power Automate connector, and HTTP is Premium-only. In that case, use Make — it handles the same flow for free.
At a 1-minute recurrence, this flow consumes 1,440 action runs per day just from the Recurrence trigger and HTTP call alone. Add the Parse JSON, Apply to Each, Condition, and Slack action and you're looking at roughly 5–7 actions per run, or 7,200–10,080 actions per day. Power Automate Plan 1 includes 5,000 actions per month — this workflow will exceed that in under 12 hours. Plan 2 includes 40,000 actions per month, which covers about 5 days at 1-minute polling. For sustained use, set recurrence to 5 minutes (1,440–2,880 actions/day, ~50,000/month) and upgrade to the Per Flow plan at $15/month per flow. Make's free tier handles 1,000 operations/month; their Core plan at $9/month covers 10,000 — cheaper for the same volume. This is a real cost consideration, not a footnote.
Zapier has a native Help Scout trigger ('New Conversation') that is true polling at 1–15 minute intervals depending on your plan — no HTTP action needed, no JSON parsing, no Apply to Each loop. Setup takes 6 minutes and there's zero duplicate risk because Zapier tracks which conversations it has already processed using its own internal cursor. That's a genuine advantage. Make also has a Help Scout module with a Watch Conversations trigger that handles pagination and deduplication natively. n8n has a Help Scout node in the community collection, though it's less mature. Pipedream can hit the Help Scout API with a scheduled source and gives you full Node.js for message formatting. Power Automate wins here only if you're in the Microsoft ecosystem and have the license already — for a standalone support notification workflow, Zapier or Make are faster to set up and cheaper to run.
Three things you'll hit after setup. First, the createdAt timestamp comparison breaks when Power Automate coerces the string to a different type than expected — you'll see the Condition always evaluate to false and wonder why no messages appear. The fix is wrapping the value in formatDateTime() as described in troubleshooting. Second, Help Scout's API returns a maximum of 50 conversations per page. If your team receives more than 50 tickets within a single polling interval (unlikely at 1-minute polls, but possible during incidents), you'll miss tickets beyond page 1. Add pagination logic with a Do Until loop checking the _links.next property if your volume could hit that ceiling. Third, the Slack 'Post message (V2)' action occasionally drops the dynamic content reference if you edit the flow after initial save and the Parse JSON schema has changed. If Slack messages suddenly show blank fields, re-open the Post message action and re-select the dynamic content tokens — they silently lose their binding on schema changes.
Ideas for what to build next
- →Route tickets by mailbox to separate Slack channels — Add a Switch control inside the Apply to Each loop that checks the mailboxId field and posts to #billing-alerts, #tech-support, or #general-support depending on which inbox the ticket landed in. Takes about 15 minutes to configure once the base flow is working.
- →Add urgency detection with keyword filtering — Add a Condition before the Slack step that checks whether the ticket subject contains words like 'urgent', 'broken', or 'refund' using the contains() expression, then posts to a separate #urgent-tickets channel with an @here mention for those tickets.
- →Post a daily digest instead of per-ticket alerts — Change the Recurrence to once per day at 9 AM, remove the createdAt time filter, and use a longer polling window to collect all tickets from the previous 24 hours. Use a Power Automate array variable to accumulate ticket subjects and post one consolidated Slack message instead of individual notifications.
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