# Rank your Intercom queue by what each customer pays you

> See every open conversation next to that customer's plan, monthly value and unpaid invoices, so the expensive account never sits waiting all morning.

- Workflow type: app
- Services: Intercom, Stripe
- Categories: Customer Support, Operations
- Published: 2026-08-24

## What it does

- Pulls your open Intercom conversations into one sortable board, one row per conversation showing the subject, who it is from, and how long they have been waiting since their own last message.
- Matches each person to their billing record by email and shows their plan, what they pay a month, and whether they have any unpaid or overdue invoices, so a row reads something like Growth plan, 480 a month, 1 invoice past due.
- Sorts and filters by account value, wait time, or open billing trouble, with a highlight rule you set yourself to flag the combinations you care about.
- Opens the full thread in a side panel, where a Prep this reply button hands the conversation and billing history to an agent that writes a draft brief back into the app and marks the conversation as priority inside Intercom.

## What you'll need

- An Intercom workspace, with permission to read conversations and apply tags
- A Stripe account with read access, where customer emails broadly match the emails on your Intercom contacts
- A rough idea of what counts as a high value account for your team, so you can set the highlight rule on day one

## Prompt

Build me a support triage board that ranks my open Intercom queue by how much each customer is actually worth, so my team stops working conversations in whatever order they happen to land.

The main screen is a sortable, filterable list of open conversations, one row per conversation. Load the queue with Intercom's Search Conversations operation, filtered to open conversations, and paginate so I see the whole queue rather than the first page. Each row shows the conversation subject or the first line of the customer's message, who it is from (name and email from the Intercom contact, using Get a Contact where the search result does not already carry it), and how long the conversation has been waiting. Measure wait time from the timestamp of the last message sent by the customer, not from when the conversation was created, so a long running thread that a teammate answered ten minutes ago does not look urgent while an untouched new question does.

Next to that, every row shows the billing picture for that person. Take the contact's email address and match it into Stripe with Search Customers using Stripe's email query syntax. When there is a match, read that customer's plan and recurring value with List Subscriptions filtered by customer, and read any unpaid or overdue invoices with List Invoices filtered by customer and status. Condense it into a short readable summary in the row, something like "Growth plan, 480 a month, 1 invoice past due". Normalize annual subscriptions to a monthly figure before you store or sort on the number, so a yearly plan and a monthly plan can be ranked honestly against each other, and remember Stripe amounts arrive in the smallest currency unit.

Rows must be sortable and filterable by account value, wait time, and whether the customer has an open billing problem. On top of that I want a highlight rule I can set and save myself, expressed as a monthly value threshold plus a waiting time threshold, for example flag anything above 500 a month that has been waiting more than four hours. Highlighted rows should be visually obvious at the top of the board, because the whole point of this app is spotting the expensive customer who has been sitting untouched all morning. Persist my highlight rule and my default sort so the board looks the way I left it every time I open it.

Clicking a row opens a detail panel. Pull the full thread there with Intercom's Retrieve a Conversation operation, which returns the conversation parts, and show it in order with a clear distinction between customer messages and teammate replies. Alongside the thread, show that customer's subscription history and their invoice history from the same Stripe reads, so the person working the conversation never has to open another tab to answer a billing question.

From the detail panel I want a "Prep this reply" button that kicks off a background agent. The agent reads the whole thread plus the billing context for that customer and writes a short brief back into the app covering three things: what the customer is actually asking for, whether their billing status is relevant to the issue (for example a past due invoice behind a locked account, or nothing to do with it), and a suggested reply my teammate can copy. The agent then applies a priority tag to that conversation in Intercom with Tag a Conversation, so the ranking is visible to anyone working inside the Intercom inbox as well, creating the tag first with Create or Update a Tag if it does not exist yet. Store each brief against its conversation so it stays visible in the app after the agent finishes, with a timestamp and a way to re-run it if the customer sends another message.

Two rules matter a lot. First, keep the board useful even when a contact has no Stripe match: show that row as a free or unknown account rather than hiding it, and let me filter to those rows deliberately if I want them. Second, the agent's brief is clearly marked as a draft for a human to read, edit and send. Nothing in this app ever replies to a customer automatically, and the only thing it writes back into Intercom is the priority tag.

Practical notes: cache each contact's billing lookup for a short period and reuse it across rows so a busy queue does not make one Stripe call per row per refresh, and handle a contact with several Stripe matches or no email at all without breaking the row. Give me a refresh control on the board and show when the data was last loaded.

## How to customize

- Change the highlight rule thresholds, for example anything above 500 a month that has been waiting more than four hours.
- Choose which conversation states show on the board, and whether the value column reads as monthly or annual.
- Rename the priority tag the agent applies in Intercom, or change what the reply brief is asked to cover.

## FAQ

### What happens when a customer has no Stripe record?

They still appear on the board, labelled as a free or unknown account. A conversation is never hidden just because there is no billing match, since plenty of urgent requests come from trials and free users.

### Does the agent reply to my customers for me?

No. It writes a draft brief inside the app covering what the customer is asking, whether their billing situation is relevant, and a suggested reply. The brief is clearly marked as a draft for a human to send, and nothing is ever sent to the customer automatically.

### How is wait time measured?

From the customer's most recent message rather than from when the conversation was created, so a long running thread that was answered ten minutes ago does not look urgent, and a brand new question that nobody has touched does.

### How do annual plans appear next to monthly ones?

Annual subscriptions are converted to a monthly figure before anything is sorted, so a yearly plan and a monthly plan can be compared honestly in the same column.

### Will the priority show up for teammates working inside Intercom?

Yes. When you prep a reply, a priority tag is applied to that conversation in Intercom, so anyone working from the normal Intercom inbox sees the same ranking signal.

Use this prompt in General Input: https://www.generalinput.com/prompts/rank-your-intercom-queue-by-what-each-customer-pays-you