Help center

Every screen in the app, explained.

Reference articles for merchants running 1-click Appointment Booking inside Shopify Admin. The Support tab in the app links straight into the article you need.

Getting started

Getting started

From an empty install to a published booking page on a live product.

Launch your first booking page in five guided steps

From service basics to publish, in one sitting

The app opens on Publish your first booking page, a five step wizard. Each step unlocks only when the previous one is complete, so you can work top to bottom without guessing what is missing.

  1. Review setup. A summary of the setup the app generated for you, with Change, Review and Edit buttons that jump to the step that owns each piece. Choose the appointment format (1:1 appointment, class or workshop, pop-up event, deposit service) and the booking type (free booking or Shopify checkout).
  2. Service and product. Confirm the linked Shopify product, the service name, capacity per slot, appointment length (15, 30, 60 or 120 minutes) and whether slot start times should maximize available bookings or start only at fixed intervals.
  3. Availability. Choose a weekly service or a one-off pop-up date. Weekly defaults to Monday to Friday, 9:00 to 17:00, with the weekend closed. You must tick the confirmation that you reviewed the recommended hours for this store.
  4. Payment and emails. Pick Book without payment or Pay through Shopify, then confirm the customer confirmation email and the merchant booking alert. Both are on by default. Reminder and follow-up emails are shown here but are not part of the first launch.
  5. Preview and theme. The app verifies theme status, shows a completion checklist and enables the publish button.

The primary button relabels itself as you move: Continue to service, Continue to availability, Continue to payment & emails, Continue to preview & theme, then Publish booking page.

Connect a Shopify product to your booking service

Why the booking button lives on a product page

Bookings ride on your existing catalog. The booking widget replaces the normal add-to-cart path on the products you link, so customers stay on your store and you keep one product record instead of a parallel catalog.

There are two ways to link a product in step 2 of the wizard:

  • Change product opens a Search active products panel. Pick an existing active product and the app links it. In paid mode you also pick the variant, and the app captures that variant's authoritative price and currency.
  • Create dedicated test product creates a new draft product in your store. You must tick the confirmation that this creates a real draft product. The call runs once and never retries automatically.

Two rules to know:

  • A product the app creates is a draft. You cannot publish the booking page until you set that product to Active in Shopify Admin. The app gives you a direct link to do it.
  • One booking page can cover between one and five Shopify products.

Once a booking page is published, its linked products are locked. Pause the booking page first, change the products, then republish. If you try to change them while the page is live, nothing is saved and the app tells you to pause first.

Publish your page and verify the storefront button

The checks to run right after publishing

Publishing sets the booking page to active. The app refuses to publish unless three things are true: the customer preview is valid, the booking widget is set to visible, and the theme app embed or calendar block is active on your published theme.

Step 5 shows a completion checklist covering:

  • Shopify product selected
  • Customer preview generated
  • Theme app embed or calendar block active
  • Payment requirements verified

Three controls sit under the checklist. Open Theme Editor jumps to the right theme setting. Open linked product preview opens the storefront product page so you can see the real widget. The Repair checkout validation & retry button re-runs the checks after you fix something.

Verification reads live Shopify state. A deep link alone does not prove the embed is on, so enable it, save the theme, then retry. After publishing, the app switches to a post-launch view with a View storefront link, and the calendar and reports fill in as bookings arrive.

Understand booking pages and plan capacity

What counts against your plan and what does not

An active booking page is one published booking page. That is the unit your plan limits. There are exactly two plans:

LimitFree, $0.00 per monthPro, $1.00 per month
Active booking pages1100
Staff resources125
Locations110
Paid booking through Shopify checkoutNot availableAvailable
Booking history in views and exportsLast 90 daysUnlimited

Bookings themselves are unlimited on every plan and are never metered or charged per booking. One booking page can span up to five Shopify products and still counts as one page.

When you hit a limit the app returns a plan limit message and refuses the new item. Existing setup and bookings stay exactly as they are. Moving from Pro back to Free keeps the staff resources and locations you already created rather than deleting them, and your history is retained rather than deleted, even though the Free plan only shows the most recent 90 days. Booking pages are checked when you publish, so a page you take offline on Free cannot be published again while you are over the one page limit.

