troubleshootingUpdated 2025

Add Required UTM Parameters to TikTok Ads (Complete Guide)

TikTok Ads showing as referral? Add UTM parameters so GA4 can properly track your TikTok campaigns and calculate ROI.

7 min readtroubleshooting

Your TikTok Ads are showing as referral traffic in GA4. You can't measure campaign performance, calculate ROI, or optimize ad spend.

You can fix this in 3 minutes by adding UTM parameters.

🚨 Not sure what's breaking your tracking?

Run a free 60-second audit to check all 40+ ways UTM tracking can fail.

Scan Your Campaigns Free

✓ No credit card ✓ See results instantly

What You're Fixing

TikTok automatically adds ttclid (TikTok Click ID) to track clicks, but GA4 doesn't recognize ttclid for traffic classification.

Without UTM parameters, GA4 sees TikTok Ads as referral traffic from tiktok.com.

Current State (Broken Attribution)

Your ad URL:

Code
https://yoursite.com/shop

After user clicks (TikTok adds ttclid automatically):

Code
https://yoursite.com/shop?ttclid=abc123xyz

Result in GA4:

  • Source/Medium: tiktok.com / referral
  • Channel: Referral (not Paid Social)
  • Campaign: (not set)
  • No attribution data

Why this happens: GA4 only recognizes click IDs from Google (gclid, gbraid, wbraid) and Microsoft (msclkid). TikTok's ttclid requires manual UTMs for GA4 attribution.

😰 Is this your only tracking issue?

This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.

• 94% of sites have UTM errors

• Average: $8,400/month in wasted ad spend

• Fix time: 15 minutes with our report

✓ Connects directly to GA4 (read-only, secure)

✓ Scans 90 days of data in 2 minutes

✓ Prioritizes issues by revenue impact

✓ Shows exact sessions affected

Get Your Free Audit Report

The 3-Minute Fix

Step 1: Add UTM Parameters (2 minutes)

  1. TikTok Ads ManagerCampaigns
  2. Select campaign to edit
  3. Navigate to Ad GroupAds
  4. Click Edit on individual ad
  5. Find Destination Page or Landing Page URL field
  6. Add UTM parameters to destination URL

Recommended UTM structure:

Code
utm_source=tiktok
utm_medium=paid-social
utm_campaign={campaign_name}
utm_content={ad_name}

Example before fix:

Code
https://yoursite.com/shop

Example after fix:

Code
https://yoursite.com/shop?utm_source=tiktok&utm_medium=paid-social&utm_campaign=spring_sale&utm_content=video_ad_1

TikTok will append ttclid when clicked:

Code
https://yoursite.com/shop?utm_source=tiktok&utm_medium=paid-social&utm_campaign=spring_sale&ttclid=abc123

Important: Both ttclid and UTMs work together without conflicts. GA4 reads the UTMs for classification and ignores the ttclid. TikTok Pixel uses ttclid for conversion tracking.

Step 2: Use TikTok's Dynamic Parameters

TikTok Ads Manager supports dynamic macro substitution for automated UTM population:

Dynamic UTM template:

Code
?utm_source=tiktok
&utm_medium=paid-social
&utm_campaign=__CAMPAIGN_NAME__
&utm_content=__AID_NAME__
&utm_term=__CID_NAME__

Available TikTok macros:

  • __CAMPAIGN_NAME__ - Campaign name
  • __AID_NAME__ - Ad group name
  • __CID_NAME__ - Creative/ad name
  • __CAMPAIGN_ID__ - Campaign ID
  • __AID__ - Ad group ID
  • __CID__ - Creative/ad ID

Example with dynamic parameters:

Code
https://yoursite.com/shop?utm_source=tiktok&utm_medium=paid-social&utm_campaign=__CAMPAIGN_NAME__&utm_content=__AID_NAME__

TikTok automatically replaces macros with actual values when ad is clicked.

Step 3: Apply to All Campaigns

