Getting your orders file
Thirty seconds on Shopify or BigCommerce. Forward this page to whoever owns your orders if that is not you. Last updated: September 2026.
Shopify
Fastest: connect your store on the Design page. Holdout reads the order dates and postcodes itself and there is nothing to export.
Or export the file. It works as downloaded.
- In Shopify admin, open Orders and click Export.
- Choose Orders by date and set the range. Eighteen months if you have it, twelve weeks at the least.
- Under Export as, choose Plain CSV file, then Export orders.
- Shopify emails the file for anything over fifty orders. Drop it on the Design page.
Holdout reads four of its columns: Name (the order number), Created at, Shipping Zip and Total. Each order number counts once, however many item rows it spans.
BigCommerce
- In the control panel, open Orders and then Search. Under Search by Date pick Custom period, set the range with the date type on Order date, and click Search.
- Click Export all. Keep the Default template and the CSV format, then Continue and Start export.
- Click Download my Orders file and drop it on the Design page.
Holdout reads Order ID, Order Date, Shipping Zip and Order Total (inc tax). Each order ID counts once.
WooCommerce
The built-in Analytics download has no postcode column, so use an export plugin or a query.
- Plugin. The free Order Export and Order Import for WooCommerce plugin, or WP All Export. Export orders as CSV with the Order Date, Shipping Postcode and Order Total columns ticked. One row per order.
- Query. With high-performance order storage on, your developer can run this against the database and save the result as CSV:
select o.date_created_gmt as date, a.postcode, o.total_amount as revenue
from wp_wc_orders o join wp_wc_order_addresses a on a.order_id = o.id and a.address_type = 'shipping'
where o.status in ('wc-completed', 'wc-processing') and o.type = 'shop_order'Magento, a warehouse or anything else
Any export with one row per order and a date and a postcode on each row works. If the platform can only give you totals, send them in the shape below.
The shape, for a data team
One CSV. Either one row per order, or one row per day per postcode district. Four columns:
date, postcode, orders, revenue
2026-06-01, LS1, 14, 1210.50
2026-06-01, M4, 9, 803.00
2026-06-02, LS1, 11, 985.20
...- date. One row per day, or per order. YYYY-MM-DD is safest. A timestamp is fine.
- postcode. The outward code: the part before the space, like LS1 or M4. Full postcodes are also fine.
- orders. The number of orders for that district on that day. Leave it out for a per-order file: each order counts once by its order number, or once per row if there is no order number column.
- revenue. Optional. Order value in pounds. With it we measure revenue lift as well as order lift.
History: 18 months if you have it. 12 weeks is the working minimum.
What we do not want
A date, an area code and a count. No names, no addresses, no order IDs, no customer references. A platform export carries more than that; we read the three columns and ignore the rest. Files are read in memory to run the analysis and are never stored.
Getting the outward code from a full postcode
Only needed if you are building the file by hand. In every valid full UK postcode the last three characters are the inward code: a digit then two letters, no exceptions. So the outward code is what remains after you remove spaces and drop the last three characters.
Excel or Google Sheets:
=LEFT(SUBSTITUTE(A2," ",""),LEN(SUBSTITUTE(A2," ",""))-3)SQL:
left(replace(postcode, ' ', ''), length(replace(postcode, ' ', '')) - 3)Formatting that does not matter
- Duplicate rows. Two rows for the same district and day are fine. We sum them.
- Full postcodes. Fine. We read only the geography. Near region boundaries a full postcode maps slightly more precisely than an outward code.
- Weekly rows. Daily is preferred, but weekly totals also work. We build our own weeks either way.
- Extra columns. Ignored.
The one thing to avoid
Running totals. Each row must be that day's count, not a cumulative total to date. A cumulative export looks like normal data and silently breaks the analysis, so double-check this one.
If any of this is a hassle
Send the postcode column as-is, in whatever shape your export tool produces. We read only the geography, truncate on arrival and never store the file. Nobody should be blocked on formatting.
Questions: jedwrigley@tryholdout.com