ds@mcpanalytics.aiEmail your data and your question and get an answer about your own data, with the method shown.Email your data and question. Get an answer.

How to Use Product Performance Analysis in WooCommerce: Step-by-Step Tutorial

Updated October 2026

Introduction to Product Performance Analysis

Understanding which products drive revenue and which ones underperform is critical for any WooCommerce store owner. Product performance analysis transforms raw sales data into actionable insights that help you make informed decisions about inventory management, marketing spend, pricing strategies, and product development.

In this comprehensive tutorial, you'll learn how to conduct thorough product performance analysis for your WooCommerce store. Whether you're managing a catalog of 50 products or 5,000, these techniques will help you identify your star performers, understand why certain products underperform, and develop data-driven strategies to optimize your entire product portfolio.

Unlike simple sales reports that show basic order counts, true product performance analysis examines multiple dimensions: revenue contribution, profit margins, conversion rates, customer retention patterns, and trend analysis over time. This multi-faceted approach reveals insights that single-metric reports miss entirely.

Prerequisites and Data Requirements

What You Need Before Starting

Before diving into product performance analysis, ensure you have the following in place:

Understanding Your Data Structure

The code below reads a CSV with one row per order line item. Rename your export's columns to these names:

The figures in the outputs below come from a synthetic data set generated for this tutorial (20 products, about 4,000 orders from July to December 2024); your numbers will differ.

Data Quality Checklist

Before running your analysis, verify data quality with this checklist:

  1. No Duplicate Products: Check for products with identical names but different SKUs
  2. Consistent Pricing: Ensure price changes are documented if you're analyzing historical performance
  3. Complete Orders: Filter out test orders, cancelled orders, or incomplete transactions
  4. Accurate Timestamps: Verify that order dates reflect actual purchase times, not processing delays
  5. Product Variations Handled Properly: Decide whether to analyze variations separately or aggregate them under parent products

Step-by-Step Guide to Product Performance Analysis

Step 1: Export Your Order Items

Export order line items from WooCommerce as a CSV (from the orders list, an export plugin, or a database query; the menus and options differ by version and plugin). Include the columns listed above and save the file as woocommerce_order_items.csv.

Expected Outcome: A CSV with one row per product on each order, with quantities, line totals and dates.

Step 2: Choose the Period and Filters

Defining the right period and filters ensures your analysis answers a specific business question. Load the file, keep paid orders, and set the date range:

import pandas as pd

items = pd.read_csv('woocommerce_order_items.csv', parse_dates=['Order Date'])

# Keep paid orders only: drop cancelled and failed
items = items[~items['Order Status'].isin(['cancelled', 'failed'])]

# Optional filters: period and product subset
items = items[(items['Order Date'] >= '2024-07-01') & (items['Order Date'] <= '2024-12-31')]

print(f"Line items: {len(items)}, orders: {items['Order ID'].nunique()}, products: {items['Product SKU'].nunique()}")
print(f"Date range: {items['Order Date'].min().date()} to {items['Order Date'].max().date()}")

Expected Output:

Line items: 7017, orders: 3969, products: 20
Date range: 2024-07-01 to 2024-12-31

Choose a period that reflects your business cycle: a recent month or quarter for fast-moving inventory, a full year to capture seasonality, or custom periods to compare campaigns and holiday seasons. You can narrow to a category, price range or tag with another filter line, such as items[items['Product Name'].isin([...])].

Performance Metrics

Decide which metrics matter for your objective:

Expected Outcome: Your data is scoped to answer a specific question such as "Which products generated the most revenue last quarter?"

Step 3: Compute Revenue, Units and Share per Product

Group the line items by product:

perf = items.groupby('Product Name').agg(revenue=('Line Total', 'sum'), units=('Quantity', 'sum'))
perf['avg_price'] = (perf['revenue'] / perf['units']).round(2)       # revenue per unit
perf['pct_of_total'] = (100 * perf['revenue'] / perf['revenue'].sum()).round(1)
perf = perf.sort_values('revenue', ascending=False)

print(perf.head(5).to_string())
print(f"Total store revenue: ${perf['revenue'].sum():,.2f}, units: {perf['units'].sum()}")

Expected Output:

                       revenue  units  avg_price  pct_of_total
Product Name                                                  
Premium Headphones   153004.00   1061     144.21          37.1
Wireless Mouse        50937.92   1605      31.74          12.4
Mechanical Keyboard   27420.90    310      88.45           6.6
USB-C Cable (3pk)     24609.42   2498       9.85           6.0
Bluetooth Speaker     17682.50    323      54.74           4.3
Total store revenue: $412,416.29, units: 10513

