How to Track Reddit Ads with UTM Parameters
Reddit ads traffic lands in GA4 as a referral mess. The UTM convention that keeps paid, organic and dark Reddit traffic from blurring together.
Reddit sends traffic. GA4 shrugs.
Reddit ads are having a moment. CPMs run well below Meta's, the intent on niche subreddits is real, and after Reddit's search deal put threads at the top of Google, everyone suddenly has a Reddit line item. What nobody warns you about: the attribution is a mess by default.
Untagged Reddit traffic reaches GA4 wearing several different disguises. Some arrives as reddit.com / referral. Some comes through out.reddit.com, Reddit's click redirector. Old-timers on old.reddit.com show up separately. And a big slice arrives with no referrer at all, because the Reddit mobile app opens links in an in-app browser that often passes nothing. That slice lands in direct, next to your bookmark traffic.
Here's the part that actually costs money: your paid clicks and your organic Reddit mentions collapse into the same bucket. GA4's default channel grouping files reddit / referral under Organic Social. You're paying for ads whose clicks get credited to "organic." Try defending that budget in a quarterly review.
UTM parameters fix all of it in about 20 minutes. But Reddit has a few quirks the generic UTM advice misses.
Tag every Reddit ad with UTMs first
Every Reddit ad has a destination URL. Tag every one of them:
utm_source=reddit
utm_medium=paid-social
utm_campaign=q3-launch
utm_content=devops-subreddit-video
Two of these choices matter more than they look.
First, the medium. GA4 only classifies a session as Paid Social when the source is a known social site and the medium matches its paid patterns. paid-social matches. So does cpc. Made-up values like reddit-ads don't, and your spend silently reports as organic again. We keep a full list of which utm_medium values GA4 actually accepts because this exact mistake is everywhere.
Second, utm_content is where Reddit targeting lives. Reddit performance differs by subreddit more than by creative (the same ad can win in r/devops and die in r/sysadmin), so encode the targeting group in utm_content or you'll never see that split in GA4.
Reddit's ads manager can also inject IDs into your URLs with macros like {{CAMPAIGN_ID}} and {{ADGROUP_ID}}. Useful for joining ad spend to analytics rows later, but they're numeric IDs, unreadable in reports. Use them alongside human-readable values, not instead of them. And if you handle more than a handful of ads, build the URLs with a UTM builder instead of hand-typing them. One typo'd source value forks your data.
The organic side needs different tags
If you also post organically (founder comments, community posts, AMAs), tag those links too, just differently:
utm_source=reddit&utm_medium=social&utm_campaign=community
Now paid and organic Reddit separate cleanly in every report. This is the whole game. The teams we've seen get Reddit attribution right all did this one thing.
One warning from experience, though. Redditors notice tracking parameters, and some subreddit mods remove obviously tagged links on sight. A comment linking to yoursite.com/?utm_source=reddit&utm_medium=social&utm_campaign=founder-comments reads as marketing because it is. A branded short link carries the same tags invisibly and survives scrutiny a lot better. It also gives you a click count that doesn't depend on what happens after the redirect.
The app problem, and why click logs matter here
That in-app browser deserves its own paragraph. When someone taps your link inside the Reddit app, shares it to a friend, or copies it into Discord, the referrer chain usually dies. This is classic dark social, and Reddit produces more of it than most platforms because so much of Reddit happens in the app and in screenshots.
Tags in the URL survive all of that. The parameters don't care about referrer headers. And if the link is a short link you control, the click itself gets logged server-side before any browser weirdness gets a vote. On our own Reddit experiments, the click logs consistently show more clicks than GA4 shows sessions. The gap is the app tax. Knowing the size of that gap is the difference between "Reddit doesn't work" and "GA4 can't see a third of Reddit."
Keep the naming boring
Whatever convention you pick, write it down and stop improvising. utm_source=reddit, always lowercase, never Reddit.com or reddit_ads. One medium for paid, one for organic. Campaign names that match what you call them in the ads manager. Our naming conventions guide has the full template, but the rule fits in a sentence: a convention only works if the next person guesses it correctly.
Reddit's cheap reach is real. So is its measurement blind spot. Tag both sides properly this week and you'll be reading clean Reddit numbers by the next budget conversation, while your competitors are still arguing about what "direct" means.