Payments

Subscriptions vs one-time sales attribution

Ownlytics team · · 6 min read

A one-time sale is attributed once, at the moment of purchase. A subscription is attributed at the first payment, and every renewal after it inherits that source. Mixing the two in a single count is the most common reason subscription revenue by source looks wrong.

V
Visitor 4821First seen 12 days ago · India · desktop
  1. Read “Setup guide”x.comNov 1 · 3 min on page
  2. Came back from a newsletternewsletterNov 6 · read pricing
  3. Opened checkoutNov 12 · 14:02
  4. Paid $49Dodo PaymentsCredited to the newsletter visit (last non-direct)

Fig.A single sale and the visit it is credited to. Sample data, not a real site.

Here is how credit should work for each kind of payment, and how to read the result.

Why does the payment type matter?

If you sell a $50 one-time product, a source's value is simple: sales times price. If you sell a $10/month subscription, a source that sends one customer who stays a year is worth $120, and a source that sends three customers who cancel after a month is worth $30. Counting "sales" treats the second as three times better.

So the first question for any recurring business is: do I want to measure what traffic brings in as new customers, or what those customers pay over time? You need both views, kept separate.

What kinds of payment exist?

Ownlytics classifies every payment as one of four things.

Payment typeWhat it isHow it is credited
One-time purchaseA single paymentTo the visit that produced it
First paymentA subscription's earliest payment (with a free trial, the first charge after it)To the checkout's visitor
UpgradeA plan change or more seatsCounts as a new sale
RenewalScheduled charges after the first, usage billing includedInherits the source of the first payment

A free trial is a special case. A $0 payment is not revenue, but it links the visitor to the email for the paid sale that follows. The first paid charge after a trial is a new sale credited to whoever started the trial, not a renewal.

How do renewals keep their source?

When the visitor id reaches the first payment, later payments inherit the source of the subscription's (or customer's) first payment. For Stripe, you pass the id in the Checkout Session metadata and also in subscription_data.metadata, so renewals keep the visitor. The Stripe Checkout walkthrough shows the code. For Polar, Dodo and Creem, see the revenue attribution docs.

If you send payments yourself through the Payments API, you can mark "renewal": true for a scheduled charge and "upgrade": true for a plan change. Without either, a subscription's earliest payment is treated as the first payment and later ones as renewals, whatever order you send them in.

Should renewals count in revenue?

There is a setting for exactly this. Under a website's Revenue attribution settings you can turn off "Count subscription renewals in revenue". When off, revenue, sales, customers, conversion rate, chart, sources, goals, funnels, daily digest and AI agent answers count new sales only: first payments, one-time purchases and upgrades. Nothing is deleted when you switch it.

Use it this way:

Lifetime value by first source

Ownlytics also groups customers by the source of their first attributed payment, with every renewal, upgrade and repeat purchase added since. The docs note that some channels send one-off buyers while others send customers who stay. That is the view a subscription business wants.

Example (made-up numbers for illustration)

A $10/month plan, six months after launch (assume everyone signed up at launch). Customers are grouped by first source.

First sourceNew customersStill payingTotal paid
Search54$250
Newsletter43$190
Social post122$130

By new customers, social is the winner: 12 against 5. By total paid it is last. The social post produced many sign-ups that did not stick. Whether that is a problem with the audience or with onboarding is a separate question, but you would never see it if you only counted first payments. It also shows why a single "sales by source" number is incomplete for subscriptions.

yourapp.comToday7d30d9 online
SourceVisitorsSalesRevenue
Xx.com6,2479$441
Ggoogle.com4,43314$686
@newsletter1,1307$343
Ynews.ycombinator.com2,0153$147
Cchatgpt.com1,4114$196
↗Direct · typed or bookmark1,2092$98

Fig.Revenue by source for a mix of one-time and subscription sales. Sample data, not a real site.

What if your attribution model is first touch or last touch?

The model decides which visit gets credit for the first payment: last non-direct (default), first touch, or last touch. After that, renewals follow the first payment. So changing the model changes the starting source of each customer, and every renewal moves with it. For solo founders, the post on first touch vs last touch attribution can help choose.

When this does not apply

If you sell only one-time products, you can ignore most of this. If you sell subscriptions but have only a few customers, the lifetime view will be noisy. And if billing happens off a supported provider and you do not send payments through the API, there is nothing to classify.

At a glance

QuestionAnswer
Who gets credit for a renewal?Source of the first payment
Trial's first paid chargeNew sale, credited to who started the trial
Plan change or more seatsUpgrade, counts as a new sale
$0 paymentNot revenue, but links visitor to email
Revenue without renewalsSetting per website, nothing deleted
Best view for subscriptionsLifetime value by first source

To see how it looks on sample data, open the live demo. Refunds matter here too, since they come off the same source, which we cover in refunds and attribution.

FAQ

Is a renewal counted as a new sale?

No. A renewal is a scheduled charge after the first payment and is credited to the source of that first payment. Upgrades, such as plan changes or more seats, do count as new sales.

What happens with a free trial?

A $0 payment is not revenue, but it links the visitor to the email. The first paid charge after the trial is a new sale credited to whoever started the trial.

Can I see revenue from new customers only?

Yes. Turn off "Count subscription renewals in revenue" in the website's Revenue attribution settings. Switching it does not delete anything.

Which providers keep the source across renewals?

Ownlytics describes subscriptions as keeping their source for Stripe, Polar, Dodo and Creem. Check the revenue docs for the details per provider. Payments you send yourself can be marked renewal or upgrade.

See the live demo · View pricing

Keep reading