Linux 软件免费装
Banner图

Merchgain - Gross Margin & Profit Reports for WooCommerce

开发者 baltano
更新时间 2026年10月31日 07:07
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPL-2.0-or-later
版权网址: 版权信息

标签

cost of goods cost of goods sold cogs profit calculator abilities-api

下载

0.2.6 0.2.1 0.2.0 0.2.2 0.2.3 0.2.4 0.2.5 0.2.7 0.2.8

详情介绍:

WooCommerce tells you what you sold. It does not tell you what you earned. Merchgain adds a profit report to your admin: revenue, cost of goods, gross profit, and margin for any period, per product and per category. Sort by margin, lowest first, and the products you sell at a loss come to the top. Products that still have no cost are listed by name, with links straight to them. Only starting to enter costs? Orders placed before then have no cost recorded, so Merchgain estimates them from today's product costs. The estimate has a panel and columns of its own and is never added to the recorded figures. Enter your costs today and see an estimate for last year straight away. It only reads. No product, price, order, or cost value is ever written back to your store, and nothing leaves your server. See it before you install. Live Preview opens a demo store in your browser, with a year of orders, a product sold at a loss, and products with no cost. Requirements What you get What makes it different How the numbers are calculated Since WooCommerce 10.3 the cost of goods sold lives in the core product editor, and every order records the cost at the moment of sale. WooCommerce Analytics does not report on it. Merchgain reads that field and answers the question the sales report cannot: how much of this revenue is actually yours. It is a WooCommerce profit report built on data your store already has—no import, no second place to keep costs. This is a cost of goods sold report, so profit and margin rest on the cost recorded at the moment of sale, not on a current price list. The one exception is the estimate for items sold without a recorded cost: it uses today's product cost, says so wherever it appears, and is never added to the recorded figures. Revenue is the net line total of sold items after discounts, excluding tax and shipping. Refunds count as negative amounts in the period they were issued, not in the period of the original sale. Orders counted by default: completed, processing, and refunded. Margin is profit divided by revenue, not markup on cost. A product bought for 60 and sold for 100 has a 40% margin here. That single distinction is what separates a profit margin report from a sales report. Profit and margin are calculated only on items whose cost is known. An item with no cost recorded still counts towards revenue, but it is never treated as if it had cost zero. The report says so instead of quietly inflating your margin. More on merchgain.com From the makers of Merchlint, a free catalog audit for WooCommerce.

安装:

  1. Install and activate the plugin. WooCommerce 10.3 or newer is required.
  2. Go to WooCommerce > Settings > Advanced > Features and switch on Cost of Goods Sold.
  3. Fill in the cost on your products: the Cost of goods field in the General tab of the product editor.
  4. Open Profit & margin in the admin menu. It has its own item, just below the WooCommerce block.
New orders record the product cost at the moment of sale. Orders placed before your costs were in place have none recorded, so the report estimates them from today's product costs, separately from the recorded figures.

屏幕截图:

  • Profit product by product: items sold, revenue, cost, profit, and margin, with a bar beside
  • The same sales grouped by product category, with the estimate in columns of its own. A product
  • What you see before the Cost of Goods Sold feature is switched on: the three steps to turn it

升级注意事项:

0.2.8 A rewritten description on wordpress.org, with a new FAQ answer on checking whether a sale made money. The report is unchanged. 0.2.7 A short note under the report about Merchlint, a free catalog audit from the same author - shown only if Merchlint is not installed. 0.2.6 An AI assistant you connect to your store can now read your profit summary, products sold at a loss and products without a cost - read-only. 0.2.5 Orders placed before you entered costs now get a separate, clearly labelled estimate from today's product costs. 0.2.4 The missing cost warning now finds ATUM purchase prices and recognises Booster and BjornTech PayPal POS. 0.2.3 Fixes empty product and category tables and CSV export on MariaDB when sorted by profit (the default) or margin. 0.2.2 The missing cost warning now tells you when your costs are kept by another plugin, and which one. 0.2.1 New display name; faster category view with extensions installed; uninstall no longer touches extension data. 0.2.0 First public release. 0.1.1 The report now covers your whole order history instead of the last 12 months. 0.1.0 First release.

