Shopify Sync · $29 CAD/month
How Shopify Sync works
Keep Shopify as your booking system. Publish workshop products to the offhrs sales channel so Toronto guests can discover you — then they complete booking on Shopify checkout.
What Sync can and can’t do
We can
- ✓Publish Shopify workshop products to the offhrs app for local discovery
- ✓Keep remaining seats in sync from Shopify inventory
- ✓Send guests to Shopify checkout with the session pre-loaded in cart
- ✓Run Sync alone — no Lite or Pro plan required
- ✓Use your partner profile address for map pins and studio location
We can’t
- –Checkout or take payment inside offhrs for synced workshops (that stays on Shopify)
- –Create or edit workshop sessions in the offhrs dashboard as the source of truth — edit and publish products in Shopify
- –Process refunds in offhrs for Shopify bookings — refund in Shopify Admin
- –Replace Lite/Pro: Sync does not unlock native offhrs booking, Stripe Connect ticket sales, or in-app workshop creation
- –Connect directly to third-party Shopify apps (for example Numos) — we only read products and inventory from Shopify itself
Third-party Shopify apps (e.g. Numos)
offhrs Sync does not integrate with Numos or other external apps. If another app writes products, variants, dates, or inventory into Shopify, we can still sync that data — but only because it lives in Shopify. We won’t push availability, bookings, or catalog changes back into Numos (or similar tools). Treat Shopify as the shared source of truth between systems.
Setup checklist
Follow these steps once. After you’re live, publish new workshops to offhrs and edit dates in Shopify Admin.
- 01
Create an offhrs partner account
Sign up with your studio details. You’ll use this account to connect the Shopify install under Sales channels → offhrs.
- 02
Install offhrs from Shopify
In Shopify Admin → Apps (or the Shopify App Store), install the offhrs app. It appears under Sales channels → offhrs. Do not type a shop domain into offhrs — install must start from Shopify so OAuth can complete.
- 03
Connect your partner account
Open Sales channels → offhrs and use Connect to sign in (or create your account) so the shop links to your partner profile. One Shopify shop per offhrs account.
- 04
Start the Shopify Sync trial
In Sales channels → offhrs, choose Start trial for Shopify Sync ($29 CAD/month, 30-day free trial). Approve the plan in Shopify Admin — billing is on your Shopify invoice, not Stripe.
- 05
Publish workshop products to offhrs
On each workshop product in Shopify Admin, open Publishing and enable the offhrs sales channel (not only Online Store). Unpublishing from offhrs removes the listing from the app.
- 06
Give each session a date & time
Each Shopify variant becomes one session on offhrs. Use a Date (or similar) option with a clear datetime — for example August 21, 2026 12:00 PM — or set an
offhrs.starts_atmetafield. Times without a timezone are read as America/Toronto. Variants we can’t parse are skipped (and show as product feedback in Admin). - 07
Sync and go live
In Sales channels → offhrs, tap Sync published products (feeds keep products and inventory updated afterward). Guests see your workshops in the offhrs app and tap Book on Shopify to open a cart permalink and checkout on your store.
Product tips
- ✓One product, many times: use variants for each session time under the same product title — they group as one card with time options in the app.
- ✓Inventory = seats left. When quantity hits zero (or the product isn’t Active), we mark the session fully booked.
- ✓Category defaults to your primary signup category (the first one you picked). Override per product with optional metafield
offhrs.category. - ✓Optional metafields (namespace
offhrs):starts_at,book_url(Shopify cart/checkout URLs only — off-Shopify links are ignored),capacity,duration_minutes,category. Book CTAs use a Shopify cart permalink with channel attribution by default. - ✓Studio address comes from your offhrs partner profile (not the Shopify product) — keep that up to date for map pins.
Date & time formats
Each variant needs a parseable date and time. Date-only values are skipped — we never invent a start time. Times without a timezone are read as America/Toronto.
Recommended
August 21, 2026 12:00 PMAug 21, 2026 12:00 PM
Also accepted
August 21 2026 12:00 PM/Aug 21 2026 12:00 PM2026-08-21 12:00 PM/2026-08-21 12:00/2026-08-21T12:008/21/2026 12:00 PM/8/21/2026 12:0021 August 2026 12:00 PM/21 Aug 2026 12:00 PM- ISO strings with a timezone offset or
Z(parsed as real instants)
Ordinals (21st) and at are fine — e.g. August 21, 2026 at 12:00 PM.
Ready to connect Shopify?
Create your partner account, choose Shopify Sync on the billing step (skip Stripe), then install offhrs from Shopify Admin and manage Sync under Sales channels → offhrs.