Why do the category totals add up to more than the summary?
A product in three categories is counted in all three. Why WooCommerce has no primary category, and why inventing one would be worse than the overlap.
The short answer
Because a product can sit in several categories, and it is counted in each of them. Add up eight categories and you can get more than the shop’s total revenue — that is arithmetic, not a bug.
The category view answers “which part of the shop earns”, not “how do my sales split into eight disjoint boxes”. WooCommerce has no notion of a main category, so there is no honest way to produce disjoint boxes.
What WooCommerce actually does
Product categories are a hierarchical taxonomy with a many-to-many relationship: one product can belong to Mugs, Gifts and New in at once, and none of those is marked as primary. Some SEO plugins add a “primary category” of their own, for breadcrumbs — that is their field, not a core one, and it means “the one to show in a URL”, not “the one that owns the revenue”.
Parent and child categories are separate terms too. A product in Mugs → Thermal is not automatically counted under Mugs unless it is assigned to both.
What to do about it
Two workable habits:
- read categories as views, not as slices. “Mugs earn 49% margin” is the useful sentence, and it is true regardless of overlaps;
- if you need clean slices, tidy the catalogue. One category per product, with everything else expressed as tags or attributes, is a decision that pays off in every report you will ever run, not just this one.
What the category view is actually good for - and the mix effect that moves your margin while no product changes - is in profit by category.
Whatever you do, do not fix it by splitting revenue between categories. Half a sale in two categories is a number that matches nothing in your accounts.
How Merchgain reports it
The overlap is stated under the category table, in one sentence, every time the view is open — rather than in documentation nobody reads before being surprised.
Merchgain reports the categories a product is actually assigned to, does not read anyone’s primary-category field, and does not divide a sale between categories. A row whose items include goods with no recorded cost is marked, so a suspiciously high category margin can be checked instead of believed.
Related answers
Disagrees with what you see in your shop? Write to us — every message is read. contact@merchgain.com