The anatomy of a silent revenue leak for enterprise storefronts

Every defect below is real. Every one was live on the production site of a retailer doing between €200M and €25B in online revenue. Every one has been anonymised, and none of the retailers are named.
The thread running through all twelve: not one of them produced a technical alert. No exception, no 500, no latency spike, no failed test. In every case the code did exactly what it was written to do.
We publish these because argument is cheap and evidence is not. If you run a large storefront, our expectation is that you will recognise at least some of these as plausible on your own site, and that recognising them is more persuasive than anything we could write about the value of experience quality.
1. The search bar where the Enter key does nothing
Retailer: US direct-to-consumer travel goods brand, over €200M online.
What it was: A customer types a query into site search and presses Enter. Nothing happens. The results only appear if the customer clicks the small "View All Results" link inside the dropdown.
Why nothing caught it: The search endpoint was healthy and returning results correctly. The dropdown rendered. The failure was a missing keyboard event handler, which is not an error condition. Automated test suites navigate by clicking elements, so a click-based test passes on a site where the keyboard is broken.
2. "Sort by price, low to high" that does not sort by price
Retailer: US direct-to-consumer travel goods brand, over €200M online.
What it was: Applying the ascending price sort returned a $157 item ahead of a $25 item. On almost every category page.
Why nothing caught it: The sort parameter was accepted, the query executed, results returned in an order. There is no assertion anywhere in a normal stack that the order is monotonic. Visual regression compares the page against a baseline that already contained the wrong order.
3. Colours that exist on the listing page and not on the product page
Retailer: US direct-to-consumer travel goods brand, over €200M online.
What it was: Colour variants displayed on the category listing page did not exist as selectable options on the product detail page.
Why nothing caught it: Two different data paths. The listing page was reading from one source of variant metadata, the product page from another. Each was internally consistent. Consistency between them was nobody's assertion.
4. A $118 product displayed at $98
Retailer: US direct-to-consumer travel goods brand, over €200M online.
What it was: A product priced at $118 in the catalogue displayed at $98 on the storefront, with no promotion, no strikethrough, no discount badge.
Why nothing caught it: A price is a number. Rendering the wrong number correctly is not an error state at any layer of the stack. There was no promotion object to validate against, because there was no promotion.
5. "Load more" frozen on 400 available results
Retailer: US direct-to-consumer travel goods brand, over €200M online.
What it was: A search returning around 400 results displayed the first page. The "Load more" control did not advance past a certain point.
Why nothing caught it: Pagination failures at depth are almost never tested, because tests assert that results appear, not that all results are reachable. Analytics cannot see it either: a customer who cannot reach result 60 does not generate an event describing what they failed to find.
6. A promotion expiring in the year 2300
Retailer: Large European grocery group.
What it was: A promotional expiry date rendered on the storefront as the year 2300.
Why nothing caught it: A date field with a valid date in it. Almost certainly a data entry or format-conversion artefact upstream, in a pipeline where product and promotion data passes through several systems before reaching the front end. Every hop was working.
7. The minus button that silently deletes the product
Retailer: Large European grocery group.
What it was: On the mobile cart, the quantity decrement and increment controls sat adjacent with a small touch target. Decrementing from one removed the item entirely. No confirmation, no undo, no toast.
Why nothing caught it: The interaction worked as specified. Removing an item at quantity zero is defensible logic. The defect is the combination of that logic with a touch target next to its opposite, on the surface where most of the traffic is.
8. Registration blocked by the phone's locale
Retailer: Large European grocery group.
What it was: Account registration failed for users whose device locale was set to US English, because of a date format mismatch in the birth date field.
Why nothing caught it: QA ran on devices set to the local market locale, which is the reasonable default. The affected population is invisible in aggregate metrics: expatriates, second-language residents, travellers, anyone who set up their phone in English. Small percentage, entirely blocked.
9. The product that disappears when you close the delivery-slot selector
Retailer: Large European grocery group.
What it was: A customer adds a product, is shown a delivery or collection slot selector, and closes it without choosing. The product is silently dropped from the basket.
Why nothing caught it: This is a state-transition defect, and it exists only on the abandonment path. Test scripts complete the flow, because that is what a test script is for. The state you reach by not doing the thing is rarely enumerated.
10. Out-of-stock sizes that stay selectable through the size guide
Retailer: European sporting goods retailer, over €200M online.
What it was: Sizes correctly shown as unavailable on the product page were selectable through the size guide overlay. The customer only learned the size was out of stock at checkout.
Why nothing caught it: The size guide is a modal. It is a separate component, frequently owned by a different team or a third party, and it was reading availability from a different source than the main selector. Crawlers and regression suites rarely open modals, which is exactly why defects accumulate inside them.
11. Free shipping at €80 that does not trigger at exactly €80
Retailer: Large French apparel retailer group.
What it was: A free-shipping threshold at €80. A basket of exactly €80.00 did not trigger the confirmation message. €80.01 did.
Why nothing caught it: A boundary condition, almost certainly a strict inequality where an inclusive one was intended. Test data used round numbers on either side of the threshold, never the threshold itself. This is the single most reproducible category of defect we find, because thresholds are where business rules and code meet and where nobody writes the equality case.
12. French strings surviving in English and Arabic interfaces across eight markets
Retailer: Marketplace operating in eight markets and three languages.
What it was: Untranslated French source strings appearing in the English and Arabic interfaces. Navigation categories, product type filters, call-to-action buttons.
Why nothing caught it: Translation coverage was managed at the content level. These strings were in taxonomy, filters and component labels, which are generated rather than authored, and therefore sat outside the translation workflow entirely. Every individual system was correct. The gap was between them.
What the twelve have in common
Sorting the full set, five structural patterns account for nearly all of them.
Boundary conditions. Thresholds, exact values, first and last items, the edge of a range. Business rules are written in round numbers and tested in round numbers.
State transitions rather than states. The defect is not on a page. It is in what happens between two pages, or in the state you reach by abandoning an interaction rather than completing it.
Locale as an axis nobody tests. Device language, date format, currency, character set, right-to-left. Each multiplies the surface and none of them are in the default test matrix.
Derived and third-party surfaces. Modals, size guides, cross-sell modules, promotional themes, anything owned by a partner or generated by a different pipeline. Fixes applied to the main surface do not propagate to the fork.
Data consistency between systems that are each internally correct. Listing page and product page disagree. Filter and selector disagree. Catalogue and storefront disagree. No single system is broken.
None of these five are detectable by asking a system whether it is healthy. All five are detectable by asking whether a person trying to buy something can actually do it.
The honest part
We can tell you what these defects cost in mechanism. We are more careful about telling you what they cost in euros.
Our impact model assigns each of roughly 32 defect categories an estimated conversion impact drawn from external benchmarks, multiplied by page traffic and order value. It produces a number. It is a modelled number, and one enterprise customer pushed back on our methodology in a way that was partly correct.
The one controlled measurement we have: Tikamoon, a European furniture brand with over €120M in revenue A/B tested a set of Pilea-identified fixes across more than 700,000 users over 28 days, and measured a 6 percent increase in sales, driven by both conversion rate and average order value. One test, one site, one category. We would rather publish that single measured result than a confident range built on modelling.
Pilea is an e-commerce experience quality platform. It continuously inspects enterprise storefronts for visual, functional, content, localisation and merchandising defects, and ranks them by estimated business impact. Pilea analyses roughly 100,000 enterprise retail pages per month and classifies findings against a taxonomy of approximately 32 defect categories. All defects in this article are anonymised, and no retailer is identified.
See what's quietly costing you conversions
More from the blog

How people will actually shop in 2030
AI is reshaping how people discover products, but will it replace the storefront? Four scenarios for commerce in 2030, what the evidence says, and the one thing that matters whichever one wins.

Why your observability stack doesn't see UX defects
Why enterprise retail stacks still miss commercially damaging defects: the gap between analytics, observability, visual QA and periodic audits, and what continuous experience quality monitoring is built to catch.