Revenue

Grow → Revenue shows which channel last-touched a conversion, then whether paid acquisition is paying back.

Email, Paid, and Other are last-touch credit from the same conversion ledger. Dollars appear when the conversion has an amount; otherwise you see the count. Payback, Paid LTV, and CAC stay on the page as supporting ads math.

It is not a Stripe Dashboard clone, and it is not a multi-touch attribution explorer.


What you see

  • Email / Paid / Other for the selected date range (default 30 days)
  • Supporting payback, Paid LTV, CAC, ARPU when those pipes exist
  • A Trend chart of verified CAC vs current LTV — same date range controls as Acquisition → Analytics
  • A channel table (Paid CAC; Email conversions when they exist)
  • Named gaps when Stripe, Ads, or identify is missing — those do not hide Email wins

Paid LTV only counts Stripe customers who have an ad-click first touch on their contact. Company-wide LTV is the wider Stripe book.


What to connect

Need Where
Stripe Settings → Integrations → Stripe
Google Ads spend Settings → Integrations → Google Ads, then Grow → Paid
Ad click → customer Tracking snippet + stx.identify({ email }) after signup

Connect order does not matter. The scoreboard fills as each piece lands.


Identify after signup

stx.identify({ email: user.email })

Call this when the user is signed in (signup and ideally login). It links the anonymous visit — and any Google click id on it — to the contact. Names and plan belong on POST /contacts; identify only needs email for this stitch.

If Revenue says identify is missing, wire that call (or ask Ranla to open a PR when GitHub is connected).


Page Job
Grow → Paid Run the ad account — spend, drafts, approvals
Grow → Revenue What email and ads last-touched, and whether paid acquisition pays back

Next steps

Common questions

What is Grow → Revenue?

The scoreboard for whether acquisition pays back: Paid LTV, CAC, and payback from Stripe and ad spend. Incomplete means a required connection or identify stitch is still missing.

Why is Paid LTV incomplete when Stripe looks fine?

Paid LTV only counts customers with an ad-click first touch on their contact. Install the tracking snippet and call stx.identify({ email }) after signup so the click sticks.

How is Revenue different from Paid?

Paid is where you run Google Ads. Revenue grades the business — was the win worth what it cost?