Selling services on Shopify: the complete setup guide

Stanislav TyshchenkoTutorialMay 24, 2026
Selling services on Shopify: the complete setup guide

Shopify is built for products that ship in boxes — but a large share of the businesses installing it today don't ship anything. They sell time. A photographer sells a half-day shoot. A yoga studio sells a 60-minute class. A consultant sells an hour on a Zoom call. A kayak rental sells four hours on Saturday afternoon. Shopify can sell all of these well, but only with the right setup on top of it.

This guide walks through that setup end to end. By the time you finish reading, you'll know exactly how to turn a Shopify store into a service business — what Shopify handles natively, what it doesn't, which decisions to make in what order, and how to ship a real booking flow without scaffolding around Shopify's limits. I built Opencals, the booking platform mentioned throughout, but the structure applies regardless of which booking app you ultimately install.

Selling services on Shopify works once you accept the split: Shopify owns the customer, the cart, the payment, and the brand. The booking app owns the calendar, the staff, the availability, and the appointment data. Setup is the work of telling each layer what it owns and getting them to talk cleanly.

What Shopify gives you out of the box

Shopify already does a lot of what a service business needs — it's just not labeled that way in the docs. Before installing anything else, it's worth being precise about what's already there.

What works without a booking app

Shopify's product editor can create service products with no shipping requirement. Shopify Payments and Shopify Checkout handle the transaction. Customer accounts, discounts, abandoned cart recovery, email notifications, and order history all work the same way for a service product as for a physical one. Themes display service products in the storefront grid alongside any retail items.

What doesn't work without a booking app

There is no date or time selector at checkout. No availability calendar. No staff assignment. No way to prevent the same slot from being sold to two customers. No multi-day or per-hour pricing. No buffer time between appointments. No rescheduling flow for the customer. None of the service-business logic exists in core Shopify — it's all in the booking layer you add.

The reason this matters: people often assume Shopify is too retail-shaped for services and look at platforms like Mindbody, Vagaro, or Acuity instead. That's the right call only if you don't already use Shopify. If you do — or want to — adding a booking app is faster, cheaper, and keeps everything in one customer record and one payment system.

For a deeper look at the available booking apps, see the comparison of Shopify appointment apps. This guide focuses on the setup itself, not the app choice.

The setup, end to end

Eight steps. The first three are pure Shopify. Steps four through seven are the booking app layer. Step eight is going live.

1

Set up the Shopify store basics

Create the store, choose a plan, configure Shopify Payments, and confirm the storefront theme renders correctly. Most service businesses use a clean theme like Dawn, Sense, or Refresh — they handle a service-product card as well as a retail one.

2

Create service products in Shopify

Add each service as a product with no shipping required. Set the base price, write the description, upload imagery, and assign it to a collection like 'Services' or 'Bookings'. This is what customers will see in the storefront before the booking step.

3

Decide what the URL structure looks like

Decide whether services live under /products, in a dedicated /services collection, or under a separate /book landing page that links into the booking flow. Whichever you choose, set the navigation to match.

4

Install a Shopify booking app

Install a native Shopify booking app — Opencals, Tipo, Sesami, or Cowlendar. The app embeds inside Shopify Admin, reads the service products you created, and adds the booking widget on top of them.

5

Configure staff, locations, and schedules

Inside the booking app, add staff members (if any), define locations (physical address, online via Zoom, or in-home), and set weekly working hours per staff member. Assign staff to specific services so customers only see eligible providers.

6

Configure the booking widget on each service product

Tell the booking app which Shopify products map to which services. The widget appears on the product page, customers pick a date and time, and the booking attaches to a Shopify order when they check out.

7

Set up deposits, cancellation, and notifications

Decide whether customers pay in full or a deposit at booking, what your cancellation window is, and what email reminders go out. Most apps handle this in one config panel per service.

8

Test, then go live

Run real test bookings end to end from an anonymous browser. Confirm the order appears in Shopify, the booking appears in the staff calendar, the customer receives the confirmation email, and the slot becomes unavailable to the next visitor. Then take down the password and launch.

The rest of this guide goes step by step through the parts that aren't obvious.

Step 1–3: Shopify-side setup

Pick the right Shopify plan

Shopify's Basic plan ($29/mo at the time of writing) is enough for a service business that's just starting out. You only need to step up to Shopify ($79) or Advanced ($299) once volume justifies the transaction fee reduction or you need the more advanced reporting. Don't overbuy on day one.

Tip

Shopify Payments is the cheapest way to take cards on Shopify — no third-party gateway fee on top of the card cost. Set it up before you publish the store. If you take deposits, this matters; every percentage point counts on the $20–$50 deposit range typical of service bookings.

Create service products the right way

In the Shopify product editor, three settings make a product behave like a service rather than a physical good:

1

Uncheck 'This is a physical product'

Hides shipping fields, removes the address requirement from checkout, and skips weight calculations. Without this, customers can be blocked at checkout by an invalid shipping zone for a service that doesn't need shipping.

2

Set inventory tracking off

A service slot isn't a stocked unit. The booking app manages availability based on the calendar, not on Shopify's inventory counts. Leaving tracking on causes confusion: customers see 'in stock' or 'sold out' that doesn't match the actual booking calendar.

3

Use the booking-app product type or tag

Booking apps typically use a Shopify product type or tag (Opencals uses 'opencals-service') to recognize which products they should attach a calendar widget to. Apply this to every product that should be bookable, and only to those.

URL structure for services

Three common patterns. Pick one before you start linking from your menu:

URL patternWhen to use itTrade-off
/products/[service-name]Default — works with no extra configServices live alongside retail products in the standard Shopify product URL spaceLess SEO-distinct from physical products if you sell both
/collections/services + /products/[service]Stores selling both retail and servicesCustomers can browse a dedicated services hubTwo clicks to a bookable product instead of one
/book or /pages/book-nowService-led storesStrong 'Book' call-to-action that links into the widget flowRequires a custom page section and clearer navigation

