80% off for waitlist membersGet 20+ WooCommerce plugins — Launch from $39.80 or Lifetime from $49.80 

← Back to Guides

WooCommerce Profit by Product Report: Find Your Winners and Losers

WPBundle Team··9
WooCommerce profit by productmost profitable products WooCommerce reportWooCommerce product profitability
Your best-selling product might be your least profitable. A profit-by-product report reveals which items actually contribute to your bottom line and which ones are silently draining margin. Here's how to generate this report in WooCommerce — with plugins, spreadsheets, and SQL queries.

Why Revenue Reports Lie

WooCommerce's default product reports show revenue per product. This tells you what sells the most, not what earns the most. A product that sells 500 units at $20 each generates $10,000 in revenue. Impressive? Only if it doesn't cost you $18 per unit after supplier, shipping, and fees — leaving $1,000 in profit on 500 transactions.

Meanwhile, a product that sells 50 units at $80 each with $20 in costs generates $4,000 in revenue but $3,000 in profit. Three times the profit from one-tenth the volume.

Without a profit-by-product report, you'd be pouring your marketing budget into the $20 product (it sells more!) while neglecting the $80 product (it earns more!). This mistake is astonishingly common.

Revenue-based product reports lead to revenue-optimized decisions. Profit-based product reports lead to profit-optimized decisions. These are not the same thing.

Method 1: COGS Plugin Reports (Easiest)

WPFactory Cost of Goods — Pro Version ($49.99/year)

WPFactory's Pro plugin includes a "Profit by Product" report directly in your WooCommerce admin. Once you've entered cost prices for your products, navigate to WooCommerce → Reports → Profit and select the "By Product" tab.

The report shows:

  • Product name and SKU
  • Units sold in the selected date range
  • Total revenue
  • Total cost (units × cost per unit)
  • Gross profit
  • Gross margin percentage

You can sort by any column — sort by margin percentage to find your most and least efficient products. Sort by total profit to find your biggest profit contributors.

Limitations: The report doesn't include payment processing fees or shipping costs unless you've manually added those to each product's cost field. It's a gross profit report, not a true net profit report.

Jeev COGS ($79/year)

Jeev's plugin offers similar product-level profit reports with the added benefit of automatic payment fee deduction. This means the profit numbers are closer to true net profit, though they still don't account for outbound shipping costs unless you configure them.

To get closer to net profit in plugin reports, add per-unit packaging and handling costs to your product cost field. For example, if a product costs $20 from the supplier and you spend $2 on packaging, enter $22 as the cost. It's not perfectly accurate but much better than supplier cost alone.

Method 2: Spreadsheet Analysis (Most Accurate)

For the most accurate profit-by-product analysis, export your data and crunch the numbers in a spreadsheet. This takes more effort but gives you full control over which costs to include.

Step 1: Export Order Data

Use WooCommerce's built-in export (WooCommerce → Reports → Export) or a plugin like WP All Export to get a CSV with: order ID, product name, product SKU, quantity, line total, shipping charged, payment method.

Step 2: Add Cost Data

Create a product cost lookup table in a separate sheet: SKU, supplier cost per unit, packaging cost per unit, inbound shipping cost per unit. Use VLOOKUP or INDEX/MATCH to pull costs into your order data.

Step 3: Calculate Per-Line Costs

For each order line item, calculate:

  • Product cost: Quantity × cost per unit
  • Payment fee: Line total × 0.029 + $0.30 (for Stripe — adjust for your processor)
  • Outbound shipping: Allocate the order's shipping cost proportionally across line items (by weight or by value)
  • Total cost: Product cost + payment fee + shipping allocation
  • Profit: Line total - total cost
  • Margin: Profit ÷ line total × 100

Step 4: Pivot by Product

Create a pivot table grouping by product name/SKU. Sum the profit column to get total profit per product. Calculate average margin per product. Sort by total profit descending.

A spreadsheet analysis is the most accurate profit-by-product method because you control exactly which costs are included. The trade-off is manual effort and no real-time updates.

Method 3: SQL Query (For Developers)

If you have COGS data stored in product meta (which all COGS plugins do), you can query the WooCommerce database directly for a profit-by-product report. This is fast, accurate, and can be automated.