The average price is revenue divided by units, so it can sit slightly below list price when some orders were discounted (the headphones' list price in this file is $145.00). In this file one product, Premium Headphones, earns 37.1% of revenue, which is critical information for inventory and marketing decisions.

Expected Outcome: You can see which products contribute most to revenue and where the store depends on a single item.

Step 4: Interpret Performance Metrics in Context

Raw numbers tell only part of the story. Here is how to read the key metrics:

Revenue vs. Volume Analysis

Compare revenue with units. Premium Headphones earned $153,004 from 1,061 units (about $144 per unit), while USB-C Cable (3pk) earned $24,609 from 2,498 units (about $10 per unit). The first is a high-priced item and the second sells in volume; a high average price alone does not show pricing success, which needs costs, demand and a comparison with alternatives.

Performance Distribution

Measure how concentrated your revenue is instead of assuming an 80/20 split:

share = perf['revenue'].cumsum() / perf['revenue'].sum()
n = len(perf)
top20 = max(1, round(0.2 * n))
print(f"Products: {n}")
print(f"Top 20% of products ({top20}) earn {100 * share.iloc[top20 - 1]:.1f}% of revenue")
print(f"Products needed for 80% of revenue: {int((share < 0.8).sum() + 1)}")

Expected Output:

Products: 20
Top 20% of products (4) earn 62.1% of revenue
Products needed for 80% of revenue: 9

Here the top 20% of products earn 62.1% of revenue and it takes 9 of 20 products to reach 80%. Your catalog will have its own concentration, which is the number to use for planning inventory and marketing.

Trend Analysis

Snapshots are valuable, but trends reveal trajectory. Compare the current period with the previous one:

items['quarter'] = items['Order Date'].dt.to_period('Q')
q = items.pivot_table(index='Product Name', columns='quarter', values='Line Total', aggfunc='sum', fill_value=0)
q.columns = [str(c) for c in q.columns]
q['growth_%'] = (100 * (q['2024Q4'] - q['2024Q3']) / q['2024Q3']).round(1)
print(q.loc[perf.head(5).index].round({'2024Q3': 0, '2024Q4': 0, 'growth_%': 1}).to_string())

Expected Output:

                      2024Q3   2024Q4  growth_%
Product Name                                   
Premium Headphones   71572.0  81432.0      13.8
Wireless Mouse       27721.0  23217.0     -16.2
Mechanical Keyboard  14756.0  12665.0     -14.2
USB-C Cable (3pk)    12373.0  12236.0      -1.1
Bluetooth Speaker     8954.0   8728.0      -2.5

Premium Headphones grew 13.8% quarter over quarter while Wireless Mouse fell 16.2% and Mechanical Keyboard 14.2%. A decline of that size is a prompt to investigate (stock, price, competition, seasonality), but a one-quarter change can also be ordinary variation, so look at more periods before acting.

For background on telling real changes from random variation, see A/B Testing and Statistical Significance.

Expected Outcome: You can identify not just top performers, but products on the rise, products in decline, and patterns that inform inventory planning.

Step 5: Identify Top Performers and Underperformers

With your data analyzed and contextualized, group products into performance tiers. The tier boundaries are your choice; a simple start is revenue rank combined with the quarter-over-quarter trend:

Star Performers (Top Revenue Contributors)

These products show:

Action Items: Check that stock keeps pace with demand, consider product bundles, and consider targeted advertising or product line extensions

Rising Stars (High Growth Potential)

These products show:

Action Items: Increase visibility through homepage features, email campaigns, and social media promotion

Steady Contributors (Middle Performers)

These products provide:

Action Items: Maintain current inventory and marketing levels, test price changes, explore cross-sell opportunities

Underperformers (Low Revenue Contributors)

These products show:

Action Items: Investigate causes (pricing, product-market fit, descriptions, images), test discount promotions, consider discontinuation or clearance

Expected Outcome: You have a categorization of your product portfolio with candidate actions for each tier.

Step 6: Deep Dive into Underperformer Causes

Identifying underperformers is just the beginning. Understanding why they underperform enables targeted fixes:

Common Underperformance Causes

  1. Visibility Issues: Product isn't featured in navigation, search results, or recommendations
    Test: Compare product page views with category averages (needs page-view data)
  2. Pricing Misalignment: Price is too high relative to perceived value or competitor offerings
    Test: Compare price points to similar products and review cart abandonment (needs checkout data)
  3. Poor Product Presentation: Low-quality images, inadequate descriptions, missing specifications
    Test: Review bounce rates and time-on-page for product listings (needs page analytics)
  4. Product-Market Fit: Product doesn't match customer needs or expectations
    Test: Analyze customer reviews, return reasons, and support tickets
  5. Inventory or Fulfillment Issues: Frequent stockouts or slow shipping
    Test: Review stock history and delivery times

Several of these tests need data that is not in the order export, such as page views, checkout steps, ratings and returns. Combine the sources you have, compare a weak product with products in the same category, and treat each test as a hypothesis about the cause rather than a diagnosis.

Expected Outcome: You have a short list of hypotheses for each underperformer and know which data would test them.

Step 7: Take Action and Measure Results

Product performance analysis is only useful if it changes something. Implement changes one product at a time where you can, and measure their impact:

Optimization Playbook

For Top Performers:

  1. Stock: base reorder quantities on demand variability and supplier lead time, so top sellers do not run out
  2. Bundles: "Frequently Bought Together" featuring your stars
  3. Variants: new colors, sizes, or configurations
  4. Retargeting: visitors who viewed but did not buy
  5. Placement: homepage features, category headers, email spotlights

For Underperformers:

  1. Price test: try a lower price on a subset of traffic and compare units and margin
  2. Listings: professional photography, detailed descriptions, videos
  3. Limited-time promotion: boost visibility and gather data
  4. Bundle with stars: pair with top performers to increase exposure
  5. Clearance decision: if there is no improvement after a period you set in advance, move to clearance

Measurement Framework

After implementing a change, recompute the same metrics from Step 3 for the same product over a comparable period and compare them with the period before the change. Revenue before and after a change also reflects seasonality, promotions and stock, so compare against similar products you did not change, and watch margin as well as revenue: a clearance can raise revenue while lowering margin.

Expected Outcome: You have a repeatable process of changing one thing, measuring it, and keeping what works.

Advanced Interpretation Techniques

Cohort Analysis for Product Performance

Don't just analyze products in isolation: analyze how different customer cohorts interact with your products:

To do this, add a customer identifier to your export and compute each product's share of revenue from first-time and returning customers. The result informs targeting and customer journey decisions.

Predictive Performance Modeling

Historical analysis tells you what happened; forecasting estimates what may happen. A time-series forecasting method can address questions such as:

Forecasts are only as good as the history behind them, so check them against periods you held back.

Run It on Your Own WooCommerce Export

Export your order items from WooCommerce as a CSV and upload it at MCP Analytics. The analysis runs a product performance analysis (revenue, units and share by product) on your file and shows the result with the method used. You choose the columns; nothing connects to your WooCommerce account.

Try it on your data

Next Steps with WooCommerce Analytics

Product performance analysis is one component of comprehensive WooCommerce analytics. Expand your analysis capabilities with these complementary approaches:

Customer Lifetime Value Analysis

Understand which products attract high-value customers who make repeat purchases versus one-time buyers. This insight helps allocate marketing budget to products that build long-term customer relationships.

Inventory Optimization

Use performance data to set optimal reorder points, safety stock levels, and inventory turnover targets. Prevent stockouts on top performers while minimizing capital tied up in slow movers.

Price Optimization

Test dynamic pricing strategies based on demand patterns, competitor pricing, and inventory levels. Performance data reveals price elasticity, which products tolerate price increases and which require competitive pricing.

Marketing Attribution

Connect product performance to marketing channels. Determine which advertising campaigns, email sequences, or content pieces drive sales of specific products, enabling more efficient marketing spend allocation.

Category and Bundle Analysis

Expand from individual product analysis to category-level and bundle performance. Identify which product combinations drive higher average order values and customer satisfaction.

For insights into building comprehensive analytics workflows, explore AdaBoost and ensemble methods for data-driven decisions, which can enhance your predictive modeling capabilities.

Troubleshooting Common Issues

Issue 1: Data Shows Zero Revenue for Active Products

Symptoms: Products you know have sold show $0 revenue or 0 units in analysis

Causes and Solutions:

Issue 2: Inconsistent Product Names Cause Fragmentation

Symptoms: Same product appears multiple times with slight name variations ("USB-C Cable", "USB C Cable", "USB-C Cable - Black")

Causes and Solutions:

Issue 3: Performance Metrics Don't Match WooCommerce Reports

Symptoms: Total revenue or order counts differ between your calculation and WooCommerce's own reports

Causes and Solutions:

Issue 4: Not Enough Data for a Reliable Comparison

Symptoms: The numbers compute but change a lot from period to period

Causes and Solutions:

Issue 5: Analysis Is Too Slow with Large Catalogs

Symptoms: Performance analysis takes minutes to run or times out with large product catalogs

Causes and Solutions:

Conclusion

Product performance analysis transforms your WooCommerce store from reactive to strategic. By systematically identifying top performers, understanding underperformers, and implementing data-driven optimizations, you maximize revenue from your existing catalog without necessarily adding new products.

Make product performance analysis a regular practice, at a rhythm that matches how fast your inventory moves. This keeps you aligned with shifting customer preferences and market dynamics.

Start with the framework outlined in this tutorial, then customize your approach based on your specific business model, product catalog, and customer base. The insights you uncover will guide smarter inventory decisions, more effective marketing, and ultimately, stronger profitability.

Ready to begin? Export your order items and run the code above to see which products deserve more attention and which need optimization or retirement.

Explore more: WooCommerce Analytics: all tools, tutorials, and guides →

Not sure which plan? Compare plans →

Your turn

Bring your own data and the question you actually need answered.

MCP AnalyticsData science by email Send us your data and your question, and we will reply. ds@mcpanalytics.ai