Tag Your Ad Links for Attribution

Updated October 6, 2026

Profitario credits each order to the ad that brought the customer by reading the link they clicked. A few parameters at the end of your ad links (UTM parameters and an ad ID tag) tell it the platform, the campaign and the exact ad. Set them once per ad account and every new order can be matched down to the ad.

Where
In each ad platform's ad or account settings. Nothing to install in your store or theme.
Who
Whoever manages your ad accounts. Your ad accounts should also be connected in Profitario.
Time
About 5 minutes per ad platform.
Updates
Orders from clicks after the change. Past orders keep the links they arrived with.

What Profitario Reads#

Parameters you add to your ad links:

ParameterExampleWhat Profitario does with itNeeded?
utm_sourcefacebookNames the platform: Facebook, Google, TikTok, ... Must be one of the values Profitario recognisesYes
utm_mediumpaidMarks the visit as paid (paid, cpc and similar) or as email (email)Yes
utm_id120214567890123Matches the campaign by its ID, or the ad when it holds an ad's IDRecommended: survives renames
utm_campaignautumn_saleMatches the campaign by its exact name, or by its ID when it holds one. Readable in reportsRecommended
utm_contentUnboxing videoMatches the ad by its exact name when the link has no ad IDOptional
utm_termRetargeting 30dShown on the order. Not used for matchingOptional
pf_adid120214567890456Matches the exact ad by its ID. Profitario's own tagRecommended: without it, matches stop at campaign level

You fill the values with placeholders (dynamic parameters): {{campaign.id}} on Meta, {campaignid} on Google, __CAMPAIGN_ID__ on TikTok. The platform replaces each one with the real value when someone clicks, so one line works for every ad.

Parameters the platforms and tools add by themselves (nothing to set up):

ParameterAdded byWhat Profitario does with it
fbclidMetaMarks the visit as a paid Meta click
gclid, gbraid, wbraidGoogle Ads, with auto-tagging onMarks the visit as a paid Google click
gad_campaignidGoogle AdsMatches the campaign, including Performance Max
gad_sourceGoogle AdsMarks the visit as a paid Google click
ttclidTikTokMarks the visit as a paid TikTok click
msclkidMicrosoft Ads, with auto-tagging onMarks the visit as a paid Microsoft click
sccid, epikSnapchat, PinterestMarks the visit as a paid click on that platform
srsltidGoogle free product listingsMarks the visit as organic search, not an ad
_kx, mc_cid, se_activity_idKlaviyo, Mailchimp, Shopify EmailMarks the visit as email

Click IDs prove a visit was paid, but they do not say which campaign it was. That is why utm_id and pf_adid are worth adding even though the platforms already tag their clicks. Tags from other attribution tools (Triple Whale, Hyros and others) are read too, see What Profitario recognises.

Set Up Each Platform#

Pick your platform, copy the parameters and paste them where it says. Placeholders are shown in purple. Below the parameters you see the full link an ad then opens.

Set it once, not per ad. Several platforms let you set the parameters once for the whole ad account, and they then apply to every campaign and ad, including the ones you create later. Use that where it exists:

PlatformSet once for all campaigns and ads?
Google AdsYes: the account's Final URL suffix
Microsoft AdsYes: the account's Final URL suffix
PinterestPartly: the ad account's automatic URL parameters cover the campaign, the ad ID goes in each link
Email toolsYes: Klaviyo and most email tools have an account-wide UTM setting
MetaPer ad. Select all ads in Ads Manager and paste once to update them together
TikTokPer ad, no bulk edit. A copied ad keeps its parameters, so tag one ad and duplicate it
SnapchatFor new ads: the ad account's parameters in Business Manager. Running ads one by one, no bulk edit

Where: In Ads Manager, open the ad (or select several), scroll to Tracking and paste into URL parameters, not the website URL. Then Publish.

Meta has no account-wide setting. Select all your ads in Ads Manager and paste once: every selected ad gets the parameters.

URL parameters
utm_source=facebook
The platform. Keep it the same everywhere
&utm_medium=paid
Marks the visit as paid
&utm_campaign={{campaign.name}}
Campaign name, for your reports and Google Analytics
&utm_content={{ad.name}}
Ad name, a fallback when there is no ad ID
&utm_term={{adset.name}}
Ad set name, for Google Analytics. Profitario does not need it
&utm_id={{campaign.id}}
Campaign ID: the campaign match that survives renames
&pf_adid={{ad.id}}
Ad ID: matches the order to the exact ad

Full link example

https://yourstore.com/products/merino-throw?utm_source=facebook&utm_medium=paid&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}&utm_id={{campaign.id}}&pf_adid={{ad.id}}

