1. Collect
Data enters the graph from multiple sources:Outlit SDKs (recommended)
Browser SDK — The primary data source for most teams. Once installed, it automatically captures pageviews, form submissions, engagement time, UTM attribution, and company enrichment via IP lookup. No additional code needed for these basics. This is the only way to get website visitor tracking — anonymous visit capture, auto-identification from forms, and pre-signup journey attribution. Server SDK — For backend events where users are already authenticated: subscription lifecycle events, API usage, report generation, and anything that happens outside the browser.Integrations
Stripe — Billing events sync automatically. Subscription status changes (trialing, active, canceled) update account billing status in real time. PostHog — Product usage sessions feed into the graph, contributing to automatic engagement and inactivity detection. If you already use PostHog for product analytics, this is a great complement to the Outlit browser SDK. However, PostHog alone won’t give you website visitor tracking — you need the Outlit browser SDK for anonymous visit capture, form auto-identification, and pre-signup attribution. Slack — Messages, reactions, and thread context from customer-facing channels. Gmail — Email threads, sender history, and attachment context. Fireflies.ai — Call transcripts, action items, and meeting summaries. Google Calendar — Meetings, attendees, and scheduling patterns. Supabase Auth / Clerk — User identity, sign-up source, org membership, and auth events. These complement the browser SDK’s auto-identification with server-side identity signals.Browse all available integrations and connect them from your dashboard at app.outlit.ai/integrations.
2. Resolve
Most visitors browse your site anonymously before identifying themselves. Identity resolution bridges that gap:- Anonymous phase — Outlit generates a visitor ID and tracks behavior from the first pageview
- Identification trigger — A visitor submits a form with their email, signs up, or logs in
- Profile linking — The anonymous visitor’s entire history is connected to their contact profile
- Cross-device merging — When the same person identifies on multiple devices, profiles merge automatically
identify() after login.
For details on the anonymous phase — what’s captured, how visitor IDs work, and company enrichment — see Website Visitors.
3. Build the Graph
As data flows in and identities resolve, Outlit structures it into three layers:Entities and relationships
- Visitors — Anonymous browsing sessions, identified by visitor ID or device fingerprint
- Contacts — Known people, identified by email and/or user ID
- Accounts — Companies, identified by domain, with billing status from Stripe
Activity timeline
Every interaction from every source is stored chronologically — pageviews, form submissions, SDK events, Stripe charges, Slack messages, email threads, call transcripts. The timeline shows what happened with full detail and original timestamps.Facts
Facts are temporal assertions that Outlit maintains about each customer. While the activity timeline captures what happened, facts capture what it means — the reasoning layer that makes the graph intelligent. Outlit generates facts from three sources:- Behavioral facts — Automatically detected from activity patterns. When a customer’s core usage drops, an activation rate changes, or an expected activity pattern breaks, Outlit surfaces it as a fact with severity and context.
- Extracted facts — Parsed from unstructured sources like Slack messages, email threads, and call transcripts. Outlit identifies signals like churn risk, expansion opportunities, competitive evaluations, champion changes, and timeline commitments.
- Synthesized facts — Derived by correlating multiple observations. For example, a key contact going quiet + a competitor mention in Slack + declining product usage = a churn risk fact with full reasoning.
validFrom date and an optional expiration. As new activity flows in, facts are automatically validated or invalidated. A “contract renews in March” fact expires after March. A “customer is evaluating competitors” fact gets resolved when they renew. This temporal reasoning means the graph always reflects the current state of each customer relationship, not stale snapshots.
Journey stages
Journey stages are properties maintained on graph entities:- Contacts carry a journey stage: Discovered → Signed Up → Activated → Engaged → Inactive
- Accounts carry a billing status: None → Trialing → Paying → Churned
user.activate() — because the definition of activation is specific to your product. Billing statuses update automatically when Stripe is connected.
For the full breakdown of journey stages and billing statuses, see Customer Journey.
4. Query
The complete graph is accessible through three interfaces:CLI
AI Agents (MCP)
Configure your AI agent to query customer context directly:REST API
For custom integrations, the Ingest API accepts events from any source, and query endpoints expose the graph programmatically.Privacy and Security
Form Sanitization
Sensitive fields (password, SSN, credit card) are automatically stripped from form submissions.
Domain Allowlist
Configure which domains can send events to prevent unauthorized tracking.
No PII in URLs
Query parameters with sensitive patterns are automatically redacted.
GDPR Ready
Built-in support for consent management, data deletion, and export requests.
Frequently Asked Questions
What does Outlit track automatically vs what do I need to instrument?
What does Outlit track automatically vs what do I need to instrument?
The browser SDK automatically captures pageviews, form submissions, engagement time, UTM attribution, and company enrichment. Identity is auto-detected from forms with email fields. You only need to manually call
identify() for JavaScript-based auth (OAuth, magic links), user.activate() for activation milestones, and track() for custom business events.How long before data appears in the graph?
How long before data appears in the graph?
Browser and server SDK events appear within seconds. Stripe webhooks process within minutes. PostHog syncs run on a configurable schedule.
Can I use Outlit without Stripe or PostHog?
Can I use Outlit without Stripe or PostHog?
Yes. The browser SDK alone gives you website tracking, identity resolution, and journey stages. Each integration adds more signal but none are required.
Next Steps
Quick Start
Install the CLI and add tracking in 5 minutes
Customer Context Graph
Deep dive into the unified data model
Identity Resolution
How profiles are linked across devices and sources
Customer Journey
Journey stages and billing statuses explained