Get data from Shopify into Excel
Pull live rows from your Shopify account into Excel and refresh them whenever you like. No ODBC driver, no exports, no macros. About ten minutes the first time, and the Free plan covers it.
What you’ll end up with
A worksheet showing the live results of a SQL query against your Shopify account, with a button that pulls the latest rows whenever the data changes. Like this:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | customer_id | first_name | last_name | country | total |
| 2 | 1042 | Maria | Alvarez | USA | 1,284.50 |
| 3 | 1043 | Daniel | Okafor | USA | 612.00 |
| 4 | 1047 | Priya | Nair | USA | 2,090.75 |
| 5 | 1051 | Thomas | Berg | USA | 338.20 |
| 6 | 1056 | Lucía | Ferreira | USA | 1,455.00 |
| 7 | 1060 | Kenji | Sato | USA | 874.10 |
| 8 |
Shopify holds your data behind its API. Getting it into Excel usually means exporting a CSV from the Shopify dashboard every time you need fresh numbers. Query Streams skips that: a small helper program called the Agent runs the query where your data is, and an Excel add-in asks it for the rows you want. Only the results travel, over an encrypted link, and Excel can be anywhere: your laptop at home, a colleague’s machine across the country, or Excel on the web.
What you’ll need
The Agent on any always-on computer
A small program that runs in the background and calls Shopify when Excel asks. It just needs internet access.
Your Shopify login
You will sign in to Shopify once and allow read access. No passwords are typed into Query Streams.
Which computer gets the Agent? Any always-on machine that can already reach your Shopify account. Excel can be anywhere, including Excel on the web.
Connect it in five steps
-
Create your account
Go to my.querystreams.com and sign up. Pick the Free plan. It is a real plan, not a trial, and it covers connecting your Shopify account and running queries from Excel.
Install the Agent on any always-on computer



