subtext_url, opens that person’s real session, and walks the decisive moments with screenshots, the component tree, network, and console. Your warehouse cohorts detect; Subtext diagnoses.
This guide assumes the Subtext capture snippet is installed and capturing, and the Hightouch Events browser SDK is loaded — the
window.htevents snippet or the npm @ht-sdks/events-sdk-js-browser package.Attach the session URL
Store the current Subtext session URL on your Hightouch Events data so it travels into the warehouse as a column, ready to filter audiences and dashboards on. The Events browser SDK is modeled on the Segmentanalytics.js spec, so there are two places to attach it, depending on how precise the link needs to be.
On the user profile
Attach the URL to the user withhtevents.identify. It lands as a trait and, downstream, a column on the identifies table in your warehouse. Call it wherever your app already identifies the user — on auth resolution, not at module top level.
On every event
Source middleware runs on every call, so it attaches the URL fresh per event. Becauseurl.now carries a timestamp, the link deep-links to the moment each event fired. Event properties auto-convert into warehouse columns, so subtext_url becomes a column on the track and page event tables.
track calls — not inside a component render.
From signal to session
However the cohort first surfaces — a campaign report, a computed audience, a sync check — the path is the same: get to thesubtext_url, then hand it to your agent for a Detect-vs-Diagnose read. Hightouch Events stores the value as subtext_url on the profile and event tables in your warehouse.
A paid campaign that converts poorly
A paid campaign that converts poorly
The growth marketer is watching a landing-page campaign. It drives clicks, but the landing page converts below plan. Hightouch captured the UTM parameters on the events (Grab a few links, then hand them to your agent:
context.campaign), so the cohort is addressable.Query the events table for that campaign’s sessions:A user enters a failed audience
A user enters a failed audience
The lifecycle / CRM owner sees a user land in a computed audience like “started checkout, no purchase in 24h,” and wants to know why before sending a win-back.Open the user’s warehouse profile, or query their most recent session link, and copy
subtext_url.A sync or data-quality check flags bad events
A sync or data-quality check flags bad events
The marketing-ops or data engineer who owns the Hightouch source sees a sync surface malformed or missing properties on a key event, hinting at a broken client.Find a recent offending event that still carries
subtext_url and copy it.For agents
An autonomous agent can run the whole loop: discover the cohort, extract thesubtext_url, and hand each session to the Subtext MCP. Hightouch does ship an official MCP server — it connects your assistant to Hightouch’s marketing agents for exploring your schema, building and saving audiences, and designing journeys — but it is not documented as an event-history reader, and it isn’t enabled in every workspace. The events land in your warehouse, so the agent story runs through the warehouse’s MCP. If that warehouse is ClickHouse, use the official mcp-clickhouse server (list_databases, list_tables, run_query, read-only by default). For Snowflake / BigQuery / Redshift, use that warehouse’s own MCP or SQL API — the query shape is the same. Hightouch’s REST API manages models and syncs, not event history, so it is the wrong surface for pulling session links.
1
Discover the cohort
Find the campaign, audience, or failing-event cohort worth watching. Because Hightouch captures UTM parameters, you can scope directly to a campaign. To triage a computed audience instead, join the audience membership table to the events table and pull each member’s most recent
subtext_url.2
Extract the session URL
Read
subtext_url off those rows with the warehouse’s read query tool:3
Hand off to Subtext
For each URL, call
review-open(session_url=<subtext_url>) on the Subtext MCP. Event-level URLs are moment-precise, so the review opens exactly when the signal fired.subtext_url only round-trips if the Events SDK attached it at capture (see Attach the session URL); older rows carry an empty value, so filter subtext_url != ''. Table and column names depend on how your Hightouch source maps events into the warehouse — confirm them before hard-coding. Keep the warehouse MCP read-only; a review agent never needs write access.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.