Step 4: Install the booking app

This is where most setup guides hand-wave. The choice matters because the booking app determines what your business can do for the next year or two. The four Shopify-native options worth installing in 2026:

The full comparison — including which one fits each business type — lives in the ranked Shopify appointment apps post. For the rest of this guide, the screenshots and exact field names assume Opencals, but the structure of every step applies to all four.

Step 5: Staff, locations, and schedules

This is where service businesses diverge from product stores most sharply. A retail store has one place (the warehouse) and one schedule (24/7 online). A service business has staff with individual hours, locations with their own opening times, and services that are only valid certain days. Getting this layer right prevents the most common service-business problem: customers booking slots you can't actually deliver.

Staff

Add each person who delivers a service as a separate staff member. Even if you're solo, create yourself as a staff member — it makes adding a second person later painless. Per staff member, configure:

  • Weekly working hours (Monday 9–5, Tuesday 9–5, etc.)
  • Days off (vacations, training, sick days — blocks all bookings immediately)
  • Which services they perform (a colorist books only color, not massage)
  • Time zone (matters if you have remote staff or international customers)

Locations

Most service businesses have one of three location types, and good booking apps support all three:

Note

Physical — a salon, clinic, studio, or office with an address. Online — a Zoom or Google Meet call, with the meeting link generated automatically and emailed with the booking confirmation. In-home — the customer's address; no fixed location, useful for mobile services like in-home massage, photography on site, or rental delivery.

If you run more than one location, set each one's opening hours separately. The customer picks the location first; the calendar then shows only the staff and slots available at that location.

Schedules

The third layer. Even if a staff member is available Monday–Friday 9–5, a specific service might run only Tuesdays at 6 PM (a recurring evening yoga class) or only May–September (a seasonal outdoor service). Schedules let you express that.

Step 6: Connect the widget to each service product

For each Shopify service product, tell the booking app: this product is service X, the booking widget should appear here, and bookings on this widget should attach to a Shopify order for this product. Three things to confirm during this step:

1

The booking widget renders on the product page

Open the live product page in an anonymous browser. The date picker and slot list should appear without breaking the theme. If the widget is hidden under the fold, move it above the 'Add to cart' button in your theme editor — the booking flow should drive the conversion, not the cart button.

2

Picking a slot updates the cart

Selecting a date and time should add the service variant to the cart with the slot information attached. Confirm this by checking the cart drawer or cart page after picking a slot.

3

Checkout creates a Shopify order with the booking attached

Run a real $0.50 test booking using Shopify's test mode (if enabled) or a real card you can refund. The order in Shopify Admin should show the customer, the service product, and a line note with the booking date, time, and any extra checkout questions you configured.

Step 7: Deposits, cancellations, and notifications

The defaults here are usually wrong for service businesses. Three settings to make explicit:

Deposits

Charging the full service price upfront removes no-shows almost entirely but increases checkout friction. Charging nothing makes booking frictionless but invites no-shows. A deposit — fixed amount or percentage — is the middle ground most service businesses end up at. Set it per service: a $300 photo shoot might take a 25% deposit; a $20 yoga drop-in takes the full $20 at booking.

Cancellation window

The customer can self-cancel up to N hours before the appointment. Past that window, cancellations require contacting the business. Common settings: 24 hours for appointments, 48 hours for higher-value services, no self-cancellation for non-refundable bookings.

Notifications

At minimum: confirmation email at booking, reminder email 24 hours before, follow-up email after. Each is configurable per service. SMS reminders add measurable show-up rate on low-deposit bookings but cost per message — turn them on for high-value services first.

Test the no-show case

Book a test appointment, then don't show up. Confirm the system actually marks it as a no-show (rather than completed), the deposit handling matches your policy, and the customer receives whatever follow-up email you configured for no-shows. Most service businesses discover gaps in this flow only after the first real no-show — it's the easiest part of setup to test before launch.

Step 8: Going live

Three final checks before you take the password off the storefront:

Pros

  • Booking widget renders on every service product page in an anonymous browser
  • A test booking creates a Shopify order, a calendar entry, and a confirmation email
  • The booked slot disappears from availability for the next visitor
  • Customer can see and reschedule the booking from their Shopify customer account
  • Staff calendar in the booking app shows the appointment in the right time zone

Cons

  • Don't launch without running at least one full test booking under load
  • Don't launch without verifying refunds work end to end — most issues surface here
  • Don't launch without confirming the deposit charge appears in Shopify Payments correctly

Once those eight steps work, the storefront is ready. The first week of real bookings will surface small things to tune — confirmation email copy, the description on a specific service, the layout of the widget on mobile — but the architecture is set.

Where service businesses get stuck

Five patterns I've seen repeatedly:

What this setup actually unlocks

Once Shopify and a booking app are wired up together, a service business gets:

One checkout

Services and products in the same cart

One customer

Bookings and orders in one record

One payment system

Shopify Payments handles deposits and refunds

One brand

Theme, domain, and email all consistent

That's the case for Shopify over a dedicated booking platform: if Shopify already does the rest of your business, the booking layer plugs in without splitting your customer data, your reporting, or your brand. The trade-off is fewer CRM features than Mindbody or Vagaro give you out of the box — but for most service businesses, that's an acceptable trade for the unified customer experience.

Where to go next

FAQ

Frequently Asked Questions

Early Access — 3 Months Free

Ready to transform your service business?

Join 150+ businesses already using Opencals. Get 3 months completely free with all features unlocked.

No credit card required
Setup in 10 minutes
Cancel anytime