How Orders Are Sorted Into Channels and Matched to Campaigns
Updated October 6, 2026
Before an order can be credited to a campaign, Profitario needs to know where the customer came from. This article explains where that information comes from, how each visit is sorted into a channel, and how an ad click is matched to one of your campaigns and ads.
- Where
- The rows of Marketing Attribution, and the Attribution tab of every order (Orders, then click an order).
- Who
- Anyone checking why an order sits in a channel, or why a campaign has fewer orders than expected.
- Updates
- A new order is sorted within minutes. After each sync of your ad accounts, unmatched orders are tried again.
Where the Visits Come From#
Each visit Profitario knows about is called a touchpoint. There are three sources:
| Source | What it is | What it carries |
|---|---|---|
| Order landing page | The page of your store the customer arrived on in the visit they bought in | The complete link: UTM parameters, ad ID tags and click IDs. Every online order has one |
| Shopify customer journey | The customer's first visit to your store, as Shopify records it | The UTM parameters only. Shopify removes ad IDs and click IDs, so it reaches campaign level at best |
| Profitario pixel | Every visit in the 30 days before the purchase, recorded with the pixel on | The complete link of every visit. See What the Pixel Changes in Your Reports |
When the pixel recorded a visit, it is preferred over Shopify's version of the same journey. Open an order's Attribution tab to see all its touchpoints in time order, with First touch and Last touch marked.
How a Visit Gets Its Channel#
Profitario reads each visit's link and the site it came from, and applies these rules in order. The first rule that fits decides.
| Order | Rule | Channel |
|---|---|---|
| 1 | Placed in your point of sale | Point of sale |
| 2 | A draft order created in the Shopify admin | Draft orders |
| 3 | The link has an ad click ID (such as fbclid, gclid, ttclid, msclkid), a paid utm_medium, or Google's gad_source | Paid ads |
| 4 | A Google free product listing (the link has srsltid) | Organic search |
| 5 | An email or SMS tool: Klaviyo, Mailchimp, Omnisend or Shopify Email parameters, utm_medium=email, or an email utm_source | |
| 6 | From a search engine, with no tracking parameters at all | Organic search |
| 7 | An ad platform can be recognised: from the referring site (facebook.com, instagram.com, tiktok.com, ...), utm_source, or an ad or campaign ID tag | Paid ads |
| 8 | No referring site and no utm_source or utm_medium | Direct |
| 9 | Any other referring site, or a utm_source Profitario does not know | Referral |
The values Profitario recognises are listed in Tag your ad links.
Rule 7 also covers visits from your own social posts. A visit from instagram.com or facebook.com looks the same as a visit from an ad there, so it is counted as Paid ads and, as it matches no campaign, lands under No campaign match of that platform. Links in posts, bios and stories cannot be told apart from ads today.
Example. A customer clicks a Klaviyo email whose link carries utm_source=klaviyo&utm_medium=email. Rule 3 does not fit (no click ID, no paid medium), rule 5 does: the visit is Email. Had the same link carried utm_medium=cpc, rule 3 would have made it Paid ads.
How an Ad Click Is Matched to a Campaign#
A paid visit is matched against the campaigns and ads of your connected ad accounts. Profitario tries the most precise signals first and stops at the first that matches:
| Order | Signal on the link | Matches | Shown as |
|---|---|---|---|
| 1 | An ad ID tag, such as pf_adid with the ad's ID | The ad and its campaign | Matched by ad ID |
| 2 | utm_id holding an ad's ID | The ad and its campaign | Matched by utm_id |
| 3 | utm_content holding the ad's exact name | The ad and its campaign | Matched by ad name |
| 4 | utm_id holding the campaign's ID | The campaign | Matched by utm_id |
| 5 | A campaign ID the ad platform adds by itself, such as Google's gad_campaignid | The campaign | Matched by campaign ID |
| 6 | utm_campaign holding the campaign's exact name | The campaign | Matched by campaign name |
| 7 | utm_campaign holding the campaign's ID | The campaign | Matched by campaign ID in utm_campaign |
The match method of each order is in its Attribution tab, under Matched campaign.
IDs beat names. An ID never changes. A name stops matching when you rename the campaign or the ad, or when it differs by a single space. When an ad name points to one campaign and an ID on the same link points to another, the ID wins.
Names need the platform. A name only matches within the platform the visit came from, so a Meta campaign and a Google campaign with the same name are never confused. Profitario learns the platform from utm_source, the referring site or the click ID.
Google Performance Max. Google tags Performance Max clicks with a campaign ID that can differ from the campaign's own ID. Profitario learns these extra IDs when it syncs your Google Ads account and matches them like the real one.
Nothing matched. The order stays in Paid ads, under No campaign match of its platform. Usually the ad account is not connected, or the campaign was renamed or deleted before the last sync. After each sync of your ad accounts, these orders are tried again, so connecting a missing account fixes recent orders without anything else to do.
Which Visit Counts#
The visits decide the channel, the model decides which visit is credited. With Last click, the order is credited to its last matched ad click. When there is none, the order goes to the channel of its last visit, and to Not attributed when no visit falls inside the click window. Each model is explained in Attribution Models and Click Windows.
Broken UTMs. When a link arrives with a placeholder the ad platform never filled in (for example utm_campaign={{campaign.name}}), that value cannot be read. When such a visit is the one credited, the order goes to Broken UTMs. The fix is in the troubleshooting guide.
Limits#
- Visits are connected to an order through the browser that bought. A click on the phone followed by a purchase on the laptop is two separate journeys.
- Shopify shortens very long landing links (over 255 characters) and drops what comes after. Parameters at the end of a long link can be lost. The pixel records the full link.
- Orders from Shopify's first-visit data are matched to campaigns only, never to single ads.
- Orders placed before the ad account was connected are matched once the account has synced its campaigns.
Common questions
Related articles
Was this article helpful?

