Skip to main content
Plugin map · bookings

Moving WooCommerce Bookings to Shopify without losing a single future appointment.

A booking store carries something a product store never does: commitments that have not happened yet. Customers hold dates, staff hold calendars, deposits are half paid. Shopify has no booking engine in its core, and no booking app we know of imports another platform's bookings. That combination decides how this migration has to be run.

0native booking features on Shopify; every option below is an appMufatech plugin map7
$15–$299per month for booking apps, priced by resources, staff or monthly bookingsShopify App Store456
6booking statuses in WooCommerce Bookings: unpaid, pending confirmation, confirmed, paid, complete, cancelledWooCommerce docs1
CSVexport of every booking with product, resource, persons, start, end, status, customer and order IDsWooCommerce docs2

In brief

  • WooCommerce Bookings models a bookable product with a duration, availability rules with numeric priority, resources (staff, rooms, equipment), person types with their own prices, and six booking statuses; it syncs with Google Calendar.1
  • Every booking can be exported to CSV with its product, resource, start and end, status, customer, order and order item IDs, person counts and cost, and read through the REST API at /wp-json/wc-bookings/v1.23
  • Shopify has no booking engine. Sesami prices by resources ($19 for 5, $129 for 20, $299 for 40 per month), BTA by monthly bookings (free for 10, $25 for 50, $49.95 for 350, $110 for 1,000 with API access) and Easy Appointment Booking by features ($0 to $39 per month).456
  • None of the three listings mentions importing existing bookings. Past bookings migrate as order history; future bookings are re-created in the app, by API where the plan allows it, or by hand, and the WooCommerce calendar stays open until the last of them has been copied.456

What a booking store contains

A bookable product in WooCommerce Bookings is defined by its duration unit and whether blocks are fixed or customer-defined, by availability rules that carry a numeric priority and can cover specific dates, time slots or ranges, and optionally by resources, which the documentation describes as "staff, equipment, venues, or anything you need", and by person types such as adults and children with different costs.1 Pricing can vary by period and by person or resource. A booking itself moves through unpaid, pending confirmation, confirmed, paid, complete and cancelled.1

That is four kinds of data, and only one of them is a product: the catalog of bookable products, the availability and resource setup, the bookings themselves, and the orders that paid for them. A product migration moves the first and the last. The middle two are the work.

What you can export

Bookings → All Bookings has an export with batched processing and a download link. The CSV carries the booking ID, product ID, resource ID, start and end dates, status slug, customer ID (0 for guests), order ID and order item ID, person counts as a JSON object per person type, cost and attendance status, plus customer timezone and the Google Calendar event ID.2 The same data is available through the REST API, where a booking has start, end, status, customer_id, order_id, order_item_id, product_id, resource_id, person_counts, all_day, cost and google_calendar_event_id; the API also lists bookable products, resources and slots.3

Availability rules and resource definitions are product settings rather than bookings, so they come out with the bookable product through the products endpoint, and are rebuilt in the app's own terms.

Booking apps on Shopify

AppPriced byPlansNotableRating
SesamiResources$19 (5 resources), $129 (20), $299 (40, multi-location) per monthAppointments, rentals, classes, reservations; Google Calendar, Shopify POS, Klaviyo; ticketing and check-in44.6, 266 reviews4
BTA Appointment BookingMonthly bookingsFree (10), $25 (50), $49.95 (350), $110 (1,000, API access) per monthAppointments, rentals, tickets, classes; Google, Outlook and iCal sync; deposits and SMS from Premium; staff accounts per plan54.7, 405 reviews5
Easy Appointment BookingFeaturesFree, $15, $29 (multiple events, Google Calendar, Zoom), $39 (waitlist, deposits, Outlook) per monthServices, classes, events, tours; staff portal; intake questions; Shopify Flow64.9, 546 reviews6

From the Shopify App Store listings on 19 Sep 2026; plans change often. Match the pricing axis to your business: a salon with eight staff is a resource count, a tour operator is a bookings-per-month count. vendor-published

How the concepts map

WooCommerce BookingsShopify booking appNotes
Bookable productProduct with a booking widget or an event/service in the appThe Shopify product carries price and checkout; the app carries time
Duration and block typeService duration, slot lengthCustomer-defined durations map to rental-style apps better than appointment apps
Availability rules with priorityWorking hours, blackout dates, per-resource schedulesRebuilt; priorities become rule order in most apps
ResourcesStaff, team members, roomsThe unit Sesami prices on
Person types and costsGroup bookings, ticket types, variantsPer-person pricing often becomes product variants
Booking statusesApp statuses plus order payment status"Pending confirmation" is app-level approval; "unpaid" is a Shopify order state
Google Calendar syncApp calendar syncReconnected in the app; old event IDs are not reused
Deposits and balancesApp deposits, draft orders or partial paymentsHalf-paid bookings need a decision per booking

