How to Use eBay Orders Item Performance Analysis: Step-by-Step Tutorial
By MCP Analytics Team | Published , updated
Introduction to eBay Orders Item Performance Analysis
Understanding which items drive the most revenue and profit is critical for any eBay seller looking to scale their business. With hundreds or even thousands of SKUs, manually tracking performance becomes nearly impossible. That's where systematic item performance analysis comes in.
This tutorial will guide you through the complete process of analyzing your eBay orders data to identify your best-selling items, most profitable products, and opportunities to optimize your inventory strategy. Whether you're a casual seller or running a full-scale eBay business, these insights will help you make data-driven decisions about what to stock, what to promote, and what to discontinue.
By the end of this guide, you'll have a ranked view of your items by revenue and profit, and a way to sort them into groups that are worth more investment and groups that are costing you money. It is evidence for a decision, not the decision: stock availability, supplier terms and returns also matter.
The figures in the examples below come from a small synthetic data set generated for this tutorial (seven made-up items, 600 order lines, fixed random seed 42; the generator code is in Step 2). They are not from a real store, and your numbers will differ.
What You'll Accomplish
In this tutorial, you will:
- Extract and prepare your eBay orders data for analysis
- Calculate revenue, profit and margin for each item in your catalog
- Identify your top performers by revenue, volume, and profitability
- Discover underperforming items that may need attention or removal
- Sort items into groups (stars, cash cows, premium products, problem items) with a transparent rule
- Turn the ranking into questions about inventory and pricing decisions
Prerequisites and Data Requirements
What You'll Need
Before beginning this analysis, ensure you have the following:
1. Access to eBay Seller Hub
You'll need an active eBay seller account with access to Seller Hub, where eBay offers downloadable order reports. See eBay's Seller Hub Reports help page. Menu names and report options change, so eBay's current help is the reference.
2. Historical Orders Data
Use as many weeks of order data as you can: more orders per item makes each margin less jumpy. eBay's help says a report covers a date range of 1-90 days, so download several ranges and combine them for a longer view. Seasonal businesses may want to analyze a full year to account for fluctuations.
3. Cost Information
To calculate true profitability, you need accurate cost data for your items. This includes:
- Product acquisition cost (COGS - Cost of Goods Sold)
- Shipping costs (if you offer free shipping)
- eBay fees (final value fees, per-order fees, listing fees, promoted listings costs), ideally the actual amounts from your own eBay transaction records
4. Required Data Fields
The code in this tutorial reads one row per order line with these columns. Your eBay export uses its own column names, so rename them and add the cost columns yourself:
order_number - from the eBay export
sale_date - from the eBay export
item_id - from the eBay export
item_title - from the eBay export
quantity - units sold on the line
sale_price - price per unit
item_cost - you add: your cost per unit
shipping_cost - you add: what you paid to ship the order
ebay_fees - you add: fees eBay charged on the order
5. A Place to Run the Calculation
A spreadsheet pivot table can do the grouping in Step 3. The pandas code below does the same in a few lines and is easier to repeat on next month's file.
Step 1: Access Your eBay Orders Data
The first step is extracting your complete orders history from eBay. Here's how to do it properly:
1.1 Download an orders report
eBay describes the download in its Seller Hub Reports help page. In eBay's words, you open the Reports tab in Seller Hub and choose the Download option on the left side, then click the button to download a report, pick Orders as the source, choose the report type you want (the page gives "All orders" and "Awaiting Shipment" as examples), set the date range ("from 1-90 days"), and confirm the download. A report you already generated is under "Recent downloads". We re-read that page on 2026-11-02; eBay can change it, so follow the current page.
1.2 Check the file format
eBay's help page names .xlsx and .csv only for uploads. For the download, open the file you get and, if it is not a CSV, save it as CSV from your spreadsheet program before using the code below. This tutorial works only on the file you export and never asks for access to your eBay account.
Expected Outcome: A file with the orders for the selected period.
1.3 Verify Your Data Export
Open the downloaded file and verify it contains:
- All orders from your selected date range
- Complete item information (titles, IDs, SKUs)
- Accurate pricing and quantity data
- No obvious gaps or missing records
Pro Tip: Download smaller date ranges and combine them; eBay's report range is limited (see 1.1).
Step 2: Prepare Your Data for Analysis
Raw eBay data often needs cleaning and enrichment before analysis. This step ensures accurate results.
2.1 Clean and Standardize Your Data
Open your file and perform these data quality checks:
# Example data cleaning checklist:
- Remove cancelled or unpaid orders
- Standardize date formats to YYYY-MM-DD
- Ensure numeric fields contain only numbers
- Remove duplicate order entries
- Verify SKU consistency across variants
2.2 Add Cost Information
To calculate profitability, you need to add cost data. Create or update these columns:
item_cost - your acquisition cost per unit
shipping_cost - actual shipping cost you paid
ebay_fees - fees eBay charged on the order, from your own transaction records
Use the actual fees from your records where you can. If you have to estimate them, eBay's selling fees page lists, for most categories on ebay.com, 13.6% of the total amount of the sale up to $7,500 per item and 2.35% of the portion above that, plus a per-order fee of $0.30 for orders of $10.00 or less and $0.40 for orders over $10.00. The total amount of the sale includes the item price, handling and shipping collected from the buyer, and sales tax. These are eBay's published rates as of November 2026; check eBay's fees page. Rates vary by category and seller status and eBay changes them. The 13.6% rate applies to "most categories" only; other categories have other rates.
Cost Calculation Example (illustrative): a $50.00 sale that includes shipping, with no sales tax.
Sale Price: $50.00
Item Cost: $20.00
Shipping Cost: $5.00
eBay Fees: $7.20 (13.6% of $50.00 = $6.80, plus $0.40 per-order fee)
---
Total Cost: $32.20
Net Profit: $17.80
Profit Margin: 35.6%
Payment processing is not a separate line in this example: the fees page says sellers do not have to worry about third-party payment processing fees. If you pay promoted listings or other fees, add them as further cost columns.
2.3 The made-up CSV used below
To show every step end to end, this script writes a made-up file of 600 order lines for seven made-up items over 2024-01-01 to 2024-03-31. It is not eBay data and not a real store. The eBay fee column uses the 13.6% plus $0.40 figures from the fee example above, so margins here only illustrate the arithmetic. The cost, price and sales-mix numbers are invented.
import numpy as np, pandas as pd
rng = np.random.default_rng(42)
catalog = { # item_id: (title, price, unit_cost)
101: ("Wireless Earbuds", 30.00, 17.00),
102: ("USB-C Cable 3-Pack", 15.00, 8.00),
103: ("Phone Case", 15.00, 5.50),
104: ("Laptop Stand", 40.00, 24.00),
105: ("Screen Protector Set", 20.00, 9.50),
106: ("Camera Lens Cap", 6.00, 4.00),
107: ("Discontinued Cable Clip", 4.00, 2.20),
}
weights = np.array([0.26, 0.22, 0.22, 0.10, 0.12, 0.05, 0.03])
n = 600
ids = rng.choice(list(catalog), size=n, p=weights)
start = pd.Timestamp("2024-01-01")
rows = []
for i, iid in enumerate(ids):
title, price, cost = catalog[iid]
q = int(rng.choice([1, 2, 3], p=[0.7, 0.2, 0.1]))
rev = q * price
rows.append(dict(order_number=f"ORD-{1000+i}",
sale_date=(start + pd.Timedelta(days=int(rng.integers(0, 91)))).strftime("%Y-%m-%d"),
item_id=iid, item_title=title, quantity=q, sale_price=price, item_cost=cost,
shipping_cost=round(float(rng.choice([2.5, 3.5, 4.5])), 2),
ebay_fees=round(0.136 * rev + 0.40, 2)))
pd.DataFrame(rows).to_csv("ebay_orders_prepared.csv", index=False)
Run with python3 gen.py (needs pandas and numpy). It writes ebay_orders_prepared.csv, which starts like this:
order_number,sale_date,item_id,item_title,quantity,sale_price,item_cost,shipping_cost,ebay_fees
ORD-1000,2024-03-30,104,Laptop Stand,1,40.0,24.0,4.5,5.84
ORD-1001,2024-02-16,102,USB-C Cable 3-Pack,3,15.0,8.0,4.5,6.52
ORD-1002,2024-02-26,105,Screen Protector Set,3,20.0,9.5,4.5,8.56
2.4 Group Variant Items
If you sell items with multiple variants (sizes, colors, etc.), decide whether to analyze them:
- As separate items: Good for identifying which specific variants perform best
- As grouped products: Better for overall product line performance
Expected Outcome: A clean, enriched dataset with all required fields populated and ready for analysis. Save this as a new file (e.g., "ebay_orders_prepared.csv") to preserve your original data.
Step 3: Calculate Item Performance
Now group the order lines by item and compute units, orders, revenue, profit and margin. Profit here is item revenue minus item cost, shipping cost and eBay fees; it leaves out shipping you charged the buyer, so treat it as a conservative figure.
import pandas as pd
# One row per order line, with your own cost columns added (see Step 2)
df = pd.read_csv('ebay_orders_prepared.csv', parse_dates=['sale_date'])
# Keep only orders that were paid; if your export has a status column, filter on it here.
df['revenue'] = df['quantity'] * df['sale_price']
df['total_cost'] = df['quantity'] * df['item_cost'] + df['shipping_cost'] + df['ebay_fees']
df['profit'] = df['revenue'] - df['total_cost']
items = df.groupby(['item_id', 'item_title']).agg(
units=('quantity', 'sum'),
orders=('order_number', 'nunique'),
revenue=('revenue', 'sum'),
profit=('profit', 'sum'),
).reset_index()
items['margin_pct'] = 100 * items['profit'] / items['revenue']
print(f"Items analyzed: {len(items)}")
print(f"Total revenue: ${items['revenue'].sum():,.2f}")
print(f"Total profit: ${items['profit'].sum():,.2f}")
print(f"Overall margin: {100 * items['profit'].sum() / items['revenue'].sum():.1f}%")
print(f"Date range: {df['sale_date'].min():%Y-%m-%d} to {df['sale_date'].max():%Y-%m-%d}")
print()
top = items.sort_values('revenue', ascending=False)
print(top[['item_title', 'units', 'orders', 'revenue', 'profit', 'margin_pct']].round(1).to_string(index=False))
Expected Output
Run on the made-up data set above (output copied from the run):
Items analyzed: 7
Total revenue: $18,459.00
Total profit: $3,885.13
Overall margin: 21.0%
Date range: 2024-01-01 to 2024-03-31
item_title units orders revenue profit margin_pct
Wireless Earbuds 233 159 6990.0 1451.3 20.8
Laptop Stand 80 61 3200.0 601.9 18.8
Phone Case 195 137 2925.0 927.4 31.7
USB-C Cable 3-Pack 192 129 2880.0 449.2 15.6
Screen Protector Set 105 69 2100.0 551.8 26.3
Camera Lens Cap 46 31 276.0 -62.5 -22.6
Discontinued Cable Clip 22 14 88.0 -33.9 -38.6
What each column means: units is the sum of quantity sold; orders is the count of distinct order numbers; revenue is quantity times sale price; profit is revenue minus item cost, shipping cost and eBay fees; margin_pct is profit divided by revenue, times 100. A negative profit means that item lost money on these assumed costs.
This is a descriptive ranking of totals and margins. It shows which items brought in the most revenue and profit in this period; it does not test whether one item's margin is truly higher than another's. With few orders per item, a margin can move a lot from one month to the next.
Expected Outcome: One row per item with revenue, profit and margin, and an overall margin you can check against your own records.
Step 4: Group Items by Revenue and Margin
Next, apply a simple rule so the ranking turns into groups. The rule here is a choice, not a law: revenue at or above the median item counts as high revenue, and a margin above 30% counts as high margin. Change both lines to suit your business.
# Segment items by revenue (above or below the median item) and margin (30% line)
median_revenue = items['revenue'].median()
high_revenue = items['revenue'] >= median_revenue
high_margin = items['margin_pct'] > 30
items['segment'] = 'Problem items'
items.loc[high_revenue & high_margin, 'segment'] = 'Stars'
items.loc[high_revenue & ~high_margin, 'segment'] = 'Cash cows'
items.loc[~high_revenue & high_margin, 'segment'] = 'Premium products'
print(items.sort_values('revenue', ascending=False)[['item_title', 'revenue', 'margin_pct', 'segment']].round(1).to_string(index=False))
Expected Output
item_title revenue margin_pct segment
Wireless Earbuds 6990.0 20.8 Cash cows
Laptop Stand 3200.0 18.8 Cash cows
Phone Case 2925.0 31.7 Stars
USB-C Cable 3-Pack 2880.0 15.6 Cash cows
Screen Protector Set 2100.0 26.3 Problem items
Camera Lens Cap 276.0 -22.6 Problem items
Discontinued Cable Clip 88.0 -38.6 Problem items
In this run, no item is both low revenue and above the 30% margin line, so the Premium products group is empty. The Screen Protector Set sits at 26.3% margin with revenue below the median, so the rule calls it a Problem item even though it is positive. Small changes to a threshold move items between groups, so look at the margin column and not only the label. The 30% line and the median are choices made for this example, not a standard.
Run It on Your Own eBay Export
Download an orders report from eBay (see Step 1), save it as a CSV and upload it at MCP Analytics, then ask the question in plain language; the report names the method. Nothing connects to your eBay account. Profit needs your item costs and actual fees, so add those columns before you upload.
Step 5: Interpreting Your Results
Understanding what the numbers mean is crucial for taking effective action. Here's how to interpret your item performance data.
5.1 Identify Your Star Performers
Look for items that score high across multiple dimensions:
Star Performer Criteria:
✓ High revenue (at or above the median item, as in Step 4)
✓ High profit margin (>30%)
✓ Consistent sales velocity (check month by month)
✓ Low return rate (needs your returns data)
✓ Positive trend (needs a second period to compare)
Action Items for Stars:
- Increase inventory investment
- Consider quantity discounts to move more volume
- Consider promoted listings, and compare their cost against the extra profit
- Look for similar items to add to your catalog
5.2 Categorize Item Performance
Step 4 already sorted the items. Here is what each group usually calls for, with the matching rows from the made-up run above:
Cash Cows (high revenue, margin at or below 30%)
Wireless Earbuds: revenue 6990.0, margin 20.8%
Laptop Stand: revenue 3200.0, margin 18.8%
Question: can price or costs move so the margin rises?
Premium Products (revenue below the median, margin above 30%)
No item landed here in this run. If one does in your data, ask whether more stock would sell at the same margin.
Problem Items (revenue below the median, margin at or below 30%)
Camera Lens Cap: revenue 276.0, margin -22.6%
Discontinued Cable Clip: revenue 88.0, margin -38.6%
Question: are the costs wrong, or is the price too low to cover fees and shipping?
5.3 Analyze Profitability vs. Volume
Create a matrix to visualize the relationship:
High Margin
|
Premium | Stars
Products | (Invest)
__________|__________
Problem | Cash
Items | Cows
(Remove) | (Maintain)
|
Low Margin
5.4 Spot Trends and Opportunities
Look for these patterns:
- Rising stars: Items with accelerating sales that may become top performers
- Declining products: Former best-sellers losing momentum
- Seasonal patterns: Items that peak at specific times of year
- Pricing opportunities: Items with room to increase margins
Expected Outcome: A clear understanding of your inventory's performance landscape and specific action items for each category of product.
Next Steps with eBay Performance Optimization
Once you've completed your initial item performance analysis, here are strategic next steps to further optimize your eBay business:
1. Implement Dynamic Pricing
Use your performance data to optimize pricing:
- Test price increases on high-demand, low-competition items
- Implement promotional pricing on slow-moving inventory
- Use competitive pricing on cash cow products
- Write down repricing rules by performance tier and review them monthly
2. Optimize Inventory Investment
Allocate your capital more effectively:
- Increase stock levels on star performers before running out
- Reduce or eliminate inventory for consistent underperformers
- Build safety stock for high-margin items with variable demand
- Calculate optimal reorder points based on sales velocity
3. Expand Your Best Categories
Leverage what's already working:
- Find complementary products to your top sellers
- Source similar items from the same suppliers
- Test variants of successful products (colors, sizes, bundles)
- Research your competition in high-performing categories
4. Set Up a Regular Review
Make performance analysis a regular practice:
Recommended Schedule:
Weekly: Review top 20 items for stock levels
Monthly: Full item performance analysis
Quarterly: Strategic portfolio review
Annually: Category and supplier evaluation
5. Integrate Multi-Channel Analysis
If you sell on multiple platforms, compare performance. Just as sellers analyze Amazon FBA vs FBM performance to optimize fulfillment, comparing eBay to other channels reveals where each item sells best:
- Compare eBay performance to Amazon, Shopify, etc.
- Identify platform-specific best sellers
- Optimize your channel mix based on profitability
- Find arbitrage opportunities between platforms
6. Enhance Your Listings
Use performance insights to improve listing quality:
- Study what top performers have in common (titles, photos, descriptions)
- Upgrade images and descriptions for rising stars
- Add promoted listings budget to proven winners
- Test different listing formats based on item type
Common Issues and Solutions
Issue 1: Incomplete or Missing Cost Data
Problem: Your eBay export doesn't include cost information, making profit calculations impossible.
Solution:
- Create a separate SKU master file with cost data
- Use VLOOKUP or similar functions to merge cost data with orders
- If exact costs are unavailable, estimate based on category averages
- Track costs going forward in inventory management software
Issue 2: Variants Counted as Separate Items
Problem: A t-shirt in 5 sizes shows as 5 different items instead of one product line.
Solution:
Option A: Create a parent SKU field
- T-Shirt-Blue-Small → Parent: T-Shirt-Blue
- T-Shirt-Blue-Medium → Parent: T-Shirt-Blue
- Analyze by parent SKU to group variants
Option B: Analyze both ways
- Run separate analyses for variant-level and product-level
- Use variant analysis for inventory planning
- Use product-level for category decisions
Issue 3: Seasonal Items Skew Results
Problem: Christmas decorations show poor performance in summer data.
Solution:
- Segment analysis by season or full year periods
- Tag items as seasonal and analyze appropriate time ranges
- Use year-over-year comparisons for seasonal products
- Create separate performance benchmarks for seasonal vs. evergreen items
Issue 4: High Return Rates Distort Profitability
Problem: An item shows good sales but returns eat into profit.
Solution:
Calculate adjusted profitability:
1. Export return/refund data separately
2. Match returns to original item sales
3. Subtract return costs from gross profit:
- Refunded amount
- Return shipping costs
- Restocking costs or item losses
4. Calculate net profit after returns
Issue 5: New Items Have Insufficient Data
Problem: Products launched recently don't have enough sales history for meaningful analysis.
Solution:
- Set a minimum threshold (your own choice, such as 30 days or 10 sales) before including items
- Create a separate "new items" report with different metrics
- Focus on early indicators: views, watchers, conversion rate
- Compare new items to category averages for context
Issue 6: Data Export Limits
Problem: eBay's help says report date ranges run from 1-90 days.
Solution:
- Download multiple smaller date ranges and combine them
- Check eBay's help for other ways to get older orders
- Export monthly and maintain your own historical database
Issue 7: Analysis Shows No Clear Winners
Problem: All items perform similarly with no standout stars or obvious problems.
Solution:
- This might indicate a healthy, balanced portfolio
- Look for more subtle patterns: growth rates, margin trends
- Segment by different criteria (supplier, category, price point)
- Compare against your own earlier periods
- Consider that you may need to test new product categories to find breakout items
Issue 8: Promoted Listings Costs Not Factored In
Problem: Your profit calculations don't account for eBay advertising spend.
Solution:
Download promoted listings report:
1. Find the Promoted Listings campaign report in Seller Hub (names change; see eBay's help)
2. Export campaign performance by item
3. Match ad spend to item IDs
4. Add ad cost to total cost calculation:
Total_Cost = Item_Cost + Shipping + eBay_Fees + Ad_Spend
5. Calculate true ROAS (Return on Ad Spend)
Conclusion: Turning Insights into Action
Item performance analysis is not a one-time exercise. It's an ongoing practice that separates successful eBay businesses from those that plateau. By systematically analyzing which items drive revenue and profit, you can make confident decisions about where to invest your capital, time, and marketing budget.
The key is moving from data to action. Use the insights you've gained to:
- Reallocate inventory investment to proven winners
- Eliminate or liquidate consistent underperformers
- Optimize pricing based on demand signals
- Expand into categories where you're already succeeding
- Set benchmarks for new product testing
Remember that performance can change over time due to seasonality, competition, and market trends. Make item performance analysis a monthly habit to stay ahead of shifts and continuously optimize your product mix.
Run the two steps on a fresh export each month and compare the groups over time.
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
Explore more: eBay Seller Analytics: all tools, tutorials, and guides →