Support tickets that signal upsell: turn higher-tier feature requests into expansion leads for the account owner
Intercom + HubSpot
Who it's for
CSMs and account managers who want to catch customers asking support for features that only exist in a higher tier, and hand each one to the account owner as an expansion lead. You supply the tier and feature list. HubSpot can be swapped for Salesforce, Attio, Pipedrive or Close.
What you get
Higher-tier feature requests from the last 30 days, matched to owners (read only). Sample output: every company and person in it is fictional.
Intercom conversations checked: 212 from the last 30 days. 6 ask for a feature in a higher tier than the customer has. Nothing has been changed in Intercom or HubSpot. | Company | Plan now | Asked for | Tier needed | Date | Contact | HubSpot owner | Open deal? | |---|---|---|---|---|---|---|---| | Quarry Lane Analytics (fictional) | Team | SAML single sign-on | Business | Oct 3 | Sam Whitlock | Priya Raman | No | | Quarry Lane Analytics (fictional) | Team | Audit log export | Business | Oct 11 | Dana Okafor | Priya Raman | No | | Larkspur Freightworks (fictional) | Business | Custom data retention | Enterprise | Oct 7 | Alex Rivera | Jordan | Renewal, Contract sent | | Mossgate Labs (fictional) | Team | More than 5 workspaces | Business | Sep 29 | Kit Ansel (fictional) | Jordan | No | Skipped: - Fernhill Software (fictional): asked about SSO, but the conversation is an open complaint about an outage. Not an upsell moment. - 1 conversation had no company attached in Intercom. Quote, Quarry Lane, Oct 3: "Is there any way to get SSO on our plan? Security wants it before we add the finance team." Suggested next step for Priya: Quarry Lane has two Business-tier asks in 8 days from two people. Ask Sam how many seats the finance team would add. Waiting for approval: create 3 HubSpot tasks (Priya x1 for Quarry Lane, Jordan x1 for Mossgate, Jordan x1 for Larkspur). Nothing has been created yet.
Time and cost
Estimate About 15–20 minutes a week, most of it reading the matches.
Assumptions: One weekly run over about 200 Intercom conversations, with about 5 matching companies and 3 tasks approved.
- Intercom: Reads only: a search over recent conversations, then the company and contact behind each match. No notes are added. Credit use not confirmed by Intercom.
- HubSpot: A company, owner and open-deal lookup per matched company, then one task per company after you approve it. Credit use not confirmed by HubSpot.
Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.
MCP servers
Every server is confirmed in: Claude
-
ClaudeClaude CodeCursorRead + writeCredits not confirmed
https://mcp.intercom.com/mcp -
ClaudeChatGPTRead + writeCredits not confirmedNeeds admin or IT
https://mcp.hubspot.com
Set up in a chat app
Every server in this recipe is confirmed for Claude. Connect each one, then paste the prompts below into one conversation.
- Connect Intercom without code (Claude)
- Connect HubSpot without code (Claude, ChatGPT)
Developer setup
Auth setup and mcp.json for Claude Code and Cursor
- Intercom: Sign in with OAuth, or pass an API key as a Bearer token for headless use.
- HubSpot: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token.
Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.
{
"mcpServers": {
"intercom": {
"url": "https://mcp.intercom.com/mcp"
// headless alternative: "headers": { "Authorization": "Bearer YOUR_INTERCOM_API_KEY" }
},
"hubspot": {
"url": "https://mcp.hubspot.com"
}
}
}
Step-by-step prompts
- Here is our tier and feature list: {tier_feature_list}. Search my Intercom conversations from the last {days} days for customers asking about any feature on that list. For each match show the company, contact, date, conversation status, the feature asked for and a one-line quote. Read only. Don't add notes or reply.
- For each company, find it in HubSpot by email domain. Show the owner, the current plan from {plan_property}, any open deal and its stage. Drop matches where the plan already includes the feature. List companies with no HubSpot match separately. Don't change any records.
- Skip anything that reads as an open complaint or escalation. Group the rest by owner, and for each company write one line on why it's an expansion lead and one suggested next step. Show me the table.
- For the companies I pick, create one HubSpot task for the owner with the feature asked for, the quote, the date and the next step, only after I approve it. Show me each task's text first, and don't create deals.
Run it on a schedule (optional)
- Run it weekly, so the owner hears about the request while the customer still remembers asking.
- In a scheduled run, stop at the table and the suggested tasks. Approve the HubSpot tasks yourself.
- Keep your tier and feature list in the prompt or a pinned doc, and update it when packaging changes. A stale list gives wrong matches.
Where this goes wrong
- A feature the customer already has. The customer may already be on the tier that includes it, or have it as an add-on. Show the plan you used for each company and where it came from (a HubSpot property you name), and drop any row where the plan is blank or already includes the feature.
- A complaint read as buying interest. "Why can't I do X?" during an outage or a bug is frustration, not an upsell. Show each match's conversation status and a short quote, and skip anything that is an open complaint or escalation.
- Loose keyword matches. "Export" or "SSO" can mean many things. Ask for the quote behind every match and spot-check 5 by hand the first time. Tighten the feature list with the exact words customers use.
- Wrong company or owner. Intercom company names may not match HubSpot. Match on email domain, show the domain next to each match, and list unmatched companies separately instead of guessing.
Gotchas
- HubSpot needs admin setup: non-admin users need a Super Admin to approve the connector before they can connect. The HubSpot connector can also edit records, so keep the read-only guardrail in the prompt.
- Intercom's MCP server can add internal notes to conversations, and doing that can unsnooze them. This recipe never asks it to, so tell it not to add notes.
- Intercom's directory connector in Claude covers US-hosted workspaces. EU-hosted workspaces use the Intercom EU server as a custom connector, AU-hosted workspaces aren't supported, and on Claude Team or Enterprise an org Owner adds the connector. ChatGPT support isn't confirmed.
- Intercom's listed tools cover conversations, contacts and companies, not your pricing plans. The tier list comes from you, and the customer's current plan comes from a HubSpot property you name.
- Using Salesforce instead? A task is a record created through the platform/sobject-all server, which needs Enterprise Edition or above and an admin-created External Client App. Each tool call counts against your org's daily API quota, and ChatGPT needs developer mode. Attio and Close can create tasks and Pipedrive can create activities, all without an admin step.
Download
Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.
Download ticket-upsell-signals.md
New recipe and breakage notes every week
Vendor sites: HubSpot. If we join an affiliate program, these links will be labeled as affiliate links.