If your marketing site sees under 10,000 visits per month, congratulations, you are in the majority of profitable indie products. You are also in the danger zone where a single refund or a viral tweet makes your “key metric” swing like a broken gauge.
This piece is the math and habits layer for the revenue per visitor guide. Same definition: revenue ÷ visitors inside a window you name in advance.
Pick a window before you open the dashboard
Do not choose the window that makes you look good. Choose the window that matches how you decide:
- 7 days when you are actively running a launch or price test.
- 28 days (four weeks, not calendar month) for steady-state ops.
- Pinned ranges for one-off events (newsletter drop, Product Hunt day), compare inside the pin, not against the whole quarter.
Write the window in your notes: “RPV@28d ending 2026-01-28.” Future comparisons depend on that discipline.
Visitors: unique vs sessions
For thin traffic, unique visitors per window is usually the right numerator denominator pairing. Sessions inflate when someone returns three times before buying once; you still want that purchase to count once in revenue, and you want the visitor counted once.
If your tool only exposes sessions, use sessions consistently and never compare to a blog post that used uniques. The absolute RPV number is less important than trend direction with a fixed definition.
Revenue: gross, net, and refunds
Pick one policy:
| Policy | When it fits |
|---|---|
| Gross checkout | Fast feedback on launches |
| Net of refunds | Honest unit economics |
| Net of tax/VAT | EU shops comparing to bank deposits |
Micro-SaaS founders often watch gross for speed, net for monthly reviews. Either works if you do not mix them week to week.
Refunds on day 29 of a 28-day window belong to the window where the sale happened, not where the refund landed, unless your finance view says otherwise. Pick a rule; stick to it.
The under-10k sample size cheat sheet
These are guardrails, not statistics certificates:
- < 100 visitors in a segment: ignore RPV ranking; only note zero-revenue warnings.
- 100–500 visitors: rank segments loosely; require two consecutive windows before big bets.
- 500–2,000 visitors: you can justify landing page tests with real money on the line.
- 2,000–10,000 visitors: weekly RPV by source becomes actionable if UTMs are clean.
When totals are under 1,000 for the whole site, your site-wide RPV is a health check, not a scalpel. Segment one dimension at a time.
Rolling vs calendar months
Calendar months feel natural and break on February vs March length. Rolling 28-day windows smooth weekends and make “compare to previous period” one click.
Example workflow:
- Note RPV for days 1–28.
- Note RPV for days 29–56 (previous block).
- Delta > 20%? Investigate before celebrating.
Thin traffic makes deltas noisy. A 20% move from $0.40 to $0.48 RPV on 800 visitors is $64 total, not a Series A story. It might still be worth fixing a broken checkout button.
Separating launch spikes from baseline
Launches dump visitors who will never buy. Baseline weeks include direct traffic from people who already know you. Blending them drags RPV down and makes you think the launch failed.
Pin the launch week, compute RPV inside the pin, then compute baseline RPV on the two weeks before. Compare storytelling, not single numbers:
- Launch RPV low but signups high → nurture problem.
- Launch RPV high but volume low → distribution problem.
Currency and mixed carts
Selling in USD and EUR on one site without normalization produces fake RPV jumps when exchange rates move. Normalize to your settlement currency at webhook time or accept that RPV is approximate until you unify.
For single-currency shops, ignore this section and move on.
Worked numbers: 6,200 visitors / month
Suppose 28-day totals:
- Visitors: 6,200
- Revenue: $2,790
- RPV ≈ $0.45
Slice by source:
newsletter: 1,100 visitors, $1,210 → $1.10 RPVtwitter: 2,400 visitors, $360 → $0.15 RPVdirect: 1,900 visitors, $1,020 → $0.54 RPV
Under-10k rule: twitter’s slice has sample size but poor RPV, investigate landing page and offer fit, not “Twitter bad.” Maybe twitter hits /blog posts with no CTA. Path analysis belongs in the landing page RPV guide.
When to use daily RPV (rarely)
Daily RPV is mostly noise under 10k monthly. Exceptions:
- You sent a paid newsletter slot at a known hour.
- You turned on a time-boxed discount.
- You fixed a checkout outage at lunch.
Even then, compare to the same weekday last week, not yesterday vs today.
Spreadsheet layout if you are not on a dashboard yet
Columns: date, visitors, revenue, 7d_rolling_visitors, 7d_rolling_revenue, 7d_rpv.
Use SUM over trailing rows. Graph 7d_rpv only, raw daily RPV will look like a lie detector test.
Migrate off the sheet once UTMs matter; manual UTM joins are where founders quit.
Integrity checks before trusting a number
- Test purchases excluded? Filter internal email domains or tag test mode.
- Webhook duplicates deduped by payment intent id?
- Timezone on revenue matches visitor rollup (UTC is fine if consistent).
- Ad blockers do not block your own tracker on
/pricing(verify in a clean browser).
One broken check can halve measured visitors while revenue stays real, RPV doubles on paper and you chase ghosts.
What improves RPV without magic
- Send paid-intent traffic to one landing page with one CTA.
- Show price early on pages meant for buyers, not readers.
- Fix mobile checkout friction (half of indie traffic is phone).
- Align email CTAs with the UTM you expect in analytics.
None of that requires 50k visits. Each is testable in a 28-day window under 10k.
Honest limits
You still will not see:
- Cross-device journeys without login.
- Offline word-of-mouth unless it shows up as
direct. - Long B2B cycles where the site is research.
RPV under 10k is a triage tool, not proof of causality.
Next reads
- RPV by landing page for one core offer
- Reading RPV after you move pricing
- Topic hub: revenue per visitor
Keep the window label in your calendar. Thin traffic rewards patience more than new metrics.
Exporting for your accountant without breaking RPV
Founders sometimes merge analytics revenue with Stripe payouts and wonder why numbers diverge. Payouts lag; analytics webhooks fire at charge time. For RPV, stay on charge date. For taxes, use your processor’s reports. Mention both dates in board notes so nobody “fixes” analytics to match the bank statement and ruins week-over-week RPV.
If you grant comped accounts, exclude them from revenue or tag them amount: 0 consistently. One free annual license sold to a friend should not count as a spike in RPV.
When to graduate past RPV-only reviews
Past roughly 10k monthly visitors, add cohort signup quality and payback on paid acquisition. Below that threshold, RPV plus honest segmentation is still the highest ROI review on your calendar, provided you read landing pages and pricing changes with pinned windows instead of vibes.