Answers about costs, profit and margin in WooCommerce
Every answer below is a page of its own with a permanent address, so the plugin, a support reply or a forum post can link straight to it. Most of them are about WooCommerce itself, not about Merchgain.
Getting the cost data in
- How do I switch on Cost of Goods Sold in WooCommerce?
The cost field is a WooCommerce feature that ships switched off. Where the switch is, what it starts recording, and why nothing is filled in backwards.
- How do I fill in product costs without clicking through 500 products?
The core admin has one cost field and no bulk editor for it. The routes that do scale, and the order of work that makes a profit report useful after one evening.
- Why doesn't the cost of goods show up in WooCommerce Analytics?
WooCommerce records the cost of goods on every order, but no Analytics report reads it. Where the cost is visible in the core, and how to get profit and margin from it.
- Does Google Automated Discounts need the cost of goods from my WooCommerce store?
Google asks for the cost of each product before it discounts it in Shopping ads. How the WooCommerce cost field gets into the feed, and what else the setup needs.
- How do costs work on variable products and variations?
A variation inherits its parent cost, can replace it, or can add to it. The additive flag, the inheritance rule, and what should count as a missing cost.
How the numbers are made
- How is margin calculated, and why is it not the same as markup?
Margin is profit divided by revenue, markup is profit divided by cost. The same product gives 40 percent one way and 66.7 percent the other.
- What counts as revenue in the profit report?
Net line totals of sold items after discounts, without tax and without shipping. Why that differs from the number in the WooCommerce sales report, and by how much.
- Which order statuses are counted in the report?
Completed, processing and refunded. Why refunded has to be in the list, and why leaving it out turns a fully refunded order into minus its own value.
- Which month does a refund belong to?
The month the refund was issued, not the month of the sale. A September sale refunded in November leaves September alone and shows as negative in November.
- 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.
Where the data is missing
- My product genuinely costs zero, so why is it listed as missing a cost?
WooCommerce deletes the cost value on an order line when it is zero, so a free sample and a product nobody costed end up as the same absence in the database.
- What about orders placed before I filled in the costs?
They have no cost recorded, so their revenue counts and their profit does not. What the coverage line is for, and why no plugin can fill that history in later.
- I issued a refund and my historical profit changed. Why?
Creating a refund makes WooCommerce recalculate the cost of every line on the original order from today’s product cost. Core behaviour, and not reversible.
- What happens if I switch Cost of Goods Sold back off?
New orders stop recording costs, and the gap cannot be filled later. Switching off does not delete what is stored, but saving an order while it is off can.
- I have orders in euros and dollars. What happens to them?
They are named in a warning and left out of the report. No exchange rates are applied, because one total in several currencies looks right and is not.
- 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.
- Can the report show profit for orders placed before I entered my costs?
Items sold before a cost was recorded get an estimate from today's product cost, kept apart from the recorded figures. How it is worked out and when it misleads.
Running it in your shop
- Does it work with High-Performance Order Storage?
Yes, and with classic post storage too. Order line items live in the same tables under both layouts, which is exactly where the cost values are.
- Who can see the profit report?
Anyone with the capability WooCommerce uses for its own reports. Why the report has its own menu item instead of sitting inside the WooCommerce submenu.
- Does any of my data leave my server?
No account, no licence check, no telemetry, no outbound connection of any kind. What that means concretely, and how to verify it yourself in five minutes.
- Why are the numbers an hour old, and what does Recalculate do?
Results are cached for an hour so the screen opens fast. Entering a cost clears the cache at once. Everything else that changes the figures gets the button.
- How far back does the report reach?
As far back as your orders go — no window, no cap. What ends the history is the cost data, which starts the day the feature went on and is never back-filled.
- Can an AI assistant read my profit reports?
Three read-only abilities on WordPress 6.9 or later — profit summary, products sold at a loss, products without a cost. Who can call them and where the figures go.
Something here disagrees with what you see in your shop? Write to us — every message is read.
Cost of Goods Sold · How profit is calculated · Margin vs markup