The future-bookings problem

Past bookings are history and travel with the orders. Future bookings are live commitments, and there is no import path for them: the three listings above describe calendar sync, reminders and deposits, but not importing bookings from another system.456 They have to be re-created, one of three ways.

  • Through the app's API, where the plan includes it (BTA's Business plan lists API access5). A script reads the WooCommerce export and creates each future booking against the migrated customer and product.
  • By hand, from the CSV, when the number of future bookings is small. A salon with 60 appointments in the next fortnight is an afternoon.
  • By letting them run out, honouring existing bookings on WooCommerce while new bookings open on Shopify, and closing WooCommerce once the last old booking is complete. This avoids re-creation entirely but means two calendars for a few weeks.

Freeze the calendar before you copy it

Whichever route, stop new bookings on WooCommerce at a fixed moment, export, then re-create. Copying while the calendar is still open is how a slot gets sold twice.

Cutover plan

  1. Count bookings by status and by date: how many are in the future, how many are pending confirmation or unpaid, how many carry deposits.
  2. Pick the app on the pricing axis that matches your model, and check it can express your availability rules and person types before anything is migrated.
  3. Migrate products, customers and orders as usual, so every future booking has a customer and a product to attach to.
  4. Rebuild availability, resources and services in the app, and reconnect calendar sync.
  5. Freeze bookings on WooCommerce, export, re-create the future ones by API or by hand, and reconcile the count.
  6. Tell customers with future bookings that their appointment stands and where to manage it now.
  7. Keep WooCommerce read-only until the last migrated booking has passed, as the record of what was promised.

Future bookings are counted, copied and reconciled, not left to chance.

  • Bookings counted by status, date and deposit before you commit
  • App chosen on the axis you actually pay for
  • Availability, resources and person types rebuilt
  • Future bookings re-created and reconciled to the export
  • Customers with open bookings told what changes
  • Preview before you pay
Scan my store freeThe scan detects WooCommerce Bookings automatically.

What does not transfer

  • Booking IDs and Google Calendar event IDs. New bookings get new identifiers; keep the export as the cross-reference.
  • Availability rule priorities as such; most apps express the same outcome with ordered rules or blackout dates.
  • "Pending confirmation" as a state on the order. Approval moves into the app; the Shopify order is simply paid or unpaid.
  • The REST API's create-booking endpoint is marked incomplete in WooCommerce's own documentation, so the WooCommerce side is export-only in practice.3

Frequently asked questions

Does Shopify have built-in bookings or appointments?

No. Booking on Shopify is provided by apps such as Sesami, BTA Appointment Booking and Easy Appointment Booking, which add services, availability, staff or resources and calendar sync on top of Shopify products and checkout.

Can existing bookings be imported into a Shopify booking app?

None of the three listings we compared describes importing bookings from another platform. Future bookings are re-created through the app's API where the plan includes one, by hand from the WooCommerce CSV export, or by honouring them on WooCommerce until they run out.

What does the WooCommerce Bookings export contain?

Booking ID, product ID, resource ID, start and end dates, status, customer ID, order ID and order item ID, person counts as JSON, cost and attendance, plus customer timezone and Google Calendar event ID. The same fields are available through the REST API at /wp-json/wc-bookings/v1.

How are booking apps on Shopify priced?

On different axes. Sesami charges by resources, from $19 per month for 5 to $299 for 40. BTA charges by monthly bookings, from free for 10 to $110 for 1,000. Easy Appointment Booking charges by features, from free to $39 per month. Pick the axis that matches how your business grows.

What happens to deposits and half-paid bookings?

Each one needs a decision: settle the balance on WooCommerce before cutover, or re-create the booking on Shopify with the remaining balance as a draft order or the app's deposit feature. Counting them first avoids surprises.

What about resources like staff and rooms?

They are rebuilt in the app as staff, team members or rooms with their own schedules. Sesami prices per resource, so the count matters for the plan.

Sources

  1. WooCommerce. WooCommerce Bookings documentation: bookable products, availability rules, resources, persons, statuses, calendar. plugin vendor
  2. WooCommerce. Import and export bookings: CSV columns and rules. plugin vendor
  3. WooCommerce. Bookings REST API reference. plugin vendor
  4. Sesami Inc. Sesami Booking Platform, Shopify App Store listing, 19 Sep 2026. vendor-published
  5. BTA Commerce. BTA Appointment Booking App, Shopify App Store listing, 19 Sep 2026. vendor-published
  6. Servicify. Easy Appointment Booking App, Shopify App Store listing, 19 Sep 2026. vendor-published
  7. Mufatech. WooCommerce → Shopify plugin map, dataset v3.

Mufatech Studio migrates stores to Shopify. Plan availability, limits and plugin behaviour are quoted from the linked documentation as of September 2026 and can change; check the source before acting on a limit.