We launched Recovewrist on Shopify, started getting real people through the store, and then I did what I always do when something is live: I started poking at the numbers.
Who visited? What did they look at? What did they add to cart? How many made it to checkout? How many actually bought?
Pretty quickly I got to the question that every store owner asks:
People reached checkout and didn’t buy. What happened?
It is also where things start getting fuzzy and frustrating. Frustrating, because as soon as you open a store you get a flurry of items in your feed from Shopify telling you how to get your first sale, get to 100 sales, close those leads, and the likes. All pushing features, plugins, lessons, and offers to solve this problem on the platform that has more data than anyone other than maybe Amazon or Walmart about online shopping behavior in the world.
My Bonafides
I am currently part owner in a Shopify store and product, called Recovewrist, which is useful to bring up in this article. I can talk about the store, the products, the decisions, the problems, and whatever dumb thing I configured wrong without violating anyone’s trust. Also, between 2020-2024 my wife, a friend, and I ran a Shopify store together that ended up selling $1.5M worth of interior residential doors.
Lastly, with our Shopify knowledge Bernier LLC works with many client companies that use Shopify, and we've seen versions of this problem in every single situation we have worked in — but I can’t talk publicly about those stores or their numbers.
So I’m using our own current store as the example.
Analytics vs Observability
The distinction I keep coming back to is this:
Analytics tells you that something happened. Observability helps you understand why it happened.
Shopify gives store owners a lot of analytics.
But the closer a customer gets to giving you money, the harder it can be to understand exactly what happened when they don’t.
The funnel is useful — until you ask the next question
Imagine a simple funnel:
1,000 people visit the store.
150 add something to their cart.
90 reach checkout.
45 complete the purchase.
That is useful information.
If these are numbers for Recovewrist, I immediately have a bunch of things I can look at. Maybe our product page needs work. Maybe the traffic source is bad. Maybe shipping feels expensive. Maybe people are comparing products. Maybe checkout itself has friction.
But eventually I get to the most obvious question in the whole thing:
What happened to the other 45 people?
Shopify’s native behavior reports do a good job of showing the broad storefront funnel: sessions, carts, reached checkout, completed checkout, and useful dimensions around traffic and customer behavior.
That tells me where something changed.
It does not necessarily tell me what the customer experienced when it changed, WHY, or even who those customers were to our business.
“Reached checkout” is not the same thing as “I know what happened”
One of the confusing parts of Shopify is that different parts of the system can describe slightly different groups of customers to our business.
A session can count as having reached checkout without necessarily producing the abandoned-checkout record you expect to inspect later. Shopify’s own abandoned-checkout documentation explains that checkout recovery depends on Shopify having enough customer information to associate the checkout with someone.
This shows up publicly as a very practical merchant complaint. In a 2026 Reddit discussion, a Shopify merchant was trying to understand why the number of people who had reached checkout was much larger than the number of abandoned checkouts they could actually inspect — and, importantly, wanted to know what those shoppers had been trying to buy.
That is such a store-owner question.
Not: “Please explain Shopify’s analytics ontology.”
Just: “People almost bought something. What happened?”
Read the merchant discussion on Reddit.
Merchants have been asking for more checkout detail for years
This is not a brand-new frustration.
A Shopify Community post about the move from Universal Analytics to GA4 laid out the old checkout events merchants could previously analyze: contact information, shipping, payment, processing, receipt, thank-you, and more.
After the transition, the author summarized the result pretty plainly:
“all of that granularity is lost.”
The post goes on to argue that for many non-Plus stores, it became much harder to identify exactly where customers were dropping during checkout.
Read the Shopify Community thread.
Shopify has changed a lot since that 2023 post. Developers now have newer customer-event and Web Pixel APIs, so I would not read that thread as “nothing has improved.”
The part that matters to me is that the job has not changed:
Store owners still want a usable explanation of where checkout friction is happening.
The weird part is that a lot of the data exists
This is where my product-brain gets annoyed.
Shopify actually exposes quite a bit of checkout telemetry to developers through its standard Web Pixel events. There are events around checkout starting, customer information, shipping, payment, completion, and other checkout activity.
Shopify can also expose checkout alerts and errors — including categories related to payment, delivery, inventory, validation, and general checkout errors.
Individual abandoned checkouts can contain useful payment history and failure information. Shopify documents things such as declined cards, incorrect verification information, 3-D Secure failures, inventory changes, invalid discounts, gateway failures, and other processing issues.
So the problem is not that Shopify knows nothing.
The problem is that the evidence can be scattered across analytics reports, individual checkout records, pixel events, orders, payment data, external analytics systems, and different checkout paths.
As a store owner, I do not really want seven sources of evidence. Also, MOST STORE OWNERS ARE NOT ANALYTICS PROFESSIONALS. They didn't create a store so they could mine data. They created a store to....say it with me...sell products and make money.
Shopify seems to be missing out on this core competency of the largest segment of their customers base, the small scale store owners. StoreLeads says Shopify has 3.03-3.06 million stores, and BrandsBro claims that Shopify brings in $1.84-2B/yr of subscription revenue. So, their average customer subscription is between $50 and $55. That's a bottom heavy subscriber base...
Your checkout can work while your measurement breaks
Take Shopify’s checkout_completed event.
Shopify’s current developer documentation says the event typically fires on the Thank You page. It also explicitly says that if the page where the event is supposed to fire fails to load, the event is not triggered.
That means the browser-side analytics event and the actual order are not automatically the same source of truth.
Developers have run into this in the real world.
In one Shopify Community thread, a developer reported the completion event firing only “maybe 1 in 30 times, inconsistently” for a client despite spending weeks checking consent configuration and working through support.
Read that Shopify Community discussion.
More recently, in July 2025, another Shopify developer reported:
“all the checkout events are firing EXCEPT the checkout_completed.”
Other developers confirmed similar behavior. Shopify later responded that there had been a temporary platform issue.
Read the Shopify Developer Community thread.
This does not mean Shopify checkout is unreliable.
It means something more annoying: your measurement system can fail independently of your checkout.
If you do not reconcile those two things, you can end up debugging customer experience when the actual problem is telemetry — or believing your telemetry when the customer experience is actually broken.
Shop Pay adds another path — and another thing to reason about
Accelerated checkout is great when it accelerates checkout.
Fewer fields? Great. Less friction? Great. Someone can buy faster? Please, yes.
But it also creates another path through the purchase experience.
In a Shopify Developer Community discussion about Shop Pay, a developer explained that normal checkout events were being received when customers used the regular checkout, but not when logged-in Shop Pay customers were routed through shop.app.
A Shopify staff response explained the limitation this way:
“doesn’t have tracking that’s accessible to merchants.”
The same response said Shopify was looking into enabling additional Shop Pay tracking, with no ETA at that time.
Read the Shop Pay checkout-events discussion.
This is not an argument against Shop Pay. I want customers to have the easiest checkout possible.
I also want to understand how the different paths perform.
Those should not be competing goals.
The bugs that only happen to customers are the worst ones
Anyone who has worked in software knows my least-favorite bug report:
“It doesn’t work for me.”
You test it.
It works.
You ask what browser they used.
You test that.
It works.
Cool. Excellent. Love this for us.
Shopify merchants report exactly this kind of checkout issue.
One merchant described customers intermittently receiving a “shipping rate is no longer valid” error. Some orders worked, others did not. Different shipping methods were involved.
The line that jumped out at me was:
“Everytime I go test the site it works fine.”
Read the Shopify Community thread.
Another merchant reported a similar shipping-rate error appearing after customers entered credit-card information, leaving them unable to complete the order. They estimated it was happening intermittently to about 5% of customers.
This is exactly where high-level conversion analytics stops being enough.
If conversion is down because customers changed their minds, that is one kind of business problem.
If conversion is down because Safari users cannot select shipping, that is a completely different problem.
If conversion looks down because a browser event did not fire, that is another one.
If Shop Pay users are buying successfully but disappearing from part of the analytics path, that is another one.
The number at the top can look the same while the thing you should do next is completely different.
Checkout failures are customer-experience failures
It is easy to treat checkout analytics as a marketing problem.
Conversion rate. ROAS. Funnel optimization. Abandoned-cart emails. A/B tests.
All useful.
But as the store owner, and frankly for any product, the most useful framing is always customer experience.
If someone decides they do not want a Recovewrist product, that is information. Maybe we have the wrong product, pricing, positioning, audience, or offer.
If someone wants a Recovewrist product but an address-validation error, payment failure, stale shipping rate, or checkout bug prevents them from buying it, that is not ordinary abandonment.
We failed a customer who had already made the hard decision to part with their money.
And because we also run the business, every failed sale means that our other metrics suffer too: acquisition cost goes up, revenue goes down, conversion rate in the funnel drops off, there's nothing to attribute because there's no sale, and we are going to sit here wondering what the hell is going on - we have the traffic, the carts, the engagement. Why aren't people buying. This is what destroyed our door business. We walked with 6-figure debt from that store rather than declare and carry around a bankruptcy.
Customer experience and business optimization are not two separate things here — they are the same event viewed from opposite sides of the checkout button.
I don’t want more analytics. I want observability.
The software world has a useful concept called observability.
A dashboard might tell you that error rates increased.
An observable system helps you figure out which service failed, when it started, which users were affected, what changed immediately beforehand, and what evidence supports the diagnosis.
That is the model I keep wishing for as a Shopify store owner.
Not another chart telling me checkout conversion fell 12%.
Something closer to:
Checkout conversion declined primarily for mobile Safari customers after shipping selection. Delivery-related errors increased at the same time. Desktop and Android checkout behavior did not materially change.
Or:
Your orders are normal, but the browser-side completion event is missing for part of the traffic, so your analytics are undercounting successful purchases.
There is an important limit here.
Shopify cannot tell me somebody abandoned because their kid started screaming, they got distracted, or they suddenly decided the wristband should be blue instead of black.
That is human behavior. Sometimes we simply will not know.
But there is a big difference between unknown human behavior and technical behavior that happened inside a system we operate.
I think store owners should be able to understand that second category much better.
Not every analytics mismatch is a Shopify bug
I also do not want to turn this into “Shopify’s numbers are wrong.” They aren't, they have the numbers, we have established this.
Shopify itself documents changes and discrepancies in its analytics methodology. Different systems define sessions differently. Consent choices affect which pixels can run. Ad blockers and privacy tools suppress third-party analytics. GA4 and Meta use their own identity and attribution models. Shopify has changed how certain funnel stages are counted over time. This is common in software, we learn, adjust, and improve. If a company keeps everything the same forever that company or software is probably dying.
Sometimes the numbers disagree because the tools are measuring different things.
That is actually another reason I want better diagnostics.
An operator should be able to distinguish:
a real checkout failure
normal customer abandonment
missing telemetry
an attribution-definition mismatch
and a known platform blind spot.
Those are five very different situations that can all initially look like: “My conversion numbers are weird.”
What I want as a store owner is pretty simple
I do not particularly want another analytics dashboard.
I do not want to spend time learning how another system does things and how to compare across systems. Figuring out which ShopifyQL query, Web Pixel event, abandoned-checkout record, GA4 report, payment timeline, or session-replay limitation might explain a weird Tuesday.
I want to know:
Is checkout healthy?
If not, where is it failing?
Who is affected?
Is this customer behavior, a technical failure, or a tracking problem?
Did anything change?
What should I look at first?
That feels like a reasonable thing to want when you are trying to take care of customers and run the business.
And judging from years of Shopify Community, Developer Community, and merchant discussions, I am definitely not the only person asking some version of those questions.
This is not a scientific survey of Shopify merchants. Forum posts do not give us a denominator, and some reported “bugs” turn out to be configuration, consent, analytics-definition, or third-party-app issues.
But the repeated problem is hard to miss:
Shopify can tell us that checkout performance changed. Store owners still struggle to understand exactly what changed inside checkout and why.
So how are other Shopify owners actually doing this?
This is the part I am genuinely curious about.
If you run a Shopify store and have figured out a good way to see deeper into the checkout experience — enough to distinguish customer abandonment from shipping, payment, validation, tracking, browser, or accelerated-checkout issues — I would love to hear what you are doing.
Not “which dashboard has the prettiest funnel.”
How do you actually diagnose what happened when the numbers tell you something is wrong?
Because that is the thing I want as both a product person and a store owner — not just whether customers made it through, but whether we gave them a fair chance to.