Billing runs through Shopify. Start an upgrade from Billing inside the app, approve it in Shopify, and the app refreshes your capacity once Shopify confirms.

Storefront and theme

Storefront and theme

Controlling how and where the booking calendar appears to customers.

Turn the theme app embed on or off

The one theme editor switch the booking button depends on

Find this under Settings, Extensions and widgets. The app embed turns on the booking calendar across your theme. The switch itself lives in the Shopify theme editor, not in the app. The app reads its status and gives you a deep link.

Two controls sit on the card: Open theme editor and Re-check status. When it is on you see confirmation that the booking app embed is active on your published theme. When it is off you are told to open the theme editor, turn on the app embed, and save.

Without the embed, two things break. Publishing is blocked from the wizard, and the booking button does not render on the product page. If the button is missing on a live store, check this first.

Switching themes does not carry the embed across. Re-enable it on the new theme and re-check status.

Match the calendar to your store's look

Locale, time format, week start, and timezone

Two separate panels control appearance. Do not confuse them.

Formatting lives in the availability editor:

  • Customer-facing language: English (United States), English (United Kingdom), Español, Français, Deutsch.
  • Time format: 12-hour or 24-hour.
  • Booking timezone: the full timezone list, defaulting to your browser's zone.
  • Week starts on: Monday, Sunday or Saturday.

Storefront appearance in Settings controls the visual treatment:

  • Booking widget: visible or hidden.
  • Accent color: the color used by the picker.
  • Intro text: up to 180 characters above the calendar.
  • Button label: up to 40 characters, default Book appointment.

Formatting changes save with Save changes; appearance changes save with Save storefront.

Show or hide the booking widget without unpublishing

Pause the storefront while keeping your setup

There are two independent switches, at different scopes.

  • Booking widget (per booking page). In Settings, Storefront appearance, set it to Hidden. Existing bookings are unchanged. A booking page cannot be published while its widget is hidden, so set it back to Visible before publishing.
  • Storefront visibility (whole store). In Settings, General. This is the store-wide switch: "Turn appointment booking on or off across your whole storefront." The button reads Disable booking or Enable booking. While it is off, customers cannot start new bookings anywhere, but existing appointments, booking pages and reports are all kept.

Use the store-wide switch for a holiday closure or an incident. Use the per-page widget setting when you want one service off the storefront while others keep running.

Block specific dates from the storefront calendar

Holidays, closures, and one-off exceptions

The availability editor has a Date exceptions block: "Close a holiday or replace the normal hours for one date." Pick a date, then choose Closed or Use different hours, and press Add.

  • Closed removes that date from the storefront calendar entirely.
  • Different hours replaces the normal weekly hours for that one date only.
  • Past dates are rejected. Adding an exception for a date that already has one replaces it.

There is also a separate Blackout start and Blackout end pair in the availability defaults, which blocks a continuous range rather than a single day. Leave both blank if you are not using a range.

Staff working hours follow each staff member's weekly schedule template. They do not automatically reflect one-off date exceptions, so check both if a date is still bookable when you expected it to be closed.

Bookings and calendar

Bookings and calendar

Running the day-to-day operation from Shopify Admin.

Read the merchant calendar in week and day views

Spot busy blocks and open capacity at a glance

The Calendar screen shows a time grid with an hour axis. Week is the default view and shows seven day columns starting Monday. Day shows a single column. The arrows move one day in Day view and seven days in Week view, and Today jumps back to the current range.

Above the grid you see the appointment count for the visible range and the booking timezone. Every time on this screen is rendered in that timezone. Day headers show the weekday and date, except today's column, which reads Today. Under each header sits the appointment count for that day, or Open when the day is empty.

Each appointment card shows the time range, the service name and the location, or "Location not specified" when no location is set. Click a card to open the appointment details dialog: customer, service, location, when it was booked, start and end. If the appointment was moved, the dialog also shows the original appointment time and when it was rescheduled. Cancelled appointments show their cancellation time.

The calendar shows appointments in every status, including cancelled ones. Open the appointment to check status before acting on it.

Create a booking for a customer yourself

Phone and walk-in bookings from the admin

