[Blog](/blog)

[Creator marketing measurement](/blog/influencer-marketing-measurement.md)

# How to Track Influencer Sales with Promo Codes and UTM Links in GA4

To track influencer sales in GA4, give each creator a unique promo code and a UTM-tagged link. Tag links with `utm_source`, `utm_medium`, `utm_campaign`, and `utm_content`, and send the `coupon` parameter on your `purchase` event so GA4's coupon dimension populates. This guide covers the full setup, where the data appears in GA4, and how to connect each code and link back to the creator or campaign behind it.

The Brandwave team

August 17, 2026

11 min read

## Why creator sales end up credited to organic search

It's easy for your marketing efforts to miss the credit they deserve. Take, for example, a creator encouraging their audience to use your product in a video or a podcast host mentioning your URL. A user may become aware of you and go on to convert to a sale, but without placing a pixel in their browser, most analytics setups will record them as organic search or direct traffic.

Promo codes and tagged links are two clear attribution metrics that survive this gap. When someone redeems a code at checkout or clicks a tagged link, Google Analytics records it against that specific code or link. That gives you a per-creator, per-placement number with clear attribution.

However, promo codes and tagged links also undercount. Plenty of people watch a creator's video, skip the link, and search for the brand days, weeks, or months later. Codes and tagged links only capture the portion of impact that flows directly through them while missing the broader brand awareness you may have built, which is why they work best read alongside [self-reported attribution](/blog/how-did-you-hear-about-us-ga4.md) and your overall conversion trends rather than as the whole answer.

## What is UTM tracking?

UTM parameters are five query-string fields that Google Analytics reads from any URL a visitor arrives on. UTM stands for Urchin Tracking Module, named after Urchin, the analytics product Google acquired in 2005. Add the parameters to a link and every session that starts from it carries the values you set.

| Parameter | What it records | Creator marketing example |
| --- | --- | --- |
| `utm_source` | Where the traffic came from | `instagram`, `youtube`, `the-daily-podcast` |
| `utm_medium` | The type of channel | `social`, `podcast`, `print`, `qr` |
| `utm_campaign` | The initiative the link belongs to | `summer-launch` |
| `utm_content` | The specific creator or placement | `maya-rivers-reel-2` |
| `utm_term` | Paid search keyword (rarely needed here) | usually left empty |

GA4 exposes these as session-scoped dimensions such as "Session manual source" and "Session manual ad content". For creator and partner marketing, `utm_content` is usually where the individual creator or placement lives. Source, medium, and campaign are usually shared across a wider initiative. Ideally, try to be as detailed as possible with these fields because in the long term you'll end up with richer data for analysis.

## How to create UTM tracking links

