My costs are in another plugin. Why does the report show them as missing?
Cost plugins store their values in their own fields or tables, not in the WooCommerce core field. Why reading them anyway would make the numbers uncheckable.
The short answer
Because those costs live in that plugin’s own storage — its own meta fields or, for ATUM, a table of its own — and this report reads the WooCommerce core field. Different storage, different names, no overlap.
Cost plugins predate the core field by years — the core only got one in WooCommerce 10.3, in late 2025 — so every one of them invented its own. A shop that has been tracking costs since 2019 has them somewhere else entirely.
What WooCommerce actually does
The core field is _cogs_total_value on the product and _cogs_value on the order line. That
second one is the part no third-party plugin can retrofit: it is written by the core at the moment
of sale, which is what makes it a historical record rather than a lookup against today’s price.
A plugin storing costs in its own meta usually has the product side only. That is enough to compute a margin against today’s cost, and not enough to say what last March’s orders actually earned.
What to do about it
Moving the values into the core field is the durable answer, and it is a write to your shop, so treat it as one:
- Confirm what the value in that field means — net or gross, per item or per line. The places these plugins use are listed on the page below; your own is worth checking either way.
- Copy it into the core field with the script on moving costs from another plugin — it reads the foreign fields, shows you what it would write before writing anything, and reports the products where two plugins disagree instead of picking a winner.
- Keep the old plugin’s data for now. Nothing is gained by deleting it, and it is your only record of what the costs used to be.
- Remember that only orders placed after the copy will carry a recorded cost. The migration fixes the future, not the history.
An optional, preview-first import is being considered for a later version. Nothing about it is promised until it exists.
How Merchgain reports it
Merchgain looks for those fields, counts the products and names the plugin holding them, by the name the plugin gives itself: Cost of Goods: Product Cost & Profit Calculator for WooCommerce, WooCommerce Cost of Goods, ATUM Inventory Management for WooCommerce, Booster for WooCommerce, BjornTech PayPal POS integration for WooCommerce, Ni Cost of Goods for WooCommerce and Cost Of Goods For WooCommerce. You see it in the missing cost warning, next to the list of products. An empty report stops being a mystery.
It has done so since version 0.2.2; Booster, BjornTech PayPal POS and ATUM are found from 0.2.4 on. ATUM is the gap worth naming: earlier versions looked for it in a product field that ATUM stopped writing to in 2018, when it moved its data into a table of its own.
It counts them. It never computes with them, and that part is not going to change. Two reasons, and the second one is the real one:
- it cannot know which is authoritative. Three cost plugins in a shop’s history means three fields, often disagreeing, none of them dated;
- a number nobody can check is worse than a gap. “Cost is known for 74% of revenue” can be verified against the product list. “Cost is known, from one of five possible fields” cannot be verified by anybody, including us.
Counting is not computing: one tells you where your data is, the other puts a figure on your screen that you have no way of checking.
Related answers
Disagrees with what you see in your shop? Write to us — every message is read. contact@merchgain.com