The Manual booking screen creates an appointment using the same availability, capacity and conflict checks as the storefront picker. Fill in the booking page, location, customer email, whether to send a confirmation, and an optional intake answer, then pick a date and an available time and press Create booking.

What happens on save:

  • The booking is created with status confirmed.
  • The customer gets a confirmation email only if you chose Send confirmation and the confirmation email is enabled for that booking page. Choosing Do not email creates the appointment silently.
  • No merchant alert email is sent for manual bookings. You made the booking, so the app does not notify you about it.

Availability is checked again at the moment you press create, so a slot that filled up while you were on the screen is refused rather than double-booked. Required intake questions must be answered.

The manual booking form shows only the first intake question. If your booking page has two or more required questions, the form cannot satisfy them and the booking will be refused. Take those bookings through the storefront picker instead, or temporarily reduce the required questions to one.

Manual booking works on free booking pages only. Booking pages set to Shopify checkout cannot be booked manually, because a paid booking is only created after Shopify confirms payment.

Reschedule or cancel an appointment cleanly

What the customer sees and which emails go out

Open a booking and use Reschedule or Cancel booking in the action row.

Cancelling asks you to confirm, then releases the appointment time and emails the customer. Rescheduling loads current availability and you pick the new slot, and the customer is emailed. You get a copy of both when the merchant alert switch is on and a store contact address is on file. The app keeps the original start and end time on the booking record the first time it is moved, so you can always see where the appointment began.

Customers can do both themselves. Confirmation, reminder and reschedule emails carry a secure manage link with an expiry date printed in the email. That link opens a page where the customer can pick a new time, with their current slot shown but not selectable, or cancel outright. These links are single-use and only expose the action they were issued for.

Paid bookings tied to a Shopify order cannot be cancelled or rescheduled inside the app. Cancel or refund the order in Shopify Admin first. The app does not perform outbound Shopify order or refund actions, and the appointment capacity stays reserved until Shopify sends the matching cancellation or refund event.

Track attendance with check-in and no-show

Keep your reports honest about who showed up

The booking detail has Check in and No-show buttons. Each stamps a timestamp on the booking and shows it as a status pill. You can filter the bookings list by Checked in or No-show, and there is a Hide checked-in toggle to clear finished appointments out of the list.

Rules worth knowing:

  • Pressing the same button twice is harmless. Switching a booking from checked in to no-show, or the reverse, is refused. Correct it through support if you marked the wrong one.
  • The buttons are disabled once a booking is cancelled, refunded, checked in or marked no-show.
  • Marking either status sends an attendance email to the customer, and a matching alert to you when the merchant alert switch is on and a store contact address is on file.
  • Attendance is blocked on paid bookings bound to a Shopify order, the same as cancel and reschedule.

The Reports screen does not show check-in or no-show figures yet. It reports confirmed, cancelled, rescheduled and Shopify-attributed bookings only. To count attendance today, filter the Bookings list by Checked in or No-show and read the count, or download the bookings CSV and total the status column, which carries checked_in and no_show per row. Behind the reports data a checked-in booking counts as confirmed as well as checked in, and a no-show is excluded from the confirmed total, so the confirmed number you see already includes everyone who turned up.

Export bookings as CSV or calendar ICS

Take your data into spreadsheets or calendars

Both exports are in two places. On the Bookings screen they are Export CSV and Export calendar (ICS). Under Settings, in the Data and privacy row, the same two downloads are labelled Download bookings CSV and Download calendar ICS.

Bookings CSV has one row per booking with these columns: booking id, shop domain, config id, service name, location id, location name, customer email, starts at, ends at, status, Shopify order GID, Shopify order name, payment source, attributed revenue cents, attributed currency, intake answers as JSON, created at and updated at. Every status is included, cancellations among them.

Calendar ICS produces a standard calendar file you can subscribe to or import. Each event carries the start, end, service name as the title, the location when set, and a description with the customer email and status. Cancelled and refunded bookings are left out of the calendar file.

Both exports respect your plan's history window, so on the Free plan they cover the most recent 90 days.

The Reports screen has its own separate CSV downloads for the report you are looking at and for your most valuable customers.

Payments and refunds

Payments and refunds

