| 开发者 | emtiazzahid |
|---|---|
| 更新时间 | 2026年8月27日 01:34 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/wp-content/plugins/, then activate it.Work down this list, in order. The plugin's own status panel checks all of these and tells you which one is failing.
Because there is no cost stored on them. WooCommerce copies a product's cost onto the order line at the moment the order is created, which is what makes historical profit accurate even after you change a supplier price. The flip side is that orders created before the Cost of Goods Sold feature was switched on have no cost snapshot at all, and entering product costs today does not retroactively write costs onto those old orders. No plugin can recover data WooCommerce never wrote. Two things help. Coverage reporting tells you honestly how much of a period is uncosted, and estimated mode applies each product's current cost to those uncosted lines so you get an approximate figure. An estimate is always labelled as an estimate.
Upload a CSV containing a product identifier and a cost, then map which column is which. The plugin shows you every row it matched and every row it could not, and writes nothing until you confirm. The uploaded file is validated by content rather than by its name, stored under a generated filename so nothing you upload can choose where it lands, and deleted in the same request that parses it. Costs are written through WooCommerce's own product API, never by direct database writes. A template CSV of your existing products can be downloaded from the same screen; values in it are escaped so a product name or SKU beginning with an equals sign cannot execute as a formula when the file is opened in a spreadsheet.
No. It makes no external HTTP requests of any kind. No telemetry, no tracking, no remote licence check, no third-party services. All calculation happens in your own database on your own server. See the Privacy section above.
Yes. The plugin declares compatibility with High-Performance Order Storage and reads order data correctly under both HPOS and legacy post-based storage. It also declares compatibility with the Cost of Goods Sold feature itself.
No. Reporting is strictly read-only: it queries WooCommerce's tables and writes nothing back to your products or orders. The single exception is the backfill assistant, which exists specifically to write product costs, and only does so for the products you select, after you confirm, and using WooCommerce's own product API rather than direct database writes. It never touches costs already recorded on existing orders, because those are a historical record.
Usually, and where they differ there is a reason worth knowing. The plugin honours the same excluded order statuses configured in your Analytics settings and nets refunds the same way. The difference is the date. These reports key every figure on the order creation date, because the WooCommerce line-item table they read stores no other date, while Analytics defaults to the paid date. If your store is paid at checkout those are the same day and the totals agree. If payment can arrive days after the order, the same sale can land on different days in the two reports.
WooCommerce writes a refund as its own negative line, carrying negative quantity and a negative cost, dated on the day the refund was issued. Reports sum those lines along with everything else, so a refund reduces revenue, units and cost on the refund date. The refunded order is not retrospectively rewritten.
It is the share of order lines in the current report that had a cost recorded. At 100 percent, every line was costed and the profit figure is complete. At 60 percent, four lines in ten contributed revenue but no cost, so the true cost is higher and the true profit lower than shown. Coverage is displayed rather than hidden precisely so that a partly costed report is never mistaken for a complete one.
The same orders WooCommerce Analytics counts: everything except the statuses excluded in your Analytics settings, plus draft, auto-draft and trashed orders, which are never counted because they are not sales. Developers can adjust this with the profit_margin_reports_report_statuses filter.
Anyone with the view_woocommerce_reports capability, which by default means shop managers and administrators. Writing costs through the backfill assistant additionally requires manage_woocommerce.
Possibly, in this release. Reports are calculated live against your order tables on each load, with a short-lived cache. Stores with hundreds of thousands of orders may find long date ranges take a while. Pre-aggregation is planned.