What is the customer context graph?
The customer context graph is a structured representation of everything Outlit knows about your customers. It has four layers:- Entities — The people and companies you do business with: anonymous visitors, known contacts, customer accounts, and devices
- Relationships — How entities connect: identity resolution links, account membership, cross-device associations
- Activity timeline — A chronological log of every interaction from every source: pageviews, form submissions, Stripe charges, Slack messages, email threads, call transcripts
- Facts — Temporal assertions about each customer that capture what it means, not just what happened: churn risk signals, expansion opportunities, competitive evaluations, champion changes, and more
How does Outlit build the graph?
Outlit builds the customer context graph in four stages:1. Collect
Data flows in from multiple sources:| Source | What it captures | How to connect |
|---|---|---|
| Browser SDK | Pageviews, form submissions, engagement time, UTM attribution, company enrichment | Add the Outlit script or npm package to your site |
| Server SDK | Backend events (API calls, exports, notifications) | Use the Node.js or Rust SDK |
| Stripe | Subscriptions, charges, billing status changes | Connect via dashboard |
| PostHog | Product usage sessions and feature engagement | Connect via dashboard |
| Slack | Messages, reactions, thread context | Connect via dashboard |
| Gmail | Email threads, sender history | Connect via dashboard |
| Fireflies.ai | Call transcripts, action items, summaries | Connect via dashboard |
| Google Calendar | Meetings, attendees, scheduling patterns | Connect via dashboard |
| Supabase Auth / Clerk | User identity, sign-up source, auth events | Connect via dashboard |
We recommend the Outlit browser SDK as your primary data source — it’s the only way to get website visitor tracking (anonymous visits, form auto-identification, and pre-signup attribution). PostHog is a great complement for product usage data, but it won’t capture the anonymous visitor journey.
2. Resolve
Identity resolution links activity to real people. When a visitor submits a form, signs up, or logs in, Outlit connects their anonymous browsing history to their profile. The same person on different devices gets merged into one contact.3. Connect
Entities form relationships:- Visitors → Contacts: Via identity resolution (email, userId, device fingerprint)
- Contacts → Accounts: Via email domain matching and explicit association
- Accounts → Billing: Via Stripe integration or manual status updates
4. Query
The graph is queryable through multiple interfaces:- CLI —
outlit customers list,outlit search "...",outlit sql "..." - MCP — AI agents query customer context directly in Cursor, Claude Code, VS Code
- API — Programmatic access for custom integrations
What makes this different from a CRM or analytics tool?
Traditional tools capture one slice of the customer relationship:| Tool type | What it knows | What it misses |
|---|---|---|
| Web analytics | Anonymous pageviews | Who the visitor becomes |
| Product analytics | Authenticated user sessions | Pre-signup journey |
| CRM | Deal stages and contacts | Actual product usage |
| Billing | Payment events | Everything before payment |
outlit customers get acme.com --include timeline,facts shows the complete story with reasoning: which pages Acme’s team viewed before signing up, how they used the product after onboarding, what their billing trajectory looks like, and what it all means — churn risk signals, expansion opportunities, champion changes, and competitive context.
How do facts work?
Facts are temporal assertions that Outlit maintains about each customer. While the activity timeline records what happened, facts capture what it means — the reasoning layer that makes the graph intelligent. Outlit generates facts from three sources:| Source | What it captures | Example |
|---|---|---|
| Behavioral | Automatically detected from activity patterns | ”Core feature usage declined 40% over 14 days” |
| Extracted | Parsed from Slack, email, and call transcripts | ”Customer mentioned evaluating a competitor in #support channel” |
| Synthesized | Correlated from multiple observations | ”Key contact went quiet + competitor mention + declining usage = churn risk” |
How do journey stages fit into the graph?
Journey stages are properties on graph nodes — structured labels that Outlit maintains as contacts and accounts progress:- Contact journey stages (Discovered, Signed Up, Activated, Engaged, Inactive) describe where each person is in their product engagement
- Account billing statuses (None, Trialing, Paying, Churned) describe the commercial relationship
user.activate() when a contact completes your onboarding or key milestone.
Billing statuses update automatically when Stripe is connected.
For full details, see Customer Journey.
Frequently Asked Questions
Do I need all the integrations to use Outlit?
Do I need all the integrations to use Outlit?
No. The browser SDK alone gives you website visitor tracking, identity resolution, and journey stages. Each additional integration (Stripe, PostHog, server SDK) adds more signal to the graph, but none are required to get started.
How is the graph different from a data warehouse?
How is the graph different from a data warehouse?
A data warehouse stores raw events. The customer context graph is entity-resolved and relationship-mapped — it knows that visitor abc-123, user jane@acme.com, and Stripe customer cus_456 are the same person at the same company, and it maintains that structure automatically.
Can AI agents access the full graph?
Can AI agents access the full graph?
Yes. The MCP integration exposes the graph to AI agents in Cursor, Claude Code, Claude Desktop, VS Code, and other supported environments. Agents can list customers, get timelines, search context, and run SQL queries.
How quickly does new data appear in the graph?
How quickly does new data appear in the graph?
Browser and server SDK events appear within seconds. Stripe webhook events appear within minutes. PostHog syncs run on a configurable schedule.