Back to blog
Brutalist editorial illustration of a paper URL address bar snaking across the frame with query-string ribbons attached, mint tape across one parameter and a yellow highlighter behind a small router icon.
A link without UTMs is a link. A link with UTMs is a receipt.
utmtrackingbangkok

UTM tracking on Bangkok creator campaigns in 2026

By Mai Influence

Most Bangkok creator campaigns finish with a wrap deck that quotes impressions, reach, and a saves count screenshotted from the creator's insights. Almost none of them can answer the only question the finance team asked: how many baht of revenue landed on the site because of that specific Reel by that specific creator. The gap is not analytics. The gap is a UTM string that nobody bothered to write before the link went out.

UTMs are five little query parameters at the end of a URL that let Google Analytics, GA4, Shopify, or any properly configured dashboard split traffic by source. They cost nothing, take ninety seconds to generate, and turn a fuzzy "the campaign felt strong" into a line item. This is what to tag, how to name the tags, and the quirks specific to the platforms most Bangkok creators actually post on in 2026.

The five parameters, decoded for creator work

A tagged link looks like https://yourbrand.co.th/product?utm_source=tiktok&utm_medium=creator&utm_campaign=aug-launch&utm_content=nan-jira&utm_term=reel1. Each parameter has one job.

  • utm_source is the platform. tiktok, instagram, line, youtube, facebook, xhs. Lowercase, no spaces, no version numbers. This maps to the "channel" column in your dashboard.
  • utm_medium is the traffic type. For creator work always creator. Do not use social (mixes with your own organic posts), influencer (inconsistent across teams), or paid (reserved for actual ad-account spend, which needs its own tag when you boost the post as an ad).
  • utm_campaign is the campaign slug. Same slug across every creator in the same brief, so the dashboard rolls them up. Format <month>-<launch-name>, kebab-case. Example: aug-launch, q4-durian-season, 2026-cny-cookies.
  • utm_content is the creator handle, stripped of the @. This is the row your wrap report reads from. nan-jira, pim-bkk, roots-cafe-official. Keep the punctuation consistent across posts by the same creator so the data stays joined.
  • utm_term is the asset within that creator's contribution. reel1, reel2, story-swipe, bio-link. If a creator delivers one Reel and three Stories, four separate URLs go out, each with a different utm_term.

The five together let you slice attribution five ways in one query. Skip any one and the row collapses back into "everything from TikTok".

Paper link splitting into five labelled ribbons across a cream page.
One link becomes five columns of truth.

The naming convention that survives contact with three creators

Consistency beats cleverness. A UTM scheme that different marketers write differently every time is worse than none, because the dashboard silently splits NanJira, nan_jira, and nan-jira into three rows. Pick one convention and enforce it inside a shared sheet that generates every link for the campaign. Ours, kept in a Google Sheet with a formula in column F, is:

  1. Lowercase everything.
  2. Hyphens for word breaks, never underscores or spaces.
  3. Handle in utm_content with no @, no dot, no emoji.
  4. Campaign slug fixed at brief kickoff and locked. If the launch date slips, the slug stays.
  5. Every creator on the same brief gets a row in the same sheet; the sheet emits the finished URL in a formula cell. Copy-paste, do not hand-type.

Any brand booking three or more Bangkok creators on the same brief needs this sheet before the links go out. Booking one creator, one Reel? A single hand-written URL is fine. From two creators upward the sheet pays for itself in an hour, because the alternative is reading a wrap report that lists tiktok / (not set) for two of them and calling it a day.

Platform quirks that will silently break your links

TikTok strips query parameters on the in-app browser more aggressively than any other platform in 2026. A linktr.ee or beacons.ai in the creator's bio preserves the UTM chain because the outbound click happens after the short-link server sees the full URL and forwards it. A raw yourbrand.co.th/product?utm_source=... pasted into a creator's bio often arrives at your site as yourbrand.co.th/product and nothing else. Always use a short link (Bitly, Rebrandly, or a Vercel serverless redirect on a subdomain like go.yourbrand.co.th) that expands to the tagged URL. The short link's slug becomes a nice human handle for the wrap report too.

Instagram Reels behaves cleanly through the bio link; Stories preserve UTMs through the "link" sticker. Facebook Reels loses utm_term and utm_content about 15 percent of the time in our own tests through mid-2026, so treat those two rows as directional not exact.

LINE VOOM is the messy one. Native LINE clicks open in the LINE in-app browser and then hand off to Safari or Chrome, which loses referrer and sometimes drops UTMs on the hop. Use a short-link redirect and set a first-party cookie on the redirect page itself so the session survives the browser hand-off. If you are running LINE VOOM creators at scale, budget an afternoon with a developer to wire this up once; it stays working for every subsequent campaign.

TikTok Shop is a special case. When the sale happens inside TikTok's own checkout, UTMs are irrelevant because the platform reports revenue back to your seller centre directly. Reserve UTMs for the "learn more" clicks that leave the app. Our affiliate vs flat fee guide covers the payout side.

Dashboard sheet with three bar-chart columns and a paper funnel catching coins on the right.
The chart column is the creator. The funnel is the revenue.

Wrap-report reality check

A properly tagged campaign lets the wrap report do arithmetic instead of storytelling. The columns that matter, in order: creator handle, asset, clicks, sessions, conversion rate, revenue in THB, revenue divided by fee. That final ratio is the number the finance team wants, and it only exists if the UTM string was in the link that shipped.

A wrap deck without a UTM column is a mood board. A wrap deck with one is an invoice justifier.

Two failure modes to watch. First, single-attribution bias. GA4 by default gives the last non-direct click all the credit; a creator whose Reel introduced a customer who then Googled the brand and bought a week later will show zero revenue on last-click. Use data-driven attribution in GA4 for creator campaigns, or at minimum a fourteen-day view-through window. Second, mobile app deep links. If you have a Thai app and the creator's link opens the App Store instead of the mobile web, Appsflyer or Adjust need their own campaign tokens; UTMs alone do not follow into the app install.

If you want the full picture on how these numbers turn into decisions about next quarter's creator roster, our ROI measurement guide shows the exact template we use on Mai Influence briefs.

What Mai Influence does for you

Every brief posted through the marketplace ships with a tagged link generator built in. The brand fills in the campaign slug once at brief creation, the platform assigns each accepted creator a unique utm_content value based on their handle, and the short link goes out inside the creator's offer packet already wrapped. The wrap report at campaign end reads the tagged sessions straight out of the connected GA4 property and drops them into the deck with revenue and fee side by side.

Brands running creator work outside a marketplace can replicate the same pattern with a Google Sheet and a Bitly account in about an afternoon. The upfront cost is small. The saved argument at wrap time is the whole reason the numbers exist in the first place.

More from the blog