Skip to main content

The Customer Journey Problem

Most businesses track customer data in silos:
  • Website analytics shows anonymous pageviews
  • Product analytics shows authenticated user behavior
  • CRM shows deals and conversations
  • Billing shows payment events
Outlit connects all of these into a unified customer timeline.

How Outlit Tracking Works

Browser Tracking (Anonymous Phase)

When a visitor lands on your website, Outlit:
  1. Generates a visitor ID - A unique identifier stored in localStorage and cookies
  2. Captures automatically:
    • Pageviews (URL, title, referrer)
    • Form submissions (with sensitive field sanitization)
    • UTM parameters and first-touch attribution
    • Engagement time (active time on each page)
  3. Stores events until identification

Identity Resolution

When a visitor identifies themselves (signup, login, form submission with email), Outlit:
  1. Creates or finds a contact using the email or user ID
  2. Links the anonymous visitor to the contact
  3. Converts historical events to the customer timeline
  4. Merges profiles if the same person used different devices

Server-Side Tracking

For authenticated users in your backend:
  1. Skip the anonymous phase - Users are already known
  2. Emit events directly to the contact
  3. Require identity - Email or user ID on every call

Event Types

Automatic Events

These are captured automatically by the browser tracker:
EventWhenData Captured
pageviewEvery navigationURL, path, title, referrer, UTM
formForm submissionForm ID, field values (sanitized)
identifyForm with email fieldEmail, name (auto-extracted)
engagementPage exit or navigationActive time, total time, session ID
calendarCal.com/Calendly bookingProvider, event type, time, duration
Auto-Identify: When a form contains an email field, Outlit automatically calls identify() with the extracted email and name. This links the anonymous visitor to a known profile without any code. Learn more

Manual Events

Track custom events that matter to your business:
// Track a custom event
outlit.track('pricing_page_viewed', {
  plan: 'pro',
  source: 'header_nav'
})

// Identify a visitor
outlit.identify({
  email: 'user@example.com',
  traits: {
    name: 'Jane Doe',
    company: 'Acme Inc'
  }
})

Journey Stage Events

Track user progression through your product lifecycle:
// After user completes onboarding
outlit.activate({ flow: 'onboarding' })

// When user reaches an engagement milestone
outlit.engaged({ milestone: 'first_project' })

// After successful payment
outlit.paid({ plan: 'pro', amount: 99 })

// When subscription is cancelled
outlit.churned({ reason: 'too_expensive' })
Stage events require the user to be identified first (via identify() or setUser()). The discovered and signed_up stages are automatically inferred from identify calls.

Privacy & 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 data deletion and export requests.

Next Steps