Paste the text as it is. Meta fills in the placeholders on every click. Changing the URL parameters of a running ad can restart the learning phase of its ad set, so add them to new ads or at a quiet moment.

Step-by-step guide per platform, with every click, bulk options and the platform's quirks:

Check That It Works#

Do this once per platform, right after you save.

  1. 1

    Step 1 of 2

    Most platforms show the full link with your parameters next to the field you pasted into. Check that there is one ? between your page address and the parameters, and no spaces.

  2. 2

    Step 2 of 2

    Click a live ad#

    When you come across your own ad, click it and read the address of your store page in the browser. The placeholders must be replaced by real values: utm_id=120214567890123, not utm_id={{campaign.id}}.

    If the address still shows {{campaign.id}}, {campaignid} or __CID__, the parameters sit in a field the platform does not fill in, for example straight in the website URL on Meta. Move them to the field named above.

  3. Done

    Check the next order from an ad#

    New orders are sorted within minutes of the purchase. Open the order in Orders and its Attribution tab. Matched campaign shows the campaign and ad, and Match method says Matched by ad ID: the most precise match there is.

Rules That Keep the Data Clean#

One spelling per platform. facebook, Facebook and fb all work, but reports and Google Analytics group by the exact text. Pick one and use it everywhere.

Never mark email or organic links as paid. A utm_medium of paid or cpc makes any visit Paid ads, even from a newsletter. Use email for email and SMS.

Prefer IDs over names. A renamed campaign stops matching by name, an ID never changes. Meta also fills {{campaign.name}} with the name the campaign had when the ad was published, not the current one.

Do not shorten or redirect ad links. Link shorteners and redirect pages can drop the parameters on the way. Link straight to your store.

Keep links short. Shopify keeps the first 255 characters of the landing link. The templates above stay well within that, but a long product URL plus several other tools' parameters can reach it. The Profitario pixel records the full link.

Other Channels#

Influencers, affiliates, partners. Give each partner a link with their own utm_source and utm_medium=referral, for example utm_source=anna_smith, utm_medium=referral and utm_campaign=spring_collab. These orders show under Referral. Do not use utm_medium=paid for them: they would count as Paid ads with no campaign to match, as there is no ad account behind them.

Your own social posts. Visits from facebook.com or instagram.com are counted as Paid ads even without an ad, see how a visit gets its channel.

Other attribution tools. If your links already carry tags for Triple Whale, Hyros, Comet, HubSpot or AdBeacon, Profitario reads those too (see below). You can keep them and add pf_adid, or leave them as they are.

What Profitario Recognises#

utm_source values per platform (upper or lower case):

Platformutm_source
Facebook / Instagram (Meta)facebook, fb, meta, instagram, ig
Google Adsgoogle, google_ads, adwords
TikToktiktok, tt
Pinterestpinterest, pin
Snapchatsnapchat, snap
Microsoft Adsbing, microsoft
Taboolataboola
AppLovinapplovin

Mediums, email markers and ID tags:

WhatRecognised valuesNotes
Paid utm_mediumcpc, ppc, paid, paidsocial, paid_social, cpm, displayThe whole value must match: paid-social or cpc_meta are not recognised
Emailutm_medium of email or e-mail; utm_source of klaviyo, mailchimp, sendlane or shopify_emailThe parameters Klaviyo, Mailchimp, Omnisend and Shopify Email add by themselves count too
Ad ID tagspf_adid, tw_adid, trueroas, h_ad_id (Hyros), comet_ad_id, hsa_ad (HubSpot), abid (AdBeacon), fbadid, gadid, ttadid, scadid, padid, ad_id, adidRead in this order: the first one present is used
Campaign ID tagsgad_campaignid (Google), tt_campaignid, pins_campaign_id, hsa_cam, tw_campaign, campaign_id and othersAdded by the platforms or other tools. All present are tried
Click IDsgclid, gbraid, wbraid, dclid (Google), fbclid (Meta), ttclid (TikTok), msclkid (Microsoft), sccid (Snapchat), epik (Pinterest), tblci (Taboola)Also the click IDs of X, LinkedIn, Reddit and others. They mark a visit as paid

Limits#

  • Parameters only help orders from clicks made after they were added. Past orders are not changed.
  • An ad ID only matches when the ad account is connected in Profitario and has synced its ads.
  • Views without a click are not counted, whatever the parameters.

Common questions

Related articles

Was this article helpful?

We value your privacy
We use cookies to enhance your experience. By continuing to use our site, you consent to our use of cookies.

By clicking "Accept All", you consent to our use of cookies.

Learn more