常见问题:

Do I have to enter a cost for every product first?

No. Start with the products that sell the most. Profit and margin are calculated on whatever has a cost, and the report always says how much of your revenue that covers, so a partly filled catalog gives you real numbers, not wrong ones. The missing cost warning links straight to the products that still need one. WooCommerce has no bulk editor for the cost field, but the REST API and WP-CLI can set the cost of many products at once, for example from a spreadsheet. Longer answer

What about orders placed before I filled in the costs?

They have no cost recorded, and Merchgain reports them as "no cost data" rather than as a cost of zero. Their revenue still counts; they are left out of profit and margin, and the coverage line tells you how much of your revenue that is. Once their products have a cost, the report also estimates them: today's product cost times the quantity sold, the same way WooCommerce would record it if the sale happened today. The estimate has a panel and columns of its own, every estimated figure is marked, and it is never added to the recorded profit. If a cost price changed since the sale, the estimate is off by exactly that change, which is why it stays apart. Longer answer

How do I check whether a sale or Black Friday made money?

Open the report for the days of the sale: choose Custom range in the date selector, set the first and last day, and click Apply. Gross profit at the top is what the sale earned on items with a recorded cost. Sort the table by Profit, lowest first, to see the products sold below cost. The dates are part of the report address, written as year-month-day, so you can bookmark it or edit it by hand: /wp-admin/admin.php?page=merchgain&range=custom&from=2026-11-27&to=2026-11-30. A date written any other way opens the last 30 days instead. Merchgain does not compare two periods for you. Open a second report for a period of the same length just before the sale, on the same days of the week (here from=2026-11-20&to=2026-11-23), and compare the two. Enter your costs before the sale starts. WooCommerce records the cost on each order at the moment of sale. An item sold before its product had a cost has none recorded, so the report can only estimate it from today's cost, in a panel of its own. If you fill in your costs just before the sale, the period before it rests almost entirely on that estimate. Refunds count in the period they were issued, so items returned after the sale show up as negative amounts in the weeks that follow, not in the report for the sale days. Longer answer

I keep my costs in another plugin. Why does Merchgain show them as missing?

Because those costs live in that plugin's own storage—a field of its own or, for ATUM, a table of its own—not in the WooCommerce core field. Merchgain tells you so instead of leaving you guessing: the missing cost warning counts how many of those products have a cost kept by another plugin and names it. Recognized: 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. It counts them; it never uses them. A number taken from a field nobody can check is worse than a gap, and a shop with two cost plugins in its history has two fields that disagree, neither of them dated. Moving the values into the WooCommerce field is the durable answer, and the page below shows how. Longer answer

Is this net profit?

No, it is gross profit: revenue minus the cost of goods sold. Shipping, payment fees, advertising, and other running costs are not deducted, because WooCommerce does not record them as a cost of the order in any standard form. Tax and shipping are left out of revenue as well. Longer answer

How is margin calculated?

Profit divided by revenue. A product bought for 60 and sold for 100 gives 40 profit and a 40% margin. This is not markup on cost, which for the same product would be 66.7%. The two get mixed up often, so the definition is printed under the report as well. Longer answer

Where do the costs come from?

From the Cost of Goods Sold field built into WooCommerce 10.3 and newer. Merchgain does not store costs of its own and does not add a second cost field to your products. Longer answer

Why doesn't WooCommerce Analytics show my profit?

Because Analytics does not read the cost field at all. WooCommerce records the cost on every order, but none of the Analytics reports uses it, and the WooCommerce documentation says the feature does not integrate with Analytics for now. Merchgain reads the cost from the orders directly, so it works whether Analytics is switched on or off. Longer answer

