subtext_url, opens that person’s real session, and walks the decisive moments with screenshots, the component tree, network, and console. Intercom detects; Subtext diagnoses.
This guide assumes the Subtext capture snippet is installed and capturing, and the Intercom Messenger is installed — either via the JavaScript snippet or the
@intercom/messenger-js-sdk npm package. Each code tab below is written for one install method. It also assumes a custom data attribute named subtext_url exists in Intercom → Settings → Data → People — custom attributes must be created before the Messenger can write them.Attach the session URL
Store the current Subtext session URL on the Intercom contact as thesubtext_url custom attribute so it travels with the conversation and shows in the inbox sidebar. Attach it through the update call — or pass it at boot with the modern SDK.
FS('setIdentity') is called with a different uid, so re-call update(…) (or window.Intercom('update', …) for snippet installs) whenever you re-identify the user — the attribute is frozen until the next update.
From signal to session
However you first hear about a problem in Intercom, the path is the same: get to thesubtext_url, then hand it to your agent for a Detect-vs-Diagnose read. The ticket says X is broken; the session shows whether it reproduces, what the user really clicked, and where it failed — so you can answer (or escalate) from evidence instead of guessing.
A conversation lands in your inbox
A conversation lands in your inbox
A conversation is assigned to you: “I clicked Pay and nothing happened. Tried three times.”Open the conversation, go to the contact details sidebar, find
subtext_url under custom attributes, and copy it. Then hand it to your agent:Escalating from support to engineering
Escalating from support to engineering
You’ve decided a ticket is a real bug and are about to open a Linear / Jira issue for the product team.Copy
subtext_url from the contact sidebar so it travels into the engineering ticket alongside your summary.A wave of similar tickets
A wave of similar tickets
Several conversations come in within an hour all describing the same thing — “export is failing.”Open each conversation and copy
subtext_url from each contact sidebar, then review them together.A negative CSAT rating
A negative CSAT rating
A conversation gets a low CSAT rating and a comment like “never actually got it working.”Open the rated conversation, go to the contact sidebar, and copy
subtext_url.For agents
An autonomous agent can run the whole loop against Intercom directly: discover the friction, extract thesubtext_url, and hand each session to the Subtext MCP. Intercom ships an official MCP server at https://mcp.intercom.com/mcp (Streamable HTTP; legacy SSE at /sse), authenticated with OAuth or a Bearer access token.
1
Discover the friction
Surface the worst conversations — low CSAT, Narrow to the affected users with
bug / confusion tags, topic spikes. Over MCP, search_conversations filters by source, author, state, assignment, and timing; search runs a universal query across conversations and contacts. Over REST:POST /contacts/search.2
Extract the session URL
Read
subtext_url off the contact’s custom attributes. Over MCP, get_contact returns complete contact info including custom attributes (search_contacts can also filter by them). Over REST:3
Hand off to Subtext
For each URL, call
review-open(session_url=<subtext_url>) on the Subtext MCP to get a Detect-vs-Diagnose read: the ticket says X broke versus whether it reproduces in the session. For escalation, ask the review to produce reproduction-grade steps (and optionally a doc-create proof document) so the bug report carries evidence, not a paraphrase.subtext_url only round-trips if it was stored as a contact custom attribute at capture time (see Attach the session URL). The Intercom MCP is US-region-only today — fall back to the REST API for EU/AU workspaces.Related
- Session Review overview — what your agent does once a session is open.
- Install the capture snippet — required before any session URL exists to attach.

