Shopify attribution models decide which marketing source gets credit for an order. Shopify’s own reports credit the last non-direct click: the order goes to the channel the customer arrived from most recently before buying, and visits where they typed your URL or used a bookmark are passed over. An ad platform applies its own model to the same order, which is why two dashboards can disagree while both are working as designed.
Key takeaways
- The same order can be credited by two tools at once, because each applies its own model, lookback window and definition of what counts as a conversion.
- Shopify reports on a last non-direct click basis, so an order that ends in a direct visit is handed back to the channel before it.
- Match the model and the window before comparing two reports; if they cannot be matched, compare direction over the same dates instead of totals.
- Popup, upsell and code-less discount revenue usually hides inside whichever channel closed the order, so keep a first-party count of it rather than searching Shopify’s reports for a popup row.
What Shopify attribution actually records on an order
Shopify attaches a traffic source to an order from the visits that led to it. The raw material is what arrived with each visit: the referrer, the UTM parameters on the link the customer clicked, and the ad platform’s own click identifier when the link carried one.
Only visits that reached your storefront can be credited. A shopper who saw an ad, never clicked it, and later found you through search leaves no ad visit for Shopify to read. That sale belongs to search as far as your reports are concerned, and no amount of staring at the ad dashboard will change it.
A later visit can replace an earlier one. If a customer clicked an ad and then came back by typing your address, the final visit is direct. Last non-direct click gives the order back to the ad; a plain last-click report in another tool would file the same order under direct.
Orders with no source land in direct. Repeat customers who type your address or use a bookmark are the main reason direct traffic looks so large in Shopify reports, and why direct should never be read as one channel.
Which attribution model Shopify’s reports use by default
Shopify’s sales and marketing reports use a last non-direct click model: the order is credited to the last channel the customer arrived from that was not a direct visit. Shoppers who already know your store are treated as yours, so the credit is pushed back to the channel that sent them in.
Every other model you will meet comes from somewhere else. First-click gives the order to the channel that introduced the customer, linear splits credit across every touch, and position-based weights the first and last touches most heavily. Ad platforms run their own variation of last click over their own window, and several count a view as well as a click. A view-through conversion has no storefront visit behind it, so Shopify’s click-based reporting cannot reproduce that number.
Treat the model as the question you are asking, not as a test of accuracy. Last non-direct click answers “what closed this sale”. First click answers “what started this customer”. Confirm which model a report uses before you act on it, because a channel can be your best performer in one and your worst in the other.
How the attribution window changes last-click and first-click results
The attribution window is how far back a report looks when it decides which interaction gets credit. A short window shows what closed the sale at the last minute. A long window lets a touch from much earlier keep the credit.
The same order changes hands when the window changes. A touch that happened well before the purchase survives in a long window and disappears in a short one, which is why a first-click report with a generous window flatters discovery channels, while a last-click report with a tight window flatters retargeting, email, coupon sites and branded search.
Match the windows before comparing reports. When they cannot be matched, stop comparing totals and compare direction instead: did the channel’s share of orders rise or fall over the same date range? Refunds and cancellations also land differently in different tools, so decide whether you are comparing gross or net before reading anything into the gap.
Checklist: what to confirm before you trust an attribution report
Work through these before you move budget on the strength of a report. Each item is a thing to confirm, plus what to do about it.
Check the model, the window and the definition
- Confirm which model each report uses. A channel can be your best performer under last-click and invisible under first-click on the same set of orders. Pick one report as your deciding number and use the rest as cross-checks.
- Confirm the lookback window on each side. Different windows move orders between channels before you read a single row. Only compare totals when the windows match.
- Confirm what counts as a conversion. Some tools count clicks, some count views, some count both. Find where the tool states its definition and write it beside the number.
Check that the orders add up
- Count your orders once, from an order export. Adding up conversions from every dashboard gives you more orders than you shipped. Match on the order number and refuse to credit the same order twice.
- Remove cancelled, refunded and fraudulent orders from the side that ignores them. Platforms count a conversion before the refund lands. Compare net revenue, not gross.
Check the money, not only the count
- Compare revenue per channel, not just conversions. A channel can win on order count and lose on value.
- Separate new customers from returning ones. Repeat orders usually arrive as direct visits, so a channel that earns loyal customers can look smaller than it is.
- Use a split test for small changes rather than two date ranges. Two weeks have different traffic; two variants running at the same time do not. PopupGenius splits traffic between two popup variants and reports views, adds to cart, purchases and attributed revenue per variant, so you compare variants rather than matching dashboards.
Check who is allowed to win the credit
- Split branded search from non-branded. Someone searching your store name was already convinced somewhere else, and the last click takes credit for it.
- Give coupon and affiliate traffic its own row. Their last click often lands on a shopper who was already buying. Judge that channel on its own budget instead of letting it sit inside paid search.
- Write down how you treat repeat purchases. If you count them as direct, retention work will always look unprofitable; if you hand them to the channel that first brought the customer, acquisition looks better than it is. Either rule works if you apply it every month.
Where popup, upsell and discount revenue shows up in the numbers
Revenue from a popup, an upsell or an automatic discount is credited to whichever channel closed the order, unless the tool that made the offer counts it separately. Shopify’s attribution sees the visit and the order, not which element on the page the shopper clicked, so a popup add-on is credited to the ad or the email that brought the customer in.
Part of it is readable from the order itself, because the add-on is a line item. Counting orders that contain that product tells you how many orders carried the offer, though not whether the popup or the product page caused the add. Placement changes what the number can mean: an upsell popup at add to cart appears in front of a cart that already exists, while a cross-sell on the product page appears before the shopper has decided to buy anything.
PopupGenius, a Shopify app for AI-designed upsell and email popups, attributes orders from popups to the popup in its dashboard. That gives popup-driven orders one first-party figure you can hold against the model-based reports, even though the same order still shows an ad or an email as its channel in Shopify.
If the offer is a free gift above a threshold, it shows on the order as a zero-value line item, and the free gift with purchase setup covers how the threshold applies.
Discounts are the harder half of the picture, because a code-less offer leaves no code on the order to filter by. PopupGenius applies the discount to the popup-added item at checkout with no code for the shopper to type, and it runs as a Shopify discount function, so those orders are attributed through the app rather than through a code report.
Attribution mistakes that make one channel look better than it is
Most bad budget decisions start with one of these reads of a report.
Adding up conversions from every dashboard. Two platforms claiming the same order is normal, not a glitch. Use an order export as the count of record and treat channel totals as claims.
Counting a view-through impression as a sale. A view-through conversion is a claim made by the platform that served the impression, and it has no visit behind it. Keep view-through conversions on a separate line and never compare them with a click-based report.
Letting the last click before checkout take a sale the customer had already decided on. Checkout-start clicks, branded searches and coupon site clicks all sit in this group. Read them as a way to close, not as a way to find new customers.
Hunting for offer-driven orders by discount code. Automatic offers leave no code on the order, so a code report shows nothing and the offer looks like it did nothing. If you are setting up an automatic offer, the automatic bundle discount setup explains how Shopify applies it to the order, which is also how you find those orders later.
Reading one slow week as a trend. A short date range moves with traffic and season, not with channel quality. Judge a channel over a full purchase cycle before changing its budget.
FAQ
Why does Shopify show a different number of orders than my ad platform?
Because the two are counting different things. Shopify credits an order to the last non-direct visit it can see, while the ad platform credits its own click within its own window and may count a view. Neither number is wrong; they answer different questions. Reconcile at the order level if you need one figure you can defend.
Should I use last-click or first-click to judge a channel?
Use last non-direct click to decide what to fund today, and first-click to decide what to protect for later. A channel that opens purchases looks weak on last-click and strong on first-click, and cutting it shows up in your last-click numbers only after a delay. Keep one model as your deciding number and use the other as a monthly cross-check.
Can I see which orders came from a popup or an upsell?
Partly, from the order itself, because the added item is a line item you can count. What the order cannot tell you is whether the popup or the product page caused the add, or which channel deserves credit for the visit. A tool that made the offer and records its own orders gives you that first-party count, which you then compare against the model-based reports.