Ad URL Tracking Tags
Attach click-URL tracking parameters to ads
Ad URL tracking tags
Separate from Meta Pixels (those are the measurement pixel). These are the url_tags appended to an ad's click destination, the UTM-style attribution params on the landing-page URL. Read them to audit a campaign, or update them to fix missing or wrong tags.
Read the current tags off any ad (works on synced ads too):
const { data } = await zernio.trackingtags.getAdTrackingTags({ path: { adId: 'AD_ID' } });
// { platform: 'facebook', level: 'creative', urlTags: 'utm_source=meta&utm_medium=cpc', templateUrlSpec: null }Updating tags on Meta rebuilds the creative behind the scenes (Meta creatives are immutable, so changing url_tags means creating a fresh creative and repointing the ad). Zernio does this for you and preserves the existing creative verbatim, re-posting its current headline, body, CTA, and image (reused by hash, never re-uploaded) with only the new tags added. So you send urlTags alone, there's nothing to read back or supply:
const { data } = await zernio.trackingtags.updateAdTrackingTags({
path: { adId: 'AD_ID' },
body: {
urlTags: [
{ key: 'utm_source', value: 'meta' },
{ key: 'utm_medium', value: 'cpc' },
],
},
});creative is optional. Omit it to preserve the existing creative (above). Pass it (headline, body, callToAction, linkUrl, imageUrl) only to rebuild the creative explicitly, or for the few creatives Zernio can't auto-preserve. SHARE / page-post-boost / dark posts and Advantage+ asset-feed creatives have their underlying spec stripped by Meta, so they return a 422 asking for creative.