SporelineSporeline
Sign InStart free

Getting Started

  • Help Center
  • Getting Started

Operations

  • Dashboard
  • Scan
  • Blocks
  • Batches
  • Recipes

Printing

  • Label Templates

Lab

  • Cultures
  • Cryo Storage
  • Agar Plates
  • Liquid Cultures
  • Trials
  • Strains

Analytics

  • KPIs
  • Data Health
  • AI Insights

Logistics

  • Locations
  • Customers
  • Deliveries

Admin

  • Team
  • Settings
  • Billing
  • API Keys
  • Configuration
  • Enumerables
  • Integrations
  • Notifications
  • Import
  • Brand Profile
  • Products
  • Traceability
  • Compliance
  • Reports
  • Log Transcription
  • Switchboard

Guides

  • Your First Batch
  • Moving Blocks
  • Import from Spreadsheets
  • Lots and Spawn
  • Room Readings
  • The New Sporeline Look
  • Lots on Orders
  • Lot Transactions and Lot Audits
  • The Sterilization Log
  • Reports and Their Numbers
  • Auto-assign Lots and Pick Lists
  • Recipes and Planning a NOC Day
  • Stage Schedules and Due Today
  • Planning
  • Notification Rules
  • QC Checkpoints and Release
  • The Lab: Cultures, Cryo, Plates and Liquid Cultures
  • Traceability and Recall
  • Sporeline: Explore Your Lineage
  • Scanning on the Floor
  • Counts by Scan
  • Shared Handhelds
  • Zebra Handhelds
  • Orders and Packing Slips
  • QuickBooks Customers and Products
  • Accounting Export
  • Site Transfers
  • Raw Materials
  • Optional Features
  • Approve AI Changes
  • Configuration Tabs
  • Harvest Workflow
  • Contamination Alerts and the Weekly Digest
  • Label Printing
  • Team Setup
  • The Free Plan
  • Usage Recording
  • Signing Up and Farmhand on Free
  • Start Your Farm from an AI Assistant
  • Privacy and Your Data
  • Connect an AI Assistant
  • Ask Your Assistant
  • Appearance and Dark Mode
  • API Quickstart
  • Shopify Setup
  • Shopify Troubleshooting
  • Migrate With an AI Assistant
  • Spreadsheet Templates for Importing
  • Photos and Files

API

  • Reference
  • Authentication
  • Rate Limits
  • Error Codes

Shopify Troubleshooting

Fix a failed Shopify Test connection, and find orders that didn't arrive as deliveries.

admin

Shopify 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.
SiteAddressUse it for
Dev Dashboarddev.shopify.comCreating and releasing the app, access scopes, installing, client ID and secret
Shopify Partnerspartners.shopify.comProtected 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.com domain from your Shopify admin (Settings > Domains), for example your-store.myshopify.com. A custom storefront domain won’t work.
  • Paste the Client ID from your app's Settings page or Paste 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.com domain.

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 access or Shopify 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 in another 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

MessageWhat to do
Shopify stopped accepting the saved credentialsUsually 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 accountAn 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 #1001After 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

Try this on your own farm. Free for up to 100 blocks a month.

Start free

© 2026 Sporeline · Built by a mushroom farmer, for mushroom farmers.

iPhone app on the App StoreWhat's newSupportNeed help? Email chase@sporeline.com