Update UTMs for:

  • All active campaigns
  • All ad groups
  • All individual ads

TikTok Ads Manager hierarchy:

Code
Campaign level → UTMs apply to all ads in campaign
↓
Ad group level → UTMs apply to ads in ad group
↓
Individual ad level → UTMs specific to single ad

Best practice: Add UTMs at campaign level for consistent tracking across all ads.

Step 4: Verify Tracking (1 minute)

Test GA4 attribution:

  1. Create test campaign with small budget ($20/day minimum for TikTok)
  2. Click ad from TikTok app or web
  3. Verify both UTMs and ttclid present in URL
  4. Check GA4 → Real-time report
  5. Confirm traffic shows as "tiktok / paid-social"

What Changes After You Fix It

Before (no UTMs):

  • Source/Medium: tiktok.com / referral
  • Channel: Referral
  • Campaign: (not set)
  • Content: (not set)
  • Unable to track campaign performance or ROI

After (with UTMs):

  • Source/Medium: tiktok / paid-social
  • Channel: Paid Social
  • Campaign: spring_sale
  • Content: video_ad_1
  • Full attribution, ROI tracking, and campaign optimization

Advanced: Install TikTok Pixel for Conversion Tracking

TikTok Pixel tracks conversions for TikTok Ads Manager (separate from GA4).

Base code (add to all pages):

Html
<!-- TikTok Pixel Base Code -->
<script>
!function (w, d, t) {
  w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
 
  ttq.load('YOUR_PIXEL_ID');
  ttq.page();
}(window, document, 'ttq');
</script>

Conversion events (add to confirmation/thank-you pages):

Javascript
// Purchase event
ttq.track('CompletePayment', {
  content_id: 'PRODUCT-123',
  content_type: 'product',
  content_name: 'Product Name',
  quantity: 1,
  price: 99.99,
  value: 99.99,
  currency: 'USD'
});
 
// Signup event
ttq.track('CompleteRegistration', {
  content_name: 'User Signup'
});
 
// Add to cart
ttq.track('AddToCart', {
  content_id: 'PRODUCT-123',
  content_name: 'Product Name',
  value: 49.99,
  currency: 'USD'
});

Troubleshooting Common Issues

Issue 1: UTMs Not Appearing in GA4

Problem: Added UTMs to TikTok Ads but GA4 still shows "tiktok.com / referral".

Cause: URL redirect stripping UTM parameters.

Fix:

  1. Check for landing page redirects (301/302)
  2. Ensure redirects preserve query parameters:
    Javascript
    // ❌ Wrong (loses UTMs)
    window.location = '/new-page';
     
    // ✅ Correct (preserves UTMs)
    window.location = '/new-page' + window.location.search;
  3. Test manually: Click ad and verify UTMs present in browser address bar

Issue 2: TikTok Conversion Tracking Stopped Working

Problem: After adding UTMs, TikTok conversions show zero.

Cause: TikTok Pixel not installed or misconfigured.

Fix:

  1. Verify TikTok Pixel installed on all pages
  2. Add conversion events to confirmation pages
  3. Test with TikTok Pixel Helper Chrome extension
  4. Verify events appear in TikTok Ads Manager → Events

Issue 3: Duplicate Sessions in GA4

Problem: Each TikTok ad click creates 2 sessions.

Cause: Rare with TikTok Ads. Most likely cause is duplicate GA4 tracking tags.

Fix:

  1. Google Tag Manager → Check for duplicate GA4 configuration tags
  2. View page source → Verify GA4 snippet appears only once
  3. Remove redundant tracking implementations

Issue 4: Dynamic Macros Not Populating

Problem: UTMs show __CAMPAIGN_NAME__ instead of actual campaign name.

Cause: TikTok macro syntax error or unsupported macro.

Fix:

  1. Verify exact macro syntax: __CAMPAIGN_NAME__ (double underscores, all caps)
  2. Use only supported TikTok macros
  3. Test with manual campaign name first, then add macros

