Shopify
Connect your store and Workshop runs jobs on it. Draft orders become jobs, finished jobs become orders, paid ones are fulfilled, and the dashboard counts the money. Connected plan.
Workshop doesn't keep its own prices, stock or customers: it uses your Shopify store's. Connected plan.
What you get
| The queue | A draft order tagged as a workshop job (a job group tag, like workshop) waits in the queue. Draft orders made on the POS count too |
| Drop-off | Book a job in, with a deposit charged on the POS. See Drop-off |
| Job sheet | Items, discounts and notes written to the draft. See The job sheet |
| Finishing | The draft becomes an order, payment pending, invoice emailed if you want. See Finishing jobs |
| Auto-fulfil | Paid jobs fulfilled and off the board by themselves |
| Dashboard | Revenue, profit, hours billed, per person and per group |
| Inventory | Stock by location. See Inventory |
| Customers | Found or added in Shopify as you type, phones as +61 |
Connect Shopify
Settings → Integrations → Shopify (owner).
- Type your store (
your-store.myshopify.com, or paste the address from your Shopify admin). - Connect with Shopify.
- Shopify shows what the notjust. Workshop & Cycles app may do. Approve it.
You're back in Workshop, connected. The first sync brings in the last year of orders; the dashboard shows it running.
It's the same app for Cycles: a store connected in one is ready for the other.
What it's allowed to do, and why
| Permission | Used for |
|---|---|
| Orders, all orders | The dashboard's figures; finished jobs become orders; deposits |
| Draft orders | Jobs: made at drop-off, edited on the job sheet, finished into orders |
| Products, inventory, locations | Product search, pictures, cost prices for profit, the Inventory page |
| Customers | Search and add customers at drop-off |
| Merchant-managed fulfilment orders | Fulfilling paid jobs, when auto-fulfil is on |
If Shopify hasn't granted one (say, after the app added a permission), the connection says Not granted: … and what's missing. Press Reconnect and approve.
Set it up
All in Settings → Integrations → Shopify, once connected:
- Job groups, Labour products, Waiting for pickup, Rental repairs and assembly: how the dashboard counts. See Dashboard.
- Tags when a job is finished: tags a finished job's order gets. Tag with the name of whoever finished it (on by default), tags for every job, and tags for particular job titles ("Rental return" gets
rental).
Disconnect
Disconnect removes the app from your store (while Cycles doesn't use it on the same store). The synced history stays in Workshop. Uninstalling the app in Shopify does the same; Workshop then says it's disconnected.
Use your own Shopify app
For a store that already has its own app from Shopify's Dev Dashboard. Everyone else: use Connect with Shopify above.
- In the Dev Dashboard, give your app these Admin API scopes:
read_orders,write_orders,read_all_orders,read_draft_orders,write_draft_orders,read_products,read_inventory,read_locations,read_customers,write_customers,write_merchant_managed_fulfillment_orders. Release the version and install it on the store. - Settings → Integrations → Shopify → Use your own Shopify app instead.
- Enter the store domain and paste the app's Client ID and Client secret (Dev Dashboard → your app → Settings).
- Save and test.
Workshop fetches a fresh token before each one expires, so it stays connected. A pasted Admin API token (older custom apps) also works, but tokens from Dev Dashboard apps expire after 24 hours: use the Client ID and secret instead.
Secrets are stored encrypted and never shown again.
Last updated 24 September 2026