← All posts

Tracking Your Influencer Campaigns: How to Design UTMs, Promo Codes, and Affiliate Links

Bright pastel card illustration: Who sold it? Prove it with codes

Tracking design has to be finished before the campaign goes live. Every creator's link fills the same four fields — utm_source, utm_medium, utm_campaign, utm_content — by the same fixed rule, every creator gets one unique promo code to catch purchases that never click a link, and affiliate-platform links are reserved for deals with a commission attached. Example: utm_source=influencer, utm_medium=creator, utm_campaign=2026-08-fw, utm_content=@creatorhandle. If any one of those four fields gets filled in differently by different people, no amount of spreadsheet archaeology after the campaign ends will tell you which creator actually sold anything.

Why can't you retrofit tracking after the campaign is live?

Analytics tools attribute a session to whatever URL was live at the moment someone clicked it. There is no way to inject parameters into a link a creator has already posted. Link-in-bio tools and TikTok profile links resolve to whatever destination is set at click time — edit the URL a few days into the campaign and every click that already happened is gone, unrecoverable, filed under whatever the link pointed to before.

Promo codes behave the same way. The moment a code goes into a brief, it's in the video caption, the pinned comment, and every screenshot a follower forwards to a friend. Realizing mid-campaign that the code format should have been standardized doesn't let you recall what's already out in the world. Tracking setup is a one-shot task with no do-over: decide the rules, build the links and codes, and hand them to creators finished, before the brief goes out.

How do you build one UTM taxonomy that works across every creator?

Only three of the four fields actually need a rule.

  1. Fixed utm_source / utm_medium. These never change, regardless of creator or campaign — their job is separating influencer-driven traffic from every other channel at a glance. Decide them once and never touch them again. Example: utm_source=influencer, utm_medium=creator.
  2. A utm_campaign naming rule. Every creator in the same campaign has to use the identical value, or the campaign's traffic never rolls up into one number. Fix a format — date plus a short campaign label, in a set order — so anyone building a link produces the same string. Example: utm_campaign=2026-08-fw for an August 2026 fall/winter push.
  3. A utm_content that's unique per creator, always. This is the one field that individualizes. Use the creator's handle or channel ID rather than their name — it cuts down on typos and mix-ups between creators with similar names. Example: utm_content=@haeun_beauty.

Write those three rules down on one page, and stop having anyone assemble the link by hand. The safer setup is a sheet where typing in the creator's handle auto-generates the finished link from the other three fixed fields. Hand-typed links eventually get a mismatched capital letter or a missing underscore, and the moment that happens, that creator's traffic scatters into "other" in every report downstream.

The three tools aren't substitutes for each other — each one catches a different purchase path.

  • UTM links. These only see traffic that actually clicked through from the post. That's enough for a one-off flat-fee post with no commission attached — you need an attribution report, not automated payout.
  • Promo codes. These catch the buyer who never clicks a link at all — opens the app directly, walks into a store, and enters a code at checkout. Assign one unique code per creator; letting two creators share a generic code erases the whole point of the field.
  • Affiliate-platform links. These matter once commission or performance pay is part of the deal. A platform that records conversions server-side and automates payout keeps the click-to-purchase chain intact even when browser cookie blocking or an in-app browser's tracking limits would otherwise break it. Plain UTM tracking doesn't reach that far.

Once the deal structure is set, the tooling follows automatically: a flat-fee one-off gets a UTM link, a campaign with meaningful offline or in-app conversion gets a promo code layered on top, and a commission-based long-term partnership goes on an affiliate platform.

How do you credit a buyer who sees the post but converts later, elsewhere?

Last-click analytics files that entire purchase under "search." Someone watches a creator's video, doesn't buy on the spot, and comes back days later by typing the brand name into a search bar and buying direct — the influencer channel gets zero credit. As cookie-based tracking and third-party identifiers keep getting less reliable, the burden of catching these delayed conversions is shifting away from click-level data like UTMs and toward first-party signals: promo-code redemption rates, post-purchase surveys, that kind of thing.

Three workable patches exist. First, compare branded search volume during the campaign window against a pre-campaign baseline to see the lift. Second, treat promo-code redemption rate as a creator's floor-level performance metric — a code gets entered whether or not anyone ever clicked a link. Third, add a single post-purchase question: "where did you hear about us?" Response rates run low, but it's the cheapest way to see the relative weight of each channel. Stack all three signals for one creator and you start to see attribution that last-click alone will never surface.

What has to be on the tracking sheet before you brief a creator?

Before a brief goes out, one row on the sheet needs all of this filled in: creator handle, the finished UTM link (handed over complete, never assembled by the creator), a unique promo code, expected post date, platform, and the exact deliverable. Then, right before sending, click every link once to confirm the redirect works and the parameters actually land in analytics. Skip that check and you find out a creator's link had a typo only after the campaign is over.

That sheet becomes the basis for two decisions once the campaign wraps: who gets a renewal, and how next campaign's utm_campaign value gets named. If you want that sheet connected all the way through to attributed revenue per creator, that's exactly where Hyperstar closes the loop without manual work.

Finish tracking design before launch, give every creator one unique code, and never let a link get assembled by hand. Want that sheet tied automatically to real revenue once the campaign ends? Get started.