Skip to main content
Outlit tracks separate dimensions of your customer relationships as part of the customer context graph: contact journey (how engaged each person is), company activation (whether an account reached its configured value milestone), and account billing (the commercial relationship). The Outlit Browser SDK can preserve the earlier website path — landing page, referrer, UTM data, and anonymous activity — before browser identification links it to a contact. Product events and billing then show what happened through conversion and the later lifecycle. A contact can be highly engaged while their company has not activated or paid, and a company can remain activated while a specific contact becomes inactive.

Three parts of the customer journey

Outlit tracks contacts and accounts separately:

Contact journey (per person)

Contacts progress from Discovered → Signed Up → Activated → Engaged. With no qualifying activity they become Inactive; when activity again meets the engagement threshold, they return to Engaged.

Account billing (per company)

Account billing can be None, Trialing, Paying, Past due, or Churned. A churned account returns to Paying if it re-subscribes.

Company activation (per company)

A company activates once when the configured exact ordinary product event first occurs for that resolved company. The same event activates eligible contacts. Outlit writes each person’s or company’s activation timestamp only once; later matches leave it unchanged. Use outlit activation preview --event <name> to evaluate historical exact-event matches without changing configuration or recording activation. Its separate contact and company counts show how many people and companies already activated and how many would activate, without returning contact identities. Use outlit activation update --event <name> only after review. Disabling future matching preserves existing contact and company activation timestamps. Company activation remains an account milestone, while a contact’s ACTIVATED value remains a per-person journey stage. They share one configured event but are recorded independently when the event resolves the corresponding identity.

Contact journey stages

Each person (contact) progresses through stages based on their product engagement: Contact stages track product engagement, not billing. A contact can be Engaged even if their company hasn’t paid, or Inactive even if their company is actively paying.

How stages progress

Contacts move forward through Discovered, Signed Up, Activated, and Engaged. The exception is the Engaged ↔ Inactive cycle: a contact returns to Engaged when activity again meets the configured threshold.

How stages are detected

Discovered vs signed up

The difference is determined by the identifiers you provide:
When you identify a visitor with only an email (no userId), they’re marked as Discovered:
Typical triggers: newsletter signup, contact form submission, lead magnet download.
If a Discovered contact later provides a userId (e.g., they sign up after submitting a lead form), they automatically advance to Signed Up.

Automatic engagement and inactivity

Outlit derives Engaged and Inactive from tracked product activity. Activity signals can come from the Outlit Browser SDK, Outlit server SDKs, and connected product integrations. Engagement is based on consistent activity in a configured rolling window; inactivity is based on no qualifying activity for the configured inactivity period.

How contact activation works

Identify the user and send the same ordinary activation event consistently from the Outlit Browser SDK, an Outlit server SDK, or a verified product integration.

Track the selected activation event

Choose an ordinary event that represents the product’s meaningful value moment, then track it after the action succeeds:
Configure onboarding_completed (or your equivalent event) as the activation event in Outlit. Outlit derives Activated from that ordinary event. It also derives Engaged and Inactive from the broader stream of tracked product activity.

Account billing statuses

Each account (company) has a billing status that’s separate from individual contact journeys:

Billing from Stripe

If you’ve connected Stripe to Outlit, billing status is handled automatically: Stripe subscription states map onto the billing statuses above — trialing maps to Trialing, active to Paying, delinquent states to Past due, and cancellation to Churned. When a subscription status changes in Stripe, Outlit updates the matching account’s billing status. Individual contact journey stages are not affected. Stripe integration links accounts through synced customer and contact identity. Company-domain accounts and personal-email customers are handled differently, so billing status should be read as account context, not as a contact journey stage.

Track meaningful events

Send product events. Discovered and Signed Up are auto-detected from identity. Activated is derived by Outlit from the customer-selected ordinary activation event. Engaged and Inactive are derived from tracked product activity captured by the Outlit Browser SDK, Outlit server SDKs, and verified product integrations. Verified billing integrations provide billing status. Configure one ordinary activation event. Continue tracking ordinary product events or ingesting them through connected analytics sources. Select the exact event name with the activation CLI; do not add a synthetic activation event or client-side lifecycle state. Track activation at the right time. Send the selected ordinary activation event when the action is confirmed complete, not when the user clicks a button. Wait for the backend to confirm success before tracking. Include useful properties. Properties help you analyze stage transitions. Include context like which onboarding flow was completed, time-to-activate, and which steps were skipped.

Frequently asked questions

Contact journey tracks individual people’s product engagement (Discovered through Inactive). Account billing tracks the commercial relationship (None through Churned). They’re independent — Jane can be Engaged while her company is on a free plan, or Inactive while her company is actively paying.
Contact activation is a per-person journey stage, while company activation is a separate account milestone exposed as activatedAt. Outlit derives both from the same configured exact ordinary product event and independently activates whichever contact or company identity the event resolves.
None are set directly. Discovered and Signed Up are derived from identity, Activated is derived from your selected ordinary activation event, and Engaged and Inactive are derived from tracked product activity. Billing statuses sync from verified billing integrations.
Contacts progress forward through Discovered, Signed Up, Activated, and Engaged. The only cycle is Engaged ↔ Inactive, which is driven by activity and inactivity.

Next steps

Identity resolution

How Outlit connects anonymous visitors to known contacts

Server-side tracking

Track ordinary product events from your backend

Browser integration

Set up browser tracking

API reference

Direct API for identify and product events