Shopify Troubleshooting
Fix a failed Shopify Test connection, and find orders that didn't arrive as deliveries.
adminShopify Troubleshooting
Start with Test connection on the Shopify page (Settings > Integrations, then Manage on the Shopify card). It checks the connection one step at a time and stops at the first failure. Find the failed step below.
For first-time setup, follow Shopify Setup.
Most common failure
Step 5, Read orders, fails with Shopify GraphQL error: empty response. The app doesn’t have protected customer data access yet. See Step 5: Read orders.
Before You Start
- Sporeline only reads orders, customers and products. It never changes anything in Shopify.
- The app and the store must be in the same Shopify organization.
- Shopify settings live on two sites. Protected customer data access is not in the Dev Dashboard.
| Site | Address | Use it for |
|---|---|---|
| Dev Dashboard | dev.shopify.com | Creating and releasing the app, access scopes, installing, client ID and secret |
| Shopify Partners | partners.shopify.com | Protected customer data access |
Test Connection Checklist
A working connection shows five green checks under Connection works. A failure shows Connection failed, a red X on the failed step, and the reason underneath.
Connect runs the same checks. If you click Connect without testing first, a failure appears at the top of the page as Step N failed (step name): reason. The fixes are the same.
Step 1: Check the store domain and credentials
Sporeline checks the values you pasted before it contacts Shopify.
Enter your store's .myshopify.com domain: use the.myshopify.comdomain from your Shopify admin (Settings > Domains), for exampleyour-store.myshopify.com. A custom storefront domain won’t work.Paste the Client ID from your app's Settings pageorPaste the Client secret from your app's Settings page: copy the value again from the app’s Settings page in the Dev Dashboard. Check nothing was cut off.
Step 2: Get an access token from Shopify
Shopify rejected the client ID or client secret: copy both again from the app’s Settings page, and check the app is installed on this store (setup step 3). If you rotated the secret, use the new one.Shopify refused the client-credentials grant for this store (shop_not_permitted): the app was created in a different Shopify organization from the one that owns the store. Create the app in the Dev Dashboard of the organization that owns the store, then install it.No Shopify store answered at: the domain is wrong. Check the.myshopify.comdomain.
Step 3: Confirm the store matches the domain
These credentials belong to other-store.myshopify.com, not your-store.myshopify.com: the app is installed on a different store. Enter the domain of the store the app is installed on, or install the app on this store.
Step 4: Check the app’s access scopes
When this step passes, it lists the scopes Shopify granted, for example read_customers,read_orders,read_products.
The app is missing read_products(or another scope): in the Dev Dashboard, add the missing scope to the app’s Access section, click Release, then update the app on your store.
Scopes only take effect from a released version. A version you created before adding a scope needs a new Release. A write_ scope also counts as its read_ scope, but don’t add write scopes: Sporeline never writes to Shopify.
Step 5: Read orders
What you see: steps 1 to 4 pass, step 4 shows read_customers,read_orders,read_products, and step 5 fails with:
Shopify GraphQL error: empty response
Why: Shopify keeps customer data behind a separate layer called Protected Customer Data. This check reads your most recent order and its customer’s name. Until the app has protected customer data access, Shopify answers any query that touches customer data with no data at all, even though read_orders is granted. Sporeline reports that as an empty response.
Fix: grant protected customer data access in Shopify Partners. Follow setup step 5. For a custom app on your own store, access is granted immediately.
Confirm: click Test connection again. Step 5 reads Read the most recent order, or No orders yet; the connection works on a store with no orders.
Not the install screen
Protected customer data is not the permission screen you accepted when you installed the app. That screen (setup step 3) grants the access scopes. Protected customer data is a second, separate consent, in Shopify Partners.
Other step 5 failures:
Shopify denied accessorShopify rejected the access token: the app lost a scope or was uninstalled. Check step 4 above, release a new version if you changed scopes, and make sure the app is still installed on the store.
Step 6: Check the store isn’t connected to another Sporeline account
This step only appears when it fails. A Shopify store can be connected to one Sporeline account at a time.
your-store.myshopify.com is already connected to another Sporeline account: disconnect it in the other account (Settings > Integrations > Shopify, Disconnect), or contact support.
Warnings After a Passing Test
Shopify is not sharing customer names, emails or phone numbers with this app: orders still import, but under guest customers named after the order (“Guest #1001”). In Shopify Partners, check that Name, Email and Phone are selected under Protected customer fields (setup step 5). Stores on Shopify’s Basic or Starter plan may not get this data for custom apps.This store sells inanother currency: Sporeline records Shopify amounts as they are, without converting them.
An Order Doesn’t Appear in Deliveries
Check the Shopify page first. The sync summary counts orders that didn’t become deliveries, such as waiting on variant mapping or test orders skipped. Below it, Orders without a delivery lists each order that needs something from you: the order number and date, why it has no delivery, and what to do.
Unmapped Variants
If none of an order’s lines are mapped, the order waits and no delivery is created yet. It’s listed under Orders without a delivery as Waiting on variant mapping, and its variants appear under Unmapped. Map them under Variant map and click Save variant map. The order imports on the next sync, within 15 minutes, or right away if you click Sync now.
If some lines are mapped, the delivery is created with those lines and an Unmapped items badge. The other lines are added once you map them, as long as the delivery is still Planned or Packed.
Every Line Skipped
If every line on an order is a variant marked Skip, Sporeline creates no delivery for it. The summary counts it as with every item skipped, and it’s listed under Orders without a delivery as Every item is marked Skip, with the skipped items.
- If one of those items is produce, you skipped it by mistake. Untick Skip for that variant, fill in its species, grade and weight, and click Save variant map. Saving makes the next sync check every order without a delivery again, so this one imports within 15 minutes, or right away if you click Sync now.
- If none of them is produce (a gift card bought on its own, say), the order doesn’t need a delivery and you can leave it. To make one anyway, click Create delivery anyway.
Only Custom Items
Custom items are lines added to an order without a product, such as a custom sale rung up in Shopify POS. They have no variant, so they can’t be mapped. They show under Unmapped as “custom item, can’t be mapped”.
- If the order also has mapped lines, its delivery is created without the custom item and shows an Unmapped items badge. Open the delivery, click Edit, and add the item.
- If the order has only custom items, no delivery is created. The summary counts it as with only custom items, and it’s listed under Orders without a delivery. Click Create delivery anyway, then add the items to the new delivery by hand.
Create Delivery Anyway
The button appears on orders whose items are all skipped or all custom. Sporeline reads the order from Shopify again and creates a Planned delivery with its customer and date but no items, flagged Unmapped items. Click Add its items in the message that appears to open the delivery’s edit form. To come back to it later, open the delivery under Deliveries and click Edit; items can be changed until the delivery is Shipped.
An order only ever gets one delivery. Clicking the button twice, or a sync running at the same time, doesn’t make a second one. If creating the delivery fails partway, the order stays in the list as Creating its delivery didn’t finish; click Create delivery anyway again to finish that same delivery. Orders waiting on variant mapping don’t have the button; map the variant instead.
Orders Older Than 60 Days
Shopify only shares the last 60 days of orders. An order without a delivery that’s older than that can’t be read again, so saving the variant map won’t import it and Create delivery anyway reports that Shopify didn’t return it. Create those deliveries by hand under Deliveries.
Outside the Sync Window
The first sync imports the last 7 days. For older orders, next to Import older orders: choose Last 30 days or Last 60 days and click Import. Orders older than 60 days can’t be imported.
Test Orders
Orders paid with Shopify’s Bogus Gateway, or any test payment, are test orders. They’re skipped unless test orders are switched on, and the summary counts them as test orders skipped. Tick Import test orders on the Shopify page, and the next sync re-reads the last 7 days. For older test orders, use Import older orders as well.
Cancelled Before Import
An order cancelled in Shopify before Sporeline first read it isn’t imported. The summary counts it as cancelled before import.
Sync Still Running
A large import can take more than one sync. When the summary says “More orders are waiting; the next sync picks up where this one stopped”, wait for the next automatic sync or click Sync now again. Orders counted as failed are listed with their error and retried on the next sync.
Syncing Products as a Supplier
If you sell supplies on Sporeline and bring your products in from Shopify with Sync Products on your storefront page, syncing again updates the products you already have rather than adding them a second time. That holds when you click it twice, or when the sync runs in two browser tabs at the same moment: each Shopify product stays one listing, and your own settings on it, such as the unit and minimum order, are kept. While one sync is running, another one is turned away with Couldn't sync your products: A pull is already running. Try again in a minute. Wait for the first one to finish, then click Sync Products again and it goes through.
Other Messages
| Message | What to do |
|---|---|
Shopify stopped accepting the saved credentials | Usually the app was uninstalled, its secret was rotated, or it lost a scope. Automatic syncs stop until you reconnect. Check the app is installed, paste the client secret again, and click Connect. |
A Shopify sync is already running for this account | An automatic sync is in progress. Try again in a minute. |
A pull is already running. Try again in a minute. | Supplier storefront: another Sync Products for your account is in progress. Click it again once that one finishes. |
Fill in species, grade and weight (or tick Skip) for: | Those variant rows are half filled in. Complete them, or clear them to leave the variant unmapped. |
Shopify didn't return order #1001 | After Create delivery anyway: the order was deleted in Shopify, or it’s older than 60 days. Create the delivery by hand under Deliveries. |
Related Pages
- Shopify Setup: connect a store step by step
- Integrations: webhooks and other integrations