Skip to content

BlogHow To Guides

Reddit Ads UTM Parameters: Macros, rdt_cid and the GA4 Setup

Reddit appends one parameter to your landing page by itself, the rdt_cid click ID. Everything else you type. What rdt_cid is and where it goes, how to tag a destination URL, where Reddit's macros actually work, a naming convention GA4 reads correctly, what Google's Reddit link imports, and why UTMs on their own lose the Reddit click long before the deal closes.

Reddit Ads UTM parameters: a tagged destination URL with the rdt_cid click ID appended, read in GA4 and the CRM
Contents
  1. Quick summary
  2. What is on the URL
  3. The rdt_cid
  4. Adding UTMs
  5. Macros
  6. Naming convention
  7. Lost UTMs and Direct
  8. GA4 setup
  9. GA4 Reddit link
  10. UTMs and the journey
  11. Checklist
  12. How LeadJourney does it
  13. Further Reading
Summarise this article with AI

Opens the page with a ready prompt in:

Nothing is sent until you pick a service.

Tag a Google Ads campaign badly and auto-tagging quietly rescues you. Reddit has no such rescue for your analytics. It appends exactly one parameter to the landing page, its own click ID, and everything your analytics tool needs to call the visit Reddit you have to type into the destination URL yourself. Leave it out and a click from the Reddit app, which sends no referrer, lands in GA4 as Direct.

This guide covers both halves of the URL. What rdt_cid is and where it has to go, how to add UTM parameters to a Reddit ad, where Reddit documents macros and dynamic parameters (and where it does not), a naming convention that GA4's channel rules read correctly, what Google's Reddit integration imports, and why UTMs on their own lose the Reddit click long before the deal closes.

Quick Summary: UTM Parameters on Reddit Ads

In short

Reddit appends its click ID, rdt_cid, to your landing page URL on every ad click automatically; the Reddit Pixel reads it, and a Conversions API integration has to store it and send it back. UTM parameters are yours to add: Reddit recommends typing them into the ad's destination URL, and it documents macros only for partner tracker URLs, the catalog ads parameter builder and the Ads API's click_url_query_parameters, not for a standard ad's destination URL in Ads Manager. Use utm_source=reddit and a paid medium such as paid_social so GA4 files the visit under Paid Social, and test with a test URL that the parameters survive every redirect. UTMs describe one visit, so the Reddit click that started a journey disappears the moment the buyer comes back through Google, an AI answer or a typed URL, unless something keeps it on the visitor.

The rest of this guide is the detail behind each sentence of that paragraph, in the order you would set it up.

What Arrives on the Landing Page When Someone Clicks a Reddit Ad

Two different things end up in the query string, and they answer different systems. One is Reddit's, added by Reddit. The other is yours, and it only exists if you put it there.

  • rdt_cid, Reddit's click ID

    Appended automatically to the landing page URL on every ad click. It identifies the click for Reddit's own conversion matching. Your analytics tool does not use it to name the source.

  • UTM parameters, yours

    Whatever you typed into the destination URL. They tell GA4, your CRM and every other tool that the visit came from Reddit, and from which campaign and ad.

  • Macros, only in some fields

    Placeholders Reddit fills in at click time. Documented for partner trackers, catalog ads and the Ads API, not for a standard ad's destination URL in Ads Manager.

Keep the two apart in your head. Removing or renaming rdt_cid costs you conversion matching in Reddit; leaving out UTMs costs you the channel in your analytics. Neither replaces the other.

The Reddit Ads Click ID: What rdt_cid Is and Where It Goes

Reddit's help center puts it plainly: "The click ID (rdt_cid) is automatically appended to your landing page URL when a user clicks a Reddit ad." There is no documented setting to switch it off, and there is nothing to configure. It is one of Reddit's match keys, the one that ties a conversion to a specific click.

  • The Reddit Pixel reads it by itselfIf the Pixel runs on the landing page, it picks up the rdt_cid and sends it with its events. Nothing to do, as long as the parameter is still in the URL when the page loads.
  • The Conversions API needs it storedA server event cannot read the URL. Reddit's guide says the advertiser has to persist the click ID (cookie, storage, hidden form field or server session) and send it as click_id.
  • Or on event_source_urlWhen a server event has no click_id, Reddit reads the rdt_cid from the page URL passed in event_source_url, if the URL still carries it.
  • Through CM360, only with a suffixAn ad routed through Campaign Manager 360 gets no Reddit click ID unless, as Reddit's third-party measurement article describes, the landing page URL suffix in CM360 includes &rdt_cid=%prdt_cid=!;

So a redirect that drops the query string does double damage: it takes your UTMs and Reddit's click ID in one go, and the Pixel on the final page never sees either. How the server side stores and sends the click ID is in the Reddit Conversions API guide; the concept across platforms is in the click ID entry.

