Key takeaways
- GA4 does not track affiliate link clicks automatically — custom events must be created via Google Tag Manager or gtag.js to capture them.
- Toggling ‘Mark as Conversion’ in GA4’s Admin panel is what transforms a raw click event into a measurable affiliate goal.
- UTM parameters appended to every affiliate link are essential for accurate referral source attribution inside GA4’s Acquisition reports.
- GA4’s Traffic Acquisition report and custom Explorations reveal which referral partners and campaigns actually drive conversions, not just clicks.
Why GA4’s Default Setup Falls Short for Affiliate Conversion Tracking
GA4 is a capable analytics platform, but it was not built with affiliate marketers in mind. Install it on your site and you will get sessions, engagement rates, and event data — but very little of it will tell you which partner or referral link actually drove a purchase. Three structural gaps explain why.
Outbound clicks are tracked generically, not by partner. GA4’s enhanced measurement captures outbound link clicks as events, but stores them with a link_url parameter and nothing more. If you are managing multiple affiliate arrangements, each with its own tracking link, GA4 shows a list of URLs clicked — not a breakdown by partner ID or campaign. There is no built-in way to connect that click to a downstream conversion.
Referral traffic frequently gets misclassified as direct. Many affiliate networks redirect through their own domains before a user lands on your site. In that handoff, the referral source is often stripped, and GA4 records the session as (direct) / (none). Partners may be sending steady, converting traffic, and your acquisition report will not reflect it. The tell is “direct” traffic converting at a rate that is otherwise hard to explain.
There are no pre-built affiliate conversion goals. GA4 requires manual conversion configuration, and even when purchase events fire correctly, there is no native way to segment those conversions by partner, link ID, or campaign. Revenue gets recorded; attribution does not.
What This Looks Like in Practice
Picture a marketer running a content site with several affiliate arrangements in place. Their GA4 dashboard shows healthy session volume and a consistent number of purchase events. Traffic is coming in. Revenue is being recorded. But when they try to answer the question that actually matters — which partner or referral link drove those sales — the data offers nothing useful. They cannot confidently cut an underperformer or move budget toward whoever is actually converting.
These three gaps compound each other:
- Misclassified sessions hide which partners are sending traffic
- Unattributed clicks break the path from referral to sale
- Missing conversion segmentation makes partner-level ROI invisible
That is the situation GA4 leaves you in by default. The six steps ahead are structured specifically to close each of these gaps in sequence, starting with how you tag and pass referral data — covered in depth in UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers — and building toward a setup where every conversion traces back to the partner who drove it.
Steps 1–2: Create Your GA4 Property and Install the Tracking Tag
Before you can track a single referral conversion, GA4 needs a place to receive your data. That means creating a property and getting your tag onto the affiliate site — two tasks that take about ten minutes but underpin everything that follows.
Step 1: Create a GA4 Property and Grab Your Measurement ID
Log in to Google Analytics and open the Admin panel (the gear icon, bottom-left). Under the Account column, confirm you’re in the right account, then click Create Property in the Property column. Name it something descriptive — for example, “Affiliate Site — Personal Finance” — and set your reporting time zone and currency to match where your conversions happen.
Once the property is created, navigate to Admin → Data Streams → Add stream → Web. Enter your site’s URL and a stream name, then click Create stream. At the top of the stream detail screen you’ll see your Measurement ID — a string beginning with G-. Copy it; you’ll need it in the next step.
While you’re on that screen, scroll down and toggle on Enhanced Measurement. This automatically captures page views, scrolls, outbound clicks, site search, and file downloads without any additional code. It gives you a solid baseline of user behaviour before you write a single custom event.
Step 2: Deploy the Tag and Verify It’s Firing
You have two clean deployment paths:
- gtag.js (direct) — Paste the global site tag snippet into the
<head>of every page on your affiliate site, replacingG-XXXXXXXXXXwith your actual Measurement ID. - Google Tag Manager — Add a new GA4 Configuration tag, enter your Measurement ID, set the trigger to “All Pages”, and publish the container. This is the better choice if you plan to layer on more tags later.
Either way, once the tag is live, open Admin → DebugView in GA4. Navigate to your affiliate site in a browser tab; within a few seconds you should see a live stream of events — page_view, scroll, session_start — appearing in the timeline. If nothing shows, check that the Measurement ID in your tag matches the one in GA4 exactly, and confirm no ad-blocker or browser extension is suppressing the network request.
flowchart LR A[create GA4 property] --> B[retrieve measurement ID] B --> C[deploy tracking tag] C --> D[verify in DebugView]
Only move on to custom event configuration once DebugView confirms your baseline events are flowing. A verified tag is your foundation — without it, every conversion event you build on top will be unreliable. If you’re also planning to tag your referral URLs for source attribution, UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers is a practical companion to this setup.
Step 3: Create Custom GA4 Events That Fire on Affiliate Link Clicks
Understanding Where Custom Events Sit in GA4’s Event Hierarchy
GA4 organizes events into three tiers, and knowing where your affiliate events land changes how you configure them.
Auto-collected events fire without any setup — things like session_start and first_visit. Enhanced measurement events require a toggle in GA4’s data stream settings and cover actions like outbound clicks, scroll depth, and file downloads. Custom events are anything you define yourself in GTM or directly in the Measurement Protocol.
Here is the catch: GA4’s enhanced measurement does capture outbound clicks automatically, but it groups every external link under a single generic click event. That is not granular enough for affiliate tracking. You need a dedicated affiliate_click event that fires only on your partner domains and carries the parameters that matter to your reporting.
Building the affiliate_click Event in Google Tag Manager
Start by creating a trigger. In GTM, go to Triggers → New and choose Click – Just Links. Enable “Wait for Tags” and “Check Validation,” then set the trigger to fire on Some Link Clicks. Add the condition:
- Click URL — contains — your affiliate partner domain (for example,
partners.yournetwork.com)
If you work with multiple networks, add an OR condition for each domain, or use a regex match like (network-a\.com|network-b\.com) to keep things tidy.
Next, create the tag. Go to Tags → New, choose Google Analytics: GA4 Event, and connect it to your existing GA4 Configuration tag. Set the event name to affiliate_click.
Then add the three event parameters every affiliate marketer should pass:
- affiliate_id — the unique identifier for the specific partner or program. Pull this from a data attribute on the link (
{{Click Element - data-affiliate-id}}) or a custom JavaScript variable that reads from the URL. - destination_url — the full outbound URL the user is navigating to. Use the built-in
{{Click URL}}GTM variable here. - campaign_name — the promotional campaign tied to the click, which maps directly to the
utm_campaignvalue you are already appending to your links (the UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers covers the full UTM setup if you need a reference).
Save and publish, then use GTM’s Preview mode to confirm the event fires correctly before pushing to production. In GA4’s DebugView, affiliate_click should appear with all three parameters populated the moment you click a tagged link on your site.
One final step: register affiliate_id and campaign_name as custom dimensions in GA4 under Admin → Custom definitions. Without this, the parameters are collected but invisible in standard reports — they will not appear as filterable columns until you explicitly define them.
Step 4: Turn Affiliate Events into GA4 Conversion Goals
Once your affiliate_click event is firing reliably, the next step is telling GA4 to treat it as a conversion. This is simpler than the old goal-creation workflow, but a few decisions here are worth making deliberately.
Toggling the Conversion Flag
In GA4, navigate to Admin > Events (under your property, not account level). You’ll see a table listing every event GA4 has recorded. Find affiliate_click, then toggle the Mark as conversion switch on. No funnel type, no match conditions — GA4 immediately begins counting every affiliate_click as a conversion and surfaces it across your standard reports and Explorations.
If the event hasn’t fired yet and doesn’t appear in the list, use Create event to define it manually, save it, and then mark it as a conversion once it appears.
Naming Conventions That Scale
A flat event name like affiliate_click works fine with one partner. At scale, it becomes a single undifferentiated bucket. The cleaner approach is to keep one universal event name and encode context into parameters:
- Event name:
affiliate_click(consistent across all partners) partner_id:partner_softwareco,partner_financeappcampaign:q3_homepage_banner,spring_email_dripcommission_tier:standard,vip
This lets you segment conversion performance by partner or campaign inside Explorations without creating a separate conversion event for every relationship. If you want to align these parameters with your tracking links from the start, UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers walks through the UTM layer that feeds these values upstream.
GA4 vs. Universal Analytics: What Actually Changed
The move from UA goals to GA4 conversion events isn’t a cosmetic rebrand. The underlying data model is meaningfully different in ways that directly benefit multi-touch affiliate attribution.
| Dimension | Universal Analytics Goals | GA4 Conversion Events |
|---|---|---|
| Scope | Session-scoped — one goal fire per session maximum | Event-scoped — every qualifying event is counted |
| Session counting | Conversion rate inflated when event fires multiple times per session | Event count and session count tracked independently |
| Attribution model | Last non-direct click by default; difficult to reconfigure | Data-driven by default; model is selectable per report |
| Value tracking | Required a separate goal type or full e-commerce implementation | Pass value and currency parameters on any event |
The session-scope limitation was a genuine blind spot for affiliate work. If a visitor clicked two different affiliate links within one session, UA logged a single goal conversion and credited only one source. GA4 counts both events and attributes each to its actual traffic source — a material difference when you are evaluating overlapping partner campaigns and trying to understand which relationships drive incremental conversions rather than just last-touch credit.
Step 5: Add UTM Parameters to Every Affiliate Link for Clean Attribution
Without UTM parameters, GA4 has no reliable way to connect a click on your affiliate link to the session and conversion it produced. The referral might appear under “direct” traffic, get absorbed into a vague referral bucket, or simply disappear into unattributed noise. UTM parameters solve this by embedding attribution data directly in the URL, so GA4 reads exactly where the traffic came from the moment someone lands on your site.
Build a Consistent Naming Convention
Consistency is what separates usable data from a reporting mess. Adopt a fixed structure across every link you distribute and stick to it — including capitalisation, because GA4 treats Affiliate and affiliate as two separate values.
A reliable convention looks like this:
utm_source=partnername— the individual partner, publisher, or platform sending traffic (e.g.,utm_source=techblogweekly)utm_medium=affiliate— always the same value across your entire programme so you can filter the full channel in one clickutm_campaign=campaignslug— the specific promotion or product push (e.g.,utm_campaign=summer-plan-launch)utm_content=placement— the creative or placement within that partner’s property (e.g.,utm_content=sidebar-bannerorutm_content=inline-text)
A fully tagged link might look like:
https://yoursite.com/pricing?utm_source=techblogweekly&utm_medium=affiliate&utm_campaign=summer-plan-launch&utm_content=sidebar-banner
Every partner gets a unique utm_source; every affiliate link shares the same utm_medium=affiliate. That single shared value is what makes filtering effortless later.
For a deeper look at structuring these parameters across different link types, [UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers]UTM Parameters for Referral Links: A Complete Guide for Affiliate Marketers covers edge cases worth knowing before you scale.
Where This Traffic Appears in GA4
Once tagged links are live and collecting data, navigate to Reports > Acquisition > Traffic Acquisition. The default table groups sessions by session default channel group, but the column you care about is Session Medium. Click the dimension selector at the top-left of the table and switch to Session Medium, or add a filter using the search bar above the table: set Medium exactly equals affiliate.
This filter collapses your entire affiliate programme into one clean view — every partner, every campaign — showing sessions, engagement rate, conversions, and revenue side by side. From here you can add a secondary dimension of Session Source to break down performance by individual partner, or switch to Session Campaign to compare promotions directly.
The discipline of tagging every link before it goes out is what makes this view meaningful. One untagged link from a high-traffic partner skews the whole picture.
Step 6: Read GA4 Conversion Reports and Optimize Referral Campaigns
With your conversion events firing and UTM parameters in place, GA4 gives you everything you need to judge which affiliate partnerships are worth your energy — and which ones aren’t.
Reading the Standard Conversions Report
Start in Reports > Engagement > Conversions. This table shows each conversion event alongside its event count and total event value — it tells you what is converting, but not who is sending the traffic. To answer that, add a secondary dimension: open the dimension picker and select Session source. Now you can see how many purchase or sign-up conversions arrived from each referral source at a glance.
Building a Free-Form Exploration by utm_source
The standard report has limits, so move to Explore > Free-form for a richer view:
- Set your date range to the last 30 days (or whatever matches your campaign cadence).
- Drag Session source/medium into the Rows section.
- Add these metrics as columns: Conversions, Event value, Sessions, and Session conversion rate.
- Sort descending by Conversions to surface your highest-volume referrers immediately.
- Add a filter for Session medium exactly matches referral to keep affiliate traffic isolated from organic or paid channels.
This exploration becomes your affiliate scoreboard. You can export it, share it with partners, or duplicate it with a different date range to spot trends over time.
The Three Metrics That Drive Decisions
Once your exploration is loaded, focus on three numbers for each referral source:
- Conversion rate by referral source — a partner sending 500 sessions at a 4 % conversion rate beats one sending 2,000 sessions at 0.3 %. Raw volume flatters; rate reveals efficiency.
- Sessions per partner — low session counts mean the data is too thin to act on, so extend your date range or wait a few more weeks before drawing conclusions.
- Top converting landing pages — break your rows down by Landing page as a secondary dimension. A product comparison page will often outperform a generic homepage, and that pattern tells you where to invest in content.
For a deeper look at which referral metrics to track alongside these, see Referral Link Analytics: The 6 Metrics Every Affiliate Should Track.
The Optimization Loop
Review your exploration weekly or bi-weekly and apply a consistent three-step process. First, identify the two or three referral sources with the highest conversion rates and strongest event value — these are your priority partners. Put more content, exclusive offers, or co-promotion resources behind them. Second, examine partners with solid session numbers but weak conversion rates; test a dedicated landing page or a tighter call-to-action before making any cuts. Third, flag any source that has accumulated meaningful clicks over 30 days with zero conversions. Those campaigns are spending budget or relationship capital with nothing to show — pause them, diagnose the mismatch between audience and offer, and only restart once you have a clear hypothesis to test.
GA4’s reporting compounds in value over time. The more consistently you tag links and log conversions, the sharper and faster your optimization decisions become.
Frequently asked questions
Does GA4 automatically track affiliate link clicks?
No. GA4’s Enhanced Measurement can capture some outbound clicks, but it does not tag them as affiliate-specific events or tie them to conversion goals. You need a custom event — typically built in Google Tag Manager — that fires only on URLs matching your affiliate partners’ domains and passes parameters like affiliate ID and campaign name.
What is a GA4 conversion event and how is it different from a Universal Analytics goal?
In GA4, any event can be promoted to a conversion by toggling ‘Mark as Conversion’ in the Admin panel — no separate goal setup required. Unlike UA goals, which were session-scoped and capped at 20 per view, GA4 conversion events are event-scoped, support multiple instances per session, and use data-driven attribution by default, making them far more flexible for affiliate funnel tracking.
How do I stop an affiliate network’s domain from appearing as unwanted referral traffic in GA4?
Add the network’s domain to GA4’s unwanted referral list under Admin > Data Streams > Configure Tag Settings > List Unwanted Referrals. Without this, a user who clicks your affiliate link and returns from the network will be counted as a brand-new session from a different source, breaking your attribution chain and inflating referral traffic numbers.
Can I pass actual commission or revenue values through a GA4 custom event?
Yes. Include a ‘value’ parameter in your custom affiliate_click event to pass an estimated or actual commission amount, and GA4 will surface it in the Events report and custom Explorations. This lets you calculate revenue per referral source directly inside GA4, though most serious affiliate marketers supplement this with a dedicated tracking platform for real-time commission reconciliation.
Track your affiliate link free — no signup
Paste any affiliate or referral link and get a TrackRef tracking link instantly, with live click stats. Save it to a free account whenever you want.