Revenue Attribution#

Pulsora stitches together anonymous browsing data with server-side revenue events to tell the full story of your customer journey—without cookies or PII.

Data Inputs#

Attribution relies on two values:

  1. Visitor fingerprint — Stable identifier generated server-side by Pulsora.
  2. Session ID — Anonymous session identifier for the current visit.

Pageviews and events automatically include fingerprint + session data. When a purchase happens, you forward those values to your backend and include them in the revenue call.

First-Touch & Last-Touch#

Pulsora records referrers, UTM parameters, landing pages, and timestamps for every session. When a revenue event arrives:

  • First-touch attribution is determined from the oldest known session for that fingerprint.
  • Last-touch attribution uses the session provided in the revenue payload.

Both are available in dashboards, letting you analyze long funnels and recent campaigns simultaneously.

Subscription Attribution#

For recurring revenue, send the same customer_id with each renewal. Pulsora aggregates:

  • Net new MRR (from subscription and upgrade events)
  • Contraction (from downgrade)
  • Churn (from churn and refund)

If a customer renews from a new device, simply capture the new fingerprint and session; Pulsora still ties it back via customer_id.

Mapping Metadata#

Metadata fields (plan, coupon, interval, etc.) flow into attribution dashboards. Use them to slice revenue by:

  • Pricing plan
  • Billing interval
  • Acquisition channel
  • Sales rep or pipeline

Example payload for a subscription upgrade:

await revenue.track({
  visitor_fingerprint: 'fp_abc',
  session_id: 'sess_xyz',
  customer_id: 'cus_42',
  amount: 199,
  currency: 'USD',
  transaction_id: 'inv_456',
  payment_processor: 'stripe',
  event_type: 'upgrade',
  customer_subscription_id: 'sub_789',
  mrr_impact: 120,
  is_recurring: true,
  metadata: {
    previous_plan: 'starter',
    new_plan: 'scale',
    seats: 20,
  },
});

Offline & Manual Deals#

For offline invoices or manual upgrades, you can still leverage attribution:

  1. Find the customer’s fingerprint/session from previous events in your CRM.
  2. Call revenue.track() with the best-known values.
  3. Include metadata.manual = true so the dashboard can differentiate automated vs manual entries.

If you can’t supply a fingerprint, Pulsora falls back to customer-level attribution and still tracks the revenue, just without journey context.

Common Pitfalls#

  • Missing fingerprint/session — The SDK throws clear errors; make sure frontend metadata survives the checkout flow.
  • Public tokens on revenue requests — Revenue events require sec_ tokens; double check your environment configuration.
  • Multiple concurrent sessions — Always send the session associated with the conversion (usually the checkout session or final touch).

Ready to implement? See end-to-end samples in the revenue examples →