How to Add UTM Parameters to a Reddit Ad

For a standard image or video ad, Reddit's setup guide has one field that matters: the destination URL, where redditors go after they click. Reddit's reporting article recommends adding UTM parameters to that URL so your analytics tool classifies the traffic correctly, and its measurement article says the same for Google Analytics. So the UTMs are typed into the destination URL, as static values.

  1. Build the URL with your naming convention (below) and a UTM builder, so nobody types a parameter by hand.
  2. In the ad, paste it as the destination URL. A display URL is optional and has to match the destination's domain unless you use an approved click tracker.
  3. Publish, then open a test URL from More options > Test and Preview and click through to the landing page.
  4. Check the landing page URL: it should be the destination URL you entered, with every UTM still present and an rdt_cid appended.
Destination URL, then the landing page URL after a click (placeholders in angle brackets)
https://www.example.com/demo?utm_source=reddit&utm_medium=paid_social&utm_campaign=<CAMPAIGN_NAME>&utm_content=<AD_GROUP>__<AD_NAME>

https://www.example.com/demo?utm_source=reddit&utm_medium=paid_social&utm_campaign=<CAMPAIGN_NAME>&utm_content=<AD_GROUP>__<AD_NAME>&rdt_cid=<RDT_CID>

The placeholders here are values you type, not macros Reddit replaces. Get the URL right before you publish: Reddit's ad review page says editing an ad, the destination URL included, sends it back through review, which is typically done within a day but can take longer.

Reddit Ads Macros and Dynamic Parameters: Where They Work

Reddit does have macros, the placeholders like {{CAMPAIGN_ID}} that are replaced at click time, and Reddit notes that "All macros are case-sensitive." But they are documented in three specific places, and a standard ad's destination URL in Ads Manager is not one of them.

  • Click and impression tracker URLsFor approved measurement partners: Adjust, AppsFlyer, Branch, Flashtalking, Foursquare, Gamesight, Google, Kochava, Nielsen and Singular. Reddit says trackers count impressions and clicks but do not directly track conversions.
  • The catalog ads parameter builderDynamic product ads and product ads have an "add URL parameters" option with nine macros. The parameters cannot be changed after the ad is published, and apply to every destination URL in the ad.
  • The Ads APIAn ad's click_url_query_parameters takes up to 14 name and value pairs appended to the click URL, and the values support the tracker macros. Reddit's own example is utm_medium={{AD_ID}}.

Reddit Ads macros and where Reddit documents them

For the catalog builder Reddit even suggests values: source reddit, medium {{ADVERTISER_ID}}, campaign {{CAMPAIGN_ID}}-{{ADGROUP_NAME}}, content {{AD_ID}}-{{AD_NAME}}. For a standard ad there is no documented field, so do not paste {{CAMPAIGN_ID}} into a destination URL and trust it to be replaced. Reddit documents no such behaviour, and if it is not replaced your reports fill up with the literal text {{CAMPAIGN_ID}}. Type the values per ad, or set click_url_query_parameters through the API, which also accepts them on an existing ad through Update Ad since May 2026.

A Naming Convention for Reddit Ads UTMs

Static values only work if they are consistent, and Google is strict about it: "Parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google." Reddit itself is not consistent here, since its Google Analytics advice writes utm_source = Reddit while its catalog builder suggests reddit. Pick lowercase and never vary it. This is the convention we recommend:

A recommended UTM convention for paid Reddit traffic

Two rules keep it clean. One medium for all paid Reddit traffic, because Google's Reddit link expects a single value for utm_source and a single value for utm_medium. And keep organic Reddit apart: a link in your own post or a comment gets utm_medium=social, which GA4 files under Organic Social, so the paid numbers are not flattered by traffic nobody paid for. More on the parameters themselves in UTM parameters explained.

Why Reddit Traffic Loses Its UTMs or Lands as Direct

Reddit's own article on why third-party numbers differ from Ads Manager lists the causes, and most of them are about the URL. Read together, they explain why a Reddit campaign so often shows up as Direct traffic in GA4.

  • The Reddit apps send no referrerReddit says its iOS and Android apps do not pass referral information, so a third-party tool misattributes that traffic. A new visitor with no referrer and no UTMs matches GA4's definition of Direct, (direct) / (none).
  • Redirects strip the parametersA destination URL that redirects when the page loads may strip the UTMs, and with them the rdt_cid. Reddit's test: open a test URL; the landing page URL should equal the destination URL with the UTMs present.
  • HTTP pages pass no referralReddit notes that a site on HTTP instead of HTTPS receives no referral information either, which is one more reason not to rely on referrers at all.
  • Clicks are not visitsReddit counts clicks; analytics counts visits once its code runs. Accidental clicks, slow pages and ad blockers all widen the gap before any tagging question arises.
  • Ads Manager runs on UTCCompare the same dates in the same time zone, or a campaign that looks fine in one tool looks broken in the other.

