Work every Help Scout inbox from a single triage board

By General Input

See open and pending conversations from all your Help Scout inboxes in one queue, sorted so the customers who have waited longest on you come first.

Integrations

  • Help Scout
  • HubSpot

Type

App

Categories

  • Customer Support
  • Operations

Build me an app my support team opens every morning: a single triage board covering every Help Scout inbox at once. Help Scout's own views and reports only look at one mailbox at a time, so the whole point of this surface is seeing every queue together, ranked by who has been waiting on us longest.

The main view is a board of open and pending conversations across all inboxes. Load the inbox list with List Inboxes, then pull conversations with List Conversations across those inboxes. Each row shows the customer, the subject, which inbox it came from, the assignee, its tags, and how long the customer has been waiting. Include a per-inbox count strip above the board so the team can see at a glance which queue is drowning; List Inbox Folders gives per-folder conversation counts if that is a cleaner way to source the numbers than counting loaded rows.

Waiting time is the most important column and it must be measured from the last customer message, not from conversation creation. A ticket opened two weeks ago that we answered an hour ago is not urgent; a ticket opened yesterday where the customer replied last and we have not responded is. Work out from the conversation's thread data who sent the most recent message, and sort the board so conversations where we still owe the customer a reply float to the top, ordered by how long they have been waiting. Give rows an obvious visual treatment as they age past the team's thresholds.

The board filters by inbox, by assignee, by tag and by status. Populate the assignee filter from List Users so it lists real team members, and populate the inbox filter from List Inboxes. Filters should combine, and the sort order should hold within whatever filter is applied.

Clicking a row opens the full conversation without leaving the app: fetch it with Get Conversation and its full message history with List Threads, rendering customer messages, agent replies and internal notes in order and visually distinct from each other. From that detail view the agent can reassign the conversation or change its status using Update Conversation (JSON Patch, with the assignee at /assignTo and status set the same way), retag it with Update Conversation Tags (this replaces the whole tag set, so send the full intended list rather than just the additions), send a reply to the customer with Create Reply Thread, or add a team-only internal note with Create Note. After any write, refresh that conversation so the board and the thread reflect the new state.

Add a Prep this ticket button on the conversation detail view that kicks off a background agent. The agent reads the thread with Get Conversation and List Threads, then looks the customer up in HubSpot using Search Contacts on their email address, Search Companies for the company behind that contact's domain, and Search Deals for any open deals associated with them. It then writes its findings back into the conversation as an internal note with Create Note, covering: the account context it found, an explicit call on whether a high-value account or an open deal is at stake, suggested tags for the conversation, and a draft reply the human can edit and send. The note is the handoff, so it should be structured and skimmable rather than a wall of text. Show the button's progress in the app and surface the resulting note in the thread as soon as it lands.

Two implementation details matter for this to hold up on a real account. Help Scout list responses are HAL+JSON, so collections come back nested under _embedded (for example _embedded.conversations) and paginate at 50 per page, which means the board needs real paging across inboxes rather than assuming one request returns everything. And the rate limit is 400 requests per minute account-wide with write requests counting double, so do not fan out per row eagerly: load the board from list calls only, and fetch a conversation's threads and any HubSpot lookups lazily when someone actually opens that row or presses Prep this ticket.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it