Your bookings,
as Shopify orders.
Opencals is a native Shopify app that turns appointments into real orders — paid through your own checkout, taxed by your own rules, sitting in the same admin as everything else you sell. No second store, no second payment processor, no CSV in the middle.
Or find Opencals on the Shopify App Store. Free to install, billed through Shopify.

Hair Coloring — Partial Color
Thu 12 Nov · 10:30–12:00 · HAAR — Chelsea

Hair Coloring — Partial Color
- from
- 2026-11-12 10:30
- staff
- lena-voss
Three surfaces
It shows up where Shopify already is
Most booking apps give you one iframe and leave the rest to you. Opencals installs as three Shopify extensions, so bookings appear in the admin, on the storefront and in customer accounts.
In your admin
An embedded app, not a separate tool
Services, staff, locations and the calendar live inside the Shopify admin, in the same navigation as your products and orders. Nothing to bookmark, nothing to teach the team twice.
- Embedded Shopify admin app
- Products you already sell become bookable
- Orders, refunds and customers stay where they are
On your theme
A booking block for any theme section
A theme app extension drops a booking button onto any product or section — no Liquid to edit. Pick the product, pick the wording, decide whether to show the duration and the next free slots.
- 14 button labels, or full-screen booking
- Optional next-available-slots preview
- Themed with your own CSS, not ours
In customer accounts
Customers manage bookings next to their orders
A full-page extension inside Shopify customer accounts lists every upcoming and past appointment, and lets customers reschedule, cancel, book again or leave feedback — without a second login to learn.
- Reschedule and cancel, self-service
- Book again from a past appointment
- No extra password for your customers
One booking, one order
Every appointment is a real Shopify order
This is the part other booking apps leave out. A booking here isn't a record in a side system that emails you — it's an order object in Shopify, with money against it.
- 01
The customer picks a slot
On your theme, in the full-screen booking flow, or on an Opencals storefront. The slot is held for them while they check out, so nobody else can take it.
- 02
They pay in your Shopify checkout
The booking goes into the normal Shopify cart and checkout, carrying the appointment on the line item. Your gateways, your taxes, your discount codes, your Shop Pay.
- 03
Shopify creates one real order
Not a draft, not a placeholder: one order per booking, in the admin, with the appointment time and staff member attached to the line item.
- 04
Payments and refunds stay in step
Shopify tells Opencals when the order is paid and when money is refunded. Refund from the Opencals side and it is pushed back to the Shopify order instead of drifting apart.
Because the order is Shopify's, everything downstream of it keeps working: your accounting app, your reporting, your fulfilment rules, your customer timeline. A booking stops being the one thing in your business that lives outside the numbers.
What syncs, exactly
No hand-waving about “two-way sync”
Every integration page on the internet says everything syncs both ways. Here is the actual list, including the things that don't — because knowing where a field lives is what stops a Monday-morning surprise.
Variant prices
Shopify → OpencalsChange the price on the Shopify variant and the linked service follows automatically.
Deleted products and variants
Shopify → OpencalsRemove a variant or a product in Shopify and the service that pointed at it is removed too.
Orders and payments
Shopify → OpencalsShopify tells us the moment an order is created and when it's paid, down to each transaction.
Refunds
Both waysRefund in Shopify and it lands on the Opencals order. Refund in Opencals and it's issued in Shopify.
Customers
Both waysBooking customers are created in or matched to your Shopify customer list, and Shopify customers can book without being re-entered.
Store details and plan
Both waysShop currency and details follow Shopify; your Opencals plan is charged as a Shopify app subscription.
Managed in Opencals only
Shopify has no concept of these, so they're edited in Opencals and never overwritten by a product update. The Shopify variant is the price tag; Opencals is the service behind it.
- Service names, descriptions and images
- Durations, buffers and schedules
- Staff members, roles and their calendars
- Locations, capacity and group sizes
You choose which variants are bookable with a flag on the variant itself, so a store can sell shampoo and sell appointments from the same catalogue.
The hard part
Shopify's cart doesn't know about time
A t-shirt in a cart can wait a week. A 10:30 appointment can't — and two customers can reach checkout holding the same slot. Opencals ships a Shopify checkout validation function for exactly this.
The slot is held from the moment it goes in the cart, for a window you control.
If the hold expires, Shopify itself refuses to complete the order and tells the customer to book again.
It runs inside Shopify, as a checkout function — not as a script on your theme that a customer can skip.
Your reservation for this booking has expired. Please remove it from your cart and book again.
Blocked by Shopify, not by a warning the customer can dismiss.
Beyond a calendar
The scheduling engine under the order
Shopify is excellent at selling a thing. Selling time is a different problem, and it's the one Opencals was built to solve — which is why the booking logic is ours and the commerce stays yours.
Staff, not just stock
Per-person calendars, working hours, days off and skills. Customers pick who they see; availability is worked out from that person's real schedule.
Multiple locations
Different opening hours, different staff, different rooms per site — with the same catalogue behind them.
Durations Shopify can't express
Hour-long treatments, half-day rentals, multi-day stays, classes with a capacity. Buffers between bookings, lead times and cut-offs.
Add-ons and deposits
Upsell extras at checkout, take a deposit instead of the full price, and charge no-show fees on your own terms.
More than one store
Several Shopify stores, or a Shopify store plus a standalone booking site? Opencals is multi-store by design: separate services, staff and calendars, one place to run them from.
How multi-store worksOr build the front end yourself
Agencies and developers don't have to live inside the theme block. The same booking engine has a public API, a typed SDK on npm and MIT-licensed Next.js templates — and free development stores to build against.
Developer docs and templatesQuestions
Before you install
Do I need a separate payment processor?
No. Bookings go through your normal Shopify cart and checkout, so they're paid with the gateways you already accept — Shopify Payments, Shop Pay, PayPal, whatever is enabled. Taxes, discount codes and currencies are Shopify's, not ours. You only need Stripe if you also run a standalone Opencals booking site alongside the Shopify store.
Does a booking create a real order or a draft?
A real order, one per booking, in your Shopify admin — never a draft order or a placeholder. The appointment time and staff member travel on the order's line item, and the order's payments and refunds are mirrored back into Opencals.
What happens when I change a price in Shopify?
The linked service picks up the new price automatically. If you delete a variant or a product in Shopify, the service that pointed at it is removed too. Service names, durations, staff and schedules are managed in Opencals and aren't overwritten by Shopify product edits.
Can two customers book the same slot?
No. The slot is held as soon as it's added to the cart, for a reservation window you set. If the hold expires before the customer pays, Opencals' Shopify checkout validation function stops the order from completing and asks them to book again — enforced by Shopify, so it can't be bypassed.
Can my staff work from the Shopify admin?
Owners and managers can run the whole thing from the embedded app. Staff use app.opencals.com instead, because Shopify has no per-user permissions — all role-based access lives in the Opencals dashboard, where a stylist sees their own calendar and nothing else.
Where do customers see their bookings?
In Shopify's own customer accounts. A full-page extension lists their upcoming and past appointments and lets them reschedule, cancel, book again or leave feedback — no separate login, no extra password.
I run several Shopify stores. Does that work?
Yes. Each Shopify store links to its own Opencals store with its own services, staff and calendars, and they're all managed from one Opencals account and one login.
What does it cost on Shopify?
The app is free to install and your plan is charged as a Shopify app subscription, on the same invoice as the rest of your apps. Pay per booking with no base fee, or take a monthly plan with an included allowance — see the pricing page for current numbers.
Still deciding? The Shopify integration feature page goes through setup step by step, and the installation guide walks a first store from install to first booking.
Start taking bookings this afternoon.
Install the app, mark a product as bookable, drop the booking block on your theme. Your first appointment arrives as an order like everything else you sell.
Or find Opencals on the Shopify App Store. Free to install, billed through Shopify.