SELECT 
  p.post_title AS product_name,
  SUM(oim_qty.meta_value) AS units_sold,
  SUM(oim_total.meta_value) AS total_revenue,
  SUM(oim_qty.meta_value * pm_cost.meta_value) AS total_cost,
  SUM(oim_total.meta_value) - SUM(oim_qty.meta_value * pm_cost.meta_value) AS gross_profit,
  ROUND(
    (SUM(oim_total.meta_value) - SUM(oim_qty.meta_value * pm_cost.meta_value)) 
    / SUM(oim_total.meta_value) * 100, 1
  ) AS margin_pct
FROM wp_woocommerce_order_items oi
JOIN wp_woocommerce_order_itemmeta oim_pid ON oi.order_item_id = oim_pid.order_item_id 
  AND oim_pid.meta_key = '_product_id'
JOIN wp_woocommerce_order_itemmeta oim_qty ON oi.order_item_id = oim_qty.order_item_id 
  AND oim_qty.meta_key = '_qty'
JOIN wp_woocommerce_order_itemmeta oim_total ON oi.order_item_id = oim_total.order_item_id 
  AND oim_total.meta_key = '_line_total'
JOIN wp_posts p ON oim_pid.meta_value = p.ID
JOIN wp_postmeta pm_cost ON p.ID = pm_cost.post_id 
  AND pm_cost.meta_key = '_alg_wc_cog_cost'
JOIN wp_posts o ON oi.order_id = o.ID AND o.post_status IN ('wc-completed', 'wc-processing')
WHERE oi.order_item_type = 'line_item'
GROUP BY p.ID, p.post_title
ORDER BY gross_profit DESC;

Note: The meta key _alg_wc_cog_cost is specific to WPFactory's COGS plugin. Other plugins use different meta keys. Check your database or plugin documentation.

This query runs in seconds even on stores with 100,000+ orders. Save it as a cron-triggered script that emails you a weekly profit report.

What to Do With the Data

Action Plan for Low-Margin Products

  1. Check if the cost data is accurate. Verify supplier invoices against what's in WooCommerce. Stale cost data is the #1 cause of misleading reports.
  2. Calculate the price increase needed to reach your target margin. Would a 10% price increase bring it in line? Test it.
  3. Look for cost reduction opportunities. Alternative suppliers, bulk ordering, cheaper packaging.
  4. Evaluate strategic value. Does this product drive traffic? Generate repeat purchases of higher-margin items? If so, the low margin might be intentional.
  5. Consider discontinuing if there's no strategic justification and the margin can't be improved.

Action Plan for High-Margin Products

  1. Increase marketing spend. These products are your profit engines — get more eyeballs on them.
  2. Feature them prominently. Homepage, category pages, email campaigns. Make them easy to find.
  3. Create bundles. Pair high-margin products with complementary items to increase AOV.
  4. Test cross-sell and upsell. If someone buys Product A (high margin), suggest Product B (also high margin).
  5. Protect the margin. Don't discount these products heavily. They don't need discounts — they need visibility.
Run your profit-by-product report monthly. Compare this month to last month. Look for: products whose margin is declining (supplier cost increase?), products whose volume is growing (invest more?), and products with negative margin that somehow slipped through (fix immediately).

Combining with Other Reports

A profit-by-product report is most powerful when combined with other data:

  • Profit by product + traffic source: Which marketing channels drive the most profitable sales? (Requires Google Analytics integration)
  • Profit by product + customer segment: Do returning customers buy higher-margin products? (Requires customer segmentation)
  • Profit by product + time period: Are margins seasonal? Do holiday sales sacrifice margin for volume? (Use date range comparison)

For understanding margin calculation formulas in depth, see our WooCommerce profit margin calculator guide. And for choosing the right COGS plugin to power your reports, read our WooCommerce COGS plugin comparison.

Generate a profit-by-product report monthly using a COGS plugin, spreadsheet, or SQL query. Sort by margin percentage and total profit to find winners and losers. Increase marketing on high-margin products, optimize pricing on low-margin ones, and discontinue products that can't justify their margin. Revenue reports lie — profit reports tell the truth.

Level up your WooCommerce store

Join the WPBundle waitlist and get beta access to our plugin suite completely free.

Join the Waitlist