If you run an operating store, you already know where the money looks like it came from. What you usually can't see fast is whether last quarter's best-selling product was also your most profitable one. Historic sales reports from Shopify are the raw material for that answer — but only the raw material.
This guide covers exactly where the reports live, which one to pull for which question, the plan and retention limits nobody flags upfront, and the profit gap every native sales report leaves you to close yourself.
Where historic sales reports live in Shopify
Every sales report sits under Analytics → Reports in your admin. The ones you'll reach for most often when you want history:
- Sales over time — total sales broken down by day, week, or month across whatever range you pick.
- Sales by product — units and gross sales per product, so you can rank sellers over a period.
- Sales by traffic source / channel — which channel drove which sales.
- Sales transaction report — the most granular view, closest to an order-level ledger.
Each report opens with a date picker at the top. Change the range, and the whole report re-pulls against that window — that is the "historic" part. Click Export, and Shopify hands you a CSV you can pivot in a spreadsheet.
Which report to pull for which question
Match the report to the question, or you'll drown in rows you don't need.
Want the shape of the year — seasonality, your November spike, the January dip? Sales over time, grouped by month. Want to know which SKUs carried the store over a stretch? Sales by product, sorted by net sales descending. Want an audit-grade record for your accountant or for reconciling a refund dispute? The Sales transaction report, exported to CSV.
For anything you'll analyze outside Shopify, export rather than screenshot. A CSV lets you build your own columns — the profit columns Shopify won't. If you're layering Shopify data against session and channel behavior, the same discipline applies to your web analytics stack; our guide to Google Analytics ecommerce tracking walks through keeping those numbers clean.
How to set the date range and export
Set the date range first, before you touch anything else. Shopify defaults to a recent window, and it's easy to read last month's numbers thinking they're last quarter's.
Use the custom range option to go back further than the presets. Then group by the interval that answers your question — daily for a launch post-mortem, monthly for year-over-year shape. Finally, export to CSV so the data leaves the dashboard and lands somewhere you can do math on it.
One habit worth building: export on a schedule, not just when you need something. That protects you from the retention trap below.
The plan limits and the retention trap nobody mentions
Not every report is available on every plan. The deeper report categories — custom reports, profit reports, cohort analysis — unlock as you move up the tiers, with Advanced Shopify running $229/month and Shopify Plus starting around $2,000/month, according to Saras Analytics' breakdown of Shopify reporting tiers. On a lower plan, your historic reporting is genuinely narrower, not just cosmetically limited.
Then there's retention. You'll see "13 months" quoted all over the web as Shopify's detailed-data limit — but that figure is hard to pin down. FirstPier's analytics team looked into it and concluded plainly that retention limits are widely quoted yet unconfirmable from Shopify's own documentation, recommending you export long-horizon history on a schedule rather than trust a number from a blog.
That's the practical takeaway: don't assume your three-year-old data will always be one click away. If it matters, own a copy.
What historic sales reports can't tell you: profit
Here's the gap. Shopify's sales reports are built on revenue — gross sales, net sales, units. None of them nets out what each order actually cost you to fulfill. For a print-on-demand store, that omission is the whole game, because your cost of goods rides on every single order.
Walk a real example. Say last November your Sales over time report showed 900 orders at a hypothetical $38 average order value — a clean $34,200 in net sales. Looks like a great month.
Now net out the per-order costs the report never showed:
- Blank garment + print (COGS): $17
- Shipping: $5
- Payment processing (~4%): $1.52
- Pick/pack: $1.50
That leaves $12.98 in contribution margin before ads. If you acquired those orders at a 3.0 return on ad spend, you spent about $12.67 per order on Meta and Google. Per-order profit after ads: roughly $0.31.
Nine hundred orders. Thirty-four thousand dollars in revenue. About $280 in actual contribution after ad spend, before you've paid rent or software. The revenue report called it a hero month; the profit math called it break-even. That's the difference between a historic sales report and a historic profit report — and it's the difference that decides whether you scale that product or kill it.
There's a second blind spot: sales reports only count orders that closed. They say nothing about the demand that didn't convert. Across 50 aggregated studies, Baymard Institute puts the average cart abandonment rate at 70.22% — so your historic sales are, roughly, the surviving three in ten. Reading revenue history without that context makes you over-credit the products that happened to convert and ignore where you're leaking demand.
Turning revenue history into per-order profit
You can close the profit gap by hand: export the CSV, build columns for COGS, shipping, fees, and allocated ad spend, and recompute margin per order. It works. It's also a monthly slog that goes stale the moment a supplier price or ad cost moves.
The alternative is to have the data warehouse and the math maintained for you, continuously, instead of rebuilt in a spreadsheet. That's the layer this whole cluster is about — see the ecommerce business intelligence hub for how sales, cost, and ad data get stitched into one source of truth, and the deeper ecommerce performance analytics breakdown for the metrics that actually move profit.
This is where Victor, the AI employee from PodVector AI, does the work a raw sales export can't. Victor connects your live Shopify store alongside Meta Ads, Google Ads, and your print provider — Printify, Printful, or Gelato — and computes true per-order profit, netting COGS, shipping, fees, and ad spend against every order automatically. He delivers those profit reports straight to your Google Drive, so your history lives somewhere you own rather than behind a retention limit you can't confirm. Victor is not a dashboard you have to go read; he's an operator who does the reconciliation and hands you the answer, with every write action gated behind your approval.
Put Victor on your store's numbers and get profit-per-order history instead of revenue-only history.
If you're comparing tools before you commit, our rundown of ecommerce analytics services lays out the landscape.
FAQs
How far back can I see sales data in Shopify?
You can set a custom date range that reaches back across your store's history, but detailed-data retention limits are real and hard to confirm — the commonly cited figures aren't verifiable from Shopify's own docs, as FirstPier's analysis notes. The safe move is to export long-horizon history to CSV on a schedule so you always hold a copy, regardless of what the dashboard keeps.
Which Shopify plan do I need for full historic reports?
The core sales reports are broadly available, but deeper categories — custom reports, profit reports, and cohort analysis — unlock on higher tiers like Advanced and Plus, per Saras Analytics' tier breakdown. If your historic analysis needs profit or cohort views natively, that's a plan question before it's a workflow question.
Do Shopify sales reports show profit?
No. Native sales reports are built on revenue — gross sales, net sales, and units — and don't net out COGS, shipping, payment fees, or ad spend. On a print-on-demand store where cost of goods rides on every order, that means a "great" revenue month can be a break-even profit month, as the worked example above shows.
How do I export historic sales from Shopify to a spreadsheet?
Open the report under Analytics → Reports, set your date range, group by the interval you want, then click Export to download a CSV. From there you can pivot the data and — importantly — add the cost columns Shopify leaves out to turn a revenue export into a margin analysis.
What's the fastest way to get profit history instead of revenue history?
Either build cost columns onto every exported CSV yourself each period, or connect a live data warehouse that computes per-order profit continuously. The manual route works but goes stale the moment a supplier price or ad cost changes; an automated per-order profit layer keeps the history accurate without the monthly rebuild.