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 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 identifierOne value per orderGrouping line items into orders
Payment or order dateWhen the order was paid or placedTime-series analysis, seasonal trends
Order subtotal and totalAmounts before and after shipping, tax and feesRevenue analysis, average order value
Line item name, quantity and priceProduct, units and unit price per lineProduct performance, bundle and price analysis
Discount codePromo code used, if anyDiscount effectiveness
Shipping destinationRegion or countryGeographic analysis
Fulfillment statusWhether the order has shippedOperations checks
The Line Item Trap

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:

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:

  1. Export your orders. Export all orders or a date range from your store admin as a CSV file.
  2. 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.
  3. Choose your analysis. Select a module like Average Order Value Analysis or Product Bundle Affinity. Map columns if prompted -- most are auto-detected.
  4. 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.
Column Mapping Made Simple

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:

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

What format does the Shopify orders export CSV need to be in?

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.

How large can my Shopify orders CSV file be?

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.

What analyses can I run on my Shopify orders data?

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).

Is MCP Analytics free to use with my Shopify data?

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.

What are the steps to get results from my Shopify CSV?

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.