Why so many of your orders show as 'direct', and the three places attribution breaks
A 'direct' order is often a campaign that lost its way: a hop that dropped the tags, a store that never saw the click, or a shopper whose visit was never recorded.
Open almost any store's sales by traffic source and there is a large slice labelled "direct". In theory that means shoppers who typed your address or used a bookmark. In practice it is also where an order lands when the report cannot tell where the shopper came from. Some of that slice is genuinely direct. Some of it is campaigns you paid for, arriving without their name tag.
There are three places that name tag usually falls off. Knowing which one is costing you is worth more than any dashboard, because each has a different fix, and one of them has no fix at all.
1. The hop that drops the tags
Campaign information lives in the address, after the question mark: utm_source, utm_campaign and the click IDs ad platforms add, such as gclid or fbclid. Any redirect between the click and the page the shopper ends up on has to copy that part of the address on purpose. A redirect that rebuilds the address from scratch, a link shortener, a country redirect or a theme script that sends the shopper somewhere else can leave it behind.
Once the tags are gone, nothing downstream can bring them back. The shopper is on the right page, the order is real, and the report has nothing to go on.
How to spot it: open your own ad links with a test tag such as ?utm_source=test, from a location that triggers any redirect you run, and watch the address bar. If the tag disappears, you have found a leak.
2. The store that never saw the click
Each Shopify store measures its own visits. If you run more than one store, say a main store and a regional one, and a shopper clicks an ad for the first and buys on the second, the second store only knows about the visit that arrived there. Even with every tag kept on the address, it has no record of the first visit, and the first store has no record of the order.
This one is easy to miss because each store's reports look reasonable on their own. The clue is a pattern: campaigns aimed at the main store that seem to underperform, alongside a regional store with a suspiciously healthy share of direct orders.
How to spot it: list the campaigns that send traffic to one store but sell to shoppers who end up on another. If that list is not empty, some of your direct orders on the second store are those campaigns.
3. The visit that was never recorded
The third place is different, because it is not a bug. Shoppers can decline tracking in your store's privacy banner, and many browsers and extensions block it. When that happens, no landing visit is recorded for that shopper, so an order that follows cannot be joined to it. The shopper's choice is the right outcome; the report simply has less to work with.
Time does the same thing more quietly. Attribution joins an order to a visit within a window, and visit records are not kept forever. A shopper who clicked an ad six weeks ago and comes back today by typing your address is, as far as any short window is concerned, a direct visitor.
How to spot it: there is no honest way to measure the shoppers who declined, and you should not try to work around their choice. What you can do is stop comparing your store's figures with an ad platform's as if they should match: the platform counts clicks, your store counts the visits it was allowed to record.
What can be fixed, and what SignalLane does about it
The first two are fixable. A redirect can carry the whole query string, and a second store can be told where the shopper came from. SignalLane does both for its own redirects:
- It keeps the tags. A SignalLane redirect, or a banner's link, takes the shopper to the same page on the destination with every parameter on the address, unless you limit them.
- It marks its own hops. It marks its own redirects, so the destination knows the visitor came through SignalLane even when there was no campaign to keep.
- It joins the order. With SignalLane installed and its pixel connected on the destination, it records the landing visit and credits an order by the same shopper up to 30 days later, on its own Attribution page.
The third it leaves alone. SignalLane counts online-store orders from your Shopify orders but cannot tell where a shopper who declined tracking came from, keeps visit records for 30 days, and does not change how Shopify Analytics credits an order. It also cannot see orders on a website where it is not installed. Those limits are stated on the Attribution page rather than papered over.
Start with the cheapest check: test your own links for leaks this week. Then, if you run more than one store, look at where your campaigns point and where your shoppers actually buy. For how SignalLane counts the orders it can see, and what each figure means, read what the attribution figures mean.