How money moves, and where the app hands off to Shopify.

Choose free booking or paid booking mode

When to charge at booking and when not to

Payment mode sits in the service settings and has exactly two values:

  • Free booking: no customer payment collected. The appointment confirms the moment the customer picks a slot. The storefront button reads Confirm appointment. You can collect payment separately however you already do it.
  • Paid booking: collect payment through Shopify checkout. The slot is held, the linked variant goes to the cart, and the appointment confirms after Shopify reports payment. The storefront button reads Continue to secure checkout.

Paid mode requires the Pro plan, a linked product and variant, an amount above zero and a valid currency. The charge is the linked Shopify variant's current price, which the app treats as authoritative and shows read-only in the app.

Paid mode also changes what you can do in the admin: manual booking is unavailable, and local cancel, reschedule and attendance are disabled once a Shopify order is attached.

Pause an active paid booking page before changing its product or its payment mode.

Take a deposit now and collect the balance later

Fixed and percentage deposits explained

Deposits apply to paid booking pages. Deposit policy has three options:

  • Full payment at booking. The checkout amount and the full appointment price are the same. No percentage applies.
  • Fixed deposit at booking. You set the full appointment price above the checkout amount. The difference is the balance.
  • Percentage deposit at booking. You set the full appointment price and a deposit percent above 0 and below 100. The app checks your deposit against the full price times that percent, rounded up to the next cent, and warns you if the two disagree.

Two fields carry the numbers: the checkout amount is the linked Shopify variant price, which is what Shopify charges now, and Full appointment price is the total value of the appointment. The full price is entered in minor units, so 1000 means 10.00 in your currency. The checkout amount comes from the variant and is read-only in the app, so to change what is charged now you change the variant price in Shopify.

The storefront tells the customer which of these applies before checkout: full payment due now, deposit due now, or a percentage deposit due now, plus the remaining balance. The app tracks the remaining balance per booking as the full price minus what was collected and not refunded.

Collecting the remaining balance is not available in the app yet. There is no screen or button anywhere in the app for charging a customer the balance, and the app never initiates a charge on its own. To take a balance, raise a draft order or an invoice for the outstanding amount in Shopify Admin and send it to the customer. The recorded balance figure is not shown on the Reports screen either; it travels in the commerce hold records inside Download account data under Settings, so use that export to see what is outstanding.

Handle refunds after a cancellation

Where the money flow lives in Shopify

Refunds are issued in Shopify Admin. The app never moves money. It listens for the refund and reacts.

Refund the order in Shopify, and the app applies it:

  • Full refund of the appointment line. The booking becomes terminal, the slot is released, and the customer is told the appointment was cancelled and the time released.
  • Partial refund of the amount only. If you refund some of the money but leave the appointment line quantity intact, the refund is recorded and the appointment stays confirmed. The customer is told a partial refund was recorded and given the current appointment status.
  • Partial refund that removes the line. If the refund covers the whole appointment line quantity but not the whole amount, the appointment is cancelled and the slot is released, because the line the booking was attached to is gone. The customer is told the appointment line was removed and the time released.

The difference is the line quantity, not the money. Check what you are refunding in Shopify before you submit it if you intend the appointment to survive.

A separate Shopify order cancellation also cancels the appointment and releases the slot.

The app checks that a refund carries the exact order reference bound to the hold, and rejects refunds that exceed the amount or quantity actually held. A refund that arrives before payment is held and applied once payment lands rather than being dropped. Reports subtract refunds from booking revenue rather than double-counting them.

The Integrations screen shows an option to refund the Shopify order automatically. It is a preview of planned behavior and does not perform refunds today. Always refund in Shopify Admin.

Notifications

Notifications

The emails your customers and your team receive.

Shape the confirmation email customers receive

Subject, body, and live preview before saving

The Notifications screen has four editable messages, each with an enable switch, a subject and a body: Confirmation email, Reminder email, Follow-up email (disabled by default) and Merchant alert. Subjects allow up to 140 characters and bodies up to 2000. Save with Save notifications.

A live preview updates as you type and shows the rendered subject and body, the delivery status, the sending provider and the delivery mode. Delivery mode reads Ready to send, Local preview or Disabled.

