How to Measure Revenue From Reddit and See Which Subreddit Sends Buyers
Key Takeaways
- •Reddit strips referrers and routes clicks through redirects and in-app browsers, so its sales collapse into your Direct bucket unless you capture the source another way.
- •UTM tags survive referrer stripping because they live in the URL, so tag every Reddit link per subreddit and per post, never with one generic reddit source.
- •Tags only capture the click; delayed buyers return later without the cookie, so the source must be carried forward and stamped onto the sale to survive.
- •Affiliateo joins the visitor to the exact Stripe or RevenueCat charge and stamps the subreddit at sale time, so attribution survives cookie loss and iOS privacy.
- •Ranking subreddits by revenue instead of clicks reorders your strategy: the community with the most upvotes is often not the one that sends paying customers.
Reddit can send you a flood of traffic and still leave you unable to measure revenue from Reddit at all. You watch a comment climb, referral clicks spike in real time, and then you open your analytics and the money is nowhere. Sales that clearly came from a subreddit thread land in your Direct bucket, unlabeled, indistinguishable from someone who typed your URL by hand. So you know Reddit sent people. You have no idea which community sent people who paid.
This is the specific, maddening gap: Reddit is one of the highest-intent traffic sources on the internet, and it is also one of the hardest to attribute. Below is exactly why the source disappears, and how to capture the subreddit first-party and tie it to the real Stripe or RevenueCat charge, so you finally learn which subreddit drives sales instead of which one drives upvotes.
Why Reddit traffic hides in your Direct bucket
Attribution normally works because the browser sends a referrer header. When someone clicks from a blog to your site, your analytics reads "came from that blog" and files the visit correctly. Reddit breaks this in three overlapping ways.
First, Reddit runs most outbound links through a redirect and applies referrer policies that strip or truncate the originating URL. By the time the visitor lands on your site, the browser often reports no referrer, or a bare "reddit.com" with no subreddit, no thread, no post. The single most valuable piece of information, which community sent this person, is gone before your page even loads.
Second, a large share of Reddit traffic comes from the official mobile app and from third-party Reddit clients. These open links inside an in-app browser (a WebView), which is a sandboxed mini-browser that does not share cookies or history with the user's real browser and frequently sends no useful referrer. The visitor exists. Their origin does not.
Third, even when a referrer survives, Reddit only ever tells you "reddit.com" at best. It will not tell you the person came from r/SaaS versus r/Entrepreneur versus a niche community of 4,000 people who are your perfect customers. That distinction is the entire point, and the referrer header cannot carry it.
The result: your Reddit traffic revenue collapses into Direct, mixed with bookmark visits and typed URLs. You cannot separate it, so you cannot value it.
How referrer stripping and in-app browsers erase the source
It helps to see this as a chain, and to see exactly where each link snaps.
| Step in the click | What normally happens | What Reddit does |
|---|---|---|
| User clicks your link | Browser records the source page | Link may pass through a redirect that drops context |
| Referrer header sent | Full URL including path travels to your site | Header stripped, truncated, or reduced to bare domain |
| Landing on your site | Analytics reads referrer, files the source | Sees "direct" or an unhelpful "reddit.com" |
| Which subreddit | Path in the referrer reveals the community | Never present, even in the best case |
| Mobile in-app click | Same as desktop | WebView sends no referrer, no shared cookies |
Notice that every failure mode ends in the same place: lost source. This is why Reddit marketing attribution is famously unreliable if you depend on referrers. The channel is structurally hostile to the mechanism most analytics tools were built on. You cannot fix Reddit referrer stripping from your side, so you have to stop depending on the referrer entirely.
Tagging Reddit links per subreddit and post
The fix begins with information you control: put the source into the link itself, using UTM parameters. A UTM tag is just a set of query parameters you append to your URL that describe where the click came from. Because they live in the URL, they survive referrer stripping, they survive redirects, and they survive in-app browsers. If you are new to these, our UTM tracking guide walks through the full parameter set.
The discipline that makes this work for Reddit is granularity. Do not tag every Reddit link with a single generic "reddit" source. Tag per subreddit, and ideally per post, so the data can actually answer your question.
- utm_source stays constant as reddit, so all Reddit traffic rolls up cleanly.
- utm_medium distinguishes organic social from paid, for example social versus cpc.
- utm_campaign carries the subreddit and the specific thread, for example r-saas-launch-thread or r-indiehackers-mrr-post.
Picture an indie hacker who drops their tool in three communities in one week. With per-subreddit tags, a link shared in r/SideProject carries utm_campaign=r-sideproject, the one in r/webdev carries r-webdev, and the one answering a question in r/SaaS carries r-saas-pricing-comment. Now every click is self-describing. It does not matter that Reddit refused to send a referrer, because the source is riding inside the URL the visitor actually clicked.
One practical warning. Reddit users are sharp and privacy-aware, and a naked utm-stuffed link in a comment can read as spammy and get downvoted or removed. Keep the visible link clean where you can, lead with genuine value, and lean on your own short links so the tags travel without cluttering the comment. The tagging is for your data, not for show.
Why tags are not enough without revenue attachment
Here is the trap that catches almost everyone, and it is worth stating plainly. UTM tags tell you which subreddit sent the click. They do not tell you which subreddit sent the customer.
Those are different questions, and the gap between them is where money hides. The UTM lives in a cookie or a session on the first visit. But high-intent Reddit visitors rarely buy on impulse in the first thirty seconds. A SaaS founder reads a thread on Monday, clicks through, pokes around, closes the tab. They come back Thursday, this time typing your URL directly or clicking a bookmark, and they subscribe. By then the UTM cookie may be expired, cleared, or simply not present on the returning visit. The sale fires. Your report credits it to Direct. The subreddit that actually earned the customer gets zero credit.
This is the same reason your UTM numbers never reconcile with your Stripe dashboard. The tag captured the click. Nothing carried that tag forward to the moment money changed hands. Privacy analytics tools and pageview trackers cannot close this gap by design: they stop at the pageview. They can show you a session labeled r-saas, but they have no connection to your payment processor, so they cannot tell you that session became an 828 dollar annual plan. To track Reddit conversions to actual dollars, the source has to survive all the way to the charge.
Stamping the Reddit source onto the settled charge
This is the mechanism that makes Reddit revenue real, and it is the core of how Affiliateo attributes Stripe revenue to the channel that earned it.
Affiliateo captures the Reddit source first-party on the very first visit, from your own domain, using the UTM in the URL rather than the stripped referrer. It stores that source against the visitor with first-party identifiers that do not depend on third-party cookies. Then, critically, it holds that source and carries it forward. When the visitor returns days later and finally buys, Affiliateo stamps the original Reddit source, the exact subreddit campaign, onto the transaction at the moment the sale settles.
The anchor is the payment object itself. When Stripe confirms a charge, that charge is a real, immutable record: an amount, a currency, a customer, a timestamp, money that actually moved. Affiliateo joins the visitor to that exact charge and writes the ad_source and the campaign onto it at sale time. For mobile apps, it does the same against the RevenueCat subscription event. The attribution is no longer a fragile cookie hoping to survive until checkout. It is a fact stamped onto settled revenue, and it stays true even after the cookie is long gone.
That is the difference that survives cookie loss, ad blockers, and iOS privacy restrictions. The subreddit is not inferred from a referrer Reddit refused to send. It is captured up front and welded to the money at the end.
Revenue and conversion rate per subreddit
Once the source rides all the way to the charge, the report you actually wanted becomes trivial to produce. Instead of counting upvotes and clicks, you see revenue per subreddit.
| Subreddit | Clicks | Signups | Paying customers | Revenue |
|---|---|---|---|---|
| r/SaaS | 240 | 38 | 11 | 4,180 |
| r/Entrepreneur | 610 | 41 | 4 | 620 |
| r/SideProject | 180 | 22 | 9 | 2,970 |
Read that table the way it deserves to be read. On raw traffic, r/Entrepreneur looks like the winner: nearly triple the clicks. On revenue, it is the weakest of the three. r/SaaS sent a quarter of the clicks and earned the most money, because those visitors convert and pay. r/SideProject punches far above its click count too. Without revenue attachment you would have poured more effort into the loudest community. With it, you double down on r/SaaS and r/SideProject, where the paying customers actually live.
This is also where revenue per visitor becomes your sharpest lens: it tells you what a click from each community is genuinely worth, not just how many arrived. If a subreddit's revenue per visitor is high, more effort there compounds. If it is near zero despite heavy traffic, that community enjoys your content but does not buy, and that is a strategy signal, not a failure. Layer a conversion funnel on top and you can see whether a weak subreddit loses people at signup or at checkout, so you know whether to fix the offer or the audience.
Separating organic Reddit from Reddit Ads
If you run Reddit Ads alongside organic posting, you have a second attribution problem: keeping the two apart. Money spent and money earned freely are not the same channel, and blending them hides your true return on ad spend.
The clean separation is the utm_medium field. Tag organic comments and posts with utm_medium=social, and tag paid placements with utm_medium=cpc or paid. Same utm_source of reddit, different medium. Now your reporting can split the two: organic Reddit revenue in one lane, Reddit Ads revenue in another, each tied to real charges. You can finally compute honest ROAS on the paid side, because you are dividing settled, non-refunded revenue by actual spend, rather than trusting the ad platform's self-reported conversions. The same first-party, revenue-attached principle that powers our guides to Meta ads ROAS and TikTok ads ROAS applies identically to Reddit's ad platform.
Common Reddit attribution mistakes
A few errors show up again and again, and each one quietly corrupts your numbers.
- Trusting the referrer. Reddit strips it. If your attribution depends on the referrer header, your Reddit revenue will always sit in Direct. Put the source in the URL instead.
- One generic reddit tag. If every Reddit link shares one campaign value, you can never tell which subreddit drives sales. Tag per community, and per post when it matters.
- Attributing on the click, not the sale. The click is not the customer. If nothing carries the source forward to checkout, delayed buyers detach and land in Direct. Stamp the source onto the settled charge.
- Counting gross, ignoring refunds. A subreddit that drives sign-ups who churn or refund is not your best channel. Reconcile against non-refunded, non-disputed charges so revenue per subreddit reflects money you keep.
- Blending organic and paid. Without a medium split, Reddit Ads spend contaminates your organic numbers and your ROAS is fiction. Separate them with utm_medium.
Avoid these five and your Reddit data goes from a guessing game to a decision engine. You stop optimizing for the applause of upvotes and start optimizing for the communities that send buyers.
Turn Reddit upvotes into attributed revenue
Reddit will keep stripping referrers and burying your sales in Direct. You do not have to accept that. Affiliateo captures the subreddit source first-party, carries it forward, and stamps it onto the exact Stripe or RevenueCat charge, so you finally see which community sends paying customers across web and mobile alike. If you are ready to measure revenue from Reddit instead of counting clicks, connect your payments to Affiliateo and watch your Direct bucket resolve into the subreddits that actually earn.
Written by Daniel Ortega
Daniel is the Head of Content at Affiliateo. With 8+ years in affiliate marketing, he helps creators build profitable programs.