FAQ

Will this break TikTok Pixel tracking?

No. TikTok Pixel operates independently and uses ttclid for attribution. UTMs are only for GA4 tracking. Both systems work simultaneously without conflicts.

What utm_medium should I use for TikTok Ads?

Recommended options:

  • paid-social (best - GA4 classifies as "Paid Social")
  • cpc (also works - classified as "Paid Search")
  • paidsocial (no hyphen - also works)

Best practice: utm_medium=paid-social for consistency across all social ad platforms.

Do I need UTMs for every TikTok ad?

Yes. Without UTMs, all TikTok Ads traffic will show as referral in GA4. Add UTMs at the campaign level to automatically apply them to all ads within that campaign.

Can I use the same UTMs for TikTok and Facebook Ads?

Use different campaign names to differentiate:

  • TikTok Ads: utm_campaign=tiktok_spring_sale
  • Facebook Ads: utm_campaign=facebook_spring_sale

This prevents attribution confusion across channels.

Why don't my TikTok and GA4 numbers match?

Even with correct tracking, expect 5-15% variance due to:

  • Ad blockers (block GA4, not TikTok Pixel)
  • Privacy settings (iOS 14+ ATT restrictions)
  • Attribution windows (TikTok: 7-day click, GA4: last-click)
  • Bot traffic filtering differences

Does this work for TikTok Spark Ads?

Yes. Spark Ads (organic posts boosted with ad spend) support UTM parameters just like regular TikTok Ads. Add UTMs to the destination URL when creating Spark Ads.

How long does it take for UTMs to appear in GA4?

Real-time. Click your ad with UTMs and check GA4 Real-time report within seconds. Standard reports update within 24-48 hours.

Do I need this for TikTok organic posts?

Optional. UTMs are useful if you want to track which organic TikTok posts drive website traffic:

Code
utm_source=tiktok&utm_medium=social&utm_campaign=organic_content

Add UTMs when sharing links in organic posts to differentiate from paid campaigns.

Can I track which TikTok creative format drives conversions?

Yes, use utm_content to identify creative types:

Code
utm_content=video_ad
utm_content=spark_ad
utm_content=collection_ad
utm_content=image_ad

Then filter GA4 reports by utm_content to see creative-level performance.

What if I'm already using UTMs for Google Ads?

No problem. Use different campaign names to differentiate:

  • Google Ads: utm_campaign=google_search_brand
  • TikTok Ads: utm_campaign=tiktok_video_campaign

GA4 will track both separately with no conflicts.

Internal Guides

TikTok Official Documentation

GA4 Resources

Conclusion

TikTok Ads require manual UTM parameters for GA4 attribution. Unlike Google Ads (which has automatic gclid), TikTok's ttclid is not recognized by GA4.

Quick fix checklist:

  • ✅ Add utm_source=tiktok&utm_medium=paid-social&utm_campaign={name} to all TikTok Ads destination URLs
  • ✅ TikTok automatically appends ttclid when ads are clicked
  • ✅ GA4 reads UTMs for attribution (classifies as "Paid Social")
  • ✅ TikTok Pixel uses ttclid for conversion tracking
  • ✅ Both systems work together without conflicts

Result: Proper TikTok Ads attribution in GA4 + conversion tracking in TikTok Ads Manager + accurate ROI calculation for your campaigns.


Related Documentation:

✅ Fixed this issue? Great! Now check the other 39...

You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?

Connects to GA4 (read-only, OAuth secured)

Scans 90 days of traffic in 2 minutes

Prioritizes by revenue impact

Free forever for monthly audits

Run Complete UTM Audit (Free Forever)

Join 2,847 marketers fixing their tracking daily

UTM

Get Your Free Audit in 60 Seconds

Connect GA4, run the scan, and see exactly where tracking is leaking budget. No credit card required.

Trusted by growth teams and agencies to keep attribution clean.