Intermediate~15 min setupCommunication & SupportVerified April 2026
Slack logo
Help Scout logo

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

scheduled

Use case type

notification

Real-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.

/mo
505005K50K

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

Skip the setup

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.

Help Scout account with at least one active Mailbox and API key generated (Your Profile > API Keys in Help Scout)
Slack workspace where you have permission to add apps and post to the target channel
Power Automate Premium license (Plan 1 or Plan 2) — the HTTP action used to call Help Scout's API is a Premium connector
Help Scout API key with read access to Conversations and Mailboxes scopes
Slack channel already created where notifications will be posted (e.g. #support-alerts)

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Ticket Subjectsubject
Conversation IDid
Created AtcreatedAt
6 optional fields▸ show
Customer First Name_embedded.customer.firstName
Customer Last Name_embedded.customer.lastName
Customer Email_embedded.customer.email
Mailbox IDmailboxId
Statusstatus
Thread Countthreads

Step-by-Step Setup

1

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.

  1. 1Go to make.powerautomate.com and sign in
  2. 2Click 'My flows' in the left sidebar
  3. 3Click '+ New flow' at the top of the page
  4. 4Select 'Scheduled cloud flow' from the dropdown menu
  5. 5Name the flow something like 'Help Scout → Slack: New Ticket Alerts'
What you should see: A dialog appears asking you to set the flow name, start time, and recurrence interval. You should see fields for 'Repeat every' with a number and unit (minutes, hours, etc.).
Common mistake — Do NOT pick 'Automated cloud flow' — Help Scout does not have a supported event trigger in Power Automate's connector catalog. Automated flow will leave you stuck at the trigger picker with no usable Help Scout option.
2

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.

  1. 1Set 'Repeat every' to 1
  2. 2Select 'Minute' from the unit dropdown
  3. 3Click 'Create' to open the flow canvas
  4. 4Click the Recurrence block to confirm the interval is set correctly
What you should see: The Recurrence block on the canvas shows 'Every 1 Minute'. The canvas is otherwise empty below it, ready for your next action.
Common mistake — Power Automate's minimum recurrence interval is 1 minute for cloud flows on most plans. If you set it lower, the flow will silently default back to 1 minute without warning you.
Power Automate
+
click +
search apps
Slack
SL
Slack
Configure the recurrence tri…
Slack
SL
module added
3

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.

  1. 1Click '+ New step' below the Recurrence block
  2. 2Type 'HTTP' in the search bar
  3. 3Select the 'HTTP' action published by Microsoft (not an HTTP webhook trigger)
  4. 4Set Method to 'GET'
  5. 5Paste the URL: https://api.helpscout.net/v2/conversations?status=active&sortField=createdAt&sortOrder=desc&pageSize=10
What you should see: An HTTP action block appears on the canvas with Method set to GET and your URL filled in. You'll see additional fields for Headers, Queries, and Body below the URL.
Common mistake — The HTTP action is only available on Power Automate Premium plans (Plan 1 or Plan 2). If you're on the free or seeded Microsoft 365 plan, this action will appear grayed out. There is no workaround — you need a Premium license or use a different platform.
4

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.

  1. 1Click 'Show advanced options' inside the HTTP action block
  2. 2Find the 'Authentication' dropdown and set it to 'Basic'
  3. 3In the 'Username' field, enter your Help Scout API key
  4. 4Leave the 'Password' field completely empty
  5. 5Click elsewhere to confirm
What you should see: The HTTP block shows Authentication: Basic with a filled Username field. Power Automate will base64-encode the credentials automatically on each run.
Common mistake — Do not paste your API key into the URL as a query parameter — Help Scout's API will reject it. Basic auth via the header is the only accepted method for the v2 REST API.
5

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.

  1. 1Click '+ New step'
  2. 2Search for 'Parse JSON' and select 'Data Operation - Parse JSON'
  3. 3Click in the 'Content' field and select 'Body' from the dynamic content panel on the right
  4. 4Click 'Generate from sample'
  5. 5Paste a sample Help Scout /v2/conversations response and click 'Done'
What you should see: The Parse JSON block shows a populated Schema section with properties like _embedded, conversations, subject, customer, createdAt, and id. Dynamic content from this block will now be available to downstream steps.
Common mistake — If your sample response includes null fields, the generated schema may mark those properties as non-required. This can cause the flow to fail at runtime if the field is absent. Manually set 'required' only on fields you know will always be present — subject, id, and createdAt are safe bets.
Slack fields
text
user
channel
ts
thread_ts
available as variables:
1.props.text
1.props.user
1.props.channel
1.props.ts
1.props.thread_ts
6

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.

  1. 1Click '+ New step'
  2. 2Search for 'Apply to each' and select it under Control
  3. 3Click in the 'Select an output from previous steps' field
  4. 4From the dynamic content panel, select the conversations array from the Parse JSON output
  5. 5Confirm the loop block expands to show an 'Add an action' button inside it
What you should see: An 'Apply to each' loop block appears containing an 'Add an action' placeholder inside it. The input field at the top of the loop shows the conversations array reference.
7

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.

  1. 1Inside the Apply to each loop, click 'Add an action'
  2. 2Search for 'Condition' and select it under Control
  3. 3In the left value field, select 'createdAt' from the dynamic content panel
  4. 4Set the operator dropdown to 'is greater than'
  5. 5In the right value field, click 'Expression' tab and type: addMinutes(utcNow(), -2) then click OK
What you should see: The Condition block shows: [createdAt] is greater than [addMinutes(utcNow(), -2)]. The block splits into a 'If yes' branch and an 'If no' branch below it.
Common mistake — The addMinutes(utcNow(), -2) expression uses UTC. If Help Scout returns timestamps in a different timezone format, this comparison will fail silently — no error, just missed notifications. Confirm Help Scout's createdAt is ISO 8601 UTC (it is, by default) before relying on this filter.
Slack
SL
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Help Scout
HE
notified
8

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.

  1. 1Inside the 'If yes' branch, click 'Add an action'
  2. 2Search for 'Slack' in the action picker
  3. 3Select 'Post message (V2)' from the Slack connector
  4. 4Click 'Sign in' and authorize Power Automate in the Slack OAuth popup
  5. 5Select your Slack workspace and click 'Allow'
What you should see: The Slack connection shows a green checkmark and your workspace name appears in the connection field. The Post message (V2) action expands to show Channel and Message fields.
Common mistake — Power Automate's Slack connector posts as a bot user named 'Power Automate'. You cannot change this display name from within Power Automate — if you need a custom bot name like 'Support Bot', you'll need to create a Slack app and use the HTTP action to call Slack's chat.postMessage API directly instead.
Power Automate settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Power Automate
popup window
Connected
green checkmark
9

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.

  1. 1Click the Channel field and type or select your target Slack channel (e.g. #support-alerts)
  2. 2Click in the Message Text field
  3. 3Type '🎫 New ticket: ' then select 'subject' from the dynamic content panel
  4. 4Type ' | From: ' then select 'firstName' and 'lastName' from the customer object
  5. 5Type ' | View: https://secure.helpscout.net/conversation/' then select 'id'
What you should see: The Message Text field shows a mix of plain text and blue dynamic content tokens. The preview should read something like: '🎫 New ticket: [subject] | From: [firstName] [lastName] | View: https://secure.helpscout.net/conversation/[id]'.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
10

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.

  1. 1Click 'Save' in the top right
  2. 2Click 'Test', select 'Manually', then click 'Test' again
  3. 3In a separate browser tab, create a new Help Scout conversation
  4. 4Return to Power Automate and watch the run complete
  5. 5Open your Slack channel and confirm the notification message appears
What you should see: The flow run history shows all green checkmarks. The Slack channel receives a message matching the format you configured, with the correct subject, customer name, and a working Help Scout link.
Common mistake — If the run succeeds but no Slack message appears, the ticket's createdAt timestamp probably fell outside your -2 minute filter window during the manual test. Temporarily change the Condition to 'is greater than' addMinutes(utcNow(), -60) to catch recent tickets, verify it works, then reset it to -2.
Power Automate
▶ Test flow
executed
Slack
Help Scout
Help Scout
🔔 notification
received
11

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.

  1. 1Click the back arrow from the canvas to the flow detail page
  2. 2Confirm the status toggle shows 'On'
  3. 3Check My flows > [flow name] > '28 day run history' after 10 minutes
  4. 4Click individual run entries to expand action-level inputs and outputs
  5. 5Look for any red failed steps, especially on the HTTP action
What you should see: Run history shows a new entry every minute. Runs where no new tickets exist will complete successfully but the Apply to Each loop will process 0 items — that's normal, not an error.

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 channelsAdd 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 filteringAdd 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 alertsChange 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

Was this guide helpful?
Slack + Help Scout overviewPower Automate profile →