Paid social
UTM builder for TikTok ad campaigns.
TikTok appends ttclid for its own attribution, but your analytics cannot read that. UTMs with TikTok's dynamic parameters give you campaign, ad group, and ad names in every report. This builder starts from tiktok / paid-social and keeps the double-underscore macros exactly as TikTok expects them.
Your campaign URL
Enter a destination URL.
How EndFrame parses this
- utm_source
- tiktok
- utm_medium
- paid-social
- utm_campaign
- __CAMPAIGN_NAME__
- utm_term
- __CID_NAME__
- utm_content
- __AID_NAME__
- utm_source_platform
- tiktok-ads
The TikTok Ads convention
What each parameter should say for TikTok Ads.
| Parameter | Value | Why |
|---|---|---|
| utm_source | tiktok | Lowercase network name, grouped by GA4 as a social source. |
| utm_medium | paid-social | Puts TikTok spend in Paid Social alongside Meta and LinkedIn for a like-for-like comparison. |
| utm_campaign | __CAMPAIGN_NAME__ | TikTok replaces this with the campaign name at click time. |
| utm_term | __CID_NAME__ | The ad group name (TikTok calls the ad group ID CID), which usually describes the audience. |
| utm_content | __AID_NAME__ | The ad name, so creatives are comparable in your own reports. |
Example tagged link
https://www.example.com/landing-page?utm_source=tiktok&utm_medium=paid-social&utm_campaign=__CAMPAIGN_NAME__&utm_term=__CID_NAME__&utm_content=__AID_NAME__&utm_source_platform=tiktok-ads
What to know before you paste it into TikTok Ads Manager
Macros are uppercase by design
TikTok's dynamic parameters are written __LIKE_THIS__. The builder's linter normally flags uppercase values, but it recognizes these macros and leaves them alone, and Clean values will not lowercase them.
Use the URL parameters field
Add the query string in the ad's URL parameters setting rather than editing the landing page URL for each ad. TikTok appends it to the destination and the macros expand on click.
Spark Ads and TikTok Shop behave differently
Spark Ads that promote an organic post keep the post's original link, and TikTok Shop checkouts never reach your site. Tag what you can, and expect those two to report through TikTok's own attribution only.
Frequently asked
What dynamic parameters does TikTok Ads support?
TikTok expands __CAMPAIGN_ID__, __CAMPAIGN_NAME__, __CID__ and __CID_NAME__ (ad group), __AID__ and __AID_NAME__ (ad), and __PLACEMENT__. They are case-sensitive and use double underscores on both sides.
Why do my TikTok UTMs show literal __CAMPAIGN_NAME__?
Either the macro was percent-encoded before TikTok saw it, or the ad was created in a flow that does not support dynamic parameters. Paste the unencoded string into the URL parameters field and confirm the preview shows the expanded name.
Is ttclid a replacement for UTM parameters?
No. ttclid is TikTok's click ID for matching conversions through the Events API and pixel. It carries no readable campaign information, so UTMs are still required for reporting in GA4 or any attribution tool.
Build UTMs for another channel
The full parameter reference, naming-convention table, and custom parameter guide live on the main UTM builder page, and our UTM naming convention template covers how to roll one out across a team.
Free tools, free trial
UTMs are step one. Attribution is the payoff.
EndFrame reads these exact parameters and credits each server-side conversion to its campaign and source — so the campaigns you tag here report conversions, even when iOS and ad blockers hide the click.
No credit card required