How to Analyze Your Shopify Orders Export CSV: Turn Raw Data Into Sales Insights
By MCP Analytics Team | Published , updated
You did the right thing. You exported your orders as a CSV, for example orders_export_1.csv. Maybe you opened it in Excel or Google Sheets and saw 30+ columns and thousands of rows. You scrolled for a while, maybe sorted by total, maybe filtered by date. And then you thought: "Now what?"
You are not alone. A raw order export is easy to get and hard to use. It is usually built for record-keeping, not analysis. In many exports every line item gets its own row, so a single order with three products can appear three times. Discount codes, taxes, and shipping may sit in separate columns, and customer information may be mixed with product information.
This guide walks you through what is actually in your Shopify orders CSV, the six analyses that produce actionable insights, and how to run them without writing a single line of code.
Worked Example (Simulated): Saturday Order Value and a Product Pair
Question: In this made-up shop, is the mean order total higher on Saturday than on weekdays, and do Bulb and Mug tend to appear together?
Inputs: Simulated data, seed 731. The script writes 12 orders as 18 item rows with the columns order_id, day, item, line_amount and order_total_cell. These column names belong to the script, not to any Shopify export. Extra item rows of an order have a blank total cell. The weekday and Saturday order totals are fixed lists in the script, with the Saturday totals set higher.
Method: For average order value (AOV), the script uses one nonblank total per order ID, so each order counts once. For the pair, it counts orders with each item and with both, then divides the observed share of orders with both by the share expected if the two items were bought independently. That ratio is the lift.
import random
from collections import defaultdict
seed = 731
rng = random.Random(seed)
weekday_amounts = [35, 48, 52, 61, 74, 89]
saturday_amounts = [42, 58, 67, 81, 96, 120]
items = ["Mug", "Lamp", "Shade", "Bulb", "Towel", "Tray"]
rows = []
order_totals = {}
groups = [("weekday", weekday_amounts, "W"), ("Saturday", saturday_amounts, "S")]
for day, amounts, prefix in groups:
for i, amount in enumerate(amounts, 1):
order_id = f"{prefix}{i}"
order_totals[order_id] = amount
count = rng.choice([1, 1, 2])
chosen = rng.sample(items, count)
if count == 1:
splits = [amount]
else:
first = rng.randint(1, amount - 1)
splits = [first, amount - first]
for j, (item, line_amount) in enumerate(zip(chosen, splits)):
order_total_cell = str(amount) if j == 0 else ""
rows.append((order_id, day, item, line_amount, order_total_cell))
print(f"Simulated data, seed {seed}")
print("Input rows: order_id, day, item, line_amount, order_total_cell")
for row in rows:
print(",".join(map(str, row)))
by_day = defaultdict(list)
for order_id, day, item, line_amount, order_total_cell in rows:
if order_total_cell:
by_day[day].append(float(order_total_cell))
for day in ["weekday", "Saturday"]:
vals = by_day[day]
aov = sum(vals) / len(vals)
print(f"{day}: orders={len(vals)}, total={sum(vals):.0f}, AOV={aov:.2f}")
sat_aov = sum(by_day["Saturday"]) / len(by_day["Saturday"])
wk_aov = sum(by_day["weekday"]) / len(by_day["weekday"])
print(f"AOV difference (Saturday - weekday)={sat_aov - wk_aov:.2f}")
baskets = defaultdict(set)
for order_id, day, item, line_amount, order_total_cell in rows:
baskets[order_id].add(item)
a_count = sum("Bulb" in basket for basket in baskets.values())
b_count = sum("Mug" in basket for basket in baskets.values())
joint_count = sum({"Bulb", "Mug"} <= basket for basket in baskets.values())
n = len(baskets)
observed = joint_count / n
expected = (a_count / n) * (b_count / n)
lift = observed / expected
print(f"Bulb and Mug: orders_with_both={joint_count}, support={observed:.4f}, "
f"pair_rate_if_independent={expected:.4f}, lift={lift:.2f}")
print(f"Rows={len(rows)}, unique orders={len(order_totals)}")
Printed output:
Simulated data, seed 731
Input rows: order_id, day, item, line_amount, order_total_cell
W1,weekday,Mug,7,35
W1,weekday,Towel,28,
W2,weekday,Bulb,48,48
W3,weekday,Mug,52,52
W4,weekday,Towel,38,61
W4,weekday,Bulb,23,
W5,weekday,Towel,74,74
W6,weekday,Shade,16,89
W6,weekday,Tray,73,
S1,Saturday,Bulb,30,42
S1,Saturday,Mug,12,
S2,Saturday,Shade,58,58
S3,Saturday,Bulb,67,67
S4,Saturday,Bulb,65,81
S4,Saturday,Shade,16,
S5,Saturday,Mug,34,96
S5,Saturday,Shade,62,
S6,Saturday,Bulb,120,120
weekday: orders=6, total=359, AOV=59.83
Saturday: orders=6, total=464, AOV=77.33
AOV difference (Saturday - weekday)=17.50
Bulb and Mug: orders_with_both=1, support=0.0833, pair_rate_if_independent=0.1667, lift=0.50
Rows=18, unique orders=12
Result: Saturday AOV is 77.33 and weekday AOV is 59.83, a gap of 17.50. The Saturday order totals are set higher in the script, so the gap is built in. One order in 12 has both Bulb and Mug, so the lift is 0.50 (0.0833 observed against 0.1667 expected), where 0.1667 is the pair rate expected if the two items were bought independently (rate of Bulb times rate of Mug) and lift is 0.0833 / 0.1667. With one order containing both, this is too few orders to say anything about the pair.
Limit: The data are made up and cover 12 orders. They cannot show what a real shop will see.
What Is in orders_export_1.csv?
Column names and layout depend on your store and export settings, so check the header row of your own file. These kinds of fields are commonly used for analysis:
| Kind of field | What It Contains | Why It Matters |
|---|---|---|
| Order identifier | One value per order | Grouping line items into orders |
| Payment or order date | When the order was paid or placed | Time-series analysis, seasonal trends |
| Order subtotal and total | Amounts before and after shipping, tax and fees | Revenue analysis, average order value |
| Line item name, quantity and price | Product, units and unit price per line | Product performance, bundle and price analysis |
| Discount code | Promo code used, if any | Discount effectiveness |
| Shipping destination | Region or country | Geographic analysis |
| Fulfillment status | Whether the order has shipped | Operations checks |
A common mistake when analyzing order CSV data is treating each row as one order. Each row can represent one line item, so an order with 3 products can appear as 3 rows. Check which order-level fields are blank on extra item rows before adding those fields. Always group by the order identifier column in your file first.
The Problem: Raw Data Is Not Analysis
Opening a CSV in Excel gives you data. It does not give you answers. The gap between "I can see my orders" and "I know what to do differently" is where most store owners get stuck. Here is what typically happens:
- Sort by Total, descending. You see your biggest orders. Interesting but not actionable. You already knew some orders are bigger than others.
- Filter by date. You see this month versus last month. Revenue went up or down. You do not know why.
- Try a pivot table. You get as far as "Sum of Total by Month" before the line-item duplication problem makes every number wrong.
- Give up. The CSV goes back in the Downloads folder where it will live forever.
The real analyses that change how you run your store -- the ones that tell you which products to promote, which regions to target, which price points are leaving money on the table -- require statistical methods that spreadsheets were not built for. You need order-level aggregation, time-series decomposition, significance testing, and multivariate comparisons. That is not a criticism of spreadsheets. It is a description of what "analysis" actually means.
6 Analyses That Turn Your Shopify CSV Into Decisions
1. Average Order Value (AOV) Analysis
AOV is a useful metric for a Shopify store because it is one lever on revenue. If order count stays the same, a 10% rise in AOV raises revenue by 10%, as a 10% rise in orders would.
A proper AOV analysis goes beyond the simple average. It calculates AOV by day of week (are weekend shoppers spending more?), by traffic source (do email customers have higher AOV than social?), by discount code usage (are coupons attracting deal-seekers with tiny carts?), and by product category. An order value distribution shows how order values are spread and whether a few high values pull the mean away from the middle of the data.
The actionable output: you learn exactly where to set your free shipping threshold, which products to feature in upsell flows, and whether your discount strategy is helping or hurting average cart size.
2. Product Performance Analysis
Which products actually drive your business? Not which ones sell the most units -- which ones contribute the most to revenue, have the best margin, and bring in customers who buy again? Product performance analysis answers these questions by ranking your catalog on multiple dimensions simultaneously.
From your Shopify CSV, you can calculate: revenue contribution by SKU, units sold trends over time, average selling price versus list price (discount impact), return/refund rate by product, and which products appear most often in multi-item orders (traffic drivers). The products that sell the most units are not always the products that make you the most money. A proper analysis separates volume leaders from margin leaders and identifies products that do both.
3. Geographic Sales Analysis
Your Shopify CSV may contain shipping address data, such as city, province/state, and country. Geographic analysis reveals where your customers are concentrated, where you have untapped markets, and where shipping costs are eating into margins.
Geographic analysis can compare revenue and order value by region, and show where shipping cost is a large share of order value. This can inform where to target ads, whether to open regional fulfillment, and which markets deserve dedicated landing pages.
4. Seasonal and Time-Series Analysis
Every Shopify store has patterns it cannot see in a spreadsheet. Daily patterns (lunch-hour buying spikes), weekly patterns (weekend versus weekday behavior), monthly patterns (paycheck cycles), and seasonal patterns (holiday surges, summer slowdowns). Time-series analysis decomposes your order data into these components and separates the trend (are you growing?) from the noise (random daily fluctuation).
With at least 3-6 months of order data, you can build a revenue forecast, identify your growth rate after removing seasonal effects, and plan inventory and staffing around predicted demand curves. The difference between "sales were up in December" and "sales were up after adjusting for the seasonal component" is the difference between guessing and planning.
5. Fulfillment and Operations Analysis
Your Shopify CSV tracks fulfillment status, shipping method, and timestamps that reveal operational bottlenecks. Fulfillment analysis calculates time from order placement to fulfillment, identifies orders that took abnormally long to ship, and compares fulfillment performance across shipping methods and product categories.
Slow fulfillment may go with more refunds and fewer repeat purchases, and your own data can show whether it does. If your average fulfillment time is 3 days but 15% of orders take 7+ days, those delayed orders may be generating support tickets and negative reviews at a disproportionate rate. The analysis identifies which products, regions, or order sizes create fulfillment delays so you can fix the bottleneck at the source.
6. Product Bundle and Affinity Analysis
Which products do customers buy together? It is a calculation using association rules. From your Shopify orders CSV, affinity analysis identifies product pairs and triplets that co-occur in orders at rates above what independence would predict.
The output is a ranked list of product combinations with support (how often they appear together), confidence (probability of buying B given they bought A), and lift (how much more likely the combination is versus random chance). Lift is observed joint support divided by joint support expected under independence. In the simulated sample above, Bulb and Mug have pair rate 0.0833, pair rate if independent 0.1667, and lift 0.50, so they appear together less often than independence would predict.
Manual Excel Analysis vs. Automated Analysis
Can you do all of this in Excel? Some of it. Here is an honest comparison:
| Analysis | Excel / Google Sheets | MCP Analytics |
|---|---|---|
| Basic AOV | Possible with pivot tables | Automatic with segmentation |
| Product ranking | Sort/filter works for simple ranking | Multi-dimensional with statistical tests |
| Geographic heatmap | Requires add-on or manual mapping | Interactive map with drill-down |
| Time-series decomposition | Not practical without coding | Automatic trend/seasonal/residual |
| Fulfillment analysis | Basic stats possible | Full distribution with outlier detection |
| Bundle affinity | Not possible without coding | Association rules with lift scores |
The gap is mostly about effort. Trend decomposition and association rules are hard to build in a spreadsheet. You could learn R or Python, but if you are running a Shopify store, your time is better spent on the business decisions the analysis reveals, not on building the analysis infrastructure.
How to Analyze Your Shopify CSV with MCP Analytics
The process has these steps:
- Export your orders. Export all orders or a date range from your store admin as a CSV file.
- Upload to MCP Analytics. Log in at account.mcpanalytics.ai, create a dataset, and upload your CSV. The platform tries to detect common column formats.
- Choose your analysis. Select a module like Average Order Value Analysis or Product Bundle Affinity. Map columns if prompted -- most are auto-detected.
- Run and review. Click run. You get an interactive HTML report with charts, statistical tests, and plain-English recommendations. Download it, share it with your team, or use it to make the pricing/inventory/marketing decision you have been putting off.
MCP Analytics tries to recognize common column names for order value, product, date and region. If your columns are named differently or you added custom fields, you can map them by hand.
What to Do With the Results
Analysis without action is just expensive curiosity. Here is how each analysis type maps to a concrete business decision:
- AOV analysis reveals your free shipping threshold. One approach is to set it somewhat above your median AOV and test whether customers add items to qualify.
- Product performance identifies your marketing focus. Promote the products that combine high margin with high repeat purchase rate, not just the bestsellers. A product with a 65% margin and 30% repeat rate is more valuable than a bestseller with a 20% margin and 5% repeat rate.
- Geographic insights target your ad spend. If California generates 22% of revenue but you spend 8% of ad budget there, you are under-investing in a proven market.
- Seasonal patterns drive inventory planning. If your time-series decomposition shows a 40% seasonal uplift in Q4, order inventory in August, not October.
- Bundle affinity creates upsell opportunities. Pairs with lift above 1 appear together more often than independence predicts. Check how many orders sit behind a pair before showing it together on product pages, in email flows, or in cart recommendations.
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
Frequently Asked Questions
MCP Analytics accepts the standard Shopify orders export CSV (orders_export_1.csv) exactly as downloaded. No reformatting needed. Column names vary by store and export settings, so check the header row of your file. Just upload the file directly.
MCP Analytics handles Shopify export files with up to 500,000 rows. If your store has more than 500K line items, split the export by date range in Shopify Admin. For best results, include at least 3 months of data so the platform can detect seasonal patterns and trends.
Six primary types: Average Order Value analysis (AOV by channel, segment, time), product performance (revenue contribution, margin, trends), geographic analysis (revenue by region, shipping cost patterns), seasonal/time-series analysis (trends, forecasting), fulfillment analysis (processing times, delay patterns), and product bundle affinity (which products are bought together and should be cross-sold).
MCP Analytics offers a free demo tier that lets you run analyses on sample datasets to see the output quality. To analyze your own Shopify orders CSV, you need a paid plan. Plans include CSV analysis modules covering AOV, product performance, customer segmentation, and more. Each analysis produces an interactive HTML report with charts, statistical tests, and actionable recommendations.
Upload your CSV, select an analysis module, map columns if needed, and click run. The platform returns an interactive report with visualizations, statistical findings, and plain-English recommendations. No waiting for a data team, no scheduling, no code.