“Our Shopify analytics already shows marketing attribution.”
For orders placed online, and it does it well. This is about the orders placed in a shop or over the phone, which those reports cannot see at all.
For Shopify
Export your orders, upload your calls and leads beside them, and see which marketing produced the sales that never had a click on them.
No API key Nothing to install in ShopifyNothing to install No card requiredNo card
CloseRev reads a Shopify export of orders — the customer's email or phone, the order total and the date — and matches the ones with no click behind them against your call and lead records. Online checkout is already attributed and needs nothing from us; the point of this page is Shopify POS, phone orders and draft orders, where somebody researched online and bought where no pixel could follow. Orders that match no lead are reported as Direct / Unknown rather than credited to the last campaign that ran.
Last checked against Shopify's own documentation on September 24, 2026.
The gap
Your online orders are measured to the penny. The customer who compared three sofas on your website and then rang to order is invisible to every report you have.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
On the order's customer. Online orders always carry an email; point-of-sale and phone orders carry whichever your staff captured, which is why both columns belong in the file.
What the order took, after discounts and including shipping if you want it counted. Consistency matters more than which you choose.
When the order was placed. For draft orders sent as a quote, the date it was paid is closer to the decision.
Online store, point of sale, draft order, and which shop. This is the column that separates what already has attribution from what does not, and it is the most important optional field on this page.
Step by step
Written for somebody with Shopify open in the next tab. Report names vary by edition, so each step says what to look for.
One row per order with a customer contact detail, the total, the date and — if at all possible — the channel or location it came through. Without the channel you cannot tell the already-attributed orders from the ones this exists for.
Online orders with a click behind them are already measured properly by your ad platforms. The value here is in point-of-sale, phone and draft orders, so isolate those first and read them on their own.
Call tracking, the contact form, showroom enquiry logs, quote requests. Contact detail plus the source, campaign or keyword.
Considered purchases are researched for weeks before somebody walks in or rings. A window as short as the ad platform's will miss exactly the orders this is for.
The join is the email and the phone, normalised on both sides, with weak links flagged rather than counted.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Ecommerce & Retail page — not from a Shopify account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 84 | $98,000 | |
| Meta Ads | 61 | $53,200 | |
| Email marketing | 47 | $44,800 | |
| Direct / Unknown | 72 | $84,000 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A straightforward online purchase is one of the best-measured events in commerce. The click, the session and the checkout are all in one place, the ad platform sees the conversion, and nothing here improves on that.
What is not measured is everything else Shopify now runs: a point-of-sale order in a shop, a phone order taken by a person, a draft order sent as a quote and paid days later. The customer researched online — that is where they found you — and then bought somewhere the pixel does not reach.
For merchants with a physical presence or a considered product, that is not a rounding error. It is frequently the larger half of the revenue and the half that decides whether the advertising pays.
Under fifty, people buy on the spot. Over a few thousand — furniture, equipment, jewellery, bikes, appliances — they research online, then come in to see it, then buy.
The result is a systematic bias in every report the merchant reads: the cheap impulse categories look efficient because their whole journey is online and measurable, and the expensive considered categories look like they do not work.
Budget follows the measurement rather than the money, and it does so quietly for years. Matching offline orders back to the enquiries and calls that preceded them is the correction, and it usually moves spend toward the categories that were carrying the business all along.
An online order cannot exist without an email. A shop order can, and often does — the transaction completes with a card and nothing else unless somebody asks.
That gradient decides your matched share. Merchants who capture an email at the till for the receipt match well; merchants who do not will see a large Direct / Unknown and should read it as a property of their till process rather than as a finding about their marketing.
It is also the cheapest thing on this page to fix. Asking for an email at the counter changes what can be measured more than any change to the advertising would.
Retail lives on repeat purchase, and a customer produced by a campaign two years ago may have bought fifteen times since. Crediting all of it to that campaign makes it look extraordinary; crediting none of it understates a channel producing genuinely loyal customers.
Neither answer is right for every merchant, so the report does not choose. First orders and subsequent orders are reported separately, and the decision about which to spend against stays visible and yours.
Fair questions
For orders placed online, and it does it well. This is about the orders placed in a shop or over the phone, which those reports cannot see at all.
Then you probably do not need this. If you take any phone orders or send draft orders as quotes, those are the ones worth reading.
Then the matched share will be low and the report will say so. Capturing an email at the counter is usually the highest-return change a shop can make here.
No. There is no app to install and no scope to grant. It reads a file you exported, which is also why it cannot touch your storefront.
Orders with a customer contact detail, the total, the date and the sales channel or location where possible.
You can, but they are already attributed properly by your ad platforms. The value here is point-of-sale, phone and draft orders.
On the sales channel or location column, which is why it is the most important optional field on this page.
Yes, and it is the main reason to do this. A POS order with a customer email or phone matches like any other row.
They match too, and the paid date is usually closer to the decision than the created date.
Include them and they reduce a channel's revenue, which is the honest figure.
They are reported separately from first orders, so you decide whether two years of repeat purchase should credit the advert that started it.
Direct / Unknown. They are never matched on a name, because names are not unique.
Yes, where the export carries one. A multi-site retailer's blended figure is usually true of none of its shops.
A contact detail, an amount and a date, plus a channel if you include one. No line items, no addresses, no payment details, no browsing history. Encrypted in transit and at rest and deleted with the import.
Revenue by channel for the orders that had no click of their own, the share matched, and everything unmatched kept visible.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
Shopify and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
Start today
Nothing to install in Shopify, no API key, and no need to have been tracking anything until now. Last year works as well as this month.