TikTok Ads - Troubleshooting
SKAN metrics
SKAN metrics are data for iOS 14 Dedicated Campaigns. SKAN metrics support campaign, ad group, and ad levels, and do not support hourly data. Learn more here.
Note: SKAN metrics will only display values for iOS14 dedicated campaigns. Non-iOS-14 campaigns will display 0.
The iOS14 dedicated campaigns may have inaccuracy or loss of by-day data. There will be 1-3 days of delay. Data older than three days must be available in full. Non-SKAN metrics for iOS14 dedicated campaigns will display 0, non-SKAN metric data does not include SKAN metric data.
Reach metric in the “Ads” Report type
If you notice a difference between our data and TikTok Ads UI, it could be because you're summarizing Reach metrics in a way that might not give an accurate result. Summarizing Reach across various granularity levels, like from ad to campaign, might lead to counting users more than once if they've seen your ads multiple times.
If you need to check Reach metrics, try to use one of our Reach Report types:
- Campaign Week Reach Report type
- Campaign Month Reach Report type
- Campaign Lifetime Reach Report type
- Campaign Daily Reach Report type
- Account Monthly Report type
Learn more here.
TopView Campaigns are not supported by the API
TopView Campaigns are not supported by the API yet. According to the TikTok Support Service, this feature is being developed and will be available in 23Q4. In the meantime, there is no way to get the TopView Campaign type.
Ad names come through as video file names on Smart+ campaigns
TikTok has three kinds of campaign and they do not behave the same way at ad level:
- Regular campaigns — ad IDs and ad names come through normally.
- Smart+ campaigns (the original kind) — TikTok exposes no ad-level data at all. The ad endpoint does not support this campaign type, and the campaign endpoint returns video IDs and video file names rather than the ad names you set in the UI. This is a TikTok API limitation with no workaround on either side: TikTok API support confirmed that ad ID and ad name cannot be obtained for these campaigns from the API or from Ads Manager.
- Upgraded Smart+ campaigns — ad-level data is available, but under a different identifier. See the next section.
So a file name in ad_name is the signal that the row belongs to an original Smart+ campaign. Several ads can share one video file, which is why one file name can map to several ad names in the TikTok UI.
Ad ID Version, and why ad_id will not join across the two settings
Four report types carry an Ad ID Version setting — Ads, Auction Basic Ads, Auction Audience Ads and Auction Basic Ads Cumulative Reach. The other ad-level breakdowns (geo, DMA, platform, age and gender) do not have it. The setting has two values, Standard (the default) and Smart+. It selects which identifier Improvado asks TikTok for: Standard requests ad_id, Smart+ requests ad_id_v2, which is the identifier that carries real ad names for Upgraded Smart+ campaigns.
Switching it does not change how much data you get. Row counts and metric totals are the same either way, and rows from regular campaigns are identical in both. The only thing that changes is ad_id and ad_name on Smart+ campaign rows.
Do not join a Standard extraction to a Smart+ one on ad_id. For the same Smart+ ad the two settings return different identifiers, so the join silently drops those rows and leaves blank ad names behind — which looks like missing data but is two numbering schemes being matched against each other. Pick one setting per pipeline.
To bring in ad properties such as status, extract the Upgraded Smart Plus Ads Entity report and join its smart_plus_ad_id to ad_id from an extraction whose Ad ID Version is Smart+. It will not join to a Standard extraction: those rows carry the other identifier, which is the same mismatch described above. Ad properties are not available from the reporting endpoint at all, which is why they need a separate extraction.
Was this article helpful?
Thanks for the feedback!