Does any data leave my server?

No. Merchgain makes no outgoing connections at all: no analytics, no license check, no update ping of its own. Everything is calculated by your own database and displayed in your own admin. The one exception is your own choice: an AI assistant you connect to your store can read the report through Merchgain's abilities, as the next question explains. Longer answer

Can an AI assistant read my reports?

Only if you connect one yourself. On WordPress 6.9 or later, Merchgain registers read-only abilities through the WordPress Abilities API: a profit summary for a period, the products sold at a loss, and the products without a cost. An AI assistant you connect to your store, for example through an MCP plugin, can call them as a logged-in user with the "view WooCommerce reports" permission, and gets the same figures as the Profit & margin screen. Merchgain itself sends nothing anywhere and changes nothing in your store. Longer answer

Does it slow my store down?

The report runs in the admin only, never on the storefront, and results are cached for an hour. Entering a cost in the product editor clears that cache immediately, so the numbers never wait for a timer. For anything else that changes the figures, such as an order status, a refund issued elsewhere, or an import, there is a Recalculate button at the top of the report. Longer answer

Does it work with High-Performance Order Storage?

Yes, and with the classic post-based storage as well. Cost values live in the order items table, which is the same in both layouts. Longer answer

Who can see the report?

Anyone with the "view WooCommerce reports" capability, which is the same permission WooCommerce uses for its own sales reports. A shop manager has it, and so does a bookkeeper account limited to reports only. The report has its own item in the admin menu, Profit & margin, sitting just below the WooCommerce block. It is not inside the WooCommerce submenu, where an account limited to reports would never see it: that submenu needs a permission such an account does not have. Longer answer

How much history does the report cover?

All of it. There is no date limit. Any range can be selected, including a single month from years back; profit and margin appear wherever a cost was recorded on the sold item. Longer answer

Which orders are counted?

Completed, processing, and refunded. Refunded is in the list on purpose: a full refund flips the parent order to that status, and leaving it out would make a fully refunded order count as minus its own value instead of zero. WooCommerce Analytics excludes only pending, failed, and cancelled by default, so this set is one status narrower: it skips on-hold. Longer answer

Which month does a refund belong to?

The month the refund was issued, not the month of the original sale. A September sale refunded in November leaves September untouched and shows as a negative amount in November. Reports of closed months do not change behind your back. Longer answer

I issued a refund and my historical profit changed. Why?

That is WooCommerce, not Merchgain. Creating a refund makes the core recalculate the cost of every item on the parent order using the product's cost as it is today. If the product cost changed in the meantime, the stored history changes with it. Merchgain reports what is in the database; it does not silently keep a second copy. Longer answer

My product genuinely costs zero and it shows up as missing a cost. Why?

Because WooCommerce cannot tell the two apart. Saving a cost of zero, on the product or on an order item, makes the core store nothing at all rather than a zero, so "cost of zero" and "no cost entered" end up identical in the database. Rather than guess, Merchgain always says "no cost data" and never "cost 0". Free samples, giveaways, and downloadable extras will therefore appear on the missing cost list. Longer answer

I have orders in euros and dollars. What happens to them?

They are left out of the report and named in a warning above the numbers. Merchgain does not convert exchange rates, and adding several currencies into one total would produce a number that looks right and is not. Longer answer

My category totals add up to more than the summary card. Why?

Because a product that sits in several categories is counted in each of them. A mug in both "Kitchen" and "Gifts" adds its sales to both rows, so the rows add up to more than the store actually sold. The alternative, picking one category and dropping the sale from the other, would quietly understate every shared category, which is worse. The summary cards are counted from the order items themselves, so they are never double counted. The screen says this under the table, and a CSV export of the category view says it on the last line, with both numbers. Longer answer

更新日志:

0.2.8 0.2.7 0.2.6 0.2.5