Your Best Local Wins Are Invisible in Your Analytics
Shopify says 98% of my mom's orders come from "direct." 181 of 189 orders in a month, tagged as if customers typed the URL from memory or just appeared at the register. Meanwhile her search visibility, her AI citations, and her map presence all climbed. If you run a local shop, this mismatch is your reality too, and it hides your best wins.
The sales grew. I won't claim them.
Year over year, same window, the shop's sales went from $3,295 to $11,505. About 3.5x. I did months of SEO and AI-search work over that period, and I still won't say the SEO caused it, because roughly 93% of transactions happen at the register and the growth has at least four parents: in-store traffic, social content, some paid ads, and plain brand momentum. "SEO tripled my sales" is the single most common lie in my industry. I made the shop dramatically more findable, and it's very likely feeding the walk-ins.
The fake win I almost published
Yelp showed the shop getting 107 profile visits while a nearby Marshalls got 21 and a Talbots got 8. A one-person boutique beating national chains. I had the thumbnail half-designed. Then I split the data: 97% of those Yelp impressions were paid ads. A small ad campaign had started that June. The David-versus-Goliath chart was real, and it was bought. It went in the trash. Split paid from organic before you celebrate anything. Dashboards blend them by default.
What was provably organic
After the split, this survived on $0 in ad spend: 188 Google Search clicks in 28 days off a near-zero base, 163 Google Shopping clicks with zero ads, 71 AI answer-engine citations in 30 days from Microsoft Copilot and its partner surfaces, and Google Merchant Center going from 0 of 1,795 products approved to the full catalog live. Small absolute numbers with clean provenance.
Correction, July 2026: an earlier version of this paragraph reported "Google Search clicks up 3,033% in 28 days." That percentage came from Google Merchant Center's Online store report rather than Search Console, and it moves as the comparison window fills in; it currently reads about +1,006% against a base of 16 clicks. I have replaced it with the absolute click count, which does not decay. The full correction list lives at llms.txt. Splitting paid from organic was the habit that caught the Yelp chart; checking which tool a number came from is the habit that caught this one.
The invisible bridge: discovery to walk-in
Someone finds a local shop on Google, Yelp, or an AI answer. Then they drive there and pay at the register. Shopify tags that sale "direct." The discovery that caused it is invisible. My mom now hears "I saw you online, you're everywhere" at the register weekly. That is an anecdote. Owner memory is generous, and "online" blends ads, social, and search. It still points at a bridge your analytics structurally cannot show you.
The $0 fix: a register log
You don't need software. You need a tally sheet next to the register and one question for 2 to 4 weeks: "How did you find us?" Google. Yelp or Maps. Facebook. Instagram. Word of mouth. Walked by. Other. That's the whole system. At the end of the month you have an actual attribution model for the 93% of your business that analytics tags "direct." We're running this now, and I'll publish whatever it says, including if it says the online work isn't driving walk-ins.
The attribution model
Sort every number you're tempted to brag about into three buckets. Provable: organic search clicks, shopping clicks, AI citations. Things with clean $0 provenance. Real but multi-causal: revenue, follower growth, foot traffic. Claim the growth, never a single cause. The bridge: discovery-to-walk-in, unproven until you measure it at the register. Most marketing content lives on pretending the second bucket belongs in the first.
Questions shop owners ask me about this
Why do all my Shopify orders say direct?
Because "direct" is where analytics puts every order it cannot attribute, and for a shop with a physical counter that is most of them. A point-of-sale order has no referrer at all, so it lands in direct by definition. So does a customer who found you on Instagram three weeks ago and typed your name into a browser today. Direct is the bucket for everything the tracking could not follow, and on a local business it is usually the largest bucket you have.
How do I track walk-in customers who found me online?
Ask them, on paper, at the register. Put a tally sheet next to the till with six options (Google, Yelp or Maps, Facebook, Instagram, word of mouth, walked by) and ask every customer for two to four weeks. It costs nothing, it takes a second per sale, and it produces the only attribution data that exists for the part of your business analytics cannot see. No software solves this, because the gap is physical.
How do I know if my SEO is actually working for a local business?
Split what you can prove from what you can only correlate, and never mix them in the same sentence. Provable on a local business: organic search clicks, shopping clicks, AI citations, map views, all with paid stripped out. Not provable: revenue, foot traffic, follower growth, because each has several parents. If your only evidence that SEO worked is that sales went up, what you have is a coincidence with good timing.
Should I count paid Yelp or Google impressions as organic wins?
No. Platform dashboards blend paid and organic by default, which makes an ad campaign look like a discovery surge. On this shop, 97% of a Yelp impression spike turned out to be a small paid campaign, and the chart I built from it was heading for a thumbnail before I split the data. Filter paid out first, every time, and then look at what is left.
Why is a small absolute number better than a big percentage?
Because a percentage hides its base and a count cannot. "Up 3,000%" off six clicks is arithmetically true and tells your reader nothing except that you would rather they not ask. A percentage also decays as its comparison window fills in, so the same work reports a different figure depending on the day you looked. If you publish a percentage, publish the base and the window in the same sentence, or publish the count instead.
I document this whole build, the wins, the fake win, and the register-log results when they land, on YouTube and in the articles here. If you run a shop yourself, start with the 10-minute check to see if AI can read your store.
Run the free AI Readiness Scanner: paste in your robots.txt and your homepage source, get a scored report on whether ChatGPT, Perplexity, and Google AI can actually read your business. About two minutes, no signup, and nothing you paste ever leaves your browser.
Run the free scan → Get The Receipts free ▸
I run the SEO and AI visibility for my family's Shopify shop and publish the receipts, good and bad. Every number on this site comes from a named tool export, and corrections get published rather than edited away.