MediSpa booking
Edit clinics, treatments, deposits and booking availability for the Beauty Affairs MediSpa calendar.
MediSpa booking
The booking calendar reads its values from Shopify Admin, the theme editor, Sesami and Klaviyo. Find the owner in this table before you edit anything.
| Value | Owner |
|---|---|
| Clinic name, address, phone, opening hours | Shopify Admin, medispa_locations metaobject |
| Treatment price, deposit, pay-in-clinic amount | Shopify Admin, product and product metafields |
| Which treatments a page offers | Theme editor, Services Overview section |
| Deposit wording and default amounts | Theme settings, Medispa Deposit |
| Availability messages and booking toasts | Theme settings, Medispa |
| Actual appointment availability | Sesami app |
| Lead capture form fields | Klaviyo |
Edit a clinic
- Open Shopify Admin, then Content, then Metaobjects.
- Open the
medispa_locationstype. - Edit the clinic entry.
| Field | Where it appears |
|---|---|
display_name | Clinic tab label and the confirmation step |
address | Clinic details panel |
display_phone_number | Clinic details panel, shown to the customer |
phone_number | The number the call button dials |
store_hours | Opening hours in the clinic details panel |
- Save.
Adding a clinic here makes it selectable in the calendar. It does not create appointment availability. Set that up in Sesami as well, or the new clinic will show a calendar with no bookable slots.
Change a treatment's deposit or pay-in-clinic price
Deposit behaviour is set per product with metafields, with a theme-settings fallback.
- Open the treatment product in Shopify Admin.
- Scroll to Metafields.
| Metafield | Effect |
|---|---|
custom.pay_in_store_amount | Total shown on the Pay In Clinic button for this treatment |
custom.enable_pay_in_store | Turns the Pay In Clinic option on or off for this treatment |
custom.enable_checkout | Turns the pay-a-deposit-now option on or off. Leave it unset on older products, which the calendar treats as enabled. |
- Save.
A landing page can override every product on it. Setting a custom.pay_in_store boolean metafield on the page forces
Pay In Clinic on or off for all treatments rendered by that page, including an explicit false. Use this sparingly,
because it is easy to forget the page is doing it.
When a product carries no custom.pay_in_store_amount, the calendar falls back to the Pay In Store Label Price in Theme
settings, then to the Services Overview block's own label price.
Change the deposit amount and cart wording
- In the theme editor, open Theme settings, then the Medispa Deposit group.
| Field | What it does |
|---|---|
| Deposit Amount | Default deposit in dollars when a product has no deposit of its own |
| Pay In Store Label Price | Fallback total for the Pay In Clinic button |
| Cart Message | Line shown against a MediSpa booking in the cart |
| Remaining Amount Line Item Label | Label for the balance owing on the booking line |
| Remaining Amount Line Item Value | Template for that balance |
| Timezone | Timezone used to interpret appointment times |
- Save.
Changing Timezone shifts how every appointment time is read. Change it only if the clinics move timezone, not to correct a one-off display problem.
Change which treatments a page offers
- In the theme editor, open the MediSpa page.
- Select the Services Overview section.
- Edit its
medispa_serviceblocks. Each block points at one treatment product and can carry its own Pay In Clinic label price.
The calendar shows the treatments from the section that contains the Book Now button. Two Services Overview sections on one page give two different treatment lists. This is intentional. If a button opens the wrong list, check which section contains it.
Change availability messaging
These settings control the urgency messaging around the calendar. They do not change real availability, which Sesami owns.
- In the theme editor, open Theme settings, then the Medispa group.
| Field | What it does |
|---|---|
| Show Booking Availability | Master switch for the remaining-slots messaging |
| Mode | Whether the counts come from real data or are demonstrated on a timer |
| Decrement Timer Minimum, Maximum | Seconds between simulated decrements |
| Booking Timeframe | How many days ahead the calendar offers |
| Show bookings relative to | Whether the timeframe starts today or from another anchor |
| Low Availability Threshold, Copy | When to show the low-availability line and what it says |
| Show Booking Toasts | Master switch for the recent-booking toasts |
| Toast Lifespan, Total Visible Toasts | How long a toast stays and how many show at once |
| Booking Toast Copy | The toast text |
- Save.
When Mode is set to the simulated option, the counts go down on a timer and have no connection to real bookings. Confirm which mode the live theme uses before telling anyone the numbers are real.
Change the lead capture form
The booking form is a Klaviyo form. The theme only holds its ID.
- Edit the form itself in Klaviyo.
- If the form ID changes, open the theme editor, then Theme settings, then Medispa, and update Medispa Booking Form ID and Medispa Booking Mobile Form ID.
Medispa Booking Form Submit URL in the same group is the Zapier webhook that receives the booking intent. Change it only alongside the matching change in Zapier, or bookings will stop reaching whatever Zapier feeds.
Verify the change
- Open a MediSpa treatment page in a private window.
- Click Book Now. The calendar should open with your clinics as tabs.
- Pick a day and a time. Availability comes from Sesami, so an empty calendar points at Sesami rather than at the theme.
- Continue to the confirmation step and check the deposit and Pay In Clinic amounts.
- Submit the form and confirm the cart line carries the deposit and the balance-owing label.
If the calendar does not open, follow Booking calendar will not open.
Developer map
| Concern | Source |
|---|---|
| Calendar configuration from Liquid | snippets/medispa-calendar-config.liquid |
| Calendar mount point | snippets/medispa-calendar-placeholder.liquid |
| React entry point | src/entrypoints/medispa-calendar-react.tsx |
| Calendar components and state | src/components/medispa-calendar/ |
| Book Now button wiring | src/entrypoints/medispa-booking-actions.ts |
| Sesami, Klaviyo and Zapier payload types | src/@types/calendar.ts |
| Treatment list section | sections/overview-services-grid.liquid |
| Deposit and availability settings | config/settings_schema.json, Medispa and Medispa Deposit groups |
Architecture behind the flow is in MediSpa booking.