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

How to Send Help Scout Ticket Updates to Slack with Pipedream

Fires a Slack message to a channel of your choice within seconds of a Help Scout ticket being closed, reopened, or reassigned.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Support teams of 5-50 people who need their Slack channels updated instantly when Help Scout ticket statuses change without manually checking the inbox.

Not ideal for

Teams that need two-way sync — this only pushes Help Scout events into Slack, not the reverse.

Sync type

real-time

Use case type

notification

Real-World Example

💡

A 12-person SaaS support team routes all ticket status changes into a #support-ops Slack channel. Before this workflow, the team lead checked Help Scout every 30-45 minutes to see which tickets were closed or reassigned. Now, every agent sees a Slack message within 5 seconds of a status change, including the ticket subject, assignee name, and a direct link to Help Scout.

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 Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 admin access to at least one mailbox — needed to register the webhook under Mailbox Settings
Help Scout API credentials or OAuth connected account — Pipedream needs this to authenticate the trigger source
Slack workspace with permission to add apps — your Slack admin may need to approve the Pipedream bot before you can post to channels
Pipedream account (free tier works) — you need access to create workflows and connect external apps via Connected Accounts
A Slack channel already created for support notifications — Pipedream cannot create channels, only post to existing ones

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Ticket IDeventObject.id
Ticket SubjecteventObject.subject
Ticket StatuseventObject.status
Event TypeeventObject.type
Ticket URL
Slack Channel
4 optional fields▸ show
Assignee First NameeventObject.assignee.firstName
Assignee Last NameeventObject.assignee.lastName
Mailbox IDeventObject.mailboxId
Customer EmaileventObject.primaryCustomer.email

Step-by-Step Setup

1

pipedream.com > Workflows > New Workflow

Create a new Pipedream workflow

Go to pipedream.com and click 'New Workflow' in the top-right corner. You'll land on a blank canvas with a trigger slot at the top. Give your workflow a name like 'Help Scout → Slack Status Updates' so it's easy to find later. Pipedream saves drafts automatically, so you can leave and return without losing progress.

  1. 1Log in to pipedream.com
  2. 2Click 'New Workflow' in the top-right
  3. 3Click the workflow title field and rename it to 'Help Scout → Slack Status Updates'
  4. 4Click 'Save' or press Enter to confirm the name
What you should see: You should see a blank workflow canvas with a single empty trigger step labeled 'Add a trigger'.
2

Workflow Canvas > Add a trigger > Help Scout > New Conversation Event (Instant)

Add the Help Scout webhook trigger

Click the 'Add a trigger' box at the top of the canvas. Search for 'Help Scout' in the app search field and select it. Choose the trigger type 'New Conversation Event (Instant)' — this fires on status changes including closed, reopened, and assigned. Pipedream will generate a unique webhook URL that you'll paste into Help Scout in the next step.

  1. 1Click 'Add a trigger'
  2. 2Type 'Help Scout' in the search box
  3. 3Select 'Help Scout' from the results
  4. 4Choose 'New Conversation Event (Instant)' as the trigger
  5. 5Click 'Connect Help Scout' and authenticate with your Help Scout account
What you should see: You should see a green 'Connected' badge next to your Help Scout account and a generated webhook URL displayed in the trigger configuration panel.
Common mistake — Help Scout's webhook system fires on ALL conversation events by default. You'll filter to specific statuses in a later step — do not skip the filter step or your Slack channel will be flooded.
Pipedream
+
click +
search apps
Slack
SL
Slack
Add the Help Scout webhook t…
Slack
SL
module added
3

Help Scout > Mailbox Settings > Integrations > Webhooks > Add Webhook

Register the webhook URL in Help Scout

