1 · It counts the parent
A variable product has one parent and several variations. If the filter asks “does the parent have red?”, a sold-out red variation still counts. The tool below shows the two ways of counting side by side, and lets you change which variation is sold out.
Does your filter count the parent?
Change which variation is sold out and see the two ways of counting side by side. Nothing you type leaves this page.
2 · The lookup table is switched off
WooCommerce keeps a table with one row per variation, including whether it is in stock. Siftwren reads it. With the table off there is nothing to read, so the plugin counts through the product taxonomy instead and shows a warning on its settings page and in the set editor. Switching the table on in WooCommerce’s product settings makes the numbers match again.
3 · Your own choice is left out
A count has to include everything already chosen: the category you are in, the price range, the stock status. Siftwren takes the whole state of the page into account, and leaves out only the filter being counted when that filter allows several values.
4 · The number is old
A count kept in the database goes stale the moment a product sells out. Siftwren keeps nothing in the database. A count lives in the object cache only, filed under WooCommerce’s product version, which changes when products change, so an old number is never served as a new one. A shop without a persistent object cache simply recounts on every visit.
If a number still looks wrong after those four, compare it with the list by clicking the value. The address in the browser shows exactly what was asked for, and the counts guide explains how each number is built.