Reddit's recommendation for all of it is the one in this guide: UTM parameters in the destination URL rather than the referrer. What it cannot fix on its own is the redirect you did not know about, which is why the test URL check matters. Stripped UTMs are also the most common reason a form loses its source on the way into the CRM.

How GA4 Reads Reddit Ads Traffic

GA4 decides the channel from source and medium with fixed rules, and Google publishes them. Paid Social needs two things: a source on Google's list of social sites and a medium matching ^(.*cp.*|ppc|retargeting|paid.*)$. Google's source list includes both reddit and reddit.com as social sources, which is what makes the convention above work.

How GA4's default channel group files Reddit traffic

With that in place, GA4 can report sessions and its own key events by Reddit campaign and ad, from the values you typed. Two things it still does not have: Reddit's cost (that is the integration below) and any idea what happened after the form, in your CRM.

The GA4 Reddit Integration Is Google's, and Imports Cost Only

The integration people search for as "reddit ads google analytics integration" is Google's, not Reddit's. It lives in GA4 under Admin > Product links > Reddit Links, and it imports three campaign-level metrics from Reddit Ads: Ads cost, Ads clicks and Ads impressions.

  • Matching: Google asks for all paid Reddit traffic to carry a single unique utm_source and a single unique utm_medium, and calls utm_campaign and utm_id optional but highly recommended.
  • Access: at least the Analyst role in Reddit Ads and at least Editor on the GA4 property.
  • History: Google says it will attempt to pull at least 24 months of Reddit Ads data.
  • Timing: an import can take up to 30 minutes, and up to 24 hours before the data is in reports.
  • Duplicates: Analytics does not deduplicate it against cost you already uploaded by hand, so remove a manual Reddit cost import first.
  • No second chance: the ad account, source and medium cannot be changed once the link is created. Settle the convention before you link.

What the link does not do

It sends nothing to Reddit and imports no Reddit conversions. It puts Reddit's spend next to GA4's sessions and key events, which gives you a cost per GA4 conversion. It does not give you revenue from the CRM, and a GA4 key event is not a Reddit conversion: Reddit counts what its Pixel and Conversions API report inside its own windows, 28-day click plus 1-day view by default.

Why GA4, Ads Manager and the CRM still disagree after all this is its own subject: windows, view-through conversions and the date Reddit books a conversion on. See Reddit Ads attribution and why GA4, Meta and Google never match your CRM.

Why UTMs Alone Lose the Reddit Journey

A UTM describes the visit it arrived with, and nothing else. On Reddit that is a problem of a particular shape, because people use Reddit to research. They read the thread, click the ad, look around, and leave. When they come back to buy, it is through a Google search for your brand, an answer in ChatGPT that cited the same Reddit thread, or your URL typed from memory. Each of those visits carries its own source, and none of them says Reddit.

One buyer, three visits, and what each method records

The hidden form field, the standard fix for UTMs in a CRM, records the visit that happened to end in a form. Last click in GA4 hands the lead to Organic Search. Reddit may still count the conversion in Ads Manager, inside its window, if the Pixel matched the same person, but that number never reaches your CRM, where the lead now says organic. The Reddit click that opened the journey survives only if something stores every session under one visitor from the first visit on, and keeps that record long enough for a sales cycle.

That record is what multi-touch attribution runs on. With it, the lead above shows Reddit as first touch, ChatGPT in the middle and branded search as last touch, and multi-touch attribution can split the credit instead of guessing. Without it, every Reddit report undercounts the channel whose job was to start the research. The reporting consequences are in Are Reddit Ads worth it? and, for long cycles, Reddit Ads for B2B SaaS.

A Pre-Launch Checklist for Reddit Ad URLs

Ten minutes before a campaign goes live saves a month of reports you cannot use. Keep in mind that test URLs behave like real ads, so impressions, clicks and charges apply, that they expire after 30 days or when the campaign ends, and that Reddit cannot generate them for Max campaigns, where it points you to the ad preview instead.

  1. Every destination URL is built from one convention: utm_source=reddit, one medium, a campaign name that matches the Reddit campaign.
  2. Open the test URL on a phone in the Reddit app as well as on a desktop, and follow the click through.
  3. The landing page URL equals the destination URL, all UTMs present, rdt_cid appended. If not, find the redirect.
  4. In GA4's realtime report, the visit shows as reddit / paid_social.
  5. Submit the form and open the new record in your CRM: the source fields and the click ID are on it.
  6. If the Pixel or the Conversions API is installed, the test conversion appears in Ads Manager within 24 hours.
  7. Link Reddit in GA4 under Product links only once the convention is final, since source and medium cannot be changed afterwards.