Copy the webhook URL Pipedream generated in the previous step. Open Help Scout in a new tab, go to your Mailbox Settings, then navigate to 'Integrations' and select 'Webhooks'. Click 'Add Webhook', paste the Pipedream URL into the URL field, and check the events: 'Conversation Status Changed', 'Conversation Assigned', and 'Conversation Unassigned'. Save the webhook.

  1. 1In Help Scout, click your mailbox name in the left sidebar
  2. 2Go to Settings > Integrations > Webhooks
  3. 3Click 'Add Webhook'
  4. 4Paste the Pipedream webhook URL into the Endpoint URL field
  5. 5Check 'Conversation Status Changed', 'Conversation Assigned', and 'Conversation Unassigned'
  6. 6Click 'Save'
What you should see: The webhook appears in the list with a green active indicator in Help Scout. Back in Pipedream, click 'Test trigger' and you should see a sample payload within seconds of triggering a test event from Help Scout.
Common mistake — Help Scout sends webhooks per mailbox, not account-wide. If you have multiple mailboxes, you need to register this webhook in each one separately.
4

Workflow Canvas > Trigger Step > Event Inspector

Test the trigger and inspect the payload

Back in Pipedream, click 'Generate Test Event' or manually change a ticket status in Help Scout to fire a real webhook. Pipedream will capture the payload and show you the raw JSON in the trigger step. Expand the event object to see fields like status, conversation.id, conversation.subject, assignee.firstName, and conversation.mailboxId. These are the fields you'll use in your Slack message.

  1. 1Click 'Test trigger' in the Pipedream trigger panel
  2. 2Open Help Scout and change a test ticket status to 'Closed'
  3. 3Return to Pipedream and watch for the incoming event in the inspector
  4. 4Click the event to expand the full JSON payload
  5. 5Note the field paths for status, subject, assignee, and ticket URL
What you should see: You should see a full JSON event object in the Pipedream inspector with fields including eventObject.status, eventObject.subject, and eventObject.assignee.
Pipedream
▶ Deploy & test
executed
Slack
Help Scout
Help Scout
🔔 notification
received
5

Workflow Canvas > + > Run Node.js code

Add a Node.js code step to filter status events

Click the '+' button below the trigger to add a new step. Select 'Run Node.js code'. This step filters the webhook payload so only the status changes you care about (closed, active, pending) proceed. If the event doesn't match your target statuses, the step calls $.flow.exit() to stop the workflow without consuming additional credits. Paste the filter code from the Pro Tip section below.

  1. 1Click the '+' button below the trigger step
  2. 2Select 'Run Node.js code' from the step options
  3. 3Click into the code editor
  4. 4Paste the filter and formatting code
  5. 5Click 'Test' to verify the step runs without errors on your test event
What you should see: The code step runs successfully and exports a formatted object containing the ticket subject, status label, assignee name, and direct Help Scout URL. If the event type is not in your allowed list, the step exits early and you'll see 'Workflow exited early' in the run log.
Common mistake — Help Scout sends the event type in `eventObject.type`, not inside the conversation object. If your filter checks the wrong field, all events will pass through unchecked.

Paste this into the Node.js code step (Step 5 in this guide) — it filters unwanted event types, formats a readable status label, constructs the Help Scout URL, and exports a ready-to-use message string for the Slack step. Place it as the first step after the trigger.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;
    const obj = event.eventObject;

    // Only process status-related events
    const allowedTypes = [
      'convo-status-changed',
      'convo-assigned',
      'convo-unassigned'
    ];

    if (!allowedTypes.includes(obj.type)) {
      $.flow.exit(`Skipping event type: ${obj.type}`);
    }

    // Map raw status to human-readable label with emoji
    const statusLabels = {
      closed: '✅ Closed',
      active: '🔄 Reopened',
      pending: '⏳ Pending',
      spam: '🚫 Marked as Spam'
    };

    const statusLabel = statusLabels[obj.status] || obj.status;

    // Safely resolve assignee name
    const assignee = obj.assignee
      ? `${obj.assignee.firstName} ${obj.assignee.lastName}`.trim()
      : 'Unassigned';

    // Build direct Help Scout URL
    const ticketUrl = `https://secure.helpscout.net/conversation/${obj.id}`;

    // Build the Slack message string
    const message = [
      `*${statusLabel}* — ${obj.subject}`,
      `Assignee: ${assignee}`,
      `Customer: ${obj.primaryCustomer?.email || 'Unknown'}`,
      `<${ticketUrl}|View in Help Scout>`
    ].join('\n');

    return {
      statusLabel,
      assignee,
      ticketUrl,
      subject: obj.subject,
      message
    };
  }
});
Slack
SL
trigger
filter
Status
matches criteria?
yes — passes through
no — skipped
Help Scout
HE
notified
6

