If you've tried to pull your full order history out of Shopify, you've already met the wall: 250 rows. That's the limit on Shopify's built-in export, and it doesn't matter whether you're exporting to a spreadsheet, a BI tool, or anything else. This guide shows how to get around it — and uses that full dataset to build something immediately useful: a revenue-by-product breakdown that's actually accurate.
The Problem: 250 Rows Isn't a Report, It's a Sample
Shopify's admin export gives you a CSV with up to 250 orders. For a store doing any real volume, that's a few days of data at best. Any report you build on top of it — revenue by product, order value distribution, refund rate — is built on a sample, not your full history.
This isn't a new frustration. It comes up constantly across the Shopify community, and it affects every tool that tries to connect to Shopify through the standard export path — spreadsheets, BI tools, everything.
The Shopify Admin API doesn't have this limit. It returns your full order history with pagination, filtering, and field selection. The barrier has always been access: most merchants don't want to set up API credentials, write pagination logic, or manage a data pipeline just to get their own order data.
API Import handles all of that.
Setup: Connect Shopify in Two Minutes
Open API Import from the Extensions menu in any Google Sheet and select Shopify from the connector list.
You'll need two things from your Shopify admin:
- Store URL — your
yourstore.myshopify.comdomain - Admin API access token — create one under Settings → Apps and sales channels → Develop apps
Paste both into API Import. That's the entire setup — no OAuth redirect, no webhook configuration, no credentials file to manage.
Execution: Pull Your Full Order History
In the API Import prompt field, describe what you want:
"Get all orders from the last 12 months including order ID, created date, financial status, line items, quantities, and prices."
API Import handles the parts that make direct API access tedious:
- Pagination — Shopify returns orders in pages of up to 250; API Import follows
nextcursors automatically until all records are retrieved - Field selection — maps your plain-English request to the correct Shopify API fields (
line_items,total_price,financial_status, etc.) - Date filtering — translates "last 12 months" into the correct
created_at_minparameter
The result lands in your sheet with one row per line item — meaning each product within an order gets its own row, which is exactly what you need for product-level analysis:
| Order ID | Date | Product | Variant | Qty | Line Total | Status |
|---|---|---|---|---|---|---|
| 5821 | 2026-04-01 | Slim Wallet | Black | 2 | $58.00 | paid |
| 5821 | 2026-04-01 | Card Holder | Tan | 1 | $24.00 | paid |
| 5822 | 2026-04-02 | Slim Wallet | Brown | 1 | $29.00 | refunded |
No CSV. No copy-paste. No 250-row ceiling.
Analysis: Revenue by Product Across Your Full Catalogue
With the full dataset in Sheets, add a SUMIF to aggregate revenue per product title:
=SUMIF(C:C, "Slim Wallet", F:F)
Or use a pivot table — select the data range, then Insert → Pivot table, and set:
- Rows: Product
- Values: Line Total (sum)
- Filter: Status = "paid" (exclude refunded orders)
What you get is a ranked list of every product by revenue, calculated across your entire order history — not a 250-row slice of it. For stores with seasonal inventory, a catalogue of 50+ SKUs, or more than a week's worth of orders, this is the first time that number is actually correct.
Reading the results
High revenue, high volume: Your core SKUs. These are the products to protect — keep them in stock, watch their refund rate, and make sure ad spend is supporting them.
High revenue, low volume: High-ticket items with limited reach. Check whether low volume is a supply constraint or a discovery problem — if the conversion rate is strong, they may be undersupported by paid or organic traffic.
Low revenue, high volume: High-frequency, low-value products. Consider whether they're being used as entry points (good) or whether they're diluting average order value (worth testing a bundle).
Consistently refunded products: Cross-reference the pivot with a separate COUNTIF on refunded line items. Any product with a refund rate above 10–15% warrants a closer look at sizing, description accuracy, or supplier quality.
Keeping the Data Current
Re-running the prompt weekly takes seconds and gives you a rolling view of how product revenue shifts over time. Paste the new export into a second tab, and your pivot table can reference both ranges with a simple INDIRECT — no formulas to rewrite, no manual merging.
For stores running promotions or testing new SKUs, a weekly cadence makes it easy to see the revenue impact within the same reporting week it happened.