You can use these placeholders in a subject or body, and the app substitutes them at send time:

  • {{appointment_title}}, {{appointment_start}}, {{appointment_end}}, {{booking_status}}
  • {{customer_email}}, {{location_address}}
  • {{shopify_order_name}}, {{payment_amount}}
  • {{manage_url}}, {{cancel_url}}, {{reschedule_url}}, {{calendar_url}}, {{links_expire_at}}

The preview redacts customer links on purpose. Secure action links are generated only when a real message is sent, so a preview never leaks a working link.

Get notified when a new booking lands

Merchant alerts for bookings and changes

Merchant alert on the Notifications screen is a single switch that governs every merchant-facing email: a new booking, a paid booking confirmed, a cancellation, a reschedule, a refund, a partial refund, a check-in and a no-show. Turn it off and all of them stop.

Only the new-booking alert uses the subject and body you write. The other merchant messages always use the built-in wording.

Alerts go to the store contact email that Shopify gave us when the app was installed. Changing the alert recipient is not available in the app: there is no field anywhere in the app for it, and the subject and body boxes on the Notifications screen change the wording of the alert, not who receives it.

That address is read once, at install, and is not refreshed afterwards, so changing your store contact email in Shopify settings on its own will not move the alerts. If alerts are reaching the wrong inbox, either set a forwarding rule on that mailbox, or email support with your myshopify.com domain and the address you want and we will change it for you. Uninstalling and reinstalling the app also re-reads the address, but it is the blunt option and we would rather you asked us.

Manual bookings you create yourself do not trigger a merchant alert.

Resend a confirmation to a customer

One click from the booking detail

Open the booking and press Resend confirmation. The app sends a fresh confirmation to the address on that booking and updates the notification history on the same screen, so you can see exactly when it went out.

A resend sends even if the confirmation email is currently switched off for that booking page, which is what you want when a customer lost the original.

The button is disabled once the booking is cancelled, refunded, checked in or marked no-show.

The resent email contains fresh secure action links. The customer's old link may already be used or expired, so ask them to work from the new message.

Diagnose email delivery incidents

Find and clear failed sends

Settings has a Delivery incidents panel: messages that exhausted automatic retries stay listed there until someone replays them. The header chip shows how many need attention, or No incidents when everything is clean.

Each row shows how many attempts were made and the error the email provider returned. Press Replay delivery to queue it again. The message keeps its original identity, so a replay does not create a duplicate record.

If a customer says they never got an email, work in this order:

  1. Open the booking and check the notification history for that message.
  2. Open Settings, Delivery incidents, and look for a failure for that booking.
  3. Check the customer's address for a typo, and ask them to check spam.
  4. If the provider had an outage, wait for it to recover before replaying.

Replay only after the provider has recovered. Replaying into an ongoing outage just burns another attempt.

Staff and locations

Staff and locations

The people and places behind your bookable capacity.

Set up the staff resource behind your bookings

Capacity follows the people who deliver the service

The Staff screen holds the live staff resources that supply bookable capacity, their schedules, and their assigned service. Adding or editing a record saves immediately and changes storefront availability. Add staff member is enabled whenever the current plan has room. The summary tiles show active staff, the current allowance, and customers per time slot.

Each staff record has:

  • Full name.
  • Email, shown disabled as coming soon because staff invitations and calendar sync are not available yet.
  • Customers per time slot, how many customers this person can serve at once.
  • Assigned services, which booking pages this person supplies capacity for.
  • Active. Inactive staff stop supplying bookable capacity.
  • Staff portal access, disabled and marked coming soon because staff sign-in is not available yet.
  • Weekly schedule, either following the service hours or the person's own working hours.

Free stores one staff resource; Pro stores up to 25. These records directly control how many customers can book the same time and which staff member is offered for a slot.

Everything listed on the Staff screen is live store data. When the plan limit is reached, the add button is disabled and existing records remain editable.

Add your business location details

The address customers see in confirmations

The Locations screen holds the live places where appointments happen. Add or edit a location to change these saved fields:

  • Location name, required.
  • Timezone, which controls every date and time customers see for this location.
  • Address, up to 240 characters.
  • Internal notes, shown disabled as coming soon because notes are not saved yet.

