How Spas Can Upsell Add-On Treatments With AI Without Being Pushy

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How Spas Can Upsell Add-On Treatments With AI Without Being Pushy.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How Spas Can Upsell Add-On Treatments With AI Without Being Pushy.

Offer one relevant add-on, at a moment when saying yes is easy (while booking online or in the pre-visit message, never on the treatment couch), with its price and extra time stated plainly. Let AI pick the match from the booked treatment and the client's history, cap it at one suggestion per visit, and never repeat a declined one.

Pushiness comes from timing, repetition and pressure, not from the add-on itself. A scalp massage offered while booking is a helpful option; the same scalp massage suggested while the client lies face-down is a sales pitch. What follows is a pairing matrix, booking-screen settings, a pre-visit message prompt, wording for therapists, house rules that keep it gentle, and the numbers that show whether clients feel helped or sold to.

Follow me on Instagram@sagnikteaches

Where an add-on offer feels helpful and where it feels like selling

Map every point where a client could hear about an extra, and decide in advance which ones you'll use:

Connect on LinkedInSagnik Bhattacharya
MomentHow it feels to the clientUse it?
Online booking screenHelpful: they're choosing anywayYes, 2-3 options at most
Booking confirmationNeutralOne line, only if nothing was chosen at booking
Pre-visit message, 24-48 hours beforeThoughtful, if it's clearly chosen for themYes: this is where AI personalises
Consultation on arrivalFine as an option with price and timeYes, once, by the therapist
During the treatmentPressure: the client is relaxed, undressed and captiveNever
CheckoutTransactionalFor next time and retail only
After the visitNatural as part of rebookingYes, suggest it with the next appointment

The whole approach rests on one principle: once a client has seen an offer and said no, or chosen something, every later touchpoint stays quiet for that visit.

Subscribe on YouTube@codingliquids

Build a pairing matrix before any AI gets involved

AI can only recommend well if it's choosing from sensible pairings your head therapist has approved. Start with a table like this, using your own menu and prices (these are illustrative):

Booked treatmentSensible add-onExtra timePriceCheck first
60-min massageScalp massage15 min$25None usually
60-min massageHot stones upgrade0-15 min$20Pregnancy, circulation conditions
FacialEye treatment15 min$20Eye sensitivity
FacialHand and arm massage while the mask setsNone$15Nut-oil allergies
PedicureParaffin treatment10 min$15Broken skin
Spa day, facilities only30-min treatment30 min$55Room availability

The last column matters. Some add-ons carry contraindications, which is why they're checked at consultation rather than sold blind. To draft a first version from your menu, a prompt like "For each treatment on this menu, suggest two add-ons that use the same room setup, need no change of products, and add 15 minutes or less. Flag any that might need a contraindication check for my therapists to review" gets you most of the way. Your head therapist makes the final call.

Expect the first draft to need correcting. Here is an illustrative extract of what that prompt returned for a small menu:

"Pregnancy massage: hot stones upgrade (+15 min), foot ritual (+10 min). Facial: detox mask to draw out impurities (+10 min), eye treatment (+15 min). Pedicure: paraffin (+10 min), lower-leg massage (+15 min). No contraindication checks needed."

Three things to fix before it goes anywhere near a client. Hot stones against a pregnancy massage is the pairing most spas rule out altogether, and the draft didn't flag it. "Draw out impurities" is a health claim you'd strip from any menu. And the lower-leg massage adds 15 minutes to a pedicure slot that, in a lot of diaries, runs straight into the next one. The closing line, "no contraindication checks needed", is the most dangerous part, because it sounds authoritative. Your head therapist crosses out, rewords and fills in the "Check first" column, and only the corrected table goes into the prompts that follow.

Price add-ons in the same logic as the main menu. If your menu pricing needs a rethink first, writing a service menu and price list with AI walks through the chair-hour costing.

Setting up the booking-screen offer

This is the least pushy touchpoint because the client is actively choosing. Most booking systems support add-ons natively:

  • Fresha groups add-ons and lets you write a short prompt that clients see during online booking. Discounts applied to the main service also apply to its add-ons.
  • Square Appointments sets add-ons up as modifier sets on a service, each marked Optional or Required, with a duration that extends the appointment; the price and length update as the client chooses. Square's add-ons guide walks through it.

Keep every add-on Optional. A required add-on isn't an upsell, it's a hidden price. Show two or three options per service at most, and write the prompt line as information: "Add 15 minutes of scalp massage for $25. It pairs well with this treatment." Avoid "Most clients choose…" unless you've counted.

A before and after from a typical booking screen. Before: "Treat yourself! Our guests can't resist adding hot stones. Only $20!" After: "Hot stones upgrade: warmed stones used during your massage. +$20, no extra time. Not suitable during pregnancy." The second line gives the client everything needed to decide, including a reason to say no, and reads like a menu rather than a nudge. If you ask AI to write these lines for twenty add-ons at once, paste the "after" version in as the model and tell it to keep every line under 25 words, with the price and the time in each.

The pre-visit message, where AI personalises the one suggestion

Between booking and arrival, a short message can suggest the single add-on most likely to suit this client. AI is useful here because it can weigh several things at once: what they booked, what they've added before, what they've declined, and whether the therapist actually has time after the appointment.

You write a short pre-visit message for a day spa.
Client: {first_name}. Booked: {treatment}, {date}, with {therapist}.
Add-ons accepted before: {list}. Declined in last 6 months: {list}.
Free time after this appointment in the therapist's diary: {minutes}.
Approved pairings: [paste the matrix rows for this treatment].

Pick ONE add-on from the approved pairings that:
- the client hasn't declined in the last 6 months
- fits in the free time (if none fits, suggest nothing)
- they haven't already added to this booking.
Write under 50 words: confirm the appointment first, then mention
the add-on with price and time as an option, and say they can add
it by replying or on arrival. No urgency, no health claims.
If nothing qualifies, write the confirmation only.

What a good result looks like:

"Hi [first name], looking forward to seeing you Thursday at 2 for your 60-minute massage with [therapist]. If you'd like, [therapist] can add 15 minutes of scalp massage at the end for $25. Just reply YES or mention it when you arrive."

Before switching it on, run the prompt against ten real bookings from last month and read every result. An illustrative test sheet from a spa doing exactly that:

BookingWhat the AI suggestedRight?
60-min massage, 30 min free afterwardsScalp massage, $25, 15 minYes
Facial, eye treatment declined in MayHand and arm massage, $15Yes
Pedicure, 5 min free afterwardsNothing, confirmation onlyYes
Massage paid by gift voucherScalp massage "included with your voucher"No: it invented a benefit
Couples massage, one bookerA different add-on for each guestNo: needs a same-for-both rule

Two misses in ten is a normal first run. Each miss becomes one extra line in the prompt ("never say an add-on is included unless the booking says so"), and you re-run the same ten bookings until they all come back right.

One failure a test sheet won't catch: the booking system's export may have no field for declined add-ons at all, so the "declined" list arrives empty for every client. Nothing looks broken. Then a regular gets the eye treatment suggested before three visits in a row and replies, "I've said no to this twice." The fix is a short, consistent tag in client notes that the therapist adds at consultation (for example DECLINED-EYE-0926), plus a line in the prompt telling the AI to read tags in that format as declines with a date.

The "suggest nothing" instruction is what keeps this honest. An automated message that always finds something to sell is the automated version of a pushy therapist. The same thinking about which past behaviour to use, applied to offers between visits, is in personalising offers from treatment history.

Vouchers, couples and spa days change the rules

Three kinds of booking need their own handling, and they're where automated suggestions most often misfire:

  • Gift voucher guests. The recipient didn't choose the spend, so an add-on means paying out of their own pocket on a present. Mention it once, plainly: "Your voucher covers the 60-minute massage. If you'd like to add a scalp massage, it's $25 on the day." Never imply the voucher is incomplete without it.
  • Couples bookings. One person usually books for two. Send the pre-visit message to the booker, offer the same add-on for both or for neither, and don't suggest anything to the guest directly unless they're a client in their own right.
  • Spa days. Guests have hours in the building, so a treatment added later in the day fits naturally, but the offer belongs in the pre-visit message or at check-in, not as a tray of leaflets at the pool. Check room availability before the message goes out; offering a treatment that turns out to be fully booked is worse than offering nothing.

Build these three cases into the pre-visit prompt as extra rules (for example, "if payment_type is voucher, phrase the add-on as optional and payable on the day"), and test a few bookings of each type before switching the message on.

What therapists say in the room

If the client hasn't chosen or declined anything before arriving, the consultation is the last good moment. One mention, framed as an option, with price and time:

"You're booked for the 60-minute massage. If you'd like, I can add a 15-minute scalp massage at the end, which is $25. No need to decide now if you'd rather see how you feel."

If the answer is no: "No problem." Then it's never raised again that visit. Two things therapists must never do: suggest add-ons mid-treatment, and use the client's body as the reason ("your shoulders are so tight you really need the hot stones"). The second edges into health claims and makes clients feel judged.

AI helps with practice rather than the conversation itself. A therapist can ask a chat assistant to play an unsure client and give feedback on whether their wording sounded like a sales pitch. Training front-of-house staff to work alongside AI has more on that kind of role-play.

An illustrative round of that practice. The therapist tries: "Loads of people with desk jobs add the hot stones, and honestly your back would really thank you." The feedback that came back:

"Two problems. 'Loads of people' is social pressure unless you've counted, and 'your back would thank you' comments on the client's body. Try: 'I can add hot stones for $20 with no extra time, or we can keep it as booked.'"

Short, specific and pointing back to the rules is the standard to expect. Paste your house rules (below) into the role-play prompt so the assistant judges against your spa's standard rather than a generic idea of good selling, and have each therapist run three or four rounds with different client moods: unsure, in a hurry, visibly tense.

If therapists earn commission on add-ons, pressure tends to follow. A team-level incentive, or none, keeps the consultation honest.

House rules that keep it from getting pushy

  1. One suggestion per visit, across all touchpoints. If they chose an add-on online, nobody mentions another.
  2. Price and extra time always stated in the same sentence.
  3. Never during treatment.
  4. A decline is logged, and that add-on isn't suggested again for six months.
  5. No scarcity or urgency ("only two slots left for hot stones") unless it's literally true.
  6. No health claims: no "releases toxins", "boosts circulation" or "fixes tension".
  7. No add-on that would push the therapist into the next client's time.
  8. Staff may skip the suggestion entirely if the client seems stressed, rushed or upset.

Print these for the treatment rooms, and paste the same rules into every prompt you use, so the automated messages and the humans follow one standard.

The sums for a spa delivering 600 treatments a month

Illustrative figures. Say a spa delivers 600 treatments a month and 8% currently include an add-on: 48 add-ons at an average of $25, or $1,200 a month.

  • It adds booking-screen add-ons for its six most booked treatments, the AI pre-visit message, and one consultation mention.
  • Suppose the attach rate rises to 15%: 90 add-ons, $2,250 a month, an extra $1,050.
  • Those 90 add-ons use about 22.5 hours of extra therapist time. If that time isn't free, the pre-visit prompt's "fits in the free time" rule quietly suggests nothing, which is the point.
  • Margin check: a 15-minute add-on at $25, with about $6 of therapist time at $24 an hour plus a little product, is one of the most profitable things on the menu, provided it doesn't cause overruns.

Your attach rates will differ. What matters is measuring by touchpoint so you know which one is doing the work. For the email side of cross-selling between visits, building an upsell and cross-sell email sequence covers timing, and hotels face a near-identical problem with upgrades, covered in upselling room upgrades and late checkout with AI.

The numbers that tell you it's helpful rather than pushy

  • Attach rate by touchpoint: booking screen, pre-visit message, consultation. If one touchpoint does almost nothing, drop it rather than pushing harder.
  • Decline rate at consultation, per therapist. A much higher rate for one person usually means wording, not clients.
  • Reviews and feedback mentioning "pushy", "sales" or "upsell". Search your reviews monthly; one mention is a warning, two is a pattern. A line such as "lovely massage, but I was asked about extras three times" is the one-suggestion rule failing, usually because the pre-visit message didn't know the client had already picked something online. Check that the booking-screen choice is passed into the prompt as an add-on already on the booking.
  • Rebooking rate for clients who took an add-on versus those who didn't. If add-on clients rebook less, something about the experience is off.
  • Overruns: appointments that ran into the next one because of an add-on.

Revenue up and complaints flat means it's working. Revenue up with complaints rising means you've swapped long-term loyalty for this month's takings, and the fix is fewer suggestions, not better scripts.

Further reads

Sources: Square support page on booking add-ons for Square Appointments (modifier sets, optional or required, duration added); Fresha help pages on service add-ons (add-on groups with a prompt shown during online booking). Checked September 2026. Prices, times and attach rates in the examples are illustrative.

Want add-ons offered at the right moment, automatically?

On a 1:1 call we'll build your pairing matrix, check how your booking system displays add-ons, and set up a pre-visit message that suggests one relevant extra.

Book a 1:1 call with me