What we find · Specimen 01

No purchase path: a priced product with nothing to click

A product page shows a price, says the item is in stock, and offers no add-to-cart control. Where the button belongs there is a phone number, a contact link, or nothing at all.

It is the most expensive defect a storefront can carry, because it usually sits on the highest-priced items, which are the ones the store pays to advertise.

  1. Specimen 01 · No purchase path

    Trail Jacket, Men's

    $1,699

    In stock · ships from warehouse

    where the add-to-cart control should be

    Call for availability

    A high-priced item with no way to buy it, on a store paying for traffic to reach exactly that page.

The specimen is drawn — our own type, our own palette, an invented product, no screenshot and no store's interface reproduced. It shows what the defect class looks like, not what any storefront looked like.

What a shopper sees

Someone clicks an ad or a search result for the product, lands on the page, reads the price, and looks for the button. There is a line that says to call. It is late, or they are on a phone, or they simply came to buy, not to talk. They leave, and the store has paid for the visit.

A phone call is a reasonable step for a two-thousand-dollar kayak or a made-to-order enclosure. It is not reasonable as the only step, and it is not reasonable on a hundred-dollar accessory that happens to share the same template setting. The defect is not the phone number. It is the absence of the alternative.

Why it happens

On Shopify

A product with every variant at zero inventory and inventory tracking set to stop selling when out of stock renders the button disabled or replaced with the theme's sold-out string. Some themes hide the buy box entirely for products tagged a certain way, or when a metafield such as a "call for price" flag is set and nobody remembers setting it. A product with no variants published to the Online Store sales channel shows the same symptom.

On WooCommerce

A product saved as the wrong type, a variable product with no variations published, a price field left empty, or a stock status of "on backorder" with backorders disallowed all remove the button. Plugins that add "request a quote" or "call for price" replace the control per product or per category, and the setting survives long after the reason for it is gone. A catalog-mode plugin left on after a site migration does the same thing to every page at once.

Check your own store in two minutes

  1. Sort by price, descending — Open your all-products collection or shop page and sort from highest price down. The defect lives at the top of the list.
  2. Open the first five — On each page, find the add-to-cart control without scrolling. If you find a phone number, a contact link or a disabled button instead, write down the URL.
  3. Do it logged out, on a phone — Themes render differently for staff sessions and for desktop. The shopper you are paying for is on a phone at night.
  4. Match against your ads — Compare the list to whatever your ad account is currently sending traffic to. Any overlap is money spent on a visit that cannot end in an order.

What the fix involves

Restore the control on every priced product and keep the phone number as a secondary link beside it, not as a replacement. For a made-to-order or freight item, the button can lead to a deposit, a configurator or a lead-time notice; what it cannot do is vanish. On Shopify that is inventory settings, sales-channel publication and a theme block; on WooCommerce it is product type, stock status and whichever plugin is intercepting the button.

Effort in the published audits: one to two days for a catalog where the defect is on a handful of high-value products, one hour when a single plugin or theme setting is responsible for all of it.

Where we found it

Audit No. 001, an outdoor-gear retailer on WooCommerce: six items from $199 to $2,599 carried a Call for updated inventory! banner in place of the control, and the store was running paid ads to them at the time of review. It is finding F1 there, and the first line of the priority table.

Not sure about yours?

Send the URL. We read the storefront from the outside, write down every finding with the page it came from, and send you the document. It is free, ungated, and yours to keep.