The Pixel side of the check (which events fire, and with what) is in the Reddit Pixel setup guide, and the whole measurement system in Reddit conversion tracking.

How LeadJourney Keeps the Reddit Click on the Journey

LeadJourney is one script on your site or in your GTM container, live in about 21 minutes without a developer, tracking server-side and first-party at 95%+ accuracy. On every visit it reads the UTMs, the landing page and the referrer, and on a Reddit click the rdt_cid, captured server-side. It reports AI search engines such as ChatGPT, Gemini, Claude, Copilot and Perplexity as sources of their own, which matters on a channel whose threads those engines cite.

What makes the Reddit click survive is the LeadJourney Click ID: LeadJourney's own visitor identifier, issued on the first visit and kept in the browser (localStorage plus a first-party cookie) for months. Every session is stored under it, and the platforms' click IDs, gclid, fbclid, msclkid, li_fat_id and now rdt_cid, are stored on it as properties of the session they arrived with. When the buyer from the table above fills in the form on Thursday, the Monday Reddit session is already on the journey, and it stays there through the CRM to closed won, with no attribution window on LeadJourney's side.

The Reddit Ads integration adds the other half. It connects your Reddit Ads account and imports campaigns, ad groups, ads and daily spend, so the spend sits next to the leads and revenue your CRM reports. It follows each lead through the CRM and sends the stages you map back through Reddit's Conversions API with the value, the click ID, hashed email and phone, and a conversion ID that deduplicates against a running Reddit Pixel. The journey can be read under first click, last click, linear, position based, time decay and other models without re-tracking, and the data is processed in Frankfurt under a GDPR data processing agreement.

Read verified reviews on Trustpilot, G2 and leadjourney.io/testimonials.

Further Reading

FAQ

Frequently Asked Questions

What marketers ask when Reddit traffic does not show up where they expect it.

How do I add UTM parameters to Reddit Ads?

Type them into the ad's destination URL, which is what Reddit recommends for third-party analytics. Build the URL with one convention, for example utm_source=reddit, utm_medium=paid_social, the campaign name in utm_campaign and the ad in utm_content. Then open a test URL and check that the landing page URL still carries every parameter, plus the rdt_cid Reddit appends.

Does Reddit Ads support macros or dynamic parameters?

Yes, in three documented places: click and impression tracker URLs from approved measurement partners, the URL parameter builder for catalog ads, and the Ads API's click_url_query_parameters field. Reddit does not document a URL parameters field with macros for standard ads in Ads Manager, so for a standard image or video ad type static values, or set the parameters through the API.

What is rdt_cid in my landing page URL?

It is the Reddit Ads click ID, which Reddit appends to your landing page URL automatically on every ad click. The Reddit Pixel reads it and sends it with its events, and a Conversions API integration should store it and send it back as click_id. It is a match key for Reddit's conversion reporting, not a campaign tag for your analytics, so keep it and add UTMs as well.

What utm_source and utm_medium should I use for Reddit Ads?

utm_source=reddit in lowercase, since Google Analytics treats parameter values as case sensitive, and one paid medium for all Reddit campaigns, such as paid_social. GA4 lists reddit as a social source, and a medium starting with paid matches its paid rule, so the visits land in the Paid Social channel. Give organic Reddit links utm_medium=social so they stay out of the paid numbers.

Is there a Reddit Ads integration for Google Analytics?

Yes, and it is Google's. In GA4 under Admin > Product links > Reddit Links, it imports campaign-level Ads cost, Ads clicks and Ads impressions from Reddit Ads, matched on your utm_source and utm_medium. It does not import Reddit conversions or send anything to Reddit, and it is not deduplicated against a manual cost import.

Why does my Reddit traffic show as Direct in GA4?

Usually because the click came from the Reddit iOS or Android app, which Reddit says passes no referral information, and the destination URL carried no UTMs. GA4 files a new visitor with neither as (direct) / (none). The other common cause is a redirect that strips the query string before the analytics tag loads. Tag every destination URL and test it with a test URL.

Can UTMs show which Reddit ad produced a closed deal?

Only when the buyer converts on the visit that carried them. Reddit is a research channel, so buyers often return later through branded search, an AI answer or a typed URL, and a hidden form field then records that last visit instead. To credit the Reddit ad you need a first-party visitor record that keeps every session, UTMs and rdt_cid included, from the first click to the closed deal.

Reddit journeys

Ready to see what your Reddit clicks turn into?

LeadJourney captures the rdt_cid and UTMs on every Reddit click server-side, keeps them on the LeadJourney Click ID for months and joins them to the lead and the revenue in your CRM. Live in 21 minutes, with a 14-day free trial.

LeadJourney dashboard showing lead sources, campaign performance and attributed revenue side by side