Sign in, open Download, and install the Agent on any always-on computer or server with internet access. It takes a minute and starts on its own from then on.
Why a small program instead of a driver? The Agent is one install for Windows, Mac or Linux (about 85 MB on Windows, a little over 100 MB on Mac and Linux) that runs quietly in the background. It makes one outbound, encrypted connection to Query Streams, the same way a browser does, so you open no firewall port and set up no VPN. Your keys stay on that machine, and the rows travel to wherever you are, across the internet if need be. The only thing on your side is the add-in.
The Download page shows Your Access Key. Paste it into the Agent when it asks, and wait for the badge to read Connected to Query Streams. That is the only thing you do on the Agent itself.
-
Point it at your Shopify account
Back in your browser, open Data Agents (under Data in the top menu). Your Agent is listed there. Click Add connector and choose Shopify. Need your Shopify credentials first? Open the walkthrough, then fill in:
Create your Shopify credentials (about 10 minutes)
Follow this with Shopify open in another tab. Query Streams keeps what you create here so your Agent can use it, and only ever reads from Shopify.
- Who can do this
- Store owner, or a staff account with the App development > Develop permission (collaborator accounts can’t use the Dev Dashboard)
- Recommended
- Dev Dashboard app (custom app) in your store’s own Shopify organization: Client ID + Client secret, read-only scopes
Before you start
- Your Shopify store’s admin login: the store owner, or a staff account with the App development > Develop permission. Store owners have it automatically.
- The Query Streams wizard open in another tab: Data Agents → Add connector → Shopify, with your Agent online.
- No coding. Shopify no longer lets you copy a ready-made access token for a new app; Query Streams turns the app’s Client ID and Client secret into a short-lived token itself.
Steps
- Open your store’s app settings
Sign in to your Shopify admin. Click Settings (bottom-left), then Apps.
On some stores this menu item reads Apps and sales channels. Use the admin of the exact store you want to connect.
- Click Develop apps
On the Apps settings page, click Develop apps.
No Develop apps button? Your staff account lacks the App development > Develop permission. Ask the store owner to grant it, or to do these steps.
- Open the Dev Dashboard
Click Build apps in Dev Dashboard. The Dev Dashboard opens, usually in a new tab.
Open it this way, from your store’s admin, rather than signing in to dev.shopify.com separately. The app must be in the same Shopify organization as the store, or Query Streams can’t connect.
- Click Create app
Check that Apps is selected in the left menu, then click Create app in the top-right corner.
- Choose Start from Dev Dashboard
Select Start from Dev Dashboard (not Start with Shopify CLI).
- Name the app
Type a name you will recognise, for example Query Streams, and click Create. The page for the app’s first version opens.
The name is only for you. Query Streams doesn’t need a particular name.
- Keep the default App URL
In the URLs section, leave App URL as https://shopify.dev/apps/default-app-home (type it in if the box is empty). If you see an Embed app in Shopify admin option, leave it off.
Query Streams doesn’t open inside your Shopify admin, so Shopify’s default address is the right one.
- Pick a Webhooks API version
In Webhooks API version, select the newest version in the list.
Query Streams doesn’t use webhooks, so any version works.
- Add the read scopes
In the Access section, find Scopes. Paste this list, or click Select scopes and tick each one: read_orders, read_draft_orders, read_customers, read_products, read_inventory, read_locations, read_discounts, read_gift_cards, read_shipping, read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_content, read_themes, read_legal_policies, read_shopify_payments_accounts, read_shopify_payments_payouts, read_shopify_payments_disputes. Leave Optional scopes empty.
Choose only read_ scopes: Query Streams never changes anything in your store. Do not add read_all_orders. Shopify rejects it for these apps with “Contains invalid scopes” (see Limits). read_payouts and read_shopify_payments are not valid names either. Keep the three Shopify Payments scopes even if you don’t use Shopify Payments; those tables just stay empty.
- Click Release
Scroll to the bottom of the page and click Release. A dialog opens with an optional version name and message.
You can leave both boxes empty.
- Confirm the release
Click Release in the dialog. On the app’s Versions page the new version now has an Active badge.
- Click Install app
Open the app’s home page (click the app’s name, or Home in the app’s menu). In the Installs card, click Install app. A new tab opens.
The same action is in the ⋯ menu on the app’s row in the Apps list.
- Choose your store
If you have more than one store, select the store you want to connect.
Pick the store whose admin you started from in step 1.
- Click Install
Shopify shows an Install app screen listing the store data the app can view. Check it and click Install.
Back in the Dev Dashboard, the Installs card now shows 1 install. Refresh the page if it still shows 0.
- Open the app’s Settings
In the Dev Dashboard, open your app and click Settings (App settings on some screens). Find the Credentials card.
- Copy the Client ID
Next to Client ID, click the copy (clipboard) icon. Paste it into Client ID in the Query Streams wizard.
It is 32 letters and digits, for example a8ed94aa0680bc6580eea34486dcaa6b. It never changes.
- Copy the Client secret
Next to Client secret (labelled Secret on some screens), click the eye icon to show it, then the copy icon. Paste it into Client secret in the Query Streams wizard.
It starts with shpss_. Shopify keeps showing it on this page, so you can come back for it later. Don’t click Rotate unless you mean to replace it.
- Copy your store address
In your Shopify admin, go to Settings → Domains and copy the address that ends in .myshopify.com, for example your-store.myshopify.com. Paste it into Store address in the Query Streams wizard.
Your own domain (such as www.yourbrand.com) won’t work. The address in your browser bar while you’re in the admin, admin.shopify.com/store/your-store, is also accepted.
- Test the connection
In the Query Streams wizard, click Test connection. It says Connected.
If it shows a message instead, find it under Common problems.
Permissions to grant
Resource Access Used for read_orders Read orders, order_line_items, transactions, refunds, fulfillments, order_risks and abandoned_checkouts tables (last 60 days, see Limits) read_draft_orders Read draft_orders table read_customers Read customers and customer_addresses tables read_products Read products, variants, collections, smart_collections and custom_collections tables read_inventory Read inventory_levels and inventory_items tables read_locations Read locations table, and the per-location rows in inventory_levels read_discounts Read price_rules and discount_codes tables read_gift_cards Read gift_cards table read_shipping Read shipping_zones and carrier_services tables read_merchant_managed_fulfillment_orders Read fulfillment_orders table: orders you fulfil from your own locations read_assigned_fulfillment_orders Read fulfillment_orders table (any one of the three fulfillment-order scopes turns the table on; all three give the complete list) read_third_party_fulfillment_orders Read fulfillment_orders table: orders fulfilled by third-party fulfilment services read_content Read blogs, articles and pages tables read_themes Read themes table read_legal_policies Read policies table read_shopify_payments_accounts Read needed together with the next two for the payouts and disputes tables (Shopify Payments stores only) read_shopify_payments_payouts Read payouts table read_shopify_payments_disputes Read disputes table Paste into Query Streams
- Store address
- The .myshopify.com address from step 18 (or the admin.shopify.com/store/… address from your browser bar)
- Client ID
- The Client ID you copied in step 16
- Client secret
- The Client secret you copied in step 17 (starts with shpss_)
Common problems
Test connection says “The app and the store must belong to the same Shopify organization.”
Why: The app was created in a different Shopify organization from the store, for example after signing in to dev.shopify.com with another account or choosing another organization. Owning the store is not enough.
Fix: Start again from the store’s own admin: Settings → Apps → Develop apps → Build apps in Dev Dashboard, and create the app there (steps 1 to 17). If you belong to several organizations, the organization ID is in the Dev Dashboard address (dev.shopify.com/dashboard/<org-id>); the app and the store must be under the same one.
Test connection says “Client ID or Client secret is wrong, or the app isn’t installed on this store.”
Why: A value was copied incompletely or with a space, Client ID and Client secret were swapped, the secret was rotated, or the app isn’t installed on this store (or was uninstalled).
Fix: Copy both values again with the copy icons on the app’s Settings page; the secret starts with shpss_. Check that the app’s Installs card lists your store, and click Install app if it doesn’t. If someone clicked Rotate, use the secret marked New. Then click Test connection again.
Test connection rejects the store address (“Use your .myshopify.com address (Settings → Domains) or the admin.shopify.com/store/… URL. Custom domains can’t be used for the API.”) or says “Store not found. Check the store address.”
Why: Your own domain (such as www.yourbrand.com) was entered, or the store handle has a typo.
Fix: Copy the .myshopify.com address from Settings → Domains in your Shopify admin, or the admin.shopify.com/store/… address from your browser bar.
Test connection says “The token was accepted but has no scopes”, or some tables are switched off with a missing scope named (for example payouts needs read_shopify_payments_payouts).
Why: The scope isn’t on the app’s active version, or a new version was released but the store hasn’t approved it yet.
Fix: In the Dev Dashboard open your app → Versions → Create version, add the missing read_ scope and click Release. Then open the app and, in the Installs card, click Install app for your store again to approve the change: in our own test the store kept the old scopes until this was done. Click Test connection again.
Clicking Release shows “Contains invalid scopes”.
Why: read_all_orders was added (Shopify must approve it, and Dev Dashboard apps can’t request it), or a scope name is misspelt, such as read_payouts or read_shopify_payments.
Fix: Remove it and use exactly the names in step 9.
Orders older than about 60 days never appear.
Why: Shopify serves only the last 60 days of orders to apps without read_all_orders (see Limits).
Fix: Nothing to change in the app or in Query Streams today. Orders already loaded stay in your Query Streams cache, so your history builds up from the day you connect.
The payouts and disputes tables stay empty with the note “Shopify Payments isn’t enabled on this store, so there is nothing to load for this table.”
Why: The store takes payments through another provider, so Shopify has no payouts or disputes to share.
Fix: Nothing to fix. The other tables are not affected.
Customer names, emails, phone numbers or addresses are empty while the other columns load.
Why: Shopify treats these fields as protected customer data. Its help center says a store on the Basic plan can’t use custom apps that read them; the Grow plan or higher is needed.
Fix: Check which Shopify plan the store is on. On Basic, these columns stay empty until the store moves to Grow or higher; nothing in Query Streams changes this.
There is no Develop apps button, or the Dev Dashboard won’t open for you.
Why: Your staff account doesn’t have the App development > Develop permission, or you are signed in with a collaborator account, which can’t use the Dev Dashboard.
Fix: Ask the store owner to grant your staff account App development > Develop, or to follow these steps themselves.
Limits to know
- Orders: Shopify gives apps only the orders created in the last 60 days. Older orders need the read_all_orders scope, which Shopify must approve, and the Dev Dashboard rejects it for these apps (“Contains invalid scopes: read_all_orders”, checked 2026-09-29). This covers the orders table and the tables built from it (order_line_items, transactions, refunds, fulfillments, order_risks) plus abandoned_checkouts. Products, customers, inventory and draft orders are not limited.
- Access tokens last 24 hours. The Agent requests a fresh one from the Client ID and Client secret automatically; you never copy or renew a token.
- Shopify limits API reading by store plan: 100 cost points per second on standard plans, 200 on Advanced, 1,000 on Shopify Plus and 2,000 on Shopify for enterprise; one request can’t cost more than 1,000 points. The first full load of a large store can take a while; when Shopify throttles, the Agent waits and continues.
- payouts and disputes have rows only if the store uses Shopify Payments.
Steps verified 8 October 2026. Sources: shopify.dev/docs/apps/build/dev-dashboard/create-apps-usi…, shopify.dev/docs/apps/build/authentication-authorization/…, shopify.dev/docs/apps/build/authentication-authorization/…, shopify.dev/docs/apps/build/authentication-authorization/…, shopify.dev/docs/api/usage/access-scopes, shopify.dev/docs/apps/build/apis/graphql-admin/rate-limits, shopify.dev/docs/apps/launch/protected-customer-data, help.shopify.com/en/manual/apps/install-setup-apps, help.shopify.com/en/manual/apps/about-apps, help.shopify.com/en/manual/domains, changelog.shopify.com/posts/legacy-custom-apps-can-t-be-c…, kb.wolfandbadger.com/creating-your-custom-shopify-app-usi…, docs.mydbsync.com/cloud-workflow/connectors/shopify/steps…, help.sarasanalytics.com/pulse-shopify-/shopify-app-creati….
- Connection name
- Any name you will recognise later, like Sales database.
- Store URL
- Your store’s Shopify address, like your-store.myshopify.com.
- Client ID
- The Client ID of the custom app you created for your store in Shopify.
- Client Secret
- The Client Secret of that same Shopify app.
Click Test connection. When it reads Connected, click Save. The connection reaches your Agent within a few seconds.
Test failed? Usually a missing permission, or a credential from the wrong Shopify account. The walkthrough above lists the common problems and their fixes.
-
See your data in Query Builder Optional
You can look at your Shopify account before Excel is involved at all. Open Query Builder in the portal and pick the connection you just made. The Schema tab lists your tables and columns, and clicking one puts its name in the editor, so you can write a query without remembering exact names. Click Run and the rows appear under Results. Query Builder is on every plan, Free included.
On Business plans you can also ask Nova in plain English (“show me customers in the USA”) and it writes the SQL for you. When the query looks right, save it: from Personal Core up it shows in the add-in’s Saved Queries list, and on any plan you can copy the SQL into the next step.
-
Add Query Streams to Excel
In Excel, go to Insert → Get Add-ins, search for Query Streams, and click Add. Or open it straight from Query Streams on Microsoft AppSource. A Query Streams button appears on the ribbon. Sign in with the same account.
Works in Excel for Microsoft 365 on Windows and Mac, and in Excel on the web.
-
Pull in your first table
Click the Query Streams button, choose Stream a Query, and pick the connection you just made.
Type the query you want to run. This one pulls a few columns from a shopify.orders table:
Example · SQLSELECT name, financial_status, total_price, created_at FROM shopify.orders ORDER BY created_at DESC LIMIT 100;
Under Destination Sheet choose Create a new sheet, then press the play button (the ▶ arrow). The rows land in Excel in a second or two. Press it again any time the data has changed and the sheet updates in place.
Don’t know SQL? Build it in Query Builder first and paste it here, or pick it from Saved Queries if you saved it.
That’s it. Your data is in the sheet and stays current with one click. Nothing left your network except the rows you asked for.
Good next moves
- Save the query in the portal so you can run it again with one click, from Excel or Google Sheets.
- Add a filter such as a date range, so the same query can answer “this month” without editing.
- Share the results with a colleague. They see the rows, not your credentials.
Questions people ask
Does Excel have to be on the same computer as your Shopify account?
No. Only the Agent has to be where your Shopify account is. Excel can be on any computer with an internet connection, including Excel on the web and Excel on a Mac. Sign in to the add-in with your account and your connections are there.
Does my data get copied to Query Streams?
No. The Agent runs the query where your data is and sends only the rows it returns. Nothing is synced or stored in between.
Does the Free plan really cover this?
Yes. Free is a plan you keep, not a trial that expires. See exactly what it includes on the pricing page.
Does it work with Excel for Mac?
Yes. Excel for Microsoft 365 on Mac and Windows, and Excel on the web.
Related guides
Every guide for Shopify
Not quite your setup?
- Want to query the Excel workbooks themselves? Excel Folder reads a folder of workbooks as tables → Excel Folder
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

