TikTok delivers a lot of cheap traffic and a lot of questions at reconciliation time: creatives burn out in a few days, Ads Manager reports update with a delay, and the app's in-app browser loses everything that relies on cookies. That is why TikTok Ads tracking depends so heavily on two things: clean link tagging and server-side conversion sending.
What TikTok Ads tracking consists of
- Macros in the link pass the campaign, ad group, ad and placement to the tracker.
- ttclid is the click ID TikTok appends on its own.
- The tracker records the click and sends the person to the offer with a click ID for the affiliate network.
- The postback from the network brings the lead and its status.
- The Events API (and, if needed, the pixel) sends events back to TikTok.
- Spend is matched to clicks by campaign ID.
TikTok Ads macros
TikTok has its own syntax: double underscores on both sides. The most useful ones for tracking:
| Macro | What it inserts |
|---|---|
__CAMPAIGN_ID__ |
Campaign ID |
__CAMPAIGN_NAME__ |
Campaign name |
__AID__ |
Ad group ID |
__AID_NAME__ |
Ad group name |
__CID__ |
Ad ID |
__CID_NAME__ |
Ad name |
__PLACEMENT__ |
Placement |
The macro list keeps growing, so check it against the TikTok Ads help before launch.
A sample parameter string:
utm_source=tiktok&utm_medium=paid&utm_campaign=__CAMPAIGN_ID__&utm_content=__CID__&sub2=__AID__&sub3=__PLACEMENT__
IDs instead of names
As with other ad platforms, pass IDs. On TikTok, buyers often give ads long names with dates, emoji and spaces, and such a value in a link breaks grouping in reports. The ID stays stable and is needed to match clicks with spend. If you want a readable creative name in the report, add your own short tag, for example sub5=hook12. A detailed breakdown of each platform's syntax is in UTM parameters and macros.
Tip. TikTok creatives burn out fast. Tag them so that a week later the report tells you which idea worked: a short code for the hook or script in your own tag saves hours of analysis.
ttclid: the TikTok click ID
When someone clicks an ad, TikTok appends the ttclid parameter to the link. You do not need to add it manually, but you do need to preserve it:
- do not strip parameters during redirects;
- store the value in the tracker together with the click;
- pass it to the Events API along with the event.
Without ttclid, TikTok matches the event less accurately, using indirect data like IP and user agent, and some conversions will not count toward optimization. A comparison of click IDs across platforms is in fbclid, gclid, ttclid, yclid.
The TikTok in-app browser
Almost all TikTok mobile traffic opens in the app's built-in browser. What that means for tracking:
- cookies live inside the app and do not carry over to the regular browser;
- the browser pixel loses some events, especially when the purchase happens later in a different browser;
- the page has to load fast: people in the feed are used to scrolling, and a long white screen costs conversions.
The takeaway is the same as for Facebook: identify the source by tags and ttclid, and send conversions from the server.
Sending conversions to TikTok: Pixel and Events API
| TikTok Pixel | Events API | |
|---|---|---|
| Who sends | The visitor's browser | Your server or tracker |
| In-app browser and ad blockers | Affect it | Do not affect it |
| Approval after the hold | No | Yes, if the tracker knows the status |
| What you need | Code on the page | Pixel ID and an access token |
| Key matching field | Browser cookie | ttclid from the link |
If you run traffic to an affiliate network's offer, you do not control the «Thank you» page, so there is nowhere to put a pixel. In that case the tracker sends events to TikTok through the Events API: it receives the postback from the network and passes the conversion along with that click's ttclid.
If you use both channels, pass a shared event ID, or one lead will be counted twice. How to choose between the channels is covered in postback vs pixel, and preparing the ad account in sending conversions to ad platforms.
Which event to send
For optimization, the algorithm needs a steady stream of events. Leads arrive fast and often, approvals with a delay and less often. The typical path: start optimizing on leads, then switch to approved conversions once there are enough of them. Check the names of TikTok's standard events in the Events Manager help; they differ for leads, registrations and payments. Conversion statuses are covered in lead, hold, approved, rejected.
Attribution: why TikTok and your tracker count differently
| Reason | What happens |
|---|---|
| View-through attribution | TikTok may credit a conversion to someone who watched the video but did not click |
| Attribution window | A conversion counts within the click or view window set in the settings |
| Report delay | Ads Manager data keeps filling in for some time |
| Time zone | The ad account's time zone and the tracker's may differ |
| Duplicates | Pixel and Events API without deduplication double the events |
| Lost ttclid | Some events are not matched to clicks at all |
The attribution window is set in the ad account settings; TikTok's defaults have changed over time, so check them against the current interface rather than old guides.
Tip. Decide which combo to scale based on the tracker and the network's data. TikTok Ads Manager is handy for comparing creatives with each other within one system.
TikTok spend and reports
TikTok charges for impressions, and the cost per click varies noticeably between creatives. A CPC model in the tracker gives only an estimate. It is more accurate to enter daily spend manually or import it from the ad account by advertiser ID and campaign ID.
Useful slices for TikTok:
- campaign → ad group → ad: which creatives make money;
- placement, if the campaign runs beyond the feed;
- country and device, in multi-geo campaigns and with varying iOS and Android shares;
- your creative tags: hook, script, video author;
- day, to see when a creative started to burn out.
How to spot creative fatigue
A TikTok creative usually does not «die» in a day; it gets gradually more expensive. To catch the moment, look at the ad → day slice and watch three numbers: cost per click rises, CR holds or falls, EPC falls. When cost per click grows faster than revenue per click, it is time to swap the creative, even if ROI for the whole period is still positive. Keep a code for the creative idea in your own tag: then the report shows not only that an ad burned out but also which idea lasted longer, and that is the basis for your next batch of videos.
Compare creatives by EPC and CR, not only ROI: on low volume a single conversion flips the picture. The formulas are in affiliate marketing metrics and how to calculate ROI. How to set up a creative test you can rely on is covered in split testing offers and landing pages.
TikTok Ads tracking in ArtisanClo
In ArtisanClo, TikTok Ads is set up as a traffic source from a template. The source defines the parameters (campaign ID, creative ID, platform click ID, placement, an unlimited number of SubID tags) and the cost per click model: CPC, CPM, cost from the link, CPA or RevShare. In a flow with a tracker, the source lays the parameters out as campaign tags, from which the ad link is built.
What happens next:
- Conversions from the network are received by postback in «Receiving conversions»: about 300 ready-made templates, statuses mapped automatically, and a repeat message for the same transaction updates the record.
- Sending to TikTok: on higher plans, conversions are sent directly to your ad account using your keys: the pixel ID and the token.
- Spend: on the Business plan, spend for the last 3 days is pulled every morning; you need the advertiser ID, and a campaign is matched to a flow by the campaign ID in the clicks. That is why
__CAMPAIGN_ID__in the link is mandatory. - Manual spend: the daily amount is entered in «Reports» and split across that day's clicks that reached the offer.
- Reports: «Money by slice» with sub1–sub10 tags and a report builder with multi-level grouping and CSV export.
The TikTok in-app browser is recognized, and ttclid is recorded in the click card. Sending conversions works only for flows with a tracker. More about the platform on the TikTok Ads page, plan terms on the pricing page.
Step-by-step setup before launch
- Create a TikTok source in the tracker and set the cost per click model.
- Build the parameter string with
__CAMPAIGN_ID__,__AID__,__CID__,__PLACEMENT__and your own creative tags. - Paste it into the ad and check the link preview: the macros must be written exactly, with two underscores.
- Set up the postback in the affiliate network and pass the tracker's click ID into the offer link.
- Connect the Events API: the pixel ID and an access token. Choose the optimization event.
- Make a test click from the TikTok app on a phone. The tracker should show the campaign, ad group and ad IDs and
ttclid. - Send a test conversion and check it in the tracker and in the test events section of TikTok Events Manager.
- The next day, reconcile spend with clicks by campaign ID.
If traffic goes through a pre-lander
TikTok traffic often goes through a pre-lander: a short article, quiz or video review before the offer. In this setup the click ID has to survive two hops: from the pre-lander to the offer and from the offer to the postback. The pre-lander button should lead not to the bare offer URL but to a tracker link that appends the click ID. Otherwise leads will reach the network but will not be tied to any creative. How many people made it from the pre-lander to the offer is best tracked as a separate metric, pre-lander CTR, which shows whether the bridge page works or just loses traffic.
Common TikTok tracking mistakes
- Macros with a single underscore or in curly braces out of habit: the macro text goes into the link instead of the value.
- Ad names in tags: long strings with spaces break reports.
- ttclid lost after a redirect: the Events API receives events with no link to a click.
- Pixel and Events API without a shared ID: double conversions and a mistrained algorithm.
- No campaign ID in the click: spend cannot be matched to the flow.
- Conclusions from yesterday: Ads Manager is still filling in data, and approvals have not arrived.
Bottom line
TikTok Ads tracking starts with the right macros, __CAMPAIGN_ID__, __AID__, __CID__, and a preserved ttclid. Conversions from the network reach the tracker by postback and go to TikTok through the Events API, because the app's in-app browser is too unreliable for the pixel. Match spend by campaign ID, compare creatives by EPC and CR, and put discrepancies with Ads Manager down to attribution rather than a tracker error.



