Skip to content

How to export your Shopify orders to CSV (and what the columns mean)

Step-by-step: export orders from Shopify admin as CSV, understand the columns that matter for customer analysis, and avoid the one-row-per-line-item trap.

Your Shopify orders export is the raw material for almost every customer analysis: RFM, repeat purchase rate, reorder gaps and lifetime value. Here is how to get it and how to read it without getting tripped up.

How to export orders from Shopify

  1. In your Shopify admin, open Orders.
  2. Click Export at the top of the orders list.
  3. Choose which orders to export. For customer analysis, pick All orders, or a date range that covers at least the last one to two years.
  4. Choose the format. Plain CSV file is the safest choice for tools and calculators; the Excel option is fine if you will only open it in a spreadsheet.
  5. Click Export orders.

Small exports download straight away. For larger stores, Shopify emails a download link to the account owner or the staff member who asked for it.

Tip: if you only need a subset, search or filter the orders list first, then choose the option to export the orders matching your search.

The trap: one row per line item

The export has one row per product line, not one row per order. An order with three different products appears as three rows with the same order number in the Name column (for example #1042).

Order-level values such as the total, financial status and dates are filled in only on the first row of each order. The other rows for that order leave them empty. If you sum the Total column without removing duplicates, you will still get the right total, but if you count rows, you will count line items, not orders.

So before any analysis: keep one row per unique order number.

The columns that matter for customer analysis

Column What it tells you
Name The order number, like #1042. Use it to remove duplicate rows.
Email The customer’s email. The simplest way to group orders by customer, including guest checkouts.
Financial Status paid, partially_paid, refunded, partially_refunded, pending, voided and so on. Keep paid and partially refunded orders for most analysis.
Paid at When payment was captured.
Created at When the order was placed. Use this for recency and reorder gaps.
Total The order total including tax and shipping.
Subtotal Products after discounts, before shipping and tax. Some people prefer it for spend analysis.
Refunded Amount How much was refunded. Subtract it if you want net spend.
Cancelled at Filled in when the order was cancelled. Drop these orders.
Accepts Marketing Whether the customer agreed to marketing emails when they ordered.
Currency Matters if you sell in more than one currency.

Cleaning checklist

Before you calculate anything:

  • One row per order number
  • Remove cancelled orders and fully refunded or voided orders
  • Remove orders without an email address (or group them separately)
  • Lowercase and trim email addresses so Sam@Shop.com and sam@shop.com count as one person
  • Remove test orders and orders to your own staff

What you can do with it

All three run in your browser: your file is read on your computer and never uploaded.

When an export is not enough

An export is a snapshot. The day after you make it, it is already out of date. If you want customer groups that update as new orders come in, an app like WinBack reads your orders from Shopify directly and keeps every customer scored. Install it from the Shopify App Store and it imports your past orders by itself.