This documentation URL will be retired soon. Start using the Ranla API at https://api.ranla.ai. Docs: docs.ranla.ai.

Revenue

Grow → Revenue answers one question: are you buying customers for less than they are worth?

It joins Stripe (what customers pay) with channel spend (what acquisition costs). It is not a Stripe Dashboard clone.


What you see

  • Paid LTV : CAC (or payback) when both sides exist
  • A Trend chart of verified CAC vs current LTV — same date range controls as Acquisition → Analytics (including custom range, grain, and compare)
  • Supporting numbers — Paid LTV, CAC, ARPU — and a channel table
  • Incomplete when a pipe is missing, with the gap named (Stripe, Ads, identify, …)

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 Grade the business — was the win worth the cost?

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?