On this page+
TikTok is the same problem as Instagram with worse defaults. The in-app browser strips referrer, the in-feed video link is gated to verified accounts, and the bio link is the only consistently clickable surface for non-verified accounts. Every link you put on TikTok needs UTMs because TikTok itself tells GA4 nothing.
Here is the practical setup.
The minimum viable bio link UTM
For a single bio link pointing at your homepage:
https://yourbrand.com/?utm_source=tiktok&utm_medium=social&utm_campaign=bio-link
Three parameters. utm_source=tiktok flags TikTok as the origin. utm_medium=social puts it in GA4's Organic Social channel grouping. utm_campaign=bio-link tells you the visit came from your TikTok profile bio.
That is the floor. From here, you can layer:
- utm_content for the bio link variant if you A/B-test different CTAs in your bio.
- utm_term for an audience identifier if your bio link is part of a paid TikTok campaign.
- a per-video utm_campaign if you want to attribute clicks back to specific videos that drove people to your bio. This requires a per-video short link in the video description.
Tracking individual videos
TikTok lets non-verified accounts include a clickable link in the video description (sometimes called a "link in description" or "promo link"). To track each video separately, use a different UTM-tagged short link per video.
Practical setup for a TikTok account running 3 videos a week:
| Surface | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Bio link | tiktok | social | bio-link | (variant ID if A/B testing) |
| Video 1 description | tiktok | social | weekly-content | video-2026-04-12-product |
| Video 2 description | tiktok | social | weekly-content | video-2026-04-13-tutorial |
| Video 3 description | tiktok | social | brand-awareness | video-2026-04-14-behind-scenes |
Each row gets its own short link. The shortener wraps the long tagged URL. You paste the short link into the relevant TikTok surface. Click attribution lands in GA4 cleanly per video.
TikTok ads
Paid TikTok campaigns are different. TikTok Ads Manager auto-tags clicks with its own parameters (tt_medium, tt_content, etc). You can layer UTMs on top through the campaign's "Tracking URL Parameters" field.
Recommended UTMs for paid TikTok:
utm_source=tiktok
utm_medium=paid_social
utm_campaign=__CAMPAIGN_NAME__
utm_content=__AD_NAME__
The __CAMPAIGN_NAME__ and __AD_NAME__ are TikTok Ads Manager's URL parameter macros, which auto-fill with the campaign and ad names from the platform. This gets you per-ad attribution in GA4 without typing each URL manually.
Bio link tools and link-in-bio landing pages
Many TikTok creators run a "link in bio" tool (Linktree, Beacons, Stan, the share studio in Trakl). The bio link points at a landing page hosting multiple links to choose from. Visitor taps the bio link, sees the menu, taps an item, lands on the destination.
The attribution problem: by default, the link-in-bio tool's outbound clicks lose the original UTM. The bio link took them to the menu page; the menu page's outbound link is whatever you put on it.
Two fixes:
- Tag every menu link with its own UTM.
utm_source=tiktok&utm_medium=social&utm_campaign=bio-menu&utm_content=<menu-item-name>. Each click out of the menu page carries the right attribution. - Pass UTMs through the menu page if you build it yourself. A custom-built menu page can read the inbound UTMs and append them to each outbound link.
Trakl's bio-link feature handles option 1 by default. Each link you add to your menu gets its own UTM tagging applied automatically.
What to look for in GA4
Once your TikTok links carry UTMs:
- GA4 → Reports → Acquisition → Traffic Acquisition. Group by Source / Medium. You should see a row for
tiktok / social. If everything is still "direct / none," your tags are not landing. - Sessions over time for that row. Compare against your TikTok in-app analytics. The two numbers will not match exactly (cookie consent, ad blockers), but they should be in the same order of magnitude.
- Conversions by utm_content. If you tagged each video separately, this is where you find out which video actually drove sign-ups versus just views.
If GA4 shows much lower numbers than TikTok's in-app, the piece on why your UTM data is messy covers the half-dozen common causes. TikTok's biggest factor is in-app browser cookie rejection, which is structural.
A working setup in five minutes
If you have one TikTok bio link and want it tagged today:
- Open the Trakl free UTM builder.
- Paste your destination URL.
- Source: tiktok. Medium: social. Campaign: bio-link.
- Copy the output URL.
- Paste it into your TikTok bio (or send it to a shortener first if you want a branded short link).
You now have correct attribution. From here, the upgrade path is per-video short links in your descriptions, a bio-link landing page, and a paid TikTok strategy with auto-filled UTMs. All of which Trakl handles directly on the paid tier.
The piece on tracking an Instagram bio link covers the parallel approach for Instagram. The patterns are mostly identical between the two platforms.
Frequently filed
Common questions.
Q.01Why does TikTok traffic show up as direct in GA4?+
TikTok's in-app browser does not pass an HTTP Referer header to the destination URL. Without the referrer, GA4 attributes the click to "direct / none" unless your link carries UTM parameters that say otherwise. The fix is to tag every TikTok link with utm_source=tiktok and utm_medium=social.
Q.02Can I track TikTok video links separately from the bio link?+
Yes, by using a different UTM-tagged short link in each video description (or in your TikTok ads). The bio link tracks profile-driven clicks. Per-video short links track which content drove what action.
By the byline
Trakl TeamEditorial team
We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.
Photo: Max Kolganov on Unsplash