Build each link with [Google's Campaign URL Builder](https://ga-dev-tools.google/ga4/campaign-url-builder/) or by appending the parameters yourself. A tagged link for a creator's Instagram bio looks like this:

https://yourstore.com/collection?utm_source=instagram&utm_medium=social&utm_campaign=summer-launch&utm_content=maya-rivers

The values are case-sensitive and free-form, so it's best to agree on a convention up front. `Instagram`, `instagram`, and `IG` become three separate rows in every report, and sticking to a convention will help avoid having to manually reconcile these in a report.

- Lowercase everything and separate words with hyphens: `maya-rivers`, not `Maya Rivers`.
- One `utm_content` value per creator or placement, reused across all of their links.
- Keep `utm_campaign` consistent for everything inside the same initiative so you can roll results up.
- Shorten tagged links with a redirect you control (a `/go/maya` path on your own domain, or a shortener that preserves query strings). Some shorteners and in-app browsers strip parameters, so click every link once and confirm the UTMs survive to the destination.
- Never put UTM parameters on internal links between pages of your own site. They restart the session with a new source and corrupt your data.

The same convention applies more broadly than just creator marketing. A QR code on packaging or a billboard encodes a tagged URL with `utm_medium=qr`. An event booth gets its own `utm_content`. Anywhere you can hand out a distinct URL, you can measure the traffic that came from it.

## How to set up promo code tracking in GA4

GA4 has a dedicated coupon dimension called "Order coupon" (`orderCoupon` in the API), and this sometimes trips people up because it stays empty by default. It only populates when your `purchase` event includes the `coupon` parameter. If your reports show "(not set)" for every order, check if the `coupon` parameter is missing from the event.

A `purchase` event that feeds the coupon dimension looks like this:

gtag('event', 'purchase', { transaction_id: 'T1023', value: 64.00, currency: 'USD', coupon: 'MAYA20', items: [...] })

Where that parameter comes from depends on your tech stack. Most plugins, like Shopify's plugin for Google and Youtube, and Woocommerce's GA4 plugin, send the redeemed discount code automatically. If you have a custom checkout, you'll need a developer to add `coupon` to the purchase event. Whichever applies to you, verify it the same way by placing a test order with a code applied, opening GA4's DebugView, selecting the `purchase` event, and confirming the `coupon` parameter carries the code.

The next step is to make the discount codes themselves attributable. `SAVE20` handed to eight creators tells you nothing about any of them. One code per creator, ideally their name or handle (`MAYA20`), gives the creator something natural to share with their audience and gives you a clean per-partner row in the data. Keep those codes out of your email blasts and paid ads, because the moment a code finds its way onto a coupon aggregator site, its redemptions become less inaccurate for attribution.

## Where the data shows up in GA4

Tagged link sessions appear under Reports → Acquisition → Traffic acquisition. The default view groups sessions by channel, so switch the primary dimension to "Session source / medium" and add "Session manual ad content" as a secondary dimension to see individual `utm_content` values. Redeemed codes appear under Reports → Monetization → Ecommerce purchases with "Order coupon" as the dimension.

Two things to know when reading these reports. GA4 has cardinality limits, so once a report exceeds them, low-volume rows collapse into "(other)", which hits long-tail `utm_content` values first. And standard reports can lag by 24 to 48 hours, so DebugView and Realtime are the places to verify a fresh setup.

The bigger limitation is that GA4 attribution stops at the discount code or tracking link itself. It can show you that `MAYA20` was redeemed 16 times and `maya-rivers` drove 422 sessions, but it doesn't know those two rows belong to the same person, what her posts cost, which campaign she was part of, or what else was live that week. Answering "was this partnership worth it?" means putting the data somewhere that holds the rest of your marketing picture.

## Connect each signal back to the marketing behind it

This is the part [Brandwave](/) handles. Connect your GA4 property in [Reporting](/dashboard/reporting), and the performance page gains a "Promo codes and tagged links" panel listing every coupon code and tagged link GA4 recorded, with sessions, users, and your chosen outcome events beside each one.

![Brandwave Google Analytics connection wizard showing a GA4 property option](/blog/connect-ga4-property-brandwave.webp)

Connect the GA4 property that receives your tagged traffic and purchase events.

From there you map each signal to the creator, campaign, or activity that produced it. `MAYA20` and `maya-rivers` both link to Maya's profile, so her code redemptions, link sessions, content performance, and costs sit in one place instead of three exports. Signals from a podcast sponsorship or a print run map to those activities the same way.

Mapped signals become one layer of evidence among several that help you to triangulate what is really happening in your marketing programme. Brandwave shows them next to [self-reported attribution](/blog/how-did-you-hear-about-us-ga4.md) and your GA4 success metrics, such as sign ups and purchases. So when a creator's discount code redemptions spike, you see a lift in "heard about you from a creator" survey answers, and get a lift in sign-ups, all over the same period of time, you can observe that pattern in one view and draw inferences and conclusions from a clearer picture. The [influencer marketing measurement framework](/blog/influencer-marketing-measurement.md) covers how this evidence layer fits with creators, activities, and costs, and your AI assistant can query all of it through the [MCP server](/docs/mcp-server/overview) or the [API](/docs/api-reference/overview).

## Troubleshooting checklist

- Coupon shows "(not set)": the `purchase` event is missing the `coupon` parameter. Fix the event; check a test order in DebugView.
- Duplicate coupon rows like `MAYA20` and `maya20`: GA4 stores codes as sent. Standardize casing at the checkout level, or group the variants when you map them in Brandwave.
- Tagged link traffic shows as direct: a redirect or shortener is stripping the query string. Click the link and check the final URL still carries the UTMs.
- UTM values landing under "(other)": you hit GA4's cardinality limits. Trim unused parameter variants and lean on fewer, more consistent values.
- A creator's link works but the code doesn't (or vice versa): each signal travels a different path (links through sessions, codes through purchase events). Verify them independently.
- Signals missing in Brandwave: confirm the connected GA4 property is the one receiving the traffic, then allow for GA4's reporting delay of up to 48 hours.

If you get stuck wiring any of this up, email [hello (at) gobrandwave.com](mailto:hello@gobrandwave.com) and one of the team will help you get the data flowing.

## FAQ

### Do promo codes track sales?

Yes, when the checkout passes the redeemed code into your analytics. In GA4 that means the purchase event must include the coupon parameter, which populates the Order coupon dimension. Give each creator or placement a unique code and every redemption becomes attributable to them.

### Why does GA4 show "(not set)" for Order coupon?

The purchase event is arriving without a coupon parameter. GA4 only fills the Order coupon dimension from that parameter, so add it to the event (Shopify's Google & YouTube channel plugins and most WooCommerce GA4 plugins do this automatically) and verify a test purchase in DebugView.

### What is the difference between affiliate links and UTM links?

An affiliate link routes through an affiliate network that handles tracking and commission payouts, and the data lives in that network. A UTM link is a plain URL with parameters your own Google Analytics reads, with no network, no fees, and the data in your property. Many teams run UTMs on every partnership and reserve affiliate infrastructure for partners paid on commission.

### How do I track influencer marketing without affiliate software?

Give each creator a unique promo code and a UTM-tagged link, with the creator identified in utm_content. GA4 records sessions from the link and redemptions of the code. Add a "How did you hear about us?" question at sign-up or checkout to catch the people who watched the content but arrived by searching.

### Do UTM parameters work for QR codes and offline marketing?

Yes. Encode a tagged URL in the QR code, or print a short memorable URL that redirects to one. Anyone who scans or types it starts a session carrying your UTM values, which makes billboards, packaging, print ads, and event materials measurable in GA4.

### Which UTM parameter should identify the creator?

Use utm_content. Source, medium, and campaign are usually shared across a whole initiative, so utm_content is the conventional slot for the individual creator or placement. Brandwave reads it the same way when it builds tagged-link signals from your GA4 data.

## Sources

- [Google Analytics Help: Collect campaign data with custom URLs](https://support.google.com/analytics/answer/10917952?hl=en): https://support.google.com/analytics/answer/10917952?hl=en
- [Google Analytics: GA4 Campaign URL Builder](https://ga-dev-tools.google/ga4/campaign-url-builder/): https://ga-dev-tools.google/ga4/campaign-url-builder/
- [Google Analytics Help: GA4 dimensions and metrics](https://support.google.com/analytics/answer/9143382?hl=en): https://support.google.com/analytics/answer/9143382?hl=en
- [Google Analytics for Developers: Recommended events (purchase)](https://developers.google.com/analytics/devguides/collection/ga4/reference/events#purchase): https://developers.google.com/analytics/devguides/collection/ga4/reference/events#purchase
- [Google Analytics Help: About data limits (cardinality)](https://support.google.com/analytics/answer/12226705?hl=en): https://support.google.com/analytics/answer/12226705?hl=en

## More on creator marketing measurement

Read more related articles about creator marketing measurement

![Influencer Marketing Measurement: Framework, Metrics and Tools](/og/blog-influencer-marketing-measurement.png)

### [Influencer Marketing Measurement: Framework, Metrics and Tools](/blog/influencer-marketing-measurement.md)

Measurement is a system, not a report. This hub connects creators, activities, costs, and outcomes, defines the metrics with official platform sources, and links every deep dive.

July 25, 2026 • 14 min read

![Best AgencyAnalytics Alternatives for Influencer and Creator Reporting](/og/blog-best-agencyanalytics-alternatives.png)

### [Best AgencyAnalytics Alternatives for Influencer and Creator Reporting](/blog/best-agencyanalytics-alternatives.md)

AgencyAnalytics is strong client reporting for owned accounts, but it cannot track third-party creators. Six alternatives ranked by buyer context, with verified pricing.

July 25, 2026 • 11 min read

![Influencer Marketing ROI: Formula, Examples and Free Calculator](/og/blog-influencer-marketing-roi.png)

### [Influencer Marketing ROI: Formula, Examples and Free Calculator](/blog/influencer-marketing-roi.md)

Use the influencer marketing ROI formula and calculator, then build a useful result with complete campaign costs and a clear attribution method.

July 25, 2026 • 9 min read

![Creator with pink hair and a pink jacket](/marketing/home-cta.webp)

## See which creators actually drive action

Connect promo codes, tagged links, creator activity, and campaign costs so every conversion has the marketing context behind it.

[Connect your campaign signals](/sign-up)