Workflow Canvas > + > Slack > Send Message to a Channel

Add the Slack step and connect your account

Click '+' below the code step. Search for 'Slack' and select it. Choose the action 'Send Message to a Channel'. Click 'Connect Slack' and authenticate with the Slack workspace where you want notifications posted. You'll need to grant Pipedream permission to post to channels — this uses Slack's OAuth flow and takes about 30 seconds.

  1. 1Click the '+' button below the Node.js code step
  2. 2Search for 'Slack' in the app search field
  3. 3Select 'Send Message to a Channel'
  4. 4Click 'Connect Slack'
  5. 5Authorize Pipedream in the Slack OAuth popup
  6. 6Select your workspace and click 'Allow'
What you should see: You should see a green 'Connected' badge next to your Slack account name in the step configuration panel.
Common mistake — Pipedream posts as its own bot user by default. If your Slack workspace restricts bot installs, you'll need an admin to approve the Pipedream app before this step will work.
Pipedream settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Pipedream
popup window
Connected
green checkmark
7

Workflow Canvas > Slack Step > Configuration Panel

Configure the Slack message fields

In the Slack step configuration, set the Channel field to your target channel (e.g., #support-ops). In the Message Text field, reference the output from your Node.js step using Pipedream's expression syntax. You can reference steps.nodejs.$return_value.message to pull the pre-formatted message string built in the code step. Optionally, enable 'Send as blocks' and use the Block Kit JSON also exported from the code step for richer formatting.

  1. 1Click the 'Channel' field and type or select your target Slack channel
  2. 2Click the 'Message Text' field
  3. 3Click the '{}' expression icon or type '{{' to open the variable picker
  4. 4Navigate to 'steps' > your Node.js step name > 'return_value' > 'message'
  5. 5Optionally toggle 'Use Block Kit' and paste the block JSON from your code step output
What you should see: The Message Text field shows a variable reference like {{steps.filter_and_format.$return_value.message}} and the channel is set to your target Slack channel.
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.
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
8

Workflow Canvas > Test workflow button (top toolbar)

Test the full workflow end-to-end

Click 'Test workflow' at the top of the canvas. This runs every step in sequence using the captured test event. Watch each step turn green as it completes. Check your Slack channel — you should see the test notification appear within 5 seconds. If you see a yellow or red step indicator, click that step to expand the error log.

  1. 1Click 'Test workflow' in the top toolbar
  2. 2Watch each step indicator — green means success, red means error
  3. 3Open your target Slack channel and confirm the message arrived
  4. 4Click any failed step to read the error details
  5. 5If the Slack step fails, verify the channel name includes the # prefix
What you should see: All steps show green indicators. A Slack message appears in your target channel showing the ticket subject, new status, assignee name, and a clickable link to the Help Scout conversation.
Common mistake — Pipedream test runs use your live Slack account. The test message will appear in the real channel. Use a private test channel if you don't want teammates seeing test noise.
9

Workflow Canvas > Deploy button (top-right)

Deploy the workflow

Click the 'Deploy' button in the top-right corner of the canvas. Pipedream switches the workflow from draft mode to active. The webhook URL registered in Help Scout is now live. From this point, every matching status change in Help Scout will trigger a Slack notification in real time — typically within 2-5 seconds of the event.

  1. 1Click the blue 'Deploy' button in the top-right
  2. 2Confirm the deployment in the dialog if prompted
  3. 3Wait for the status indicator to switch from 'Draft' to 'Active'
  4. 4Change a real ticket status in Help Scout to confirm the live workflow fires
What you should see: The workflow status shows 'Active' and your Slack channel receives a real notification within 5 seconds of the Help Scout ticket status change.
10

pipedream.com > Workflows > [Your Workflow] > Events tab

Monitor runs in the event inspector

In Pipedream, click on your workflow name to open it, then click the 'Logs' or 'Events' tab to see every run. Each row shows the trigger timestamp, run duration, and pass/fail status. Click any run to inspect the data at each step — this is your first stop when a notification stops showing up in Slack. Pipedream retains logs for 30 days on the free tier.

  1. 1Navigate to pipedream.com > Workflows
  2. 2Click your workflow name
  3. 3Click the 'Events' tab
  4. 4Click any event row to expand the step-by-step run log
  5. 5Check the output of each step to trace where data transformation happened
What you should see: You see a timestamped list of workflow runs, each showing input payload, step outputs, and final result. Failed runs show a red indicator with the error message visible on click.

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 Pipedream for this if your team has at least one person comfortable reading Node.js, you want webhook processing in under 3 seconds, or you need conditional logic that no-code tools handle poorly — like different Slack channels per mailbox. If your team is entirely non-technical and will never touch code, Zapier's Help Scout + Slack Zap gets this done in 10 minutes without writing a line.

Cost

Pipedream's free tier gives you 10,000 credits per month. This workflow uses roughly 2 credits per run — 1 for the webhook trigger, 1 for the Slack step. At 200 ticket status changes per day (a reasonable volume for a 10-person support team), that's 400 credits/day or about 12,000/month — just over the free tier. The $19/month Basic plan gives you 100,000 credits, which covers roughly 1,600 ticket events per day. Zapier charges $49/month for the same volume. Pipedream is cheaper by $30/month once you cross the free tier.

Tradeoffs

Zapier has a pre-built Help Scout trigger called 'New Conversation' that's zero config — faster to set up if you don't need filtering. Make gives you better visual branching for routing to multiple Slack channels based on mailbox or status. n8n lets you self-host, which matters if your support data is sensitive and you don't want it touching third-party servers. Power Automate has no native Help Scout connector, so you'd need a custom HTTP action — more pain than it's worth. Pipedream wins here because the Node.js step lets you handle Help Scout's inconsistent payload structure (assignee sometimes null, event types not always predictable) with actual code instead of fragile UI-based conditionals.

Three things you'll hit after setup. First, Help Scout's webhook payload structure differs slightly between event types — a convo-assigned event includes an assignee object, but a convo-status-changed event may not, even if the ticket has an assignee. Always null-check. Second, if you register the webhook URL and then redeploy your Pipedream workflow for any reason, the URL stays the same — but if you delete and recreate the trigger, you get a new URL and must update Help Scout. Third, Pipedream's free tier log retention is 30 days. If a Slack message stops firing and you don't check the event log within a month, the failed run data is gone and you'll be debugging blind.

Ideas for what to build next

  • Route notifications to different channels by mailboxAdd a switch statement in the Node.js code step that maps Help Scout mailbox IDs to specific Slack channels — e.g., billing tickets go to #billing-support, tech issues go to #tech-support.
  • Add a daily digest of closed ticketsBuild a second Pipedream workflow on a scheduled trigger that queries the Help Scout API each morning and posts a summary count of tickets closed, reopened, and pending in the last 24 hours.
  • Trigger a Help Scout reply from SlackUse Slack's slash command or a message shortcut to post a reply back to the Help Scout ticket directly from Slack, creating a lightweight two-way loop without leaving the channel.

Related guides

Was this guide helpful?
Slack + Help Scout overviewPipedream profile →