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.
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.
Table of contents
- What You're Fixing
- Current State (Broken Attribution)
- The 3-Minute Fix
- Step 1: Add UTM Parameters (2 minutes)
- Step 2: Use TikTok's Dynamic Parameters
- Step 3: Apply to All Campaigns
- Step 4: Verify Tracking (1 minute)
- What Changes After You Fix It
- Before (no UTMs):
- After (with UTMs):
- Advanced: Install TikTok Pixel for Conversion Tracking
- Troubleshooting Common Issues
- Issue 1: UTMs Not Appearing in GA4
- Issue 2: TikTok Conversion Tracking Stopped Working
- Issue 3: Duplicate Sessions in GA4
- Issue 4: Dynamic Macros Not Populating
- FAQ
- Will this break TikTok Pixel tracking?
- What utmmedium should I use for TikTok Ads?
- Do I need UTMs for every TikTok ad?
- Can I use the same UTMs for TikTok and Facebook Ads?
- Why don't my TikTok and GA4 numbers match?
- Does this work for TikTok Spark Ads?
- How long does it take for UTMs to appear in GA4?
- Do I need this for TikTok organic posts?
- Can I track which TikTok creative format drives conversions?
- What if I'm already using UTMs for Google Ads?
- Related Resources
- Internal Guides
- TikTok Official Documentation
- GA4 Resources
- Conclusion
🚨 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:
https://yoursite.com/shop
After user clicks (TikTok adds ttclid automatically):
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
The 3-Minute Fix
Step 1: Add UTM Parameters (2 minutes)
- TikTok Ads Manager → Campaigns
- Select campaign to edit
- Navigate to Ad Group → Ads
- Click Edit on individual ad
- Find Destination Page or Landing Page URL field
- Add UTM parameters to destination URL
Recommended UTM structure:
utm_source=tiktok
utm_medium=paid-social
utm_campaign={campaign_name}
utm_content={ad_name}
Example before fix:
https://yoursite.com/shop
Example after fix:
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:
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:
?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:
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:
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:
- Create test campaign with small budget ($20/day minimum for TikTok)
- Click ad from TikTok app or web
- Verify both UTMs and ttclid present in URL
- Check GA4 → Real-time report
- 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):
<!-- 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):
// 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:
- Check for landing page redirects (301/302)
- Ensure redirects preserve query parameters:
Javascript
// ❌ Wrong (loses UTMs) window.location = '/new-page'; // ✅ Correct (preserves UTMs) window.location = '/new-page' + window.location.search; - 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:
- Verify TikTok Pixel installed on all pages
- Add conversion events to confirmation pages
- Test with TikTok Pixel Helper Chrome extension
- 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:
- Google Tag Manager → Check for duplicate GA4 configuration tags
- View page source → Verify GA4 snippet appears only once
- 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:
- Verify exact macro syntax:
__CAMPAIGN_NAME__(double underscores, all caps) - Use only supported TikTok macros
- 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:
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:
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.
Related Resources
Internal Guides
- TikTok Ads Double Sessions Fix - Troubleshooting duplicate data
- Platform Click ID Conflicts - Auto-tagging across all platforms
- Complete UTM Tracking Guide (GA4 2025) - UTM fundamentals
- twclid vs Manual UTM Parameters - Twitter/X comparison (similar requirements)
TikTok Official Documentation
- TikTok Pixel Setup - Official pixel guide
- TikTok Events API - Server-side tracking
- URL Tracking Parameters - Official UTM guide
GA4 Resources
- GA4 Channel Grouping - Default channel definitions
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
Join 2,847 marketers fixing their tracking daily