Lessons · Lesson 3 of 3
A style nobody can filter to
Audit the half of a site's merchandising that lives in the product data. Which styles can a filter reach, which words can a search answer, and what does a phase close at when four people each get their own decision right?
Lesson 3 of 3 · 42 min
The third of the page that the register cannot see
Half of what decides whether a garment is ever seen online is not on the page. It sits in the labels attached to it behind the scenes: colour, length, fabric, occasion. A shopper narrows the list or types a word, and the site shows her whatever those labels can find. A garment with no labels is not at the bottom of the shorter list. It is missing from it.
Lesson 1 priced the Dresses page as a fixture with 148 positions, and then 196. That register describes the page a shopper sees when she arrives and touches nothing.
38.4% of Marchbourne's dress sessions in the four weeks to the week commencing 27 September 2027 applied at least one filter. Those sessions are not looking at the page in the register. They are looking at a shorter page, built on the spot, with its own position 1. A style that does not carry the attribute being filtered on is not at the bottom of that page. It is not on it.
Here is Marchbourne's own measurement of which filters dress shoppers actually use, over the same four weeks.
| Filter | Share of dress sessions | Attribute it runs on | Dress styles with the attribute empty |
|---|---|---|---|
| Size | 33.0% | Size availability, from stock | 0 |
| Colour | 26.1% | Colour family | 3 |
| Length | 21.6% | Length | 31 |
| Price | 14.2% | Ticket price | 0 |
| Sleeve | 9.4% | Sleeve type | 44 |
| Any filter at all | 38.4% | — | 56 styles with at least one empty |
Size, price and colour are nearly complete, because they come out of another system. Size availability is computed from stock, price comes from the price file, and colour family comes from the buying sheet. Length and sleeve are typed by a person. They were empty on 56 separate styles out of the 196, which is 28.6% of the department. Nineteen styles were missing both.
That is not an unusual kind of sloppiness. It is the ordinary result of an attribute that has no owner in the critical path. No purchase order is held up by a missing sleeve value. No delivery is stopped. Nothing turns red. The gap simply removes the style from 21.6% or 9.4% of the sessions on the page, silently, for the whole season.
What filling them was worth
Devika's team filled the length and sleeve values on all 56 styles across weeks 6 and 7, finishing on Sunday 24 October 2027. The reading uses the same control instrument as lesson 2: the department's own week-on-week movement, taken out.
- The 56 styles' combined units, average of weeks 4, 5 and 6: 214 a week.
- The department's control set moved 2.1% over the same interval, so expected units for weeks 8 to 10 are 214 × 1.021 = 218.5 a week.
- Actual, average of weeks 8, 9 and 10: 268 a week.
- Effect: plus 49.5 units a week, at the blended GBP 33.10 a unit — GBP 1,638.45 a week.
- Held for weeks 8 to 13, six weeks: GBP 9,830.70.
Two of the 56 make the mechanism concrete. MBN-341 Kilnsey is a wide-leg trouser. It was filed with a fabric value of linen blend and no entry against the site's linen filter, so a shopper filtering separates to linen never saw it. It earns GBP 30.68 a unit. MBN-318 Thurlaston is a poplin blouse. It had no sleeve value, which removed it from every long-sleeve filter in an autumn phase. Neither style had anything wrong with it. Neither had a bad position. They were simply not in the room when a third of the shoppers were choosing.
The words the site could not answer
Filters are one half of findability. The search box is the other half, and it is the one where the customer tells you, in her own words, what she came for.
Marchbourne logged 61,250 site searches across dresses and separates in the four weeks to the week commencing 27 September 2027. 4,778 of them, or 7.8%, returned nothing at all. Six terms accounted for 1,904 of those, which is 39.8% of every empty result on the site.
| What the customer typed | Searches | Why nothing came back | Styles it should have reached |
|---|---|---|---|
| tea dress | 612 | The nearest attribute value is vintage floral; the words tea dress appear on no style | 9 |
| midaxi | 388 | Not a length in the taxonomy — Marchbourne uses midi and maxi only | 22 |
| smock | 301 | The fit value is oversized; the word smock appears nowhere | 6 |
| cord | 246 | The fabric value is corduroy, and the search did not stem or alias it | 11 |
| co ord | 201 | Marchbourne sells matching sets, filed as two separates with no set attribute | 14 |
| going out dress | 156 | Occasion values are day, evening and occasion | 31 |
Read the right-hand column. Every one of those searches had an answer in the catalogue. The customer named the product correctly, in the language customers use, and the site said it had none.
Marchbourne's own conversion figures put a price on that. A session that used the search box converted at 6.9%. A session that did not converted at 3.4%. A session whose search returned nothing converted at 0.8%. Be careful with the first comparison. A searcher arrives with intent, so search is partly a marker of a customer who was going to buy anyway, and Marchbourne does not claim the search box caused the gap. The third figure is the one that carries weight, because it is the same intentional customer, met with an empty page.
Nerys mapped the six terms as synonyms in week 7. It was an afternoon's work, once Piers had confirmed which styles each word meant.
- Searches for the six terms, weeks 8 to 10: 476 a week.
- Conversion of those sessions after the mapping: 5.4%. That is below the 6.9% search average, which is honest and expected, since these are broad browsing words rather than a style name.
- Improvement: 5.4% less 0.8% is 4.6 points, so 476 × 4.6% = 21.9 more orders a week.
- At GBP 33.10 a unit: GBP 724.89 a week, and over weeks 8 to 13, GBP 4,349.34.
The feedback loop, and why it closes
Put lesson 2's trading score next to those 56 styles and watch what happens.
- A style has no length value, so it never appears in a length-filtered result.
- It therefore takes fewer clicks than its position would suggest, and sells fewer units.
- The trading score reads its units and its conversion from that starved traffic, and scores it low.
- A low score means a low rank, so now it loses unfiltered clicks too.
- Its units fall again, which the score reads next week as confirmation.
Nothing in that loop is a bug, and nobody in it makes an error. The rule behaves exactly as designed, on inputs that are correct as measurements and wrong as evidence. Each turn of the loop makes the next turn more confident. By week 6 the styles with missing attributes were, on average, 73 rank positions below where they had started the phase. Not because anybody judged them, but because the arithmetic had.
The general form is worth stating plainly, because it applies to every automated ranking a merchandiser will ever be handed. A ranking rule fed on outcomes that it also causes will confirm whatever it did first. The only defence is an input the rule cannot influence. Attribute completeness is exactly such an input. That is why it deserves a place on the trading pack next to sell-through, and why "percentage of live styles with every filterable attribute populated" is a merchandising key figure and not an IT one.
Closing the phase: four people, four right decisions
| What changed | Landed | Weeks it ran | Gross margin a week | Gross margin over the phase |
|---|---|---|---|---|
| Default sort moved to the trading score | End of week 5 | 8 | plus GBP 1,025.50 | plus GBP 8,204.00 |
| Length and sleeve filled on 56 styles | End of week 7 | 6 | plus GBP 1,638.45 | plus GBP 9,830.70 |
| Six empty searches mapped to real results | End of week 7 | 6 | plus GBP 724.89 | plus GBP 4,349.34 |
| Total earned | — | — | — | plus GBP 22,384.04 |
| The same two data jobs, had they been done before week 2 | — | 6 more weeks | plus GBP 2,363.34 | plus GBP 14,180.04 |
The last row is the lesson. Nothing was done wrongly and nothing was left undone. Both data jobs were completed, both inside the phase, both by the person whose job they were. But they arrived at the end of week 7 rather than before trading opened, so six weeks of their value never existed. That lost amount, GBP 14,180.04, is 1.73 times the whole gain from the sort change that everybody argued about in three separate meetings. It is 1.87% of the department's gross margin for the phase.
Now the four decisions, each defensible in the chair it was made in.
Piers bought 48 extra dress styles. The previous autumn had sold out of its best three by week eight. Buying deeper into a range that had proved it could sell is a correct response to a real, evidenced loss.
Aurelia phased them into weeks 3, 4 and 5. Landing them any later would have left them under six weeks to trade before the phase's markdown window. Landing them all in week 1 would have starved the carry-in lines of intake budget. Weeks 3 to 5 is the right answer to the question she was asked.
Nerys changed the default sort in week 5. Newest first had put 21 fifteen-day-old styles into the top 24 positions and buried the phase's best sellers. Leaving it would have been negligent, and the change earned GBP 8,204.00.
Devika put the attribute backfill behind other work until week 6. Her team of three had four weeks committed to the site's new size-and-fit guide, a board-sponsored project aimed at the returns rate. Set against a project of that size, filling in a column of dropdown values on 56 styles was obviously the smaller thing. She was the only one of the four who could see both.
Put the four together and the phase produces this. A catalogue 32.4% bigger divides an attention budget that grew 1.0%. A ranking rule reads its inputs from that thinner slice. 56 styles are ones the rule could only see through a filter they were not in. And a fix arrived at the halfway point. Every decision was correct on its own. What none of them was, was sequenced.
The change that would have prevented most of it costs nothing and belongs to nobody yet. No style goes live without its filterable attributes, and completeness is reported to the trade meeting in the same pack as sell-through. Marchbourne made it a launch gate for Spring 28. It is a one-line rule, and on this phase's arithmetic it was worth more than the sort order, the buy depth and the search box put together.
Check yourselfYour empty-search log's top line is 'petite', 340 searches in four weeks, and you have no petite range. Is that a synonym mapping?Show the answer
No, and mapping it would be the worse of the two mistakes. A synonym points a word at styles that answer it, and there are none. So the honest response is either a filtered result the customer can see is empty, with a reason given, or an offer of the nearest thing while saying plainly that it is not petite. What the line actually is, is range research. 340 customers in four weeks told you, unprompted, about a gap. That belongs in the next buy meeting, not in the search configuration.
Check yourselfA colleague argues that a style with an empty length value can still be found by scrolling or by search, so the missing attribute costs nothing. What is the arithmetic answer?Show the answer
Marchbourne measured 21.6% of dress sessions applying the length filter. In those sessions the style is not ranked low. It is absent, so any route to it inside that session has been removed rather than lengthened. The cost is not the whole 21.6%, because the style would only have matched the sessions selecting its own length. But within those sessions the loss is total, and that is why the 56 styles' units rose by 49.5 a week when nothing else about them changed.
Prompt · Find the styles no shopper can reach
Before a phase opens, and again in the middle of it, on any catalogue with filters and a search box.
Audit the findability of my catalogue. I will give you an export of live styles with their filterable attributes, my own measured share of sessions that use each filter, and the top lines of my site-search log with the number of searches and how many returned no results. Produce three things. One: an attribute completeness table. For every filterable attribute, show how many live styles have it empty, which styles they are, and the share of sessions that use that filter. Rank the gaps by share of sessions times number of styles affected, because that is the order to fix them in. Say clearly that a style with an empty attribute is ABSENT from those filtered results, not ranked low in them. Two: a sort of my empty searches. Put every line into exactly one of three piles — a synonym that should point at styles I already have, a genuine range gap with nothing behind it, or a misspelling. For the first pile, name the styles each term should reach. Never invent a mapping for a term I have no product for. That pile is buy research, not search configuration. Three: the feedback loop. If I also give you the ranking rule my listing page sorts by, explain in plain words how a missing attribute starves a style of filtered views, then of units, then of rank, then of unfiltered views. Then tell me what the rule would need as an input it cannot itself influence. If I have not measured filter usage, say so, and rank by number of styles affected alone, stating that the ranking is weaker.
AI can make mistakes — check anything you act on.