Free stores one location; Pro stores up to 10. Location names appear alongside appointments on the merchant calendar and in bookings CSV and calendar ICS exports.

Insert {{location_address}} in a confirmation, reminder, update, follow-up, or cancellation email to send the saved address for that booking's location. When no address is saved, the placeholder renders as an empty value.

Add location is enabled whenever the current plan has room. Internal notes and the location-filter preference remain disabled and marked coming soon because those two values cannot be stored or applied yet. Every listed location is live store data.

Plan capacity across staff and rooms

How slots, capacity, and resources interact

Capacity is how many customers can hold the same time slot. It is calculated by adding up Customers per time slot across every staff resource that is active and assigned to that booking page. If no resources are assigned, the capacity value on the service settings screen is used, and the final fallback is one.

That means the practical way to open more slots is to add or activate staff, or raise an existing person's customers per time slot.

Two limits apply when a customer tries to book:

  • Slot capacity. Once the number of bookings in a slot reaches capacity, the slot disappears from the storefront. This is re-checked at the moment of booking, so a slot that filled while someone was choosing is refused rather than oversold.
  • Daily booking limit, a separate cap on how many appointments a day can take, independent of per-slot capacity.

The Reports screen exposes total, booked, available and idle capacity, plus scheduling conflicts and capacity that reopened after cancellations.

Capacity means several independent customers sharing one slot. There is no single booking for a party of several people; each attendee is their own booking.

Privacy and data

Privacy and data

What is stored, how long it is kept, and how to get it out.

What customer data is stored and why

Exactly what the app keeps and for how long

For each appointment the app stores the customer email, any intake answers, the start and end time, the status and its lifecycle timestamps, the location and staff resource, and, for paid bookings, the Shopify order reference, payment source, attributed revenue and currency. Waitlist entries store an email and intake answers. The app also keeps notification records, customer action tokens and a booking event history.

Retention follows your plan. On the Free plan, active views and exports cover the most recent 90 days of booking, waitlist, notification, report, CSV, ICS and JSON export history. On Pro, full history is retained and available.

Downgrading from Pro to Free does not delete history. Older records are hidden from views and exports, not erased.

Access tokens and app credentials are never included in any export.

How Shopify redaction requests are honored

Automatic deletion when customers or shops ask

The app implements the three Shopify compliance webhooks. Every request is verified for authenticity before anything happens, and every delivery is recorded.

  • Customer data request. The app assembles that one customer's bookings, commerce holds, waitlist entries, notifications, customer actions and events, and returns them. It never includes action-token secrets, app credentials or other merchants' data.
  • Customer redaction. The app anonymizes rather than keeps. It clears the customer email and empties intake answers on matching bookings and holds, deletes waitlist entries, revokes outstanding customer action links, anonymizes notifications and events, and purges the raw payloads of stored commerce webhooks. It reports back exactly how many records of each kind it touched.
  • Shop redaction. The app hard-deletes all data for that shop: the shop record, booking pages, bookings, waitlist, notifications, events and tokens.

Booking, waitlist, notification and token records are matched by email address and by Shopify order id together, because an order id stays authoritative even when a checkout used a guest email or the customer later changed their address. The Shopify customer identifier on the request is used to purge the stored raw payloads of that customer's commerce webhooks.

Uninstalling the app is not a deletion request. Uninstall marks the shop uninstalled and stops storefront booking. Data removal happens on Shopify's shop redaction request, or when you ask support to delete it.

Download your account data any time

Full JSON export from Settings

Settings has a Data and privacy row with three downloads: Download account data, Download bookings CSV and Download calendar ICS.

Download account data produces a single JSON file containing when it was generated, your retention window and plan tier, the shop record, every booking page, bookings, waitlist entries, notifications, privacy webhook deliveries, commerce holds and commerce incidents. The confirmation message on screen counts the booking pages and the bookings in the file; open the file itself to check the other collections.

Two guarantees apply to every export: it follows the history available on your current plan, and it never includes private customer action tokens or your Shopify access credentials.

Use the JSON export for a full archive or a migration. Use the CSV for spreadsheets and the ICS for calendar tools.