Ask most founders how many people visited their site from Product Hunt last month, and they can tell you. Ask how many of those visitors signed up, and they can probably tell you that too. Ask how much monthly recurring revenue Product Hunt is actually worth - after accounting for the customers who already churned - and almost nobody has a real answer. That gap is what Growth, Chartsy's new revenue attribution feature, is built to close.
The Problem: Three Systems That Don't Talk to Each Other
Answering "how much is this channel actually worth" requires joining three systems that were never built to connect: your site analytics, your signup flow, and your billing provider. Most teams either skip the question entirely or attempt the join by hand - exporting UTM data from one tool, signup timestamps from another, and revenue from Stripe or Paddle, then trying to match rows in a spreadsheet.
Growth does that join natively, because Chartsy already has your Stripe or Paddle data synced. There's nothing to export and nothing to match by hand.
How Growth Tracks the Full Funnel
Growth follows a visitor through three stages, each building on the last:
1. Visit tracking. A single lightweight script tag on your site reads UTM parameters and classifies referrers into channels automatically - organic search, social, referral sources like Hacker News or Product Hunt - using the same channel-grouping logic behind most standard analytics platforms. It also recognizes ad click IDs (gclid, msclkid), social click IDs (twclid, fbclid), and generic referral parameters (ref, via, aff) that affiliate and referral tools commonly use. Each visitor gets a persistent, anonymous ID, and a first-touch and last-touch cookie shared automatically across all your subdomains - so a visitor who lands on your marketing site and signs up on a separate app subdomain still gets attributed to their original channel correctly.
2. Signup tracking. One line of code - or zero code, via a form attribute - fires the moment someone signs up, tying that signup back to whichever channel drove their very first visit.
3. Revenue and churn matching. Once your Stripe or Paddle account is connected, Growth automatically matches signups to real subscriptions and transactions - current MRR, lifetime revenue, subscription status, and churn - all rolled up by source.
Why It Undercounts on Purpose
A visit with no identifiable source doesn't get force-fit into a channel bucket. Growth counts it as direct rather than guessing. That's a deliberate tradeoff: the revenue-by-channel numbers you see are never inflated by noisy estimates. If Growth shows a channel worth a specific amount of MRR, that figure is built from real matched visits and real matched revenue - not an approximation designed to make every channel look accounted for.
What You Can Finally Answer
| Question | Without Growth | With Growth |
|---|---|---|
| Which channel drives the most visits? | Yes, with any analytics tool | Yes |
| Which channel drives the most signups? | Sometimes, with manual UTM tagging | Yes, automatically |
| Which channel is worth the most MRR? | Rarely, requires manual joins | Yes, automatically |
| Which channel has the highest churn? | Almost never | Yes, automatically |
Frequently Asked Questions
Does Growth require a developer to set up? No. Visit tracking is a single script tag, and signup tracking can be done with zero code via a form attribute, or a single line of code for custom signup flows.
Does attribution survive a visitor moving between subdomains? Yes. First-touch and last-touch cookies are shared automatically across all your subdomains, so a visitor who lands on your marketing site and signs up on a separate app subdomain still gets attributed correctly.
What happens to visits with no identifiable source? They're counted as direct rather than assigned to a channel. Growth doesn't guess - a visit only counts toward a channel when there's a real signal behind it.
Does Growth work with Stripe and Paddle? Yes. Once your Stripe or Paddle account is connected to Chartsy, Growth automatically matches signups to real subscriptions and transactions to calculate MRR, lifetime revenue, and churn by source.
Can I see revenue by channel without setting up custom events for every action? Yes. The script tag and signup event are the only two integration points required - revenue and churn matching happen automatically from there using your already-connected billing data.
Connect your data and see revenue by channel →
Related: Growth feature overview · Metadata Analytics · Custom Dashboards

Written by
Chartsy TeamThe Chartsy Team writes guides, product updates, and resources to help SaaS and eCommerce founders make sense of their metrics, without SQL or spreadsheets.
Chartsy