Skip to main content

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.

Quick start:
Custom parameters (optional)Any key=value pair beyond utm_ — promo codes, partner IDs, experiment flags.
Common:

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.

ParameterValueWhy
utm_sourcetiktokLowercase network name, grouped by GA4 as a social source.
utm_mediumpaid-socialPuts 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