Skip to content

Tracking templates

Owner: media buying, per platform. Status: the parameters below are captured since plan 33; the click ids since plan 02 and 33.

Every paid click should land with two kinds of parameter in its URL: the platform’s click id, which is what lets Stitch send the conversion back to the platform that paid for the click, and the ad ids, which say which campaign, ad set, ad and keyword the click came from in a form nothing strips.

Apple’s Link Tracking Protection removes gclid, fbclid, msclkid, dclid, twclid, mc_eid and igshid from links opened in Safari Private Browsing, Mail and Messages. It leaves every other parameter alone. A visit that arrives without its click id is still attributed in Stitch when the ad ids are there (and, for Google and Meta, the conversion can still be matched on a hashed email); without them it is “Paid Search” with no campaign, or nothing at all. Ad blockers do the same to the click id and never to a plain parameter.

Stitch classifies the visit from the click id and the UTMs, stores the ad ids beside the click ids on every event, and will read them for ad-level reporting in a later plan. Nothing here is sent back to a platform.

Set the final URL suffix at the account level:

utm_source=google&utm_medium=cpc&utm_campaign={_campaign}&utm_term={keyword}&campaignid={campaignid}&adgroupid={adgroupid}&creative={creative}&keyword={keyword}&matchtype={matchtype}&network={network}&device={device}

and on every campaign, a custom parameter {_campaign} whose value is the campaign’s name under the naming convention (campaign settings → Campaign URL options → Custom parameters; up to 8 per level, names of up to 16 characters, values of up to 250). ValueTrack has no parameter for the campaign name, only {campaignid}, and utm_campaign is what the naming convention and brand detection read: a numeric id there makes every Google click non_brand, so brand search acquires and the brand exclusion never fires, and makes every retargeting campaign a discovery visit. utm_term carries the matched keyword for the same reason; keyword= is stored as an ad id and read by no rule. campaignid beside the name is the id that survives a rename.

Google adds gclid (or gbraid/wbraid from iOS) itself; leave auto-tagging on.

In each ad’s URL parameters field:

utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&placement={{placement}}&site_source_name={{site_source_name}}

Meta adds fbclid itself. The pixel’s _fbp and _fbc cookies are read by the Stitch SDK when the pixel is on the page.

In the campaign’s tracking section:

utm_source=taboola&utm_medium=paid_native&utm_campaign={campaign_name}&tblci={click_id}

Taboola warns never to alter {click_id}; without it no conversion can be reported back.

utm_source=outbrain&utm_medium=paid_native&utm_campaign={{campaign_name}}&dicbo={{ob_click_id}}

Outbrain’s help page does not name the landing-page parameter; dicbo is what it appends in the wild, and Stitch reads obclid too. Confirm from a live click.

utm_source=bing&utm_medium=cpc&utm_campaign={_campaign}&utm_term={keyword:default}&campaignid={CampaignId}&adgroupid={AdGroupId}&keyword={keyword:default}&matchtype={MatchType}&network={Network}&device={Device}

with the same campaign-level custom parameter {_campaign} as Google’s (Microsoft accepts up to 8 per campaign, ad group or ad), for the same reason. Microsoft adds msclkid itself with auto-tagging on.

ParameterCaptured asUsed by
gclid, gbraid, wbraid, msclkidclick_idsPaid Search rule; Google and Microsoft conversion match
fbclid, ttclid, li_fat_id, twclid, epikclick_idsPaid Social rule; Meta, TikTok and LinkedIn conversion match
tblci, dicbo, obclidclick_idsPaid Native rule; Taboola and Outbrain conversion match
utm_source, utm_medium, utm_campaign, utm_content, utm_termthe session’s source, medium, campaign, termevery channel rule after the click ids; the campaign naming convention reads utm_campaign, brand detection reads it and utm_term
campaignid, adgroupid, creative, keyword, matchtype, network, device, placement, campaign_id, adset_id, ad_id, site_source_name, utm_idad_paramsstored on every event; ad-level reporting later

Everything in the table is stripped from the URL Stitch stores as the page, so two visits to one page with different ad ids are the same page.