Skip to content
GPLWP Guides

How to track product profit margins in WooCommerce

WooCommerce Time About 30 minutes for a small catalogue 6 steps Updated 8 Oct 2026

WOOCOMMERCE
The short answer

WooCommerce product sales reports do not automatically show true profit margins unless you record each product’s cost of goods. You can calculate margins in a spreadsheet, use WooCommerce’s built-in COGS field where available, or add a reporting extension for product, variation, refund and date-based profit data.

The route
  1. 01Define the margin you need
  2. 02Start with a spreadsheet
  3. 03Enable WooCommerce COGS
  4. 04Enter every product cost
  5. 05Set statuses and exclusions
  6. 06Review margins and choose the fast way

What you need

  • A WooCommerce store with products and prices already configured
  • A list of supplier, manufacturing or fulfilment costs
  • Admin access to WordPress
  • A spreadsheet or COGS reporting tool

Define the margin you need

For gross product margin, use (net sales - cost of goods sold) / net sales × 100. Net sales should account for discounts and refunds. This is not the same as net profit, because payment fees, advertising, wages, software, tax and overhead may still be outside the calculation. WooCommerce defines net sales as gross sales minus returns and coupons.

Decide what belongs in your unit cost before entering numbers. For a physical product, this may include the supplier price, manufacturing cost and directly attributable packaging. Keep shipping charged to the customer, sales tax and payment fees separate unless your accounting method deliberately includes them.

Start with a spreadsheet

The manual route is fine for a small catalogue or a shop with occasional orders. Create columns for SKU, product or variation, selling price, unit cost, units sold, discounts, refunds, net sales, COGS, gross profit and margin percentage.

Calculate COGS as unit cost × quantity sold, then calculate gross profit as net sales - COGS. The drawback is that you must export or enter order data, keep variation costs in sync and handle refunds consistently. It also will not give you a live margin view inside WooCommerce.

Enable WooCommerce COGS

If your WooCommerce version includes the native feature, go to WooCommerce > Settings > Advanced > Features, enable Cost of Goods Sold, and save. WooCommerce then adds a cost field to product editing screens and stores cost information with order items.

Enter the cost of a simple product in its product data. For a variable product, set a default cost or enter a separate cost for each variation. The native feature records order-item COGS, but its documentation currently says that COGS is not integrated into WooCommerce Analytics, so you may still need an export or reporting extension for margin tables and trends.

Enter every product cost

Use your current landed unit cost, not the retail price or the amount paid by the customer. For variations, do not assume that every size, colour or pack has the same cost unless that is actually true. WooCommerce’s COGS tools support a default variation cost with individual overrides.

Check the catalogue for products left at zero cost. A zero cost makes the product look completely profitable. If costs change over time, update the product for new orders but avoid overwriting historical order costs unless you intentionally want to recalculate old results. Stored order costs are designed to preserve the cost at the time of the order.

Set statuses and exclusions

Decide which order statuses count as sales. Exclude cancelled, failed and unpaid orders, and check how your tool treats refunds. A refunded product should reduce both sales and its associated cost, otherwise the margin will be overstated.

Review whether shipping, tax and checkout fees should be excluded from gross product margin. WooCommerce’s Cost of Goods documentation recommends excluding these by default, but stores may choose differently for their accounting process. Be consistent month to month.

Review margins and choose the fast way

Compare the result against a few real orders. Check a discounted order, a variable product, a partial refund and an order with shipping or tax. A common Friday-afternoon error is changing a product cost and assuming that every previous order has changed too; historical order costs normally remain unchanged unless you deliberately apply an override.

For the fast route, use WooCommerce Cost of Goods. It adds product and variation costs, calculates costs on orders, and provides product, date and category profitability reports. Choose it when a spreadsheet is too slow and WooCommerce sales data alone is not enough. Its reports can show net sales, COGS, profit and average profit for selected periods.

The fast route

Let WooCommerce Cost of Goods do it

Adds per-product and variation costs, COGS reports, and profit tracking; choose it when WooCommerce sales data alone is not enough.

Get WooCommerce Cost of Goods

Sources

  1. woocommerce.com /document/woocommerce-analytics/?utm_source=openai
  2. woocommerce.com /document/woocommerce-cost-of-goods-sold-cogs/?utm_source=op…
  3. woocommerce.com /document/cost-of-goods-sold/?utm_source=openai

Questions

Can WooCommerce calculate product profit margins by itself?
Not from sales data alone, because WooCommerce needs a cost for each product or variation before it can calculate gross profit. Current WooCommerce versions may provide a native Cost of Goods Sold field, but the documentation says that native COGS data is not currently integrated into WooCommerce Analytics. For product-level margin reports, use an export, spreadsheet or COGS reporting extension.
What should I include in product cost?
Include the direct cost of buying or making one unit, and add directly attributable packaging or fulfilment costs if that matches your accounting method. Do not automatically include customer-paid tax or shipping. Payment fees, advertising and general overhead usually belong in a wider net-profit calculation rather than gross product margin. Record your definition and use it consistently across products.
How do I track margins for variable products?
Enter a cost for each variation when variation costs differ. A default cost can be inherited by variations, but individual variations should override it when sizes, materials, suppliers or pack quantities change the real cost. Check the report at variation level where possible, because a parent product average can hide an unprofitable option.
Will changing a product cost change old profit reports?
Normally, no. COGS-enabled order items store the cost associated with the order, so changing the product cost is intended to affect new orders rather than rewrite history. Some extensions provide an action to apply costs to previous orders, and an override can change historical results. Use that only when you deliberately want to recalculate earlier periods.
Why does my margin look too high?
The usual causes are missing product costs, costs left at zero, refunds not deducted, discounts ignored, or shipping, tax and payment fees being treated inconsistently. Test one order by hand: confirm net sales, multiply the correct unit cost by the quantity sold, subtract COGS, then divide profit by net sales. Check variations separately rather than relying on a parent product average.