1 in 10 Shopify stores I checked had Meta ads landing on a page you can't buy from.

Of 193 Shopify stores whose Meta ad links I could check, 19 had at least one ad pointing at a dead page, a product sold out in every variant, or an empty collection.

Sample: 193 Shopify stores running Meta ads with links I could check ·

Every one of these stores is paying Meta to send someone to a page. I followed those links and looked at what the shopper actually gets.

Corrected 23 October 2026. This page first said 59 of 199 stores, just under a third. That count included two kinds of finding I can’t stand behind, so I took them out:

  • Catalogue ads. For a catalogue ad, Meta’s Ad Library keeps one sample set of product cards, but Meta picks the products for each viewer from the store’s feed, and normally leaves sold-out and deleted products out. A dead card in the sample doesn’t show that anyone lands on it. Most of the original findings came from these cards.
  • A sold-out variant when other variants are in stock. Often it isn’t the one a shopper sees.

What’s left is what I’d defend in front of the store owner.

What I found

Of 193 Shopify stores whose Meta ad links I could check, 19, about 1 in 10, had at least one ad pointing at a page you can’t buy from. A 404, a product sold out in every variant, or an empty collection.

At the page level: 25 of 1,123 ad destinations were broken, about 2%.

Of the 52 ads pointing at one of those pages, more than half had been running for 90 days or more. Seven had been running for over two years.

What the shopper hits Stores Pages
A plain 404 8 12
Every variant is sold out 10 10
An empty collection 3 3

Every homepage redirect in the original count came from a catalogue ad, so none are left.

How long these had been running

The ad’s age is not the same as how long the page has been broken. I measured the first, not the second. A page might have broken yesterday. What this shows is how long the ad has been live, and that today it lands somewhere unbuyable.

Ad running for Ads Share
30 days or more 41 79%
90 days or more 30 58%
180 days or more 17 33%
A year or more 10 19%
Two years or more 7 13%

How I measured it

  1. Started from a commercial index of Shopify stores, filtered to the US, UK, Canada and Australia.
  2. Crawled them to find stores still alive, still on Shopify, and carrying between 10 and 200 products.
  3. Took a sample of 572 and looked up their currently active Meta ads.
  4. 226 were running no ads at all. Another 146 could not be matched to a confirmed advertiser. Both groups drop out here.
  5. That leaves 200 stores confirmed to be advertising, 199 of which had destination pages to check.
  6. Fetched all 2,018 on-store ad destinations and applied a fixed set of checks, written down before I looked at any results. Catalogue ads’ links don’t count (above), which leaves 193 stores and 1,123 destinations.
  7. Re-checked every finding through a VPN in the store’s own market, in case something was only broken from where I happened to be sitting. All of them reproduced.

Ads active as of 16 September 2026; pages measured 17 September 2026.

Why every number here is a floor

The ad lookup returns part of a store’s active ads, not all of them. 14 of the 19 affected stores run more active ads than I was able to read. One runs 844. Any broken page among the ads I never saw is invisible to this.

The same applies to the stores that came back clean. Some of them are certainly broken in ads I did not sample, which pushes the 10% up rather than down.

The 146 stores I could not match to an advertiser, and the 6 whose only ads were catalogue ads, are excluded from both sides of the fraction, not quietly assumed to be fine.

And only deterministic checks ran. I did not judge whether the ad’s message matches the page, how fast it loads, or what renders after JavaScript. A page can return a perfectly healthy 200, have stock, and still be a bad place to land.

So the honest version is at least 10%, not exactly 10%.

What this is not

This is a sample, not a census, and the denominator matters. It is not “10% of Shopify stores”. It is 10% of stores that survived the funnel above and were confirmed to be advertising when I looked.

The underlying index is several years old, so the stores in it skew toward ones established enough to still be trading. Store country is inferred from the storefront rather than declared.

The market re-check rules out one specific thing: that a page only looked broken from my vantage point. It does not rule out a systematic error in my own checks, because that would reproduce from every vantage too. Catalogue ads were exactly that kind of error, and a store owner clicking through their own ads is what caught it. The check that carries weight is opening findings by hand.

Findings are a snapshot of one day. Some will have been fixed since.


← All research