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, support tickets, Slack messages, email threads, calls, and calendar events
- Facts — Temporal assertions about each customer that capture what it means, not just what happened: churn risk signals, expansion opportunities, support escalations, 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 |
| Granola | Meeting notes and customer-call summaries | Connect via dashboard |
| Google Calendar | Meetings, attendees, scheduling patterns | Connect via dashboard |
| Pylon | Support tickets, escalations, and customer requests | 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 organizational email domains, explicit
customerIdattribution, and connected source data - 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 users,revenue,recentTimeline plus outlit facts list acme.com shows the complete story with reasoning: which pages Acme’s team viewed before signing up, how they used the product after onboarding, what support tickets or calls changed the relationship, 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 support tickets, 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” |
occurredAt for when the supporting signal happened or was detected, plus status and provenance fields such as sourceType, sourceId, sourceOccurredAt, sourceQuote, and permalink when available. Outlit uses source time, status, and evidence to help agents distinguish current signals from historical context; newer evidence can supersede older context, but facts should still be read with their source and status rather than as self-updating claims.
Facts are queryable through the same interfaces as the rest of the graph — CLI, MCP, and API.
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 linked parts of the same customer profile when the source evidence supports that relationship. Organizational domains, personal email providers, and explicit customer IDs are handled differently so the graph does not turn every email domain into a company account.
Can AI agents access the full graph?
Can AI agents access the full graph?
Yes. The MCP integration exposes the graph to remote MCP clients such as Cursor, VS Code, and other supported environments. For coding agents that run local commands, install Agent Skills. Agents can list customers, get timelines, search context, inspect facts and sources, 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.
Next Steps
Quick Start
Install the CLI and start building your graph in 5 minutes
Customer Journey
Understand journey stages and billing statuses
Identity Resolution
How Outlit links visitors to known contacts
Website Visitors
What Outlit captures before visitors identify themselves