Changelog

What we’ve shipped.

Every feature and fix that’s gone live, newest first. MassageHub is built and maintained week by week — this is the receipt.

  1. Fix: clearer treatment lengths when clients book

    On your booking page the treatment lengths are now much clearer to tap. Some clients were tapping a treatment's name, like Deep Tissue, then wondering why nothing happened, because it is the length and price underneath that you actually choose. Those length options now stand out as proper buttons, with a 'Choose a duration' label above them, so the next step is obvious at a glance.

    If a client does tap the name, the lengths below gently highlight to point the way. It means fewer people getting stuck at the first step, and a smoother path from your link to a booked appointment.

  2. Two gentle nudges at the right moment

    We have added a couple of well-timed emails to help your practice along. If your booking page is live but has stayed quiet, we will send a short note with your booking link and a few easy ways to share it, so those first clients can find you.

    And once you have completed a session or two, we will remind you to add your Google review link in the Reviews page. From then on it rides along on every thank-you we send your clients, so a happy client can leave you a public Google review in a couple of taps. Each is a one-off, spaced out from your other nudges, and you can turn nudges off any time.

    See it →
  3. Use our free SOAP and intake templates

    We have published two free, ready-to-print templates you are welcome to use or share, a SOAP note template and a client intake form. Both are written with UK record-keeping and GDPR in mind, so they cover consent and the essentials without asking for more than you need. Find them at the Free templates link in the site footer, or at massagehub.app/resources.

    Inside MassageHub the filing is already done for you. Notes and intake answers sit against each client automatically, encrypted, with the history one tap away, so the templates are really for paper days or for a therapist friend who has not joined yet.

    See it →
  4. A quiet hello when you hit a milestone

    When you pass a milestone in completed sessions, ten, then twenty-five, fifty and on up, we now send you a short note to mark it. No action needed, just a moment to notice how far your practice has come.

    That same email carries your personal referral link, so if you know a therapist who would love MassageHub, it is right there to share. You earn a free month of Plus for every one who joins a paid plan, with no limit. It shows at most once a week alongside the other nudges, so nothing piles up.

    See it →
  5. Your referral link, at a good moment

    When a client leaves you a five-star review, the alert email now includes a quiet line with your personal referral link, so it is in front of you at the exact moment you are feeling good about the work. Share it with a therapist friend and you earn a free month of Plus for every one who joins a paid plan, with no limit.

    It is the same gentle nudge that already appears on new-booking alerts, and it shows at most once a week across both, so it never piles up. Nothing changes for your clients or your reviews.

    See it →
  6. A small 'Powered by MassageHub' on your booking page

    When a client finishes booking, your confirmation page and their confirmation email now carry a small 'Powered by MassageHub' line. It is how other therapists find us, by word of mouth from people they already trust, and it helps keep MassageHub affordable for everyone.

    You stay in control. On Settings, then Account, under your personal note in client emails, there is a tickbox to take the credit out of those emails if you would rather they were unbranded. On a white-label plan it never shows at all. Your clients and your bookings are yours, exactly as before.

  7. Change your booking link without losing visitors

    If you change your booking link, the old one now sends people straight to your new one instead of showing a dead end. So a link in your Instagram bio, on a business card, or in an old booking confirmation keeps working even after you have renamed it, and nobody lands on a missing page.

    We will also let you know if your old link is still being used. On Settings, then Profile, you will see a small note when an old link is getting visits, with how many and roughly where from, so you can update it at the source whenever you get a chance.

    See it →
  8. Copy your booking link with one tap

    On Settings, then Profile, your booking link now has a copy button right below it, so you can grab the exact address with one tap and paste it into a text, an email signature, or your Instagram bio. In the app it offers share instead, opening straight into whichever app you want.

    We also tidied up how the link is shown. The web address and your chosen name now sit together as one clean link, so there is no longer a gap that looked like a space. That gap had caught a few people out, with the odd link going out with a space in the middle.

    See it →
  9. Build your profile from your existing website

    Setting up your profile just got a lot quicker. On Settings, then Profile, there is now an Import from my website button. Paste the address of your existing site and we read it for you, filling in your business name, photo or logo, about text, phone, email, social links, your list of treatments and prices, and even your brand colours. We will also try to find your business on Google so you can bring your reviews and star rating across in a tap.

    Nothing is saved until you have looked it over. You tick what to keep, edit anything that is not quite right, and leave the rest. Whatever you have already filled in by hand is left untouched, so there is no risk in trying it.

    See it →
  10. Get a QR code for your booking page

    Settings, then Profile, now has a QR code for your booking page. Anyone who scans it lands straight on your page ready to book, with no link to type out. Print it on a business card, a treatment-room sign, or a board for a market stall or wellbeing day, and let new clients book themselves in.

    You can set the colour, pick a size, and download it as a sharp PNG or a vector SVG for the printer. On your phone, tap to save or share it straight into your photos or another app.

    See it →
  11. Clients can leave parking and access notes

    Clients booking a home or hotel visit can now leave parking and access notes as they book, things like which door to use, the buzzer code, or where to park. It is an optional box on the address step, so it never slows down a quick booking.

    Whatever they write reaches you in three places: your new booking email, the Google Calendar event, and the appointment's detail panel, so it is right there on your phone as you set off. Nothing to switch on, it just starts appearing on home visit bookings.

  12. Fix: treatments now show the right description

    If you offer a treatment in more than one length, your booking page and public profile were sometimes showing the description from one of the other lengths rather than the main one you wrote. The text you enter against the shortest option is the one that should lead, and now it does, everywhere a client sees it, including your package and membership pages.

    Nothing to change at your end. Your descriptions were always saved correctly, it was only the choice of which one to show that was off. Thanks to Helen for spotting this and flagging it.

  13. See which clients are due to rebook

    Your Clients page now has a Due to rebook tab that quietly works out each client's own rhythm, how often they usually come in, and flags anyone who has gone past their normal gap. So if someone usually visits every three weeks and it has been five, they show up ready for a warm nudge.

    Tap Draft message and, on the Pro plan, a friendly rebook note is written for you in seconds, which you can read over and edit before it sends as an email. Only clients who have opted in to messages appear here, and the tab stays out of your way until you want it.

  14. See your true hourly rate by service

    Your Income page now has a Practice money card that shows what each service really earns you per hour, not just per session. It takes your takings and divides them by the realistic time each one takes, including your prep, arrival and travel buffers, so a quick, cheaper treatment can quietly out-earn a pricier one that ties up your day.

    It also names your most and least profitable service, and projects where this month is heading from what you have taken so far. Everything is worked out from bookings you have already completed, so there is nothing to set up.

  15. Fill a cancellation with clients who are due

    When a booking cancels and frees up a slot, MassageHub can now let clients who are due a rebook know, alongside your usual waitlist. It is a gentle way to turn a gap back into a booking without lifting a finger.

    It is off to begin with, so nothing goes out until you choose. Turn it on under Settings, then Rebooking and care. Only clients who have opted in to messages are ever contacted, and anyone already on your waitlist for that slot is left out, so no one hears from you twice.

  16. A gentle review nudge when a client improves

    When a client's tension scores show a real, steady improvement across their recent sessions, MassageHub can now send them one warm extra note inviting a review, on top of the usual request after a session. It lands at the moment they are most likely to feel the difference, so it tends to bring kinder, more specific words.

    It only ever adds the occasional invite, it never replaces the normal one, and no client is asked twice for the same session. It is on by default, and you can switch it off any time under Settings, then Rebooking and care.

  17. Your review images now wear your brand

    When you turn a five-star review into a shareable image, it now comes out in your own brand colours. If you have set a main colour, an accent and a page background under Settings, then Branding, the review card picks them up on its own, so what you post matches the rest of your pages.

    On the Plus plan the card carries your own logo in place of the MassageHub mark. Open your Reviews page, tap Create shareable image on any five-star review, and choose Square or Story as before. Colours come with Pro, your logo with Plus.

    See it →
  18. Fix: your calendar now shows your full history

    Your calendar now loads your whole history, so paging back to earlier months shows every appointment, not just the most recent few. Before, only roughly the last month of bookings was loaded, so older sessions could look as though they had gone missing when you scrolled back, even though they were always safely stored and nothing was ever lost.

    Open the calendar, use the back arrow to any earlier month, and that month's appointments appear as normal. The same goes the other way, so bookings made well into the future now show too. Thanks to Emily for flagging it.

  19. See when a client last logged in

    Each client profile now shows when that client last signed in to their account, right under their contact details. It reads as a plain date, like Last logged in 14 Jun 2026, or Never for someone who has yet to log in. It is a quiet way to see who is actually using their portal to rebook, check a receipt or fill in a form, without having to ask.

    The date updates whenever they open their account area, so a recent date means they have been in lately. Nothing changes for the client, and only you can see it.

  20. Your business name now shows in full on your public page

    If your public page is branded with a business name rather than your own, a few headings used to shorten it to just the first word, so a name like The Massage Nook could appear as simply The in places such as the About and gallery sections. That is now fixed: your business name shows in full wherever those headings appear, across your profile, the booking page and your client portal.

    If your page uses your own name instead, nothing changes. It still shortens to your first name in those friendly headings, so Anna Thomlinson still reads as Anna.

  21. Apply a discount code automatically

    Your discount codes can now apply themselves at checkout, so a client never has to remember to type one in. When you create or edit a code under Settings, Promotions, tick Apply automatically and choose who it applies to: Everyone, or First-time clients only for a welcome offer that lands the moment a brand-new client books.

    The client just sees the discount already applied, with the saving shown before they pay. A first-visit code only ever applies for someone with no previous booking with you, so it cannot be used twice or by a returning client. Thanks to Zsuzsanna for suggesting this.

    See it →
  22. See your booked hours on the calendar

    The summary line above your calendar now shows how many hours you have booked, right alongside the appointment count and takings. So a typical week might read 15 appointments, then your total, then 22h 30m. It is the quickest way to see how full your week or month actually is, not just how many sessions you have.

    The figure follows whatever you are looking at, so it updates as you move between weeks and switch to the month view. It counts confirmed and completed appointments and uses each one's real length, including any add-ons, so a longer session counts for the time it actually takes.

  23. Require a consultation as its own appointment first

    When a service needs an initial consultation first, you can now make that consultation a separate appointment rather than tacking it onto the same visit. On the Services page, pick the prior service as before, then tick Require it as a separate appointment first. New clients are asked to book and attend the consultation on its own, and the main treatment only opens up to them once that appointment has taken place.

    It is ideal for a proper injury history before any hands-on work. Clients who have had the consultation elsewhere can still tap I've already completed this, which sends their booking to you to confirm. Leave the tick off and the old same-visit behaviour stays exactly as it was.

    See it →
  24. Duplicate an intake form to reuse it

    You can now copy any intake form instead of building each one from scratch. On the Intake forms page, tap Duplicate on a form and you land straight in an editable copy, ready to rename and adjust. It is the quickest way to create a service-specific version, say a deep tissue form with extra injury questions, from a base form you already trust.

    The copy starts unassigned and is never set as your default, so duplicating leaves your original form and its assignments exactly as they were. Tweak the questions, then assign it to a service or location whenever you are ready.

    See it →
  25. Pay annually and get two months free

    You can now pay for Pro or Plus once a year instead of monthly, and two months come free when you do. On the Plans page, switch the new Monthly or Annual toggle across to Annual and the prices update to show the yearly cost before you commit. Everything else stays the same, including all your features and the freedom to cancel whenever you like.

    Already part way through a trial, or have free months earned? Those apply first, so you are only charged once they run out. And if you would rather keep paying monthly, nothing changes at all.

    See it →
  26. Referrals now credit your account if you already pay

    If you are already on a paid plan, the free month you earn for referring a colleague now arrives as a real credit on your account, so your next payment is simply covered. Plus members get a full month free, and Pro members get a month of Plus features on top. Before, the reward quietly added Plus access that a paying member could not really use.

    Nothing changes on your side. Keep sharing your link from the Refer a therapist card, and when someone you invited activates a paid plan, the credit lands automatically and comes off your next invoice.

    See it →
  27. Referrals now reward the therapist you invite too

    When a colleague signs up through your referral link, they now start with 60 days of Pro free instead of the usual 30, double the runway to settle in before they decide. Your side is unchanged: you still earn a free month of Plus for every therapist who activates a paid plan, with no upper limit.

    There is nothing new to set up. Your link lives in the Refer a therapist card on your dashboard, and the longer trial applies automatically to anyone who arrives through it. It is a warmer thing to share now, because you are handing a colleague something real on day one.

    See it →
  28. Fix: selected dates and full days read clearly on your colours

    Selected dates and times on your booking page now pick a text colour that stays readable against your brand colour, so on a bright or pale palette the chosen day no longer washes out to a faint white. If you have set custom colours, the highlighted day and time now stand out properly.

    Fully booked days in the week view also carry the same short note the month view has, explaining that crossed-out days are full (and, if you take a waitlist, that clients can tap one to join). Before, the week strip gave no visible reason a day could not be picked.

  29. Fix: past dates now look clearly unavailable when booking

    Past dates on your booking calendar now fade out, so clients can see at a glance they cannot be chosen, rather than every date in the current month looking equally bookable. Days that are fully booked stay crossed out as before, so the two states no longer look alike.

    The faded styling now follows your own colour scheme too, instead of a fixed cream tone that could blend into a dark or coloured theme and leave old dates looking just as available as upcoming ones. If you have set custom brand colours, your calendar now reads correctly on them.

  30. Your plan and its status now show in Settings

    The Settings sidebar now shows your actual plan, so you can see at a glance where you stand. If you are on Pro or Plus it names your plan with a Manage link straight to the billing portal. On a free trial or a free founding period, it says so and offers to add a card when you are ready. If a payment has failed, it flags that clearly so you can update your card before anything lapses.

    Before, everyone saw the same early access message, even people already on a paid plan. Now it always reflects where you actually are.

    See it →
  31. Fix: Smart charging recognises returning clients again

    On Smart charging, returning clients are once again having their card saved at booking and charged after the session, rather than being asked to pay the full fee upfront. The mix-up caught anyone whose past appointments had all been marked complete, the normal end state of a session you have finished. They were read as brand new and charged in full at booking.

    Now anyone who has had a confirmed or completed appointment with you counts as returning, so their saved card is charged after the session as you intended. Clients you have never seen still pay the full fee upfront, which is the whole point of Smart charging.

    See it →
  32. Fix: clients now see your chosen display name

    Set a Profile display name in Settings then Profile, and clients now see that name everywhere, not just on your public page. Your booking confirmations, reminders, cancellations, payment requests, receipts and client portal all use it. So if you would rather clients saw just your first name, or a name without your surname, set it once and it carries through every message and screen they see.

    Before, those messages always used your full account name even if you had set a display name. Thanks to Joe for flagging this.

    See it →
  33. New: private packages, granted only to who you choose

    Tick Private when you create or edit a treatment package and it stays in your settings (with a Private badge) but never shows on your public profile, your booking page or anyone's client portal. Its purchase link won't open either, so it can't be passed around.

    It still works like any other package when you hand it out: grant it, charge a saved card, or send a payment request from a client's page, and the moment you do, it appears in their account, visible only to them. Handy for a one-off rate, a bespoke bundle, or a deal you'd rather keep off the shelves. Thanks to Marcin for suggesting this.

    See it →
  34. Your shared link now shows your own card

    When you share your booking link on WhatsApp, Facebook or Instagram, it now previews as your own business card instead of a generic MassageHub image. People see your photo, your name, your location and your contact details, all in your brand colours, so a shared link looks unmistakably yours.

    There is nothing to switch on. To see it, go to Settings then Branding, where a new How your link looks when shared preview shows exactly what people get. It updates a moment after you save your photo, details or colours.

    See it →
  35. Remove a package added by mistake

    Granted a package to the wrong client, or added one twice? You can now remove it. Open the client, find the package under Treatment packages, and tap Remove. It disappears straight away from their record and from their client portal, so there is no leftover to confuse anyone.

    If any sessions are marked as used, the confirmation tells you how many before it deletes, so you always know what you are clearing. It works whether the package is untouched or you have already drained its credits.

    See it →
  36. Fix: light brand colours stay readable

    If you have picked a bright or light brand colour in Branding, your booking page now keeps it readable everywhere. A vivid colour like a bright cyan used to leave the Book now button and your Qualified, Insured and Trusted badges almost invisible, pale text sitting on a pale fill. The text now shifts to a deeper shade of your own colour automatically, so it still looks like yours and stays easy to read.

    The same care runs across your profile, your client area and the little initial circles on reviews. There is nothing for you to change, your existing colours just look right now.

    See it →
  37. Require a consultation before certain treatments

    You can now ask that a treatment includes a consultation on a client's first visit, handy when you want to assess someone before their first proper session. Go to Settings, then Services, edit the treatment, and under Require a prior service choose the consultation. When a first-time client books that treatment, the consultation is added to the same visit just before, as one combined appointment, and the booking page flags this up front so it is never a surprise.

    Returning clients who have already had the consultation book as normal. If a client says they have already had it elsewhere, their booking comes to you as a request to approve first. It only applies to the one service you choose, and if you ever archive the consultation the rule simply lifts.

    See it →
  38. Add your own logo, free during early access

    Showing your own logo in place of MassageHub used to be a Plus feature, and it's open to everyone for now. Go to Settings, then Branding, and under Your logo upload a PNG, SVG, JPG or WebP. It replaces the MassageHub mark and hides the "Powered by MassageHub" line across your booking page, profile and client area, so your pages feel fully your own.

    This is free for everyone during early access. When paid plans launch your pages return to the MassageHub logo unless you're on a paid plan then, and most early members already will be. Brand colours work the same way, so it's a good moment to get both looking just right.

    See it →
  39. Fix: dark brand backgrounds now read clearly

    If you have set a dark page background in Branding, your booking page now keeps everything readable. The details your clients type in, their name, address, email and phone, used to show up in dark text that was hard to see against a dark background. It now switches to a light shade automatically, so what they enter stands out clearly.

    The same care now runs right through, the green discount time slots, the selected-treatment summary, and the cards in your client area like memberships, packages and loyalty all follow your chosen colours and stay easy to read. There is nothing for you to change, your existing colours just look right now.

    See it →
  40. Your clients can track their tension between visits

    Your clients now have a simple way to keep an eye on how they're feeling. In their client area there's a new Your wellbeing card, where they can log how much tension they're carrying on a 0 to 10 scale whenever they like, and watch it change over time on a small chart.

    It's their own private diary between visits, separate from the tension you note at a session. You don't see their entries and they don't see yours, so it's a gentle nudge for them to notice their own patterns. There's nothing to set up, it's there for every client with an account.

    See it →
  41. Note how much tension a client was carrying

    After a session you can now record how much tension your client was holding, on a simple 0 to 10 scale. Open a completed appointment and you will see a new Client tension this session row, tap a number to set it, and tap the same number again to clear it. It shows on the SOAP note page for that session too, so you can note it wherever you happen to be working.

    Next time that client comes in, their last recorded score appears on the appointment, so you can see at a glance whether things are easing between visits. It is private to you, your clients never see it.

    See it →
  42. Make your client pages your own colours

    Your booking page, profile and client area can now wear your own colours. Open Settings, then Branding, choose a main colour and an accent, and set a light or dark page background, and the text, cards and borders adjust automatically so everything stays easy to read. The live preview shows exactly what your clients will see, and you can paste your website address to pull your brand colours in for you to confirm.

    On the Plus plan you can also hide the MassageHub mark and show your own logo. Brand colours come with Pro, so have a play and see how your pages look in your own shades.

    See it →
  43. Turn a five-star review into a shareable image

    Got a glowing five-star review? You can now turn it into a ready-to-post image in a couple of taps. On your Reviews page, every five-star review has a Create shareable image button. Pick Square for a feed post or Story for the taller format to get a warm, on-brand card with the review, the stars and a small MassageHub mark. On a phone you can save it to your photos or share it straight to Instagram or Facebook; on a computer it downloads.

    It works for your in-app reviews as well as ones synced from Google or Fresha, or pasted in from elsewhere. Nothing is posted for you, you simply save the image and share it wherever you like.

    See it →
  44. Your Monday morning practice brief

    Every Monday morning you will get a short, warm email looking at your week. It shows how many appointments you have booked and your busiest day, what you brought in last week against the week before, and any client birthdays or first-visit anniversaries coming up in the next seven days. It is a quick way to start the week with everything in one place, a bit like having someone glance over your diary for you.

    It is on by default and pulls from what is already in MassageHub, so there is nothing to set up. If it is not for you, switch it off any time under Settings, then Account, next to your other email preferences.

    See it →
  45. Your mileage report uses HMRC’s new 55p rate

    HMRC has raised the mileage allowance from 45p to 55p a mile for the first 10,000 business miles, starting 6 April 2026, the first rise in 15 years. Your Mileage report now applies the new rate on its own, so the claimable figure on the PDF, Excel and CSV is right without you changing a thing.

    It picks the rate by tax year, so a report you run for 2025 to 2026 still uses 45p, while anything from 6 April 2026 uses 55p. You will find it under Reports, then Mileage, where you can still edit any day’s actual miles before you download.

    See it →
  46. The last client screens now match your new look

    The last few client-facing screens are now in the same Living Diary look as your refreshed profile, booking flow and client portal, so the whole journey feels like one product. Your gift card pages get the most of it: the balance checker and the after-purchase confirmation now use the warm paper background, evergreen and amber colours, and Fraunces serif for the code and amount.

    The pop-up event and taster sign-up page clients use to reserve a slot or join the walk-in queue, along with the sign-in and email-preference screens clients occasionally land on, have all been brought into line too. Nothing about how any of it works has changed.

  47. Fix: the feedback button shows on every phone

    The feedback button in the top bar, the speech bubble next to the help icon, now shows on every phone size. It was hidden on the most common Android phones, so there was no easy way to send feedback from your phone. The short survey we sometimes show at the top of your dashboard was hidden on the same phones too, and now shows correctly.

    Tap the speech bubble any time to tell us what is working or what is getting in your way. You can record it by voice instead of typing if that is easier, and leave your email if you would like a reply.

  48. New: send a client a payment link for a package

    When you have sold a treatment package to a client, you can now send them a link to pay for that exact package. Open the client’s page, go to Treatment packages and click Request payment. Pick the package, check the amount, and we email them a secure card link. When they pay, the package lands in their account on its own, so there is nothing to grant by hand.

    It works just like the deposit and payment requests you already send from an appointment. If the client has a saved card you can still charge it on the spot, and if they have no email on file you can copy a purchase link instead.

    See it →
  49. MassageHub now has an app for iPhone and Android

    MassageHub now has its own app for iPhone and Android, so you can run your day from your home screen instead of a browser tab. It is the same MassageHub you already use, your calendar, clients, SOAP notes and payments, in an app that opens with one tap and keeps you signed in.

    It is free and there is nothing new to set up. Open the link below on your phone and it sends you straight to the App Store or Google Play. On a computer it shows a QR code you can scan with your phone camera to get the app.

    See it →
  50. New: drag an appointment to any day to reschedule

    On the calendar you can now drag an appointment to a different day, not just a different time. Drag it to the left or right edge and the week turns, so you can move a booking to any date without letting go. The day it will land on lights up, and a small label shows the new date and time as you drag.

    On a phone, press and hold an appointment for a moment to pick it up, then drag it where you want. If the new spot clashes with another booking or falls outside your usual hours, you can still move it, with a quiet heads up first. Thanks to Marcin for suggesting this.

    See it →
  51. Fix: signed-in clients see "My account", not "Sign in"

    When one of your clients was already signed in and opened your profile, your booking page, or a package or membership page, the top of the screen still showed a "Sign in" button that reopened the sign-in box for no reason. It now reads "My account" and takes them straight to their portal, and the "Already a client? Sign in" prompts no longer appear once they are signed in. Nothing changes for clients who have not yet signed in.

  52. We have launched MassageHub on Product Hunt

    Today MassageHub is live on Product Hunt, the site where people go to discover new software. If MassageHub has been useful to you, I would love you to come and take a look, share a thought, or just say hello on the page.

    I built MassageHub on my own, for my own practice, so having a few real therapists there on launch day means a great deal to me. There is nothing to buy and nothing to set up. The button below opens the Product Hunt page in a new tab.

    See it →
  53. Fix: gift card bookings now show as paid

    When a client paid with a gift card, the appointment could still show "Pay on the day" and count as unpaid, and in some cases offered to charge their saved card a second time. The appointment now shows "Paid by gift card" when the card covers the full price, never prompts a duplicate charge, and treats the gift card as money already collected when working out what is still owed.

    Invoices and your income and tax figures handle this correctly too. A gift card that only part-pays a booking still leaves the right remainder to collect, and the leftover shows where it should on the calendar and in the appointment.

  54. Your packages and memberships now sell from your profile

    Your active packages and membership plans now appear on your public profile and your booking page, not just inside a client's account. Anyone browsing can see what you offer and buy it on the spot, and a brand new client can buy a package or start a membership without booking a separate appointment first. We set up their account for them as they check out and email them a link to get in.

    It is on by default. You can hide it, or drag where it sits on your profile, under Settings, Profile, with the new "Show packages and memberships" card. Memberships ask a first time client to confirm their email with a quick code before any recurring payment starts.

  55. Clearer guidance on professional listings

    We have added a short note to your Terms and to the setup screens making it clear that MassageHub is for professional therapeutic massage only. If your listing already describes professional treatments, nothing changes for you and there is nothing to do.

    The note now shows when you write your profile bio and on the Trusted Therapists page, and the Terms spell out that listings offering or implying adult or sensual services are not allowed and may be removed. This keeps the directory trustworthy for clients and for every therapist listed on it.

    See it →
  56. Fix: payment requests after a session read correctly

    When you send a payment request for a session that has already happened, the client now gets an email titled "Payment request" rather than "Deposit request", and it no longer calls the appointment "upcoming". Before, the same wording was used whether you were asking for a deposit before a booking or settling up afterwards, so a finished Deep Tissue session would arrive asking for a deposit on an upcoming appointment.

    Deposits you collect before a booking are unchanged. The fix carries through everywhere that payment showed up: the dashboard pill, the client's own booking page, and the invoice all now read "Paid" rather than "Deposit paid" once a post-session payment comes through.

  57. Fix: "Try a test booking" stays ticked after you tidy up

    Once you have walked through a test booking, that step on your Get Started checklist now stays complete for good. Before, clicking "Clear test bookings" to tidy your calendar also un-ticked the step, so you had to choose between a clean calendar and a finished checklist. Now clearing your test bookings leaves the step ticked, and the "Clear test bookings" button only appears when you actually have test bookings to remove. Completing a real appointment counts too, so the step reflects that you have seen the booking flow work either way.

  58. Smarter waitlist matching and a Notify button

    Your booking waitlist is smarter now. Each waiting client shows the service and length they want, so you can see how much time you need to free up. When you cancel an appointment, waiting clients are emailed whenever the freed slot is long enough for the service they asked for, whatever the cancelled booking happened to be. Before, a cancelled deep tissue would never alert someone waiting for a relaxing massage, even on the same date.

    There is also a new "Notify of opening" button. If you make room by adding availability rather than cancelling, the automatic email does not fire, so you can now email a waiting client yourself in one click.

    See it →
  59. Fix: finishing your setup no longer gets stuck

    If you came back to finish getting set up after already adding a service or your weekly hours, the setup could get stuck on a step it had already done, showing an error that would not let you continue.

    That is now fixed. Coming back skips cleanly over anything you have already done, keeps the hours you set rather than resetting them, and the bio draft no longer retries in a loop if it stumbles.

  60. No more nudging clients to shorter sessions

    When a client picked a day that was fully booked for the session length they wanted, your booking page used to list shorter services that still had space, which quietly nudged them toward a cheaper, shorter appointment. We have taken that out. Now when a day is full they are simply pointed to the next available slot for the session they actually chose, or invited to join your waitlist for that day.

    Clients can still pick any session length you offer themselves, we just no longer steer a full-hour booking down to thirty minutes on your behalf.

  61. See which date each waitlist client wants

    When someone joins your waitlist from a fully booked day, we now remember the date they were looking at, so you can see exactly when they want to come in. Open Settings, then Waitlist, and each person shows the date they want, like Wants 3 Jun, next to their name instead of just the day they signed up. Anyone who joined before this shows Any date.

    The day they joined hasn't gone, it's moved to a quieter "Added" line under their service, so the date that actually matters is the one you see first.

    See it →
  62. Apply a client's discount code to a booking

    A client mentions they've got a code after they've already booked, and you no longer have to ask them to rebook. Open the appointment, look under the price, and tap Apply discount code. You'll see the codes that client can actually use, including any loyalty reward they've earned, each showing the exact amount it takes off. Pick one and it's on the booking, so the right total is charged.

    The code is only counted as used once you mark the appointment complete, so a cancelled booking never wastes it. Change your mind any time before charging with Remove code.

    See it →
  63. Let us write your profile bio for you

    If your profile bio is still empty, or you've never quite settled on what to say, you can now hand it over. Open Settings, then Profile, and tap Help me write my bio. Add a rough line about your style or the clients you work with if you like, spelling and all, then tap Draft my bio.

    It writes a warm, first-person bio from your services, qualifications and area, drops it straight into your bio box, and saves as you go. Edit every word until it sounds like you. A proper bio also helps clients find you on Google, so it's worth the minute.

    See it →
  64. Past days are locked in the availability editor

    When you open Edit availability, any day that's already been and gone is now greyed out and can't be tapped or dragged, so there's no way to accidentally reshape a week you can't take bookings in anyway. Today and everything ahead stay fully editable, and your past bookings still show on those greyed days so you can see what happened.

    We also tidied the "tap or drag to open / close slots" hint onto a single line under the header, which gives the grid more room on a phone. Thanks to Marcin for both nudges.

    See it →
  65. See last session's notes before the next appointment

    Before a returning client arrives, you can now glance back at what you did last time without opening their full record. When a client already has a SOAP note from an earlier session, their appointment card shows a "Review last SOAP note" link with the date on it, and the same link turns up on the dashboard "Up next" card as the session approaches.

    It's one tap straight to that previous note, so you walk in already knowing what you worked on and what to pick up. Clients with no notes yet don't show the link, so it only appears when there's something to read.

    See it →
  66. Move existing bookings to your new price

    When you change a service price, the bookings already in your diary keep the price you originally quoted, so nobody who's already booked gets a surprise bill. That's the right default, but it does mean existing bookings stay on the old price until you say otherwise.

    Now the service shows an amber banner under the row when there's a gap, like "8 upcoming bookings of Deep Tissue are still at the old £55 price". Tap "Update to £60" for a tick-list of the affected bookings with the old → new price beside each. Free or £0 sessions stay unticked. Confirm and they all move across at once. Thanks to Kim for the nudge on this one.

    See it →
  67. Fix: Availability button now works straight away from the month view

    Tapping Availability while you were on the month view appeared to do nothing, and then switching to the week view opened the slot editor instead of the week grid you wanted. The weekly slot editor only renders inside the week view, so a tap from month-land had no surface to appear on. The button now switches you to the week view first, then opens the editor in the same gesture.

    See it →
  68. A quieter, tidier calendar

    The calendar has had a quiet refresh to match the rest of the app. Day numbers are now set in the same warm serif used across your dashboard, today's column sits on a soft paper background with the date picked out in evergreen, and the now line is a clearer amber. Bookings keep their existing colour coding.

    The top of the page is tidier too: the title, week stats and a pending-requests chip sit on a single row, and the help panel that used to live at the bottom has moved to a small "?" button beside it. Open it and you'll find the short walkthrough video at the top.

    See it →
  69. Fix: completed sessions awaiting payment now flag red on the calendar

    Marking a session complete used to close the appointment card straight away, even when there was still money to chase, and the booking stayed grey on the calendar. That made it easy to forget about cash-on-the-day clients, or clients without a saved card who still needed a payment request.

    Now any completed booking with money outstanding turns red on the grid and shows "Payment due", and the appointment card stays open so you can send a payment request, mark it as paid, or take the card charge in one tap. Sessions covered by a membership, package, deposit or an existing charge stay grey as before.

    See it →
  70. Fix: the "Let clients tip you" toggle now saves

    The "Let clients tip you" switch on your Payments settings page now actually saves. Until today, flipping it on looked fine on screen, but a refresh showed it had reverted to off, so the option was effectively unreachable for anyone who tried to opt in. The switch now saves on the same one-second auto-save as the rest of that page, so the change sticks straight away and survives a reload.

    See it →
  71. Reserve before launch to lock in three months free

    Paid tiers are launching soon. If you haven't reserved your founding spot yet, this is a good moment to do it: the first 100 therapists to reserve get three months free once billing starts. Reserving is a single click, with no card, no charge, no commitment, and you can change your plan or cancel any time before launch. Open your dashboard and tap Reserve my spot on the banner near the top.

    See it →
  72. Fix: copy-pasted booking links with a stray space now resolve

    When a booking link was shared into a message and accidentally pasted with a leading or trailing space (so the URL became something like "/ jane-smith" instead of "/jane-smith"), every preview bot and click landed on a 404 instead of your profile. Analytics caught one of these in the wild this week. Links with stray whitespace anywhere in the path now redirect quietly to the clean URL, so the page loads as expected. Nothing changes for normal, correctly-formatted links.

  73. Fix: iOS app appointment popup now scrolls so every button is reachable

    On the iOS app, opening an appointment from the calendar could push the popup taller than the screen. The Edit and close (×) buttons disappeared above the top edge, and the SOAP note, Download invoice and Email invoice buttons disappeared below the bottom edge, with no way to scroll. Long popups now scroll inside themselves so every button is reachable, and the popup keeps clear of the iPhone's status bar and home indicator. Web and Android weren't affected.

    See it →
  74. Fix: booking week strip follows the picked date

    On your public booking page, when a client tapped Jump to next available time and the next opening fell in a different week, the available-times heading would refer to (say) Monday 25 May while the date strip above still showed the previous week. The picked date was nowhere on screen, so the client had no easy way to confirm which day they were about to book.

    The same disconnect happened when picking a date from the small month popup. Both paths now move the week strip with the picked date, so the highlighted day is always the one the times belong to.

    See it →
  75. Fix: tidier booking + client pages on phone screens

    The companion pass to last week's settings tidy-up, this time on the pages your clients see and the rest of your dashboard. On the public profile, the per-service Book link now has a comfortable tap area, and the "Add this app to your home screen" banner is taller so the dismiss is easy to hit. Inside the dashboard, the Clients list and the Client detail page reflow their action buttons cleanly at the top, the Reserve banner, Complete all button, Wellbeing pill and your booking-page copy link all sit at thumb-friendly heights, and the help and account pages got the same treatment. Nothing has moved on desktop.

  76. Fix: tidier dashboard on phone screens

    On real iPhones and Android phones, several dashboard pages had titles squashed into one-word-wide columns next to overlapping action buttons. The Reviews page title overlapped the Show on profile link, the Locations and Services lists had Edit, Deactivate and Archive sitting on top of the location pill, and the Events and Intake pages wrapped descriptions word by word. The layout has been tidied right across the settings area, with action buttons wrapping cleanly below titles on narrow screens and tappable buttons sized comfortably for thumbs. Nothing has moved on desktop, where the side-by-side layout is preserved.

  77. Fix: iOS app no longer gets stuck zoomed-in

    On the iOS app, tapping a small text field inside a popup would zoom the whole screen in, and the zoom didn't release when the popup closed. That left the app stranded at the wrong scale, with no easy way back. Fixed now.

    Form fields throughout the app render at a size iOS doesn't auto-zoom into, so tapping any input (search, notes, prices, appointment details, settings) keeps the app at its normal scale. Mobile web and the Android app weren't affected by the underlying bug, so nothing changes for those.

  78. Fix: tap a number field and the existing value is selected, ready to overwrite

    Pre-filled number fields used to make you delete the old digits before typing a new value. Now, whenever you tap or click into one, the existing number is selected automatically — start typing and it replaces the value, no clearing first. This applies right across the dashboard: prices in services, packages, memberships, gift cards and discounts, deposit and back-to-back amounts, reminder timings, retention rules, loyalty thresholds, location travel time, intake-form numeric defaults, and the Price field on the New Event modal. Small change, but a noticeable one on phones where the old behaviour was particularly fiddly.

  79. Fix: back-to-back charge button no longer includes cancelled sessions

    If you had a back-to-back booking and cancelled one of the sessions, the "Charge £X — back-to-back" button on the calendar could still include the cancelled session's price in the total. That's fixed. The button now reflects only the sessions that are actually going ahead, and the charge taken from the client matches what you see on screen. The same fix applies whether the cancelled session was tagged as cancelled or as a no-show, and to all the related places on the calendar (the red "Charge pending" tile, the back-to-back wording, the "Mark all complete" callout). Existing partial charges that pre-dated this fix can be refunded individually from the appointment in the usual way.

    See it →
  80. Waitlist: smarter notifications + apology for clients who miss out

    The booking waitlist now respects clients’ preferred dates properly. If a client joins hoping for a slot before 22 May, they won’t be emailed about a cancellation on 14 June — they’re only notified when the freed slot falls inside their window. And if their window passes without anything opening up, MassageHub now sends them an apology email the next morning, signed from you, with a link back to your booking page so they can see your next available slots. The entry moves to a new "Expired — apology sent" section in Settings → Waitlist so you can see what happened.

    See it →
  81. New: reserve your founding spot in one click — no card needed

    Reserving your plan ahead of launch used to mean entering card details. Not any more — reserving your founding spot is now a single click, with no card and no charge. You confirm payment later, before billing ever starts, and we'll always ask first.

    Your dashboard now also shows what your founding spot is worth, including any free months you've earned as an early member — reserve to lock them in. You can change your plan, or cancel your reservation, any time before launch.

    See it →
  82. New: you're told the moment a client leaves a review

    When a client leaves you a review through MassageHub, you now hear about it straight away — a push notification on your phone and an email — rather than the review sitting unseen until you happened to open the Reviews page.

    This matters because in-app reviews don't publish themselves: a new one waits as Pending and stays off your public profile until you approve it. The email and the notification both take you straight to Reviews, where one tap on Approve publishes it. So a kind word from a client can't quietly go to waste. Thanks to Emily for spotting that a client's lovely review had arrived with no word to her at all.

    See it →
  83. Fix: creating a second intake form no longer errors

    If you already had an intake form and created another — or changed which form is your default — the save could fail with a database error. That's fixed: saving now correctly moves the assignment, so the form you set as your default (or assign to a service or location) takes over, and the previous one is freed up.

    See it →
  84. Fix: intake forms no longer go out blank

    If an intake form was sent before any questions had been added to it, the client received a blank page — confusing for them, and easy to miss at your end. MassageHub now prevents that: a form with no questions can't be sent, and the Intake forms page clearly flags any empty form so you know to finish building it first.

    We also made the form builder safer to work in. The Save form button now sits in a bar pinned to the bottom of the screen, so it's always within reach no matter how long your form gets — and if you go back or close the tab with unsaved changes, MassageHub checks before you lose any work. Thanks to Louise for reporting this!

    See it →
  85. Fix: your Sales ledger now shows what you actually collected

    A quick follow-up to last week's Reports area. The Charged column in the Sales ledger — and in the Tax report — was using each service's list price rather than the amount that actually reached you. For a session paid in full at the usual price the two are identical, so most rows looked exactly right. Where they could differ, the figure was off:

    • A deposit taken at booking, a group booking split across people, or a price you adjusted after booking — the ledger showed the list price, not the sum actually collected.
    • An appointment paid with a package credit or a membership credit showed the full list price as Charged, even though no money changed hands at that session — the package sale or membership payment is the moment you were paid. That could quietly count the same income twice in a tax-year total.

    Both reports now show the amount genuinely collected — deposit plus balance — and fall back to the list price for cash or paid-offline sessions where nothing went through Stripe. Package- and membership-funded appointments now correctly show £0, counted once at the sale rather than twice.

    If you've already downloaded a ledger or a tax export, it's worth pulling a fresh one — the new figures are the accurate ones. The Reports area is only a few days old, so thank you for your patience while we get the numbers exactly right.

    See it →
  86. New: a live timer for the session you're in right now

    There's a new card waiting at the top of your dashboard whenever an appointment is happening — or about to.

    Before it begins, the card shows who's coming in, what they've booked, and a Start appointment button. Tap Start and it turns into a live timer: minutes ticking up, your scheduled finish time alongside, and — if the session runs long — it turns amber and tells you exactly how many minutes over you are. A calm, glanceable way to keep half an eye on the clock without watching it.

    When you're done, tap Complete appointment right there on the card. It does precisely what marking complete from the calendar does — the review request, the loyalty point, your income figure, any package or membership credit — all from the one tap. Tapped Start by mistake? Undo start puts it straight back. And if a card payment is still due after the session, the card turns amber when you complete it and points you to the calendar to sort it — so a session finished in a hurry never leaves money quietly forgotten.

    Nothing to switch on. The card simply appears when there's a session to run, and steps out of the way when there isn't.

    See it →
  87. Income and Reports, now in one place

    A small tidy-up. Reports used to have its own spot in the dashboard menu — it now lives inside Income, so the two halves of "how's the money looking" sit together and there's one less item in the nav.

    Open Income and you'll spot an Income / Reports switch right at the top, where the page title is. Tap Reports for your sales ledger, tax export, mileage and client list; tap Income for your earnings overview. The reports themselves haven't changed at all — they're just easier to find now.

    See it →
  88. Fix: tap a number in the time picker to jump straight to it

    Whenever you set a time in MassageHub — your working hours, a custom day, a specific slot — you use that little spinning wheel of numbers. Until now you could only scroll it; tapping a number you could already see did nothing, which quietly felt broken. Now a tap works too: tap any hour or minute and the wheel rolls smoothly to it. Scrolling still works exactly as before — this just adds the faster way.

  89. New: send an intake form before a client books

    A request from Emily — and a really natural one. Sometimes you want to see what a client's dealing with before you confirm a booking with them. Maybe you're not sure you're the right therapist for what they're after, or there's a contraindication you need to know about first.

    Open any client's record and you'll see a new button at the top of the Intake forms section: Send intake form. Tap it and a small dialog opens with a pre-filled friendly note — "Hi there — before we look at booking you in, please could you fill in this short health consultation form?" — which you can edit however you like before sending. The email goes straight to the client with your default intake form linked inside.

    While you wait, the client's profile shows the form as Sent — awaiting response. The moment they submit, you get the same notification email you always do, the responses appear on their record, and you can decide whether to invite them to book.

    Thanks Emily for the nudge on this one!

    See it →
  90. New: Reports area — sales ledger you can hand to your accountant

    A proper home for everything you need to pull out of MassageHub for your own records. The new Reports area opens onto a tile grid; the first tile to land is the Sales ledger.

    The sales ledger is every appointment in a chosen date range with Charged, Refund, Net, and the payment method (card, cash, package credit, membership credit, gift card). Pick a preset (This tax year, Last month, Last quarter, YTD) or a custom from/to. Pick a format (CSV for spreadsheets, Excel with currency formatting, or PDF for accountants). Then either download to your device or have it emailed to you — same email you log in with — as an attachment.

    A few small things shipped alongside it that matter:

    • The Income page now subtracts refunds correctly. It quietly didn't before, so refunded sessions appeared in your revenue total at full price. If your YTD figure looks a touch lower this morning, that's why — and it's now showing the figure that matches reality.
    • The Export button on the Income page now opens the same Sales ledger configurator, so you have one place for any kind of period or format.
    • Tax export, mileage, and a client list are next in the same area — coming in follow-up updates over the next few days. Same configurator, same download-or-email pattern.

    Designed with the UK self-assessment season in mind — but useful any time you need a clean record of who paid you, how, and how much.

    See it →
  91. Fix: dates and times during British Summer Time now show correctly across the app

    A small but pesky one. A handful of pages and emails were quietly being formatted on the wrong clock — the server's clock, which is UTC — so during British Summer Time you'd occasionally see a time that was an hour earlier than the appointment really was, or a date that had quietly rolled back to the previous day for anything happening just after midnight UK time.

    The places this could bite were a cancellation SMS arriving in your pocket with the wrong time, the renewal date on Settings → Plans, the submission date on a client's intake response, and a few admin views you don't see. Nothing about how appointments were actually stored or scheduled was affected — only the way they were displayed.

    Every one of those formatters now uses Europe/London explicitly, so BST and GMT both come out right. We've also added a build-time guard that'll refuse to deploy any future change that introduces the same mistake, so it can't silently come back.

    If you spotted a date or time that looked a beat off recently — that was this. Sorry about that, and it's now sorted.

  92. Clients can now leave you a tip — gently, and only if you want them to

    This one started with a client asking his therapist a simple question: "Could I leave you a tip?" There was no way to. We asked a few therapists what they thought, and the answer was a warm yes — so here it is.

    Here in the UK a tip is never expected, and MassageHub treats it that way. Nothing about this is pushy. It's off by default — your clients see nothing until you decide otherwise. When you're ready, go to Settings → Payments, find Let clients tip you, and switch it on. That's the whole setup.

    Once it's on, two quiet things happen after an appointment is marked complete. The "How was your appointment?" email a client already receives gains a small, low-key line below the review button — "you can also leave a tip" — easy to miss if they're not looking for it, easy to find if they are. And the next time they open their client area, a gentle card offers the same. They can dismiss it; it won't nag.

    If they do choose to tip, they're shown a few sensible round-pound amounts based on what their appointment cost — or they can type their own. 100% of it goes to you. MassageHub takes nothing. It lands straight in your Stripe account, just like any other payment, and shows up as a separate Tips received figure on your Income page so it never muddles your session revenue.

    A couple of things worth knowing:

    • You need a way to be paid. If you're on Stripe, tips are a smooth in-app payment with suggested amounts. If you only use an external payment link (PayPal, Revolut and the like), clients are sent there to tip — they enter the amount themselves, and we can't confirm it, so it won't appear on your Income page. Connect Stripe for the full experience.
    • It's genuinely optional — for everyone. Off until you turn it on; and even then, never presented to clients as anything other than a kind extra.

    Thank you to the therapists who told us they'd welcome this. If a client wants to say thank you, now they can.

    See it →
  93. Fix: installed app no longer gets stuck on the logo screen

    If you've added MassageHub to your home screen, opening it could occasionally hang on the green logo and never load the app — most likely on a slow mobile data connection. The app now opens through a lightweight launch screen that loads almost instantly, so it gets you to your dashboard reliably even when the signal is weak. Thanks to Emily for reporting this one!

  94. Client retention can now create discount codes for you — a fresh, single-use one for every client

    When client retention first landed, attaching a discount meant a fiddly two-step: nip over to Promotions, make a code by hand, then come back and type that code into the trigger. Easy to get wrong — a typo, or a code you later deleted, would still go out to a client as a dead, embarrassing offer.

    That's gone. Open any trigger under Settings → Client retention — win-back, birthday or anniversary — and you'll see Include a discount offer. Tick it, choose a percentage or a fixed amount, and set how long the offer should stay open (30 days by default — change it to whatever suits you). That's the whole job.

    From then on, every time that retention email goes out, MassageHub mints a brand-new discount code for that one client — something like `BIRTHDAY-7K2P` — and drops it into their email along with the offer and its expiry date. Because each code is personal and works exactly once, it can't be forwarded around a WhatsApp group or reused on a second booking. The client gets a genuine little gift; you don't get gamed.

    A few things worth knowing:

    • You never touch a code. No creating, no naming, no typing. These personal codes also stay out of your Promotions list — that page is still just for the codes you make.
    • You can see them land. The Recently sent list now shows each client's code and quietly marks it "redeemed" once they've used it — so you can see what's actually pulling people back in.
    • It tidies up after itself. Codes that expire without being used are cleared away automatically. Nothing piles up.

    If you'd rather send a warm note with no offer at all, leave the box unticked — that's still often the version that lands best. But when you do want to give a little nudge, it's now genuinely one tick and done.

    See it →
  95. Discount codes can now be limited to one use per client — including a yearly birthday code

    Until now a discount code had two settings: unlimited, or a total cap shared across everyone. So a "10% off your first booking" code worked — right up until the same client used it on their second, third and fourth booking too.

    There's a new field on every discount code: Max uses per client. Set it to 1 and each client can redeem that code exactly once, however many bookings they make. It sits alongside the existing Max uses (the total cap) and the two work independently — a code can be unlimited overall but one-per-client, or capped at the first 50 redemptions, whoever gets there first.

    And there's a second part to this. If you set a per-client limit, a tick-box appears: Limit resets every 12 months. Leave it off and the limit is for life — perfect for a genuine first-visit welcome offer. Tick it and the limit quietly refreshes a year after each use — so a single HAPPYBIRTHDAY code can be given to a client every year, and each year it works once and then politely declines until their next birthday comes round. One code, set up once, no need to make a fresh one each January.

    You'll find it under Settings → Promotions, in the Discount codes section — create a new code or edit an existing one. If a client tries to reuse a code they've already had, they're told gently at checkout, before they pay.

    This one came straight from a therapist asking for it — exactly the kind of nudge that makes MassageHub better. Keep them coming.

    See it →
  96. Travel area: how your default map and date overrides work — handy for this week's tube strikes

    With tube strikes expected across London from Tuesday 19 to Friday 22 May, this is a good week to look at a feature that's easy to misread — your Travel area map, under Settings → Travel area.

    Here's the thing therapists most often get tangled up in. The Travel area page can hold more than one map, and it isn't always obvious which one is in charge on a given day. Let's untangle it.

    Your default area is the map that does the everyday work. Any day that isn't covered by something more specific falls back to it. If you only ever set up one area, that one is your default and it applies every day — simple.

    Date overrides are the exception that wins. On any area you can add a date or a date range — and on those dates, that area is used instead, whatever your default or your day-of-week rules say. Think of an override as a sticky note placed over your normal map: it sits there for the dates you chose, then peels off on its own and everything goes back to normal.

    So the priority order, simplest to remember: a date override beats a day-of-week rule, and a day-of-week rule beats the default. Most specific wins.

    Why this matters this week. TfL strike action is planned from midday to midday, Tuesday 19 to Friday 22 May, with disruption likely to spill into the evenings while services recover. The Elizabeth line, DLR, Overground and trams should run, but busier than usual. If you're a mobile therapist who normally relies on the Underground to criss-cross London, a client could book you on the Wednesday for a district you simply can't reach that day.

    Here's the fix, and it takes about two minutes. Create a second area — call it something like "Tube strike week" — and on its map select only the districts you genuinely can reach without the Underground (on foot, by bike, by bus, or in your own car). Then open that area's Date overrides tab and add the range 19 May → 22 May with a note like "Tube strikes". For those four days, clients outside that smaller patch are gently told you don't travel to them; the morning after, your normal default map is back automatically — nothing to switch off, nothing to undo.

    A few things worth knowing:

    • An area with no districts selected doesn't restrict anyone — it's only the districts you actively select that draw the boundary. So a half-finished area is safe to leave; it just won't do anything yet.
    • The check only ever applies to mobile bookings where the client gives an address. Clinic bookings are never affected.
    • There's a "Test a postcode" box at the bottom of the page — paste in a postcode and it tells you, day by day, whether that client could book. Worth a quick check once your override is in.

    The full walkthrough, with screenshots, is in the new help article linked below. And even if you're nowhere near London, the date-override trick is just as handy for match days, school holidays, road closures, or any stretch when your usual travel map doesn't hold.

    See it →
  97. Refer another therapist — earn a free month of Plus, with no limit

    You might not know this: every MassageHub therapist has a personal referral link, and it has quietly been earning free Plus months for the people who use it. We thought it was worth a proper mention.

    Here's how it works. Share your link with another massage therapist — when they sign up through it and go on to a paid plan, a free month of Plus lands on your account automatically. No code to redeem, nothing to claim — it just appears. And there's no cap: refer five therapists who go paid and that's five free months, stacked one after another on top of whatever access you already have.

    Your link lives in the Refer a therapist card on your dashboard. Tap Copy link and it's ready to drop into a WhatsApp to a colleague, your Instagram bio, or one of the peer Facebook groups. The same card shows each therapist you've referred and where they've got to — signed up, set up, first session done — so you can see your referrals come to life.

    Massage is a word-of-mouth profession, and the therapists you'd happily recommend MassageHub to are exactly the ones it was built for. If it's saved you time, passing it on is the warmest kind of introduction — and now it's one you're thanked for.

    See it →
  98. Your clients can now invite a friend straight from their post-session email

    A client referral is one of the warmest leads you can get — but only if your clients are actually asked. Until now the place to share a referral link lived quietly in the client portal, a page most clients never revisit after they've booked.

    So we've moved the ask to the moment it actually lands. The "How was your appointment?" email that goes out after every completed session now also gently invites that client to share their personal referral link — they've just had their treatment, they're relaxed and well-disposed, and a friend is exactly the kind of person they'd mention you to.

    Here's the part that needs you, though: the invite only appears if you've switched on referral rewards. A nudge with nothing behind it converts poorly, so when your programme is off the email stays exactly as it was — no referral block at all. Turn rewards on and every post-session email quietly does the asking for you.

    It takes a minute in Settings → Referrals: pick a reward (a £10 credit is simple and feels tangible), choose whether it triggers when the friend books or after their first session, and — worth doing — switch on "Also reward the referred client" so the new client gets the same discount on their first visit. That turns it into "use my link and you'll both get £10 off", which is a far easier thing for a client to say.

    The Settings tile now also tells you the truth at a glance: "Rewards on — £10 off" when it's live, "Tracking on · rewards off" when it isn't. Nothing changes for clients who book through a referral link today — this is purely about making sure the ask gets made.

    See it →
  99. New: client retention — automatic win-back, birthday and anniversary messages in your voice

    The quietest way a practice loses income is clients who simply drift away — no complaint, they just never rebooked. Most booking apps answer this with discount blasts that feel salesy and train clients to wait for an offer. We wanted something that sounds like you, and that doesn't add a single job to your week.

    There's a new page at Settings → Client retention. Turn on the triggers you'd like:

    • Win-back — a client who hasn't booked for a while (you set how many days; 45 by default).
    • Birthday — a warm note on a client's birthday, if you have their date of birth on file.
    • Anniversary — a thank-you on the anniversary of their first visit.

    Each trigger comes with a warm message already written. Edit it once so it sounds exactly like you — pop in {name} wherever you want the client's first name — and you're done. From then on it's hands-off: each morning MassageHub checks your clients and sends to anyone who's due that day. Nothing to review, no list to clear.

    You can preview the exact email before turning a trigger on, and a "Recently sent" list shows everything that's gone out. Only clients who opted in to marketing messages are ever contacted, and every email carries an unsubscribe link — so you're on the right side of the UK marketing rules without having to think about it.

    Honestly, a warm "how have you been?" with no discount often lands better than an offer — it reads as care, not a pitch.

    See it →
  100. New: a public changelog, an About page, and an anonymous UK map of MassageHub therapists

    A therapist deciding whether to trust a new tool wants to know it's real and that it's here to stay. We've added three things to the public site that say so plainly — and one of them involves you, so here's exactly what it is.

    A live map on the homepage. There's now a UK map on massagehub.app showing one dot for every therapist using MassageHub — so a visitor can see at a glance that they wouldn't be the first or the only one. It is completely anonymous: no names, no business names, no photos, nothing clickable. And every dot is deliberately nudged a few kilometres off your real location before it's ever drawn, so it reads as "a therapist works around here", never a pin on your home or clinic. This is exactly what the Therapist Promise means when it says you're never listed in a directory without your consent — it's a headcount made visual, nothing more.

    A public changelog at massagehub.app/changelog — every feature and fix we've shipped, newest first. It's built straight from these announcements, so it's always current. Handy proof, for you as much as for prospects, that the app is actively looked after.

    An About page at massagehub.app/about — the honest version of why MassageHub exists, written by Paul, who still works as a massage therapist himself.

    Nothing here changes how the app works. If you'd ever prefer your dot not to appear on the map at all, just reply and we'll remove it — no questions asked.

    See it →
  101. Gentle nudges where they're useful — regular-client suggestions and ready-made promo codes

    Some of the most useful things MassageHub can do — memberships, recurring bookings, discount codes — are easy to forget about, because nothing ever points them out at the moment they'd actually help. We've added a few quiet nudges to fix that.

    On a client's page — if someone's been in three or more times, you'll see a small suggestion at the top: a membership could be worth offering them, or — if they keep booking the same service at the same time — you could set it up as a recurring booking so they don't have to rebook each time. You'll only ever see one suggestion at a time, and there's a Dismiss link if it's not for you.

    On the Promotions page — instead of a blank form, there are now three ready-made starting points: First-visit 20% off, Bring a friend, and Quiet-week filler. Tap one and the discount-code form opens already filled in — change the code, the amount, the dates, anything you like, before you save.

    Around Christmas — from October you'll see a seasonal reminder on your dashboard to set up gift cards, since vouchers tend to sell well as presents.

    None of this changes how anything works — they're just prompts, and you can dismiss any of them. The features they point to have all been here for a while; they've just been quiet.

    See it →
  102. Calendar sync is clearer — it does two separate jobs, and most therapists want both

    The Integrations page offers a few different Google Calendar options, and it hasn't always been obvious which one you needed — or that you might want more than one. We've rewritten that page (and the help article) to make it plain.

    Calendar sync does two separate jobs:

    • Push bookings to your calendar — your confirmed MassageHub bookings show up in your phone's Google Calendar. This is the one-click "Connect Google Calendar" button. It does not read your existing events.
    • Block busy times — your existing calendar events (meetings, personal appointments, days off) stop clients booking over them. This is the "paste a private iCal link" option, and it also works with Apple Calendar, Outlook, and Fresha. It does not push your MassageHub bookings anywhere.

    They're set up separately, and connecting one doesn't do the other — so for a calendar that's fully in sync both ways, you want both. The Integrations page now spells this out at the top, and each section says clearly what it does and doesn't do.

    There's also a gentle reminder on the Availability page now: if you haven't connected anything to block your busy times, you'll see a note — because without it, a client could book you over something already in your diary.

    Nothing you've already connected has changed — this is purely clearer wording.

    See it →
  103. Fix: Availability page is properly tappable on mobile

    Tapping a time on the Availability screen on a phone used to need surgical precision — the small HH:MM boxes were only about 34px tall and the per-day on/off checkbox was a 16px square. Same story for the time off & custom hours form: the date pickers, the Single day / Date range toggle, the Time off / Set custom hours radios, the Add time off submit button — all sat below the comfortable thumb-size we now hold ourselves to.

    Everything on this page now meets the 44px tap-target floor on mobile: time pickers, the day-name + on/off row (the whole left half of each row is one tap target now), location selectors, the slot-interval dropdown, the Save hours / Save slots buttons, and the full "Add time off" form. The same time-picker control is also used on Locations, Calendar, and Events, so the fix extends to all of them in one go.

    Desktop is unchanged — the larger controls only appear at phone widths. If you mostly use the dashboard on a laptop you won't notice anything different; if you do quick edits on your phone between clients, the dead-clicks should be gone.

    See it →
  104. Fix: "Charge pending" tag no longer lingers when the deposit already covers the total

    A completed appointment was still showing the red 💳 Charge pending tag on the calendar even after the client had paid a deposit that covered the whole price. The appointment modal correctly recognised it (you'd see Deposit paid £x in amber and a button offering to mark it fully paid) — but the calendar tile kept nagging.

    This came up most after a Stripe Express → Standard migration, where the client's card on file was lost: you'd send a payment request, the client would pay it, and that payment landed against the appointment as a deposit. The deposit covered the full price, the session went ahead, you marked it completed — and the calendar still acted as if a card-on-file charge was waiting to be tapped.

    The calendar tile now treats deposit ≥ total as already paid: no red tile, no Charge pending subtitle, no card emoji — the appointment shows in the normal completed-grey style like any other paid session.

    While fixing this I also re-worded the modal button itself. It used to read ✓ Mark fully paid (deposit covers total) — the leading green tick made it look like the action had already been done, when actually it was still a call-to-action. It now reads Tap to mark fully paid (deposit covers total) so the prompt is unambiguous. Tapping it records the official "deposit_only" status against the row for your income reporting; the calendar tile no longer pretends money is outstanding while you decide.

  105. Settings now opens on a tile grid showing what's set up and what's still cold

    Until now, clicking Settings in the top bar (or on the mobile icon strip) dropped you straight into the Profile screen — fine if that's where you were heading, less helpful if you weren't sure which screen you needed.

    The Settings button now opens a landing page with every settings area laid out as a tile — Profile, Locations, Services, Availability, Travel area, Booking, Reminders, Intake, Aftercare, Wellbeing, Emails, Message clients, Events, Payments, Promotions, Bundles, Loyalty, Referrals, Waitlist, Reviews, Integrations, Analytics, Credentials, Trusted Therapists, Account.

    Tiles that are set up show a soft green pill underneath telling you the state (e.g. "5 active", "Stripe connected", "Calendar connected"). Tiles you haven't touched yet stay plain — no red "missing!" badges, no homework vibe — just neutral, click in when you're ready.

    The groupings (Setup, Schedule, Clients, Commerce, Marketing, Account) mirror the left rail, so once you click into a tile the rail you already know is still there. Inside each group, free features come first, then Pro, then Plus — same order as the rail.

    If you had `/dashboard/settings/profile` bookmarked it still works — only the Settings button in the top bar (and the mobile cog icon) has changed where it points by default.

    See it →
  106. Service descriptions now keep your paragraphs and bullet points

    Thanks to Emily for the nudge. The description field on each service used to flatten everything into one solid block of text — even if you'd typed it as separate paragraphs, hit enter for line breaks, or laid it out as a bulleted list, clients saw it all squashed together on your booking page.

    Now the description preserves whatever line breaks you typed. Hit enter for a new line, leave a blank line between paragraphs, type your own bullets (• or -) at the start of a line — it'll all render exactly as you wrote it on your profile, booking page, and "buy a package" page.

    Nothing changes for existing descriptions that are one continuous paragraph — they look the same as before. The dashboard inline editor now uses Cmd/Ctrl + Enter to save (so plain Enter inserts a newline like you'd expect in any other text box).

    See it →
  107. Half-hour time labels on the availability grid

    Thanks to Marcin for the nudge. The weekly slot editor on Calendar → Edit availability used to only label the hour rows (09:00, 10:00, 11:00…), which made it slightly fiddly to land on the right cell when you wanted, say, the 10:30 slot.

    The left column now shows every 30-minute mark — 09:00, 09:30, 10:00, 10:30, and so on — with the half-hour labels rendered a touch smaller and lighter so the hour boundaries still read first at a glance. To match, a dim dashed line now runs across the grid at each 30-minute mark, so you can see exactly where the half-hour falls inside every day column too.

    Nothing functional has changed — the grid still paints in 30-minute slots, you still tap-or-drag the same way. It's just easier on the eye.

    See it →
  108. Loyalty milestones: set a minimum session length per milestone

    Thanks to Marcin for the suggestion. If a chunk of your bookings are short add-ons or quick top-ups, you probably don't want those to chip away at a big reward the same way a full hour does — but you might still be happy for short sessions to count toward smaller milestones.

    Each milestone now has its own Minimum session length field on the add/edit form. Set it to e.g. 60 on your "10th session" milestone and only completed sessions of 60+ minutes will count toward it — shorter sessions still happen, still get paid for and SOAP-noted as normal; they just don't move the needle on that milestone. Your "5th session" milestone can keep its minimum at 0 (every length counts) at the same time, so the two thresholds live happily side-by-side.

    For back-to-back bookings, the combined length is what we check — so a 30-minute add-on tacked onto a 60-minute treatment still counts toward a milestone with a 90-minute minimum.

    Milestones with a minimum show an amber "60+ min" pill in the list, and the matching client portal card explains the rule too. Leave the field at 0 (the default for both existing and new milestones) to keep the current behaviour.

    See it →
  109. Tightened the client sign-in screen so it can't be used to look up clients

    The sign-in screen on your booking page used to do something convenient but a bit too revealing: if a returning client typed an email we didn't recognise, we'd ask for their mobile number and — if it matched — show them a half-hidden email like *pg\\\@gmail.com** so they'd remember which address they'd used.

    The trouble is that anyone could type any email or mobile number on your booking page and get a yes/no on whether that person is a client of yours. With enough patience, a stalker, employer, or jealous partner could check a list of phone numbers against your client list. Not theoretical — the same shape of leak has bitten other practice apps.

    What changed:

    • The screen no longer tells the caller whether the email or number matches. It always says "check your inbox".
    • If a client genuinely forgets which email they used, there's a "Forgot which email? Use my mobile number →" link that triggers a sign-in email to the address on file — but never shows them the address on screen.
    • All three back-end endpoints that used to confirm "yes, this email/number is a client" have been deactivated.

    What you might notice: very occasionally a client will message saying "I can't find which email I used with you." Look them up in Clients, tell them the address, and they'll get the sign-in link the next time they try.

    Not something most therapists will see day-to-day, but worth flagging because the behaviour of the recovery screen did change.

  110. "Paid tiers launching soon" signpost now sits above the settings menu

    A new yellow card has appeared at the top of your Settings menu — at the top of the left rail on desktop, and just above the tab bar on mobile. It reads Paid tiers · Launching soon · See plans →, and tapping it opens the Plans page where Pro and Plus are laid out side-by-side with the full feature comparison underneath.

    It's purely informational right now. Billing hasn't launched, so nothing on the Plans page is asking you for money today — you can read through, see what each tier covers, and that's it.

    If you do want to lock in Pro or Plus ahead of launch, the Reserve buttons on that page let you save a card. Clicking one now opens a short confirmation panel first that spells out exactly what happens — no charge today, first payment only when billing launches, cancel from this same page any time — so the Stripe screen that follows doesn't catch you off-guard.

    This is the start of the run-up to paid tiers going live. You'll see a few more gentle signposts over the coming weeks; nothing changes in how MassageHub works for you today.

    See it →
  111. Fix: every payment flow now copes with a Stripe disconnect/reconnect

    If you ever disconnected and reconnected your Stripe account (for example switching from Express to Standard), some of your existing clients had a "card on file" reference that secretly pointed at the old account. The card itself was gone, but MassageHub still thought it had one — and the way the app behaved depended on which screen you happened to land on.

    The full sweep:

    • Send payment request on an appointment for one of those clients now quietly creates a fresh Stripe customer instead of erroring on the stale one. The Checkout link comes through, the client pays, and the card is saved off-session for the next charge.
    • Client portal → Save a card opens a fresh card form instead of refusing.
    • Charge client now (and every cron-driven charge — auto-charges, cancellation fees, no-show fees, package charges, membership top-ups) now treats a 404'd Stripe customer as "no card on file" rather than a generic error, so the right "Send payment request" fallback is offered.
    • F-CardDecline recovery emails no longer get fired for a stale customer where the email link couldn't work anyway — these now skip recovery and the therapist is told straight away.
    • Membership card-update screens (therapist and client portal) and the /update-card email link now show a clear "this is no longer linked to a valid Stripe customer — please set it up again" message instead of a Stripe API error page.
    • Therapist packages → Charge card correctly says "no saved card" instead of failing the dialog with a 500.

    In short: every code path that used to read a saved-customer reference now verifies it on the current Stripe account before relying on it.

  112. Restore archived membership plans and treatment packages

    Archiving a plan or package used to be a one-way door — once it was off the public list, the only way back was to recreate it from scratch (and lose the purchase history that was tied to it). Now it works the same as your services list: on Settings → Payments, archived items collapse into a tidy ▸ Archived plans (n) and ▸ Archived packages (n) roll-up at the bottom of each card, and every one has a small Restore link that brings it straight back to active. The Stripe price / product is reactivated for you at the same time, so existing purchase links start working again the moment you click. Thanks to Marcin for asking for this!

  113. Fix: the first monthly membership charge actually gets attempted

    A nasty silent failure on membership sign-ups. When a client subscribed to one of your monthly plans, the subscription was created in Stripe, the invoice was raised, the payment method was set as the default — and then the bank was never asked to charge it. Their portal showed Payment overdue, their card was untouched, and the only way to recover was for you to spot it.

    The cause was an API change at Stripe's end that we missed when we upgraded the integration earlier this year. The field we relied on to drive the first charge (`invoice.payment_intent`) was renamed (to `confirmation_secret`) and the old name now silently returns nothing. Every membership sign-up since the upgrade looked like it worked but never actually attempted the first charge. The webhook never fired because the bank was never asked.

    Now we drive confirmation server-side using the new field, the bank gets asked on the first try, 3D Secure runs through inline if the bank wants it, the charge lands, and the membership flips to Active before the page even finishes loading.

    Surfaced by a client who tried to start a 4×/month plan and ended up stuck three times in a row before we tracked it down.

  114. Fix: approving one back-to-back booking now turns the whole group green

    When a client requested back-to-back sessions in application mode and you tapped Approve booking on one of them, the system was approving all of them in the database — but only the row you tapped turned green on the calendar. The siblings stayed orange and kept showing the Approve booking button, so it looked like you still had two or three more to approve. You didn't, but you couldn't tell from looking.

    Now approving (or declining) a single session in a back-to-back group instantly updates every sibling in the calendar view too — they all flip to confirmed (green) or cancelled together, and the Approve/Decline buttons disappear from the rest. No more "did that actually work?" moment.

  115. Fix: post-session charges work for clients who pay with Stripe Link

    Stripe now heavily promotes Link — its 1-click saved-card wallet — to returning customers at checkout. So a growing number of your clients are paying their booking deposits via Link rather than a plain card. That hit a snag in our charge code: when you tapped Charge remainder (or Charge on a completed session), MassageHub looked up the saved card on the Stripe customer record but ignored Link payment methods. The charge would fail with "No saved card found on the customer record" — even though Stripe was perfectly happy to charge that Link wallet off-session.

    The lookup now accepts any payment method the client saved at booking — card, Link, anything reusable — so the post-session charge goes through on the first tap. As an extra belt-and-braces, when the booking has a deposit on file we now go directly to that deposit's payment method, so even if the customer-record lookup somehow comes up empty we use the same method that already worked once.

    Surfaced by a back-to-back booking on Sunday: three sessions, £85 deposit paid with Link, then the £131.75 remainder wouldn't collect at the end of the day. Fixed for everyone now.

  116. Import reviews from Facebook, Bark, Trustpilot — anywhere

    Most of you have collected glowing reviews on platforms that don't talk to MassageHub — Facebook recommendations, Bark testimonials, Trustpilot ratings, lovely emails from clients. They've been sitting there gathering dust while only your Google and Fresha reviews show up on your profile.

    Not any more. Reviews → Imported is a new tab where you paste reviews from any source and they appear on your public profile alongside Google and Fresha.

    How it works. On a desktop browser, open your Facebook reviews page (or Bark, Trustpilot, Yell — anywhere), scroll to the bottom so all reviews load, then ⌘A → ⌘C → paste into MassageHub. Tag where it came from ("Facebook", "Bark", etc.), click Parse, and our AI extracts each review — name, text, star rating where visible. You confirm the list, edit anything that looks off, and save. The reviews show on your profile with a small badge so visitors see exactly where each one came from.

    Re-pasting is safe. When more reviews land on Facebook next month, just re-paste the page — identical reviews are recognised and skipped, only new ones are added. So one workflow keeps you in sync forever.

    Email testimonials and word of mouth work too — there's an "Or add one manually" button for typing in single reviews from sources that don't have a public page.

    Thanks to Rose for asking for this — she wanted to bring her Facebook reviews onto her profile, and the same flow now works for every other source too.

    See it →
  117. See a client's loyalty stars at a glance — and a tighter "full price" rule

    Two small changes to Loyalty milestones that go together.

    1. The "X stars" pill is now on every client's profile. Open any client in Clients → [name] and you'll see a small amber pill at the top, right next to their session count. It's the same number the client sees on their loyalty card on their dashboard — so you can answer "where is this client in my loyalty programme?" without leaving their profile. The pill only shows once you've set up at least one active milestone, so it stays out of the way if you're not running loyalty.

    2. "Full price" now means actually full price. A star should be a thank-you for a client who paid your full advertised price with no discount stacked on top — that's always been the principle, but the count was a bit too generous. From today, a session doesn't* count toward stars if any of these applied: membership credit, treatment package, back-to-back discount, green / eco discount, promo code, gift card, manual price adjustment, or a label discount on the client's record (Friend / VIP / Staff with a percentage off). Membership and package sessions were already excluded; the others are new.

    If you preferred the old behaviour, the existing Count membership and package sessions toggle at the top of Settings → Loyalty now means "count every completed session regardless of discount" — flip it on and you're back to the looser rule.

    Nothing changes for rewards already issued — we never claw back a code a client has earned.

    See it →
  118. New-booking alerts now name the clinic

    If you have more than one clinic location, the New appointment email, SMS and push alert had a small but real gap: they told you the client, service, time and price — but not which of your clinics the booking was for. Easy to miss, and easy to walk into the wrong building.

    The alert now includes a 📍 location line in the email and tacks at [clinic name] onto the SMS and push. Mobile / home-visit alerts are unchanged — they already showed the client's address. Application-mode requests and back-to-back bookings get the same treatment so multi-clinic therapists are covered everywhere.

  119. Fix: one reminder per back-to-back booking, not three

    A client with three back-to-back appointments on the same day was getting three separate reminder emails (and SMS, and pushes) — one per session — landing in their inbox a few minutes apart. Same for the therapist. The reminder cron treated each appointment in the group as if it were a standalone booking.

    Back-to-back groups now collapse into one consolidated reminder per booking, per channel. The email lists every session in the group with the start time of each — first session named at the top with the address and any access notes, the rest as a bullet list underneath. SMS reads "your 3 back-to-back sessions with [therapist] start on [date] at [time]" instead of one message per session. Push notifications likewise show "3 back-to-back sessions" with the start of the first. Solo bookings are unchanged — same email, same wording.

    No action needed; the dedup is keyed on the earliest session in the group, so even if your hourly cron picks up a different sibling first, only one reminder goes out.

  120. A small "who am I?" card for clients arriving from Google

    Emily noticed her Mellow Light Therapies profile is now showing up in Google search results — great — but the link drops clients straight onto Step 1 of the booking flow ("Where are we visiting?"), with no context about whose page they've just landed on.

    The top of your booking page now shows a small intro card on the first step only — your photo, your name and business, your location (with Mobile therapist appended if you have a mobile location set up), plus plain-text links to View full profile and (if you've added a website to your profile) Visit website. Both links open in a new tab so they don't interrupt the booking. The card is hidden as soon as the client moves past step 1 so it doesn't clutter the rest of the flow, and it's hidden entirely for returning clients who already have an account with you. Nothing to set up — it pulls automatically from your profile.

    To check it yourself, open your booking link in an incognito / private window (or any browser you're not signed into). If you visit your own booking page in your normal browser and you've ever made a test booking with yourself, the system treats you as a returning client and hides the card — that's the same logic that hides it from your real clients.

    Thanks to Emily for spotting this!

    See it →
  121. Tap a client in Today's schedule to open their appointment

    The rows inside the Today's schedule widget at the top of the dashboard looked tappable on a phone — name, time, price all sitting there like a button — but tapping them did nothing, which on mobile is a particularly easy place to get caught out. Now they're properly wired up. Tap any row and the calendar opens at that appointment's date with its detail panel already open: charge, edit, mark complete, or jump to the client without an extra hop.

  122. Fix: renaming a service on mobile

    On the Services page, renaming a service used to mean hovering over the title to reveal a Rename link — fine on a laptop, invisible on a phone. The whole title is now tappable: tap the service name and it goes straight into edit mode, on any device.

    See it →
  123. Marking sessions complete — what it unlocks, and a tidy-up if you've let some pile up

    A quiet check of the appointments table this week turned up something worth flagging: a few of you have a backlog of past sessions still showing as confirmed rather than completed. One tap to mark complete, but easy to forget — especially if a client paid in cash and there's nothing on screen demanding action afterwards.

    Here's why that one tap matters more than it looks:

    • Your income figures — the revenue dashboard only counts completed sessions. Anything left on confirmed is invisible to your monthly numbers.
    • Review requests — the moment you mark complete, a friendly review email goes to the client (your in-app review link, plus your Google review link if you've added one). No completion, no review request — even from happy clients who'd have written one.
    • Loyalty rewards — your loyalty programme counts completed sessions only. A regular client who's due their 10-session reward won't get it until the qualifying session is marked complete.
    • Referral credits — a referred client's referrer is only credited when their first session is marked complete.
    • Aftercare emails — these can only be sent for completed sessions.
    • Package and membership credits — credits decrement at completion. Leave sessions confirmed and the client's remaining balance looks artificially high.

    None of this depends on Stripe. If you take cash or bank transfer, the completion signal is what fires reviews, loyalty, reporting and aftercare — not the payment method. Did this session actually happen? is the question one tap answers.

    Three things changed to make this easier:

    1. A "Your appointments" card on your dashboard home with three rows — upcoming, wrapped up in the last 30 days, and any awaiting wrap-up. So you don't need to open the calendar to spot a backlog. 2. Past confirmed sessions in the calendar now render amber with a "To complete" tag. The detail panel leads with "Did this session happen?" and offers Mark complete / No show / Cancel as the primary actions. 3. A Tidy up button if you've already got a pile-up. It marks them all complete in one go, and crucially dedupes review emails per client — a client whose last six sessions were never marked complete will receive one review request (for their most recent session), not six in a minute.

    The daily habit that keeps it tidy: mark sessions complete the same way you tidy your room at the end of the day. One tap per client; reviews fresh while the visit is still in their head; numbers honest in your dashboard.

    See it →
  124. Travel area settings — clearer labels and a small safety net

    A therapist had set their Normal area to 1 mile and didn't realise that meant nearly every prospective home-visit client was being bumped to a "send a request" form instead of booking through. The label didn't make the consequence visible.

    The Settings → Locations → Home-visit booking limits section (it used to be called "Travel area") now spells out what each value does:

    • Auto-book up to — inside this distance/time, clients book straight through.
    • Won't travel beyond — outside this, home visits are rejected (we suggest a clinic if you have one).
    • Anything in between sends a request you approve manually.

    There's now a small zone diagram showing all three bands at a glance, and a soft warning that appears if you set the auto-book area to something tiny (≤ 2 miles or ≤ 5 minutes). If a small area is what you want, you can ignore it — nothing blocks you from saving. No action needed unless you're a mobile therapist — pop in to check yours look right.

    See it →
  125. Behind-the-scenes: charge-flow audit and fixes

    A wider audit of the booking, approval and post-session charge paths turned up a small handful of corner cases where settings could quietly conflict with each other (the same shape of issue Nicola spotted with deposits + Booking application mode). Specifically: back-to-back bookings that mixed a membership-funded slot with a paid slot were charging for the membership slot AND consuming a credit at completion — that's now fixed so only the paid slot is charged. Late-cancel and no-show fees no longer fire on bookings paid by a membership or package — the lost credit is the consequence. Deposits at approval time now reflect any Adjust changes you made before approving. And a few smaller tightenings around discount-code reservation and reporting accuracy. No action needed on your end; nothing visible has changed unless you were affected by one of these.

  126. Deposits now work in Booking application mode

    If you had Booking application mode turned on (so you review and approve each booking) AND Deposits turned on, the deposit was silently being skipped — application mode only saved the client's card and waited for your approval, with no charge ever happening at booking. The deposit setting did nothing in that combination.

    Now it just works the way you'd expect: when you approve a pending booking, the deposit is taken at that moment from the card the client saved, the booking is confirmed, and the rest is charged after the session. The approval email tells the client exactly what was charged and what's still owed. If the saved card declines on the deposit, the booking is still approved (just like before for after-session charges) and a recovery email goes to the client with a link to update their card. Thanks to Nicola for finding this — your feedback fixed something real.

    See it →
  127. Remove a price adjustment from a booking

    If you added an extra charge or a discount to a booking using Adjust and changed your mind, there was no way to take it off again — the editor only had Save and Cancel, so the adjustment stuck. There's now a Remove adjustment button that clears it cleanly and puts the booking back on its standard service price. Find it on the appointment detail panel, under the Adjust editor. Thanks to Nicola for spotting this!

  128. Deposits panel now explains how it interacts with Smart charging

    When the When to charge setting is set to Smart charging, deposits only apply to returning clients — new clients still pay the full fee at booking. That's by design (it stops first-time no-shows), but the deposits panel didn't make it obvious, so a £10 deposit setup could look like it wasn't working when a test booking was charged in full. The deposits panel now spells this out in plain English and tells you which setting to switch to if you want every client to pay only a deposit. Thanks to Nicola for flagging the confusion.

    See it →
  129. Fix: top-up sessions could fail when the bank wanted to verify the charge

    When a client used up their monthly membership credits and tried to buy a top-up session at booking, the charge sometimes failed if their bank wanted to verify the payment first — the same kind of bank check that kicks in for the very first subscription charge. The booking screen would just show "Payment failed" with no obvious next step.

    The top-up flow now puts the bank verification on screen the moment it's needed: a quick confirm-with-bank step appears, the client confirms, the credit lands, and the booking carries on. If they cancel or it fails, no charge is taken and no credit is added — and the same payment can't be double-credited if the network hiccups mid-confirm.

  130. Fix: membership subscriptions could fail with no path to recover

    A client trying to subscribe to a monthly plan would sometimes hit an error saying their bank required additional verification — and from there, nothing they did got the subscription through. The card was already on file, but the bank wanted to verify the very first charge specifically, and we had no way to walk them through that extra step.

    The Subscribe flow now handles this case end-to-end. If the client's bank prompts for verification on the first monthly charge, the verification screen appears (in-app on most devices, or via the bank's app on mobile), the client confirms, and the subscription completes — credits land, the membership turns active, and they're back on the page with no stuck state. If the verification is cancelled or fails, no payment is taken and no phantom credits are created. Thanks to Brendan (via Paul) for surfacing this.

  131. Fix: package sessions could go past zero, showing "-1 sessions remaining"

    When a client's package was used up, completing the next appointment didn't stop the counter — it kept ticking down past zero, so the appointment card showed nonsense like "-1 sessions remaining". A few related causes have been fixed.

    Completing now refuses to use a package that has no sessions left. You'll see a clear error: "This package has no sessions remaining. Unlink it from this appointment or grant the client a new package before completing." — exactly the prompt you need to take the right action.

    Granting a new package now picks up the slack on existing recurring bookings. Previously, when you granted a fresh package to a client whose recurring slots were already pinned to an exhausted package, the new pack only attached to brand-new appointments. Their next session still drew on the empty pack and silently overshot. Now, granting a new pack also re-links any future recurring appointments that were stuck on an exhausted one, so the new pack starts working from the very next session.

    Package and membership credits now count down once, when you complete the appointment — never at booking. Previously, if a client booked themselves into a session using their package via your booking page, one credit came off at the moment of booking and another came off when you marked it complete — so they were charged two of their five sessions for one massage. Same problem for memberships. Going forward there is one rule: a credit is consumed when an appointment is completed. To stop a client from over-booking before any complete, the booking page now also looks at how many of that client's confirmed-but-not-yet-completed bookings already point to the package or membership and treats those slots as "reserved" — they can't book a 6th session on a 5-session pack just because none have been completed yet.

  132. Tap any day in This week to jump straight to that day in your calendar

    The day cards (MON / TUE / WED…) inside the This week widget at the top of the dashboard looked tappable, but weren't — tap them and nothing happened. Now they are properly wired up. Tap any day — including empty days — and the calendar opens focused on that date: on a phone you land directly on that day's view; on desktop you land on the week containing it. One less reason to scroll-and-swipe to the appointment you were trying to reach.

  133. Fix: add-ons and home-visit surcharges were left off the booking charge

    When a client booked a treatment and added an optional add-on (e.g. an aromatherapy oil), the booking page and confirmation email correctly showed the full price — but Stripe was only charged the base treatment price, not the add-on. The same gap also affected mobile bookings where a per-area travel surcharge applied. Both amounts were being dropped on the way to the payment. Fixed: the charge now includes any selected add-ons and any home-visit surcharge, matching what the client sees and agrees to at checkout. Thanks to Adam for spotting this on a recent booking.

  134. Send the intake form by email — or copy the link for WhatsApp

    Tapping Send intake form on an appointment now opens up two options instead of one. Email it sends the intake form to the client by email exactly as before. Copy link copies the secure intake form URL to your clipboard so you can paste it into WhatsApp, Messenger, an iMessage thread, or any other place you already chat with that client. The link works the same whether you email it or share it yourself, and we still create a single intake submission per appointment behind the scenes — so however the client opens the form, their answers come back to the right place. Thanks to Emily for suggesting this!

  135. Booking page scrolls the basket into view when a client adds a treatment

    On the client-facing booking page, a running basket and Continue button sit at the top of the treatments step the moment the first treatment is tapped. On a phone, clients were usually scrolled partway down the treatment list when they tapped one — so they never saw the basket appear or noticed the Continue button waiting for them. Now, every time a client adds a treatment, the basket scrolls smoothly into view at the top of the screen, making it obvious their selection has been added and that they can carry on to pick a date. Thanks to Marcin for spotting this!

  136. Loyalty card on the client dashboard, plus a "stars earned" list for you

    Three things, one update.

    Clients now see a loyalty card on their dashboard with gold rubber-stamped stars marking each completed full-price session. Empty circles show how many more sessions until their next reward, with the reward (e.g. "10% off") on the final circle. The moment they hit a milestone, the card flips over to show their discount code right there — they'll see it every time they open their dashboard until they use it, no digging through old emails. Only one outstanding reward shows at a time so codes don't pile up, but counting carries on in the background — they never miss a reward they've earned. The next one appears the moment they redeem the current one.

    Membership and package sessions are no longer counted toward milestones by default. They're already getting a discount through their plan, so it doesn't feel right to also have them earning loyalty rewards on top — that was the design intent of milestones from the start, and it's now reflected in the count. If you'd rather include them, there's a new toggle at the top of Settings → Loyalty: Count membership and package sessions.

    A new "Clients earning stars" list at the bottom of Settings → Loyalty shows every client and how many stars they've collected, sorted by most-loyal first. Rows where a reward is outstanding are flagged so you can spot a client who might appreciate a personal nudge to come back and use it.

    See it →
  137. No more alarming "Charge £0 remainder" on fully paid bookings

    When a deposit covers the full price of a booking, the appointment modal used to show a big red Charge £0 remainder button after you marked the session complete — alarming, and it looked like you were about to charge the client again. The button is now a calm teal ✓ Mark fully paid (deposit covers total) instead, and the confirmation copy is rewritten to say Mark booking as fully paid? with a clear note that no further card charge is happening. Same one-tap action — just no longer scary.

  138. Help your profile show up on Google — and see when it works

    A small but useful change driven by what we're seeing in Google Search Console for the directory.

    A new "Help clients find you on Google" section in the help blurb at the bottom of Settings → Profile. It walks you through the things that genuinely move the needle: pick a short, distinctive booking slug (single name or word — generic phrases like "massage" compete with millions of other pages), fill in your bio properly so there's real text for Google to rank, mention your treatments and the area you cover (the words clients actually type), connect your Google Business Profile in Settings → Reviews (the single biggest ranking signal Google uses), upload a profile photo and gallery so the page looks like a real business, and be patient — Google typically takes 2–6 weeks to start sending traffic to a new profile.

    Why this advice in particular. Of all the directory profiles, Marcin's is doing the most on Google — already getting clicks within five weeks of going live. What's different about his profile is exactly the list above: a one-word slug (`/marcin`), a complete bio, a linked Google Business Profile with 41 five-star reviews flowing in, photos, and a specific niche (sports therapy in London) rather than generic massage.

    Bookings now record where the client came from. Behind the scenes, every new booking now captures the referrer (e.g. google.com, instagram.com) and any UTM tags from the link the client clicked. Manual and admin-created bookings stay blank. Over time this gives us a real view of which marketing channels are bringing in paying clients vs which are just impressions — useful for both the directory and for therapists who want to see whether their own Instagram links and Google Business listing are converting.

    See it →
  139. Sign in with a magic link — no password needed

    You can now sign in to MassageHub by typing your email and tapping Email me a magic link. Click the link in the email and you're straight into your dashboard. The login page also handles wrong passwords much more kindly now: instead of a flat error, you get an inline panel offering to try again, send you a magic link, or reset your password — and the email field is carried over so you don't have to retype it. If you're using MassageHub as an installed home-screen app on your phone, the email also includes a 6-digit code you can paste straight into the app, so you never get bounced into a separate browser. Thanks to Liam for flagging this — his report uncovered a small group of therapists who'd hit the same dead-end and we've been able to reach out to them too.

  140. Clearer payment status on every appointment

    You can now see at a glance whether an appointment has been paid, is owed, has a card on file, or has nothing arranged yet. The appointment modal has a new Payment row showing one clear coloured pill: Paid £X (charged via card or marked received), Card on file (we'll charge after the session), Pay on the day (cash, BACS or other — mark when received), Deposit paid £X with the remainder due, Covered by membership / package, Refunded £X, or Not paid with a nudge to send a payment request. The pill replaces the small grey "Charged" line that used to only appear for Stripe charges and never told you anything about cash bookings or cards on file.

  141. Tidier booking flow + a properly useful Manage booking page

    A round of polish on the client booking experience. The Manage booking page (where clients land from their confirmation email) now shows the address with directions, an honest payment status, an intake form reminder if needed, and Add to calendar as the primary action. Cancellation copy is now correct for cash bookings, and the email cancel/reschedule links work without logging in.

  142. A fresh look for the therapist side — dashboard, navigation, and a smarter wellbeing card

    The therapist side of MassageHub now matches the look the marketing site and your client-facing pages got earlier this month — a calmer, warmer palette (paper, evergreen, amber) with a softer serif for headlines. The whole product finally feels like one thing rather than two.

    A reworked dashboard. The home page has been rebuilt around what you actually do first thing in the morning. A clearer greeting line tells you the date, how many sessions you have today, and how much income they'll bring in. Today's schedule sits front and centre with each appointment showing the time, client, service, location and price in one tidy row. A new weekly strip below shows the next seven days at a glance — today is highlighted in evergreen, busier days have a fuller progress bar.

    The Wellbeing card got proper progress bars back. It now shows live bars for hands-on minutes today, hands-on minutes this week, appointments today, and your working streak — colour-coded mint when you're comfortable, amber as you approach a cap, warm orange if you've gone over. Avg energy from your post-session ratings sits beside the kicker as a small chip.

    Mobile nav now lives in the top bar. Four icon buttons — Calendar / Clients / Income / Settings — between the logo and your "to set up" pill. One tap to anywhere. No hamburger menu to fish around in. The Income icon is a £ (because we're UK-focused — that may change one day if we expand).

    The Settings area feels like one place. The mobile sub-menu now slides smoothly between sections rather than resetting to the start, and the active tab is always centred so you can see what you're on. Tapping a tab also shows an instant skeleton while the next page loads, instead of a blank delay. Services, Availability, Intake, Events, Reviews and Message clients all keep the Settings icon highlighted now too — they're part of the same area.

    Smaller upgrades worth knowing about. Your Calendar pinch-zoom level is now remembered so you don't have to re-zoom every time you come back. The "X to set up" pill in the top bar is amber when you have required steps and teal when only recommended ones remain — less alarming when you're actually almost done.

    This is just phase one — the calendar itself and the rest of the settings pages get the same treatment in the next couple of rounds.

  143. A reminder — install MassageHub on your phone (and your clients can install your booking page too)

    This one isn't new, but it's worth surfacing again because most therapists who haven't set it up don't realise quite how much it gives them.

    Update: since this first went out, MassageHub also has a proper app on the App Store and Google Play — grab it at massagehub.app/download. The home-screen trick below still works if you'd rather not install from a store, and it's still how your clients save your booking page to their phone.

    What adding to your home screen does. It turns the MassageHub website into something that behaves like an app once you save it. You just open MassageHub in your phone's browser and tap "Add to Home Screen" — no store, no download. From then on it has its own icon, opens full-screen with no browser bars, and runs like Instagram or WhatsApp would.

    Why the home-screen version is handy. Updates land instantly — whenever something ships on MassageHub, the version on your home screen has it the next time you open it. It costs you nothing in storage, and it's a quick option if you'd rather not go through a store. (For most therapists the App Store / Google Play app is the simplest way in — this is the lightweight alternative.)

    Push notifications work too — even on iPhone. Once you've added MassageHub to your home screen and opened it from the icon (not from Safari), you can enable push notifications. From then on, every new booking, cancellation, reschedule request and waitlist sign-up pings your phone instantly — exactly like a text message would. No more refreshing the dashboard to see if anyone has booked. Most therapists use this as their main signal that the day is filling up.

    Your clients can install your booking page too — and the icon is named after you. This is the bit most therapists miss. When a client adds your `/book` page to their home screen, the icon on their phone is your first name, not "MassageHub". So a client who books with Sarah ends up with an app called "Sarah" on their phone that opens straight into your booking flow. The cancellation and waitlist emails already nudge clients to install — for regulars this becomes their go-to way to rebook.

    Full instructions for both you and your clients are in the help article below.

    See it →
  144. Waitlist — fully-booked days are now tappable, plus instant push for you and your clients

    Three improvements to the booking waitlist.

    Fully-booked days are now tappable. Until now, clients couldn't actually reach the "Join the waitlist" button on a day that was full — the calendar disabled it. Fixed. Sold-out days still show with a strike-through (so the visual signal stays), but tapping one now lands the client on the time-slots screen with the join-waitlist prompt right there.

    You get a push notification the moment someone joins. Same channel as your booking pushes — straight to your phone. There's also a new teal banner on your Calendar page showing how many people are currently on the waitlist, linking through to manage it.

    Clients can opt-in to instant push too. After a client joins your waitlist they see a "🔔 Get an instant alert when a slot opens" button. If they enable it, they get a push the second a cancellation triggers an opening — faster than the email, and ahead of anyone else still relying on inbox checks. The cancellation email also now teaches them how to install the booking page to their home screen so push works on iPhone.

    See it →
  145. Smarter Fresha import + bulk delete + tidier UK phone numbers

    A bundle of improvements to the Clients page.

    Fresha imports are now instant and capture more. Drop a Fresha customer-list CSV into Clients → Import and it processes in well under a second (the AI step has been replaced with a parser that knows Fresha's exact format). It now also pulls in marketing consent (so opted-in clients show up immediately on the Message clients page) and a new "Do not book" flag for any client you blocked in Fresha — shown as a red badge on the client record with the original block reason. Re-running the import refreshes those two flags on existing clients, so a Fresha unsubscribe carries across the next time you export.

    Bulk delete from the client list. Tick the boxes next to any clients on the list and a new red "Delete selected" button appears next to the existing "Invite to book" — two-click confirm to avoid accidents.

    UK phone numbers cleaned up on import. Fresha exports UK mobiles in international form (`447776...`) which is harder to read at a glance. They now come in as the friendlier `0777...` form. A one-off cleanup has been run across existing clients too, so your whole list is consistent.

    See it →
  146. Clearer "Restrict availability" panel on services

    The per-service restriction panel (Services → edit a service → "Restrict availability") has been reworked to remove a few sources of confusion. The section is now called "Restrict availability" instead of "Restrict booking hours". The "Latest start" time field has been renamed "Latest end" — that was always how it actually worked under the hood (the appointment must finish by that time, travel afterwards isn't counted), the label was just misleading. And the day picker is now a row of on/off pill toggles — tap a day to switch it off, greyed-out days are blocked. Thanks to Emily for the nudge to make this clearer!

    See it →
  147. Intake forms — completion email + optional 24h reminder

    Two improvements to intake forms. First, when a client finishes filling in their form you now get an email with a link straight through to their responses — no more checking the dashboard to see if they've done it. Second, each form has a new "Send a reminder 24 hours before the appointment" toggle on the edit screen — turn it on and any client who hasn't completed the form yet gets a one-off nudge the day before their session. Off by default; flip it on per form. Thanks to Nicola for suggesting both!

    See it →
  148. Last-minute reschedules — now a request you approve

    Until now, if a client wanted to move a booking inside your notice window the change went straight through. That left a loophole — they could reschedule a 5pm-today appointment out to next week, then cancel it for free, side-stepping the cancellation fee entirely. Closed.

    From today, a reschedule requested inside your Late-reschedule window doesn't apply automatically — it comes to you as a request. The client sees an amber warning explaining you need to approve or decline, and that the late-cancellation fee still applies if they end up cancelling instead. You get an email with one-click Approve / Decline buttons, a push notification, and an amber banner on your Appointments dashboard with the same actions. Approve and the booking moves; decline and the original time stays in place — the client either shows up, or they cancel (in which case your cancellation policy kicks in as normal).

    While we were in there: the Settings → Payments panel has been retitled and rewritten so the two windows are clearly distinct. Late-cancellation window governs cancellations only; the new Late-reschedule window (in the renamed "Client reschedules" panel) governs reschedules only. They default to the same number but you can set them independently — e.g. 24h cancel, 6h reschedule — if you want to be stricter on one than the other.

  149. The client portal has the refreshed look too

    Your clients' /[your-slug]/my portal — the page they see after signing in to manage bookings — is now in the same Living Diary palette as the refreshed profile and booking flow. The next appointment is the hero of the page: a forest-gradient "ticket" card with the time in Fraunces serif, the service, your name, the location and reschedule/manage actions built in. Memberships and packages now read as real assets — a meter showing treatments-this-month left on memberships, a dot progress bar showing sessions remaining on packs, both with the big numbers in serif. Past bookings become a timeline with rebook links. Every existing behaviour stays verbatim: reschedule flow, subscribe, cancel, buy a pack, referral link, trusted-therapist directory, profile edit, PWA install hint, test-mode banner.

  150. The booking page now matches your refreshed profile

    Your /[your-slug]/book page has been reskinned to match the Living Diary look we rolled out on your public profile yesterday — evergreen and amber, Fraunces serif for headings and prices, paper-toned background, a shared sticky top bar with the MassageHub logo and a Sign in button for returning clients. The booking wizard itself is unchanged: every step, validation, payment branch, back-to-back summary, discount code, gift card, travel-area check and membership/package credit flow works exactly as before. Clients now feel one continuous brand from the moment they land on your profile to the moment they pay.

  151. A refreshed look for your public profile page

    Your /[your-slug] page — the page clients see when they click your MassageHub link — has had a proper design refresh. A magazine-style hero with your photo at the top and a readable caption over it; trust chips (Qualified / Insured / Member / Trusted) sit right under the photo; services now render as cards with the price in a serif typeface; reviews are card-per-review with clearer source badges; a sticky "Book Now" bar follows the client as they scroll on mobile; and returning clients sign in through a small modal instead of a form bolted to the top. The palette now matches the landing page (evergreen + yellow + paper) so the whole journey feels like one product. Every setting you already have — section order, show/hide toggles, CTA position, pronouns, gallery — works exactly as before.

  152. Back-to-back bookings — faster, all on one screen

    When a client books multiple treatments in one visit, they now build up the whole booking on the service step itself: each pick drops into a running list at the top, with an × to remove any treatment added by accident and a Continue button as soon as one is chosen. The old "Add another treatment?" in-between prompt is gone. If a therapist has a combined-session cap, longer services that would push the booking over the limit are hidden with a clear note explaining why. Thanks to Marcin for pushing for this!

  153. Zoom buttons on the weekly availability editor

    The weekly slot editor (Calendar → Availability) now has − / + buttons in the week navigation row so you can zoom the slot grid in and out on any device — matching the controls on the main calendar. Pinch-to-zoom still works as before. Thanks to Marcin for suggesting this!

  154. Fix: decline emails no longer include your personal note

    Your personal note (the one set in Account settings) was appearing at the bottom of booking decline emails, which read oddly when you'd just turned down a request — a cheerful "looking forward to seeing you" doesn't belong under an apology. Decline emails now omit the footer. Confirmations and reminders still include it as before. Thanks to Nicola for spotting this!

  155. Fix: clinic booking requests no longer show a mobile address

    When a client started to book a mobile appointment (entering their address) and then switched to a clinic instead, the home address was leaking into your approval request email — making it look like a mobile booking. That address is now cleared when clinic is selected, so your approval emails always reflect the actual appointment type. Thanks to Nicola for reporting this!

  156. Charge or waive a cancellation fee straight from your inbox

    When a client cancels late and a fee is queued for your approval, the email now has two buttons — <strong>Charge £X</strong> and <strong>Waive fee</strong> — right alongside the usual dashboard link. Tap one, confirm on the next page, done. No logging in, no hunting through the approval queue. The links expire at the auto-charge deadline, so they can't be reused later by accident. Works for both late cancellations and no-shows. The "Open the dashboard to edit the amount" link is still there if you want to adjust the fee first.

    See it →
  157. Draft a personal follow-up after a late cancel in one tap (Pro & Plus)

    When a client cancels late or no-shows, the approval queue now has a <strong>Draft message</strong> button alongside Charge and Waive. One tap and Claude drafts a short, warm email from you to the client — personalised to their name, their stated reason, and whether you charged, waived, or took a partial fee. Copy it, paste it into your own email, tweak it, send. Nothing is sent automatically. Requires AI cancellation assist to be turned on in <strong>Settings → Payments</strong>.

    See it →
  158. Clients see your cancellation policy right on their bookings

    The policy now follows the client all the way through — not just at booking, but on their upcoming bookings list and on the appointment page they land on from reminder emails. Outside your cancel window it reads as a gentle reminder; <em>inside</em> the window it switches to a concrete sentence like <em>"Cancelling now will charge £30.00 to the card on file."</em> Hidden for clients you've marked exempt. Same numbers you already set in Settings → Payments, no extra setup.

    See it →
  159. Clients now see your cancellation policy before they book

    Your cancellation window and fee are now shown right on the booking page and in the confirmation email — as a concrete sentence like <em>"If you cancel within 24 hours, 50% (£40) will be charged to the card on file."</em> Your existing free-text policy still appears alongside it. No configuration needed: if you have a fee set up in Settings → Payments, clients see it automatically. Transparent upfront = fewer awkward conversations later.

    See it →
  160. New: mark a client as no-show with one tap

    When someone doesn't turn up, open the appointment on your Calendar and tap <strong>No show</strong>. A quick confirm tells you what's about to happen based on your policy mode, then one tap commits it. Your no-show fee runs the same way as late cancels — alert, approve-each, or auto-charge — using the card on file. Off or client exempt? Nothing is charged; the appointment is just marked.

    See it →
  161. New: AI cancellation assist (Pro & Plus)

    When a client cancels late or no-shows, Claude now quietly reviews the incident and suggests Charge, Partial, or Waive — with a one-line reason grounded in the client's history (tenure, lifetime value, prior cancellations, their stated reason). It shows up right on the amber review banner next to the proposed fee. You still decide — nothing fires automatically. Turn it on in Settings → Payments → Late cancellations &amp; no-shows.

    See it →
  162. Late-cancel policy: clients and therapists now get emails

    Following the late-cancel / no-show launch: clients now get a clear email when a fee is charged, and a warmer "good news — no charge" email when you waive. If you're on Approve-each mode, you'll get an email the moment a pending fee lands in your review queue — with a link straight to the dashboard and a reminder of the deadline before it auto-charges.

    See it →
  163. New: enforce your late-cancel & no-show policy automatically

    Tired of losing income to last-minute cancellations? Settings → Payments now has four modes: Off (the default — nothing changes for you), Alert me (just notify), Approve each (I draft the charge, you confirm from the dashboard), and Automatic (charges on the saved card the moment the cancel comes in). Set a flat fee or percentage separately for late cancels vs no-shows, with a configurable review window before auto-charges fire. Per-client exempt toggle for VIPs. One-click Charge / Waive / Edit on a new amber dashboard banner, with a live countdown. Clients see the policy at booking and on their own appointment page.

    See it →
  164. New: customisable Book Now button on your profile

    You can now add a prominent "Book Now" button to your public profile page that takes clients straight to your booking page — no sign-in required. Set the label to anything you like (e.g. "Book Emily"), choose where it appears on your profile, and toggle it on or off from Profile Settings. Thanks to Emily for suggesting this!

  165. Clients can now add your booking page to their home screen

    A small banner now appears on your booking page and client portal (on mobile) guiding clients to install the app on their home screen — so they can book again with one tap, no browser needed. We've added a short video showing them exactly how to do it. The banner disappears automatically once they've installed it.

  166. New: top-up sessions for membership plans

    You can now allow members to buy an extra session when they run out of monthly credits — perfect for months with five weeks. Enable it per plan in Settings → Payments → Membership plans. Discount-mode plans apply the same percentage discount automatically; fixed-price plans let you set a custom top-up price. Thanks to Paul for suggesting this!

    See it →
  167. New: monthly calendar view for appointments

    The Appointments page now has a monthly view — tap the calendar icon to switch. You'll see the whole month at a glance, with teal dots for confirmed bookings and orange dots for pending requests. On desktop, each day shows the time and client name directly. Tap any day to jump straight to it in the calendar. Thanks to Marcin for suggesting this!

    See it →
  168. Fix: calendar no longer shows double bookings

    If you had a time block (like a lunch break) scheduled at the same time as an appointment, the calendar could make it look like two bookings were happening at once — even though no double booking had occurred. The time block now hides itself whenever a real appointment is in that slot. Thanks to Kim for flagging this!

  169. Paid plans are launching soon

    Paid plans are almost here. If you're on the Free plan and currently using features that will require Plus or Pro, now's the time to check what's changing — and decide whether to upgrade or turn them off before launch day.

    See it →
  170. Fix: jump straight to pending booking requests

    When you have a booking request waiting for approval in a different week, the orange banner on your calendar now includes a "View →" button that takes you straight to that week. Previously the banner said to click the orange appointment, but it wasn't visible because it was on a future week. Also fixed: email is no longer required when adding a new client manually — name and phone are enough. Thanks to Nicola for catching both of these!

  171. Fix: pinch to zoom on the availability screen

    Pinch-to-zoom now works on the availability slots grid on mobile, just like it does on the calendar. Spread two fingers to zoom in and see the time slots more clearly, or pinch to compress the view. Thanks to Marcin for reporting this!

  172. Fix: undo a booking marked complete by mistake

    If you accidentally mark a booking as complete, you can now undo it. Open the appointment and scroll to the bottom — there's a small "Undo complete" option that puts it back to confirmed. Thanks to Kim for flagging this one!

  173. Restrict a service to specific hours or days

    You can now limit when individual services are bookable — for example, offer a relaxing massage only during daytime hours, or restrict a service to weekdays only. Set it in the service edit form under "Restrict booking hours". The restrictions work alongside your existing availability, so they can only narrow slots down, never add new ones. Thanks to Kim for suggesting this!

    See it →
  174. Delete button is now visibly red

    The Delete button on the client detail page was styled in grey, making it look inactive or disabled. It's now clearly red so it's obvious it's a live action. Thanks to Marcin for flagging this!

  175. Fix: client list now fully tappable on mobile

    On Android and iOS, the "View" link on the client list was hidden off the right edge of the screen. The entire row is now tappable to open a client record, and a "View →" link appears directly under the client's name on mobile. Thanks to Marcin for reporting this!

    See it →
  176. Referral rewards are live

    When a therapist you refer activates a paid plan, you get one free month of Plus — automatically, with no cap. Share your referral link from your dashboard.

    See it →
  177. Message your clients directly from MassageHub

    You can now send a message to your opted-in clients from the Clients section — great for sharing availability changes, seasonal offers, or clinic news. Clients control their own preferences and can opt out at any time.

    See it →
  178. Pick any month on the income page + CSV export

    The income page now has a month picker alongside the existing This month / 3 months / 12 months toggle — browse back through any of the last 12 months. There's also a new Export CSV button that downloads the filtered appointment list for any period.

    See it →
  179. Unserved postcode days now greyed out on the booking calendar

    If you've set up service areas by day of the week, the booking calendar now greys out the days you don't cover a client's postcode — instead of letting them pick a date and get bounced with an error at the final step. Thanks to Marcin for reporting.

    See it →
  180. Settings reorganised — Promotions and Bundles now have their own pages

    The Payments settings page used to hold seven unrelated things in one long scroll. It's now three focused pages: Payments (Stripe, deposits, charge timing, cancellation policy), Promotions (discount codes, gift cards, back-to-back deals), and Bundles (memberships and packages side by side, with a plain-English guide on when to use which). There's also a search box at the top of the settings sidebar so you can jump straight to what you need.

    See it →
  181. Mobile: availability grid, SOAP notes, and client contacts all improved

    Three mobile fixes shipped together. The availability slot grid now supports touch — you can drag to mark hours available or unavailable on your phone just as you can on desktop (it was mouse-only before). SOAP notes now show "Saving… / Saved ✓" at the top of the form so you know your dictation persisted without scrolling to the bottom. And on the clients list, phone numbers and email addresses are now tappable links so you can call or email a client in one tap.

    See it →
  182. New therapists get a personalised setup guide

    Anyone signing up now answers four quick questions before they see Getting Started — where they work (clinic, mobile, or both), how they'll take payment, how many services they offer, and how much of the app they want to explore. Getting Started then highlights the steps most relevant to their setup. Nothing is hidden; it just surfaces the right things first so new therapists aren't staring at a blank dashboard wondering where to begin.

    See it →
  183. Click to book, drag to block time off

    On the calendar, a single click now opens the new appointment form straight away. Dragging down a column opens the time off form instead — with the time range pre-filled from your drag. The same works on mobile with a long-press drag. A dashed preview shows the time-off block as you drag so you know exactly what you're adding before the form opens.

    See it →
  184. Clearer "Cancel appointment" button

    The button that cancels a scheduled appointment now reads "Cancel appointment" rather than just "Cancel" — so it's harder to confuse with dismissing the panel. A small change, but one that removes a genuine moment of doubt.

  185. Automatic mileage-based travel surcharges for home visits

    New Settings → Locations → Travel surcharge. Flip the toggle, define bands by distance (miles) or travel time (minutes) — e.g. ≤ 5 miles free, ≤ 10 miles £5, ≤ 15 miles £10 — and every mobile booking is priced automatically from the same Google Maps data we already use for your travel area. Clients see the surcharge inline before confirming, and any manual per-client surcharge you've already set still wins. Thanks to Ali for the suggestion.

    See it →
  186. Clearer payment wording throughout the app

    "Payment link" used to mean four different things in different places — a Revolut/Monzo URL in Settings, Stripe's own product, the email you send asking a client to pay, and the client portal link for buying packages. Each of those now has its own distinct name (External payment URL, Payment request, Purchase link, and so on) across the dashboard, help articles, and emails. Thanks to Kim, Nicola, and Marcin for flagging the confusion.

  187. Settings toggles now surface errors instead of pretending to save

    A handful of toggles across Payments, Loyalty, Integrations, Gift cards, and Membership plans used to update the UI without waiting to hear back from the server — so if something went wrong (network hiccup, hidden precondition like Stripe not connected), the change looked saved but wasn't. They now show a spinner while saving, confirm only on success, and surface a clear error if the save fails. Thanks to Kim, Nicola, and Marcin for the reports that led us to hunt these down.

  188. See exactly what your clients receive

    New Settings → Clients → Emails tab. Preview all 7 client-facing emails — booking confirmation, reminder, payment request, cancellation, reschedule, aftercare guide, and invoice — with your own business name, phone, and email footer. The invoice preview even includes a downloadable sample PDF so you can see the exact attachment clients get. Thanks to Kim, Nicola, and Marcin for asking "what does the client actually see?" — this one's for you.

    See it →
  189. Warning when mobile clients enter only a postcode

    If a client books a home visit and types just a postcode (or something clearly incomplete) in the address field, we now show a friendly prompt asking for a house number and street before they can continue. Helps avoid last-minute "where exactly am I going?" messages. Thanks to Marcin for suggesting this!

  190. Try a test booking (no payments, no emails)

    New "Preview booking page" link from Getting Started and the dashboard. Bookings made in preview mode are clearly marked TEST on your calendar — no card charges, no emails to real clients, no effect on income reports or membership credits. One click clears them all when you're done.

    See it →
  191. Customise your calendar colours

    Every item in the calendar legend — outside hours, buffers, Google Calendar, Fresha, blocked time, and more — can now be given any colour you like. Just click a legend item to open a colour picker, and your choice is saved automatically. The same goes for the availability grid: click Available, Unavailable, or Booked in the legend to change those colours too.

    See it →
  192. Loyalty milestones — now editable, recurring, and with fixed £ rewards

    Loyalty milestones got a significant upgrade. You can now edit existing milestones (not just delete and recreate them), set a fixed pound amount reward in addition to percentage discounts, and mark milestones as recurring so clients keep earning the reward every time they hit the threshold — not just the first time. Client label discounts (VIP, Staff, Friend) also now apply correctly at booking checkout.

  193. Hold and drag to create appointments in the calendar

    You can now hold for 500ms on any empty slot in your calendar to start creating an appointment — then drag down to set the duration before releasing. No need to tap a specific button first. Swipe-to-scroll still works as normal; the hold distinguishes intent.

  194. New: 15-minute booking slot intervals

    Your booking slots can now be generated every 15 minutes instead of the default 30 or 60. Go to Settings → Availability to set your preferred interval. Useful if you offer short treatments or want finer control over when clients can book.

  195. Fixed-price discount packages locked to a specific service

    You can now create treatment packages with a fixed pound discount tied to a specific service and duration — for example, "5 × 60-minute Swedish massage for £250 instead of £275". The package is only usable for that exact treatment, making it clear to clients exactly what they're buying.

  196. Fix: fixed-price packages were showing £0 on all screens

    Treatment packages using a fixed pound discount were showing a £0 price on the public profile, booking page, and client portal purchase screens. The correct discounted price now shows everywhere.

  197. Booking application mode — approve clients before confirming

    Enable application mode in Settings → Booking to turn new bookings into requests rather than instant confirmations. Clients go through the same booking flow and their card is saved, but no charge is taken until you approve. You'll receive an alert with their details and can approve or decline from your calendar — with an optional reason or alternative time if you decline. Trusted regulars can be set to skip the queue and book automatically as before.

    See it →
  198. Edit this week's availability right from the calendar

    Tap the new "Availability" button on the Calendar page to open a week-by-week slot editor. Tap or drag to open and close time slots for any specific week — without changing your standard recurring hours. Use the ← Prev / Next › buttons to move between weeks. Great for adjusting one week without touching your usual schedule. Thanks to Marcin for the idea!

  199. Service areas — define exactly where you travel

    Draw your travel coverage by selecting UK postcode districts on a map. Create multiple named areas, assign each one to specific days of the week, and add date overrides for match days, strikes, or anything else. When a client tries to book a mobile appointment outside your active area, they're blocked automatically — no more manual checking. Set up yours in Settings → Service Areas. Thanks to Marcin for the idea!

    See it →
  200. Help panels on every dashboard page

    Every page in your dashboard now has a collapsible "How it works" panel at the bottom. Tap it to see what the page does, what the key actions are, and tips for getting the most out of it — without leaving the page. Great if you're exploring a feature for the first time or want a quick reminder of how something works.

  201. Custom tags for clients

    Add your own free-text tags to any client — "Corporate", "CNHC member", "Referred by Kim", whatever works for you. Tags appear on the client list and detail view, and you can filter your client list by tag to find exactly who you're looking for.

  202. Fix: rescheduling an appointment now updates your Google Calendar

    When you rescheduled an appointment — either by dragging it in the calendar or editing the time — the change was saved in MassageHub but your Google Calendar event stayed at the old time. It now updates automatically to match.

  203. Fix: multiple availability windows now work correctly

    When you added more than one extra availability window for the same day — for example 10:00–12:00 and 13:30–19:30 — only the first window was being used for bookings. All other windows were stored but silently ignored. Both windows now show on your calendar and produce bookable slots for clients. Thanks to Kim for reporting this!

    See it →
  204. Fix: voice dictation in SOAP notes is more reliable

    Dictating SOAP notes would sometimes duplicate or wipe text when you paused, edited manually, or spoke quickly. The dictation engine has been rebuilt so finalised speech is only ever appended to what's already there — pausing, editing mid-session, and typing punctuation all work cleanly. A live preview now appears below the text box while the recognition is still processing a phrase.

  205. Fix: service descriptions now show on your public profile

    Service descriptions were only showing on the booking page — they were missing from your public profile page and package/membership purchase pages. That's now fixed, so clients can read what each treatment involves wherever they browse your profile. Thanks to Leanne for spotting this!

  206. Add directions and access instructions to booking confirmations

    You can now add location-specific instructions to each of your locations — things like how to find the entrance, buzzer codes, parking tips, or what clients need to bring for a mobile visit. These appear automatically in the client's booking confirmation email. Edit any location in Settings → Locations to add yours. Thanks to Leanne for suggesting this!

    See it →
  207. Share a direct link for clients to buy a package or membership

    You can now copy a direct purchase link for any package or membership plan and send it straight to a client — via WhatsApp, email, or wherever suits you. The client lands on a clean checkout page, enters their name and email, and pays by card without needing to log in. Find the "Copy link" button next to each package and plan in Settings → Payments. Thanks to Kim for suggesting this!

    See it →
  208. Referral rewards — reward clients who bring in new business

    You can now set up automatic rewards for clients who successfully refer someone — and optionally give the same reward to the new client too. Go to Settings → Referrals to enable: choose a fixed amount or percentage off, set when the referrer's credit triggers, and toggle "Also reward the referred client" so they get a discount code on their very first booking. Clients see their rewards in the portal and can apply them at checkout.

    See it →
  209. Important: add hello@massagehub.app to your contacts

    Apple iCloud and @me.com email addresses are currently rejecting our emails, which means some of your clients may not be receiving their booking confirmations and reminders. Until Apple resolves this, we recommend asking clients with iCloud or @me.com addresses to add hello@massagehub.app to their contacts — this helps ensure delivery.

  210. Returning clients are recognised at booking

    Your booking page now asks clients for their email first. If we recognise them, a sign-in link is sent to their inbox — when they click it, their name, phone, and address are pre-filled automatically. New clients are guided through a quick phone-number check before proceeding. No extra setup needed on your end.

  211. Video tutorials on every page

    Every page in your dashboard now has a short how-to video — look for the "Watch how-to" button near the top of each page. The videos cover the basics of how each feature works so you can get up to speed quickly without leaving the app.

  212. Membership credits: rollover, cancel button, and booking prompt

    Membership credits now roll over properly — unused sessions carry forward into the next billing period in the order they were earned, so older credits are always used first. Discount-mode plans now set the price automatically so clients can't enter the wrong amount. There's also a cancel membership button in the client portal, and when a client with unused credits books an appointment, they're prompted to use them.

    See it →
  213. Fix: membership charges and initial credits now correct

    Two membership billing issues have been fixed: the monthly charge for some plans was being calculated incorrectly, and clients who signed up weren't always receiving their first month's credits straight away. Both are now resolved.

    See it →
  214. Packages and memberships visible immediately after purchase

    When a new client buys a treatment package or membership online — before they've ever logged into the portal — their account is now created automatically. They can log in straight away and see their credits, without needing to be invited separately.

    See it →
  215. Fix: intake form now sent for all bookings

    When you book an appointment on behalf of a client and choose to notify them, the confirmation email now includes the intake form link — the same as when a client books themselves. You can also resend the intake form at any time from the appointment detail panel on the calendar. Thanks to Emily for reporting this!

    See it →
  216. Charge a client's saved card for a package in person

    When a client is with you and has a saved card on file, you can now charge them for a treatment package instantly — no need to send them to the portal. Go to the client's detail page, scroll to Treatment packages, and click Charge card.

    See it →
  217. Fix: extra availability now overrides time blocks

    When you add extra availability for a day that has a manual time block, the availability now takes priority — slots will be bookable and the calendar shows the window as open (white with the orange bar), not covered by the block. Thanks to Kim for reporting this one!

    See it →
  218. Service categories and improved sign-in page

    You can now tag services with a category (e.g. "Individual" or "Corporate") so they appear in separate sections on your profile and booking pages — making it easier for different types of clients to find what's relevant to them. The sign-in page has also been tidied up so first-time clients are more clearly guided to book.

    See it →
  219. Discount codes: edit and organised sections

    You can now edit any discount code directly from the list. Codes are also grouped into Event, 1-off, and Multi-use sections so it's easier to see what you have at a glance.

    See it →
  220. Clients can now reschedule their own appointments

    Clients can reschedule upcoming appointments directly from their portal — no need to message you. When you reschedule via the dashboard, you can now send a confirmation email that shows both the old and new time.

    See it →
  221. Fix: extra availability now works inside blocked ranges

    If you use date-range blocks to mark days as unavailable and then add extra availability on individual dates within that range, those dates now correctly open up for bookings — both on the client booking page and on your calendar. Previously, the range block was winning and your extra availability was being ignored. Thanks to Kim for reporting this!

    See it →
  222. Book back-to-back treatments from your calendar

    When creating a new appointment from the dashboard calendar, you can now chain multiple treatments together — just like your clients can at checkout. The rest break is inserted automatically and your back-to-back discount is calculated and distributed across the bookings.

    See it →
  223. Discount performance reporting

    The income dashboard now includes a Discount performance section showing how your discounts are performing. See green booking counts and discount given, back-to-back group stats, treatment package redemption rates, membership activity, and gift card balances — all for your selected period.

    See it →
  224. Video guides for every feature

    Step-by-step video walkthroughs are now available for every part of MassageHub — from getting started and managing your calendar to setting up intake forms and using the client portal. Find them all under the new Guides tab in your dashboard.

    See it →
  225. Fix: specific slots now match calendar availability

    When using Specific Slots to set non-standard hours — like adding evening slots on top of your usual working hours — those extra slots now show correctly in your calendar and are offered to clients at booking. Previously, only the first time block per day was being used, so any additional windows were silently ignored. Thanks to Kim for reporting this!

    See it →
  226. Push notifications for new bookings and cancellations

    Get an instant notification the moment a client books or cancels — even when MassageHub isn't open. On desktop, notifications appear in your system tray. On Android, they appear like any app notification. On iPhone, add MassageHub to your home screen (Safari → Share → Add to Home Screen) then tap Enable when prompted.

    See it →
  227. Pop-up events & taster sessions

    Run chair massage taster sessions, open days, and corporate wellness events with a public QR-code registration page. Clients pre-book a slot or join a walk-in queue — you manage everything live from your phone: intake screening, queue progression, and post-event discount vouchers for opted-in attendees. No competitor offers this.

    See it →
  228. Fix: booking confirmation links now work correctly

    When a client clicked the link in their confirmation email to view or manage their booking, they were sometimes seeing a 404 error. This has now been fixed — the link will take them straight to their booking details. Thanks to Kim for reporting this!

  229. Fresha reviews on your profile + smarter Google routing

    You can now sync your Fresha reviews to display on your booking page and profile — star rating, review count, and individual review cards, just like Google. Review requests are also smarter now: once a client has already left a Google review, future requests send them to the in-app form instead, so you can build reviews after every appointment. Find everything in Settings → Reviews.

    See it →
  230. Archive services instead of deleting them

    You can now archive a service instead of deleting it. Archived services are hidden from your booking page and service list, but you can restore them at any time. Useful if you stop offering a treatment for a while but want to keep all the details. Head to Services, click Archive next to any service, then scroll to the bottom to see and restore archived ones. Thanks to Kim for suggesting this!

    See it →
  231. Fix: custom prices now show correctly in confirmation emails

    When you manually book an appointment and change the price, the confirmation email sent to the client now shows the adjusted price — not the original service price. Thanks to Kim for spotting this one!

  232. Download invoices for client health insurance claims

    Open any appointment and tap "Download invoice" to get a clean, printable invoice — showing your business details, treatment, date, price, and payment method. Clients can save it as a PDF and submit it to their health insurer for reimbursement. You can also email it straight to the client when marking an appointment complete. Thanks to Yeny for suggesting this one!

    See it →
  233. Add a booking button or form to your own website

    You can now embed your MassageHub booking page directly on your website — either as a "Book Now" button, or as a full inline booking form. Find the ready-to-paste HTML snippets in Settings → Integrations → Add to your website. Works with Squarespace, Wix, WordPress, and any site that supports HTML. Thanks to Yeny for the idea!

    See it →
  234. On-the-hour booking slots

    You can now choose how often booking slots are offered for each location — every 30 minutes (the default) or on the hour only (9:00, 10:00, 11:00…). Find it on the Availability page, above your weekly hours. Thanks to Kim for suggesting this one!

    See it →
  235. Health & wellbeing limits

    Set daily and weekly hands-on hour limits, cap the number of appointments per day, limit consecutive working days, add a rest break between sessions, and set a minimum booking notice period. MassageHub automatically hides slots that would take you over your limits — clients just see the day as fully booked. Your dashboard now includes a wellbeing card showing your workload at a glance.

    See it →
  236. Incomplete profiles no longer receive policy emails

    Therapists who haven't completed their profile will no longer receive emails saying their account has failed our policy review or doesn't meet platform terms. Incomplete profiles are simply shown to the public as "awaiting details" until setup is finished.

  237. Delete completed, cancelled, or no-show bookings

    You can now delete old or test bookings from your appointment panel — useful for cleaning up any test appointments you made while getting started. Open any completed, cancelled, or no-show appointment and scroll to the bottom — you'll find a "Delete booking" option with a confirmation step.

  238. Bug fix: booking times and calendar display now correct after clocks went forward

    Two issues affecting UK therapists after the clocks changed to BST have been fixed: slots were occasionally showing or booking at the wrong time, and adding extra availability outside regular hours caused the whole day to appear highlighted on the calendar. Thanks to Kim for reporting both of these.

  239. Add Google Analytics, Google Ads & Meta Pixel tracking to your booking page

    You can now connect your own Google Analytics, Google Ads conversion tracking, and Meta Pixel to your booking page and profile. Go to Settings → Analytics to add your IDs — bookings automatically fire conversion events so you can measure ad performance.

    See it →
  240. Add your business or brand name to your profile

    You can now add a business or brand name (e.g. "Serene Touch Massage") in Settings → Profile. It appears as a subtitle under your name on your public profile — useful if you trade under a name different from your own.

    See it →
  241. Add MassageHub to your home screen

    Your dashboard now works like an app — tap your browser's share or menu button and choose "Add to Home Screen" to access MassageHub instantly from your phone without opening a browser.

  242. Gift cards

    Sell gift cards directly from your booking page. Anyone can buy a treatment as a gift — they pay online, receive a unique code by email, and redeem it at checkout. You can also issue gift cards manually for cash sales. Manage everything from Settings → Payments.

    See it →
  243. Trusted Therapists is here

    You can now apply to join Trusted Therapists — a network of recommended therapists your clients can turn to when you're unavailable. Apply from Settings → Trusted Therapists. Your listing is reviewed before going live, and you stay in full control of what your clients can see.

    See it →
  244. Send payment requests for appointments you book

    When you book an appointment from your calendar, you can now send the client a secure Stripe Checkout link to pay a deposit or the full amount upfront — even if they don't have a saved card. Payment is confirmed automatically and their card is saved for future charges.

    See it →
  245. Direct booking links per service

    Each service now has a dedicated booking link you can share with clients. Click "Copy link" in the Services dashboard and the URL opens your booking page with that service pre-selected — ideal for sending in messages or adding to your website.

  246. AI-powered help centre search

    The help centre now has a search bar — type a question in plain English and Claude answers from the full knowledge base, linking to the most relevant articles. If the answer misses the mark, one tap submits your question as a feature request.

    See it →
  247. Discount codes

    Create promo codes for new clients, seasonal offers, or loyalty rewards. Set percentage or fixed-amount discounts, usage limits, and expiry dates. Clients enter the code at checkout and the saving is applied instantly.

    See it →
  248. Tap-to-call and WhatsApp in emails and dashboard

    Client phone numbers in your booking alert emails are now tappable — one tap to call or open a WhatsApp chat, no copy-pasting needed. Your number also appears as a tappable link in client confirmation and reminder emails.

  249. Membership minimum commitment period

    Set a minimum number of months before clients can cancel a membership plan — useful for promotional prices or discounted rates. The earliest cancellation date is shown clearly in the client portal before they subscribe.

  250. Discount-based pricing for memberships and packages

    Memberships and treatment packages now support a discount mode — set a percentage off and clients choose their service when subscribing or purchasing. The price is locked at that point and the saving is shown clearly throughout the booking flow.

  251. Buffer times visible on your calendar

    Travel and preparation buffers around imported calendar events (Google, iCal, Fresha) now appear as hatched strips on your therapist calendar, so you can see at a glance exactly why a slot is blocked. Toggle them with the Show buffers switch.

  252. Custom service durations

    Service duration is now a free-entry field — type any length from 5 to 480 minutes, or use the quick-pick buttons for common durations. Times over an hour display as hours and minutes for clarity.

  253. Create and edit appointments from your calendar

    Tap any empty slot on your calendar to open a new appointment form — set the client, service, and notes without leaving the calendar view. Existing appointments can be edited in place, and you can add time blocks to mark yourself as unavailable.

  254. Contact details on your public profile

    Add a phone number, email address, and website to your public profile — they appear as clickable links so clients can reach you directly from your booking page.

  255. Control what clients see on your profile

    Choose whether to show your services, prices, or both on your public profile, and drag sections into your preferred order. Useful if you prefer to discuss pricing in person or want to lead with certain information.

  256. Mobile-first redesign

    The app has been fully redesigned for mobile — your calendar and client list are always one tap away, forms stack cleanly on small screens, and the calendar now fills the full viewport so you can see your week at a glance.

  257. Client replies come straight to you

    Turn on "Reply to my email" in Settings → Account and any client who replies to a booking confirmation or reminder will reach you directly — no more replies disappearing into the void.

  258. Reviews — in-app and Google

    MassageHub automatically asks clients for a review after each appointment. Reviews show on your public profile, and if you have a Google Business page, clients are directed there instead — boosting your online presence.

    See it →
  259. Apple Pay and Google Pay at booking

    Clients can now pay deposits and full session fees with a single Face ID or fingerprint tap — no card details needed. This significantly reduces drop-off at the payment step.

  260. Price adjustments before charging

    Before charging an appointment you can add a surcharge or apply a discount — with an optional note explaining why. The charge confirmation shows a clean Service / Adjustment / Total breakdown.

  261. Issue refunds from your dashboard

    You can now issue a full or partial refund from the appointment panel without needing to log in to Stripe. The appointment shows an amber "Refunded £X" badge so your records stay accurate.

  262. Booking deposits

    Collect a deposit at the time of booking — as a fixed amount or a percentage of the service price. The remainder is charged after the session, and you can choose to keep the deposit only if the client cancels.

    See it →
  263. Recurring appointments

    Mark any appointment as recurring (weekly or fortnightly) and 16 weeks of sessions are created automatically — so your regular clients are always in your diary without manual work each time.

  264. Grant treatment packages offline

    You can now grant a treatment package to a client without Stripe — useful for cash or bank transfer sales. A single button on the client page sets it up and credits are tracked the same way as online purchases.

    See it →
  265. Add-on services at booking

    Create add-on extras (hot stones, aromatherapy, theragun) that clients can select during booking. Add-ons with a duration automatically extend the slot; zero-duration add-ons (like a specific oil) just update the price.

  266. Notification preferences

    Choose exactly which alerts you receive by email and SMS — new bookings, cancellations, package purchases, and membership sign-ups. Set a private mobile number that is never shown on your public profile.

  267. Personal note in client emails

    Add a short personal message that appears at the bottom of every booking confirmation and reminder email — a great place to share parking details, what to wear, or anything else clients need to know.

  268. Social media links on your profile

    Add your Instagram, Facebook, TikTok, and LinkedIn profiles to your public page. Clients see your social links with recognisable brand icons so they can follow your work.

  269. Weekly calendar view for mobile clients

    On mobile, the booking date picker now shows a compact weekly chip view so clients can swipe through days quickly. The monthly grid is still available on desktop and can be set as the default in your profile settings.

  270. Back-to-back (multi-service) bookings

    Clients can combine two or more treatments into a single session — for example, a deep tissue massage followed by a reflexology session. You can set an optional multi-treatment discount and a rest break between services.

    See it →
  271. Travel area management

    Set a maximum travel distance for mobile bookings, a borderline zone where clients submit an inquiry first, and a hard cutoff for out-of-range requests. Per-client agreements let you approve travel with a surcharge, minimum duration, or package requirement.

    See it →
  272. Client referral tracking

    Each client gets a unique referral link they can share. When a referred friend books a confirmed appointment, the referral is tracked through invited → booked → completed status so you always know who brought who.

  273. Holiday and date range blocks

    Block a full holiday week with a single entry instead of overriding each day individually. The date override tab now supports ranges (e.g. Mon 14 Apr – Fri 18 Apr), and they show as a block on your calendar.

  274. Google Calendar: bookings written automatically

    Connect your Google Calendar and every new booking — whether you create it or a client books online — is added as an event automatically. Cancellations remove it. Your calendar stays up to date without any copy-paste.

    See it →
  275. Green booking incentives

    Offer a discount to clients who book on a day you are already travelling to their area, reducing your travel time and fuel costs. Eligible slots are highlighted in green on the booking calendar with your custom label.

    See it →
  276. Automatic travel time between appointments

    MassageHub calculates real driving time between your appointments using Google Maps and automatically blocks the right amount of travel time — so you are never double-booked because you underestimated a journey.

    See it →
  277. Client address captured at mobile booking

    For mobile appointments, clients enter their full address during booking — so it appears on your calendar event, in the confirmation email, and in the appointment panel without you having to ask for it separately.

  278. Link an existing Stripe account

    If you already have a Stripe account (for example from another business), you can now link it to MassageHub via OAuth instead of creating a new one — keeping your payout history and Faster Payouts status intact.

    See it →
  279. Invite clients to the booking portal

    Send existing clients a personalised invite link so they can log in, view their appointment history, manage memberships, and book again — all from their own portal without needing to call or message you.

    See it →
  280. Auto-save on SOAP notes and profile

    Your SOAP notes and profile settings now save automatically as you type — no more losing work because you forgot to hit Save. A subtle "Saved" indicator confirms everything is written.

    See it →
  281. Monthly membership plans

    Create subscription plans with a set number of treatments per month, billed automatically via Stripe. Clients subscribe through their portal or you can enrol them manually — great for building a reliable monthly income.

    See it →
  282. Treatment packages

    Sell bundles of sessions upfront — at a fixed price or with a percentage discount. Clients buy through the portal and credits are tracked automatically, redeemed at booking with one click.

    See it →
  283. Calendar sync (Google, iCloud, Fresha)

    Connect your Google Calendar, iCloud, or Fresha calendar so existing commitments automatically block out your availability — clients can only see and book genuinely free slots.

    See it →
  284. Getting Started guide

    A step-by-step onboarding checklist walks you through setting up your profile, adding a location, creating services, and going live — so you can accept your first booking as quickly as possible.

  285. Cancellation emails to clients

    When you cancel an appointment you can choose to notify the client by email with a single checkbox — keeping your communication professional without leaving MassageHub.

  286. Income dashboard

    See your total revenue, month-by-month breakdown, and per-service earnings at a glance. The income dashboard helps you understand which services drive your business.

    See it →
  287. Client portal

    Clients get their own private area at massagehub.app/[your-slug]/my where they can view upcoming appointments, download receipts, manage memberships, and book their next session.

    See it →
  288. Intake forms

    Build a custom health consultation form and it is automatically sent to new clients when they book. Responses are stored against the client record — no chasing for paperwork before appointments.

    See it →
  289. SOAP notes with AI assist

    Write structured clinical notes for every appointment using a customisable template. Hit the AI button and Claude drafts the note from your template — you review and save. Notes are stored securely against each appointment.

    See it →
  290. Payments and no-show protection

    Charge clients at the time of booking or after the session — you choose. Stripe handles the payment securely and funds land in your bank account. Save card details upfront so late cancellations never go unpaid.

    See it →
  291. Clinic, mobile, and multi-location

    Add as many practice locations as you need — a clinic, mobile visits, a gym — each with their own availability and services. Travel time between locations is handled automatically.

    See it →
  292. Client records

    A full client database with contact details, appointment history, intake responses, SOAP notes, and payment records — everything about each client in one place.

    See it →
  293. Online booking page

    Your own booking page at massagehub.app/[your-slug] lets clients choose a service, pick a time, and confirm — 24/7, without any back-and-forth. Share the link anywhere.

    See it →
  294. Declined card? We send your client a secure link to fix it — automatically

    When an off-session charge declines (late-cancel fee, no-show fee, appointment balance, package purchase, membership renewal), the client now gets an email straight away with a hosted link to update their card. Stripe handles the card details; we handle the retry schedule — <strong>T+0</strong> the moment they update, then <strong>+24h</strong> and <strong>+72h</strong> before we stop trying. Gentle reminders fire at 24h and 72h if they haven't acted, and a final "we've stopped" email goes out after a week. Everything lands in <a href="/dashboard/settings/payments/outstanding-charges">Settings → Payments → Outstanding charges</a>, where you can resend the link, mark a charge as paid in cash, or close it off manually. An amber card on your dashboard surfaces the count whenever there's something to review.

    See it →