# Bookatu > Online booking and scheduling software for salons, spas, nail and beauty studios, barbers, personal trainers, coaches, studios, photographers and restaurants. Each business gets a branded booking page, a calendar, automatic reminders, deposits and no-show protection, client records, marketing tools, a public REST API and an MCP server for AI agents. Flat subscription, 0% commission on bookings. Every business on Bookatu has its own public page and booking site at https://bookatu.com/{slug}. The REST API base is https://bookatu.com/api/v1/{slug} — the business profile, services, staff, availability and booking endpoints need no authentication. Management endpoints and the MCP server for AI agents at https://bookatu.com/api/mcp authenticate with an org-scoped API key ("Authorization: Bearer bk_live_YOUR_KEY" or "X-Api-Key: bk_live_YOUR_KEY"); MCP clients can also connect via OAuth 2.1 (discovery at https://bookatu.com/.well-known/oauth-authorization-server). The expanded version of this file, with full guides, FAQ answers and the complete API reference, is at https://bookatu.com/llms-full.txt. Every help article, blog post and engineering post below, and the developer documentation, is linked as plain markdown: the page's address with .md on the end (for example https://bookatu.com/help/deposits.md), with a translated article's copy under its market (https://bookatu.com/de-de/help/deposits.md). Pricing: Every plan is free for 90 days, then from US$9 a month (US$8 a month billed yearly). Plans run from US$9 to US$179 a month, every plan includes all the core booking features (a few optional add-ons cost extra), and there is 0% commission on bookings. Plans, in USD: https://bookatu.com/en-nz/pricing Crawling and AI use (https://bookatu.com/robots.txt): Bookatu's own pages, in every market, are open to search engines, AI answer engines and AI training crawlers: the home page, pricing, the FAQ, the help centre, the blog, the engineering blog, the developer documentation, this file, https://bookatu.com/llms-full.txt and every markdown copy. A business's own pages at https://bookatu.com/{slug} are open to search engines and AI answer engines, so the business can be found and booked, but not to AI training crawlers: they carry staff names, client reviews and, at clinics, health-related services. Pages that belong to one client or one signed-in person (bookings, accounts, intake forms, review and token links, admin and the API) are closed to every crawler. Facts, checked 2026-10-29: What it is: Bookatu (bookatu.com) is online booking and business software for service businesses: a branded booking page and website, a calendar, reminders, deposits, client records and marketing tools. Not to be confused with Bookitu. Who it is for: salons, barbers, spas, personal trainers, coaches, studios, photographers and restaurants. Prices: Solo US$9 a month, Studio US$35 a month, Pro US$79 a month, Scale US$179 a month, billed in USD. Every plan is free for 90 days, there is no free plan, and there is 0% commission on bookings. Add-on: AI and Developer API, US$19 a month, included on Scale. Languages: Bookatu's public pages, booking pages and client emails come in 14 languages (English, Deutsch, Français, Español, Italiano, Nederlands, Português, Dansk, Svenska, Norsk, Suomi, Polski, 日本語, Čeština). AI assistants: a business connects its own AI assistant to its account through the MCP server at https://bookatu.com/api/mcp, which has 57 tools (sign in with OAuth, or use a scoped API key). The docs MCP server at https://bookatu.com/api/mcp/docs has 5 read-only tools and needs no key. Not HIPAA or PHIPA compliant. No Reserve with Google: clients cannot book a business on Bookatu inside Google Search or Maps. No payment inside AI chats. ## Product - [Homepage](https://bookatu.com/en-nz): what Bookatu is and who it is for - [Pricing](https://bookatu.com/en-nz/pricing): plans and what every plan includes - [FAQ](https://bookatu.com/en-nz/faq): common questions on booking, deposits, no-shows and payments - [Help centre](https://bookatu.com/en-nz/help): plain-language guides to every feature - [AI on Bookatu](https://bookatu.com/en-nz/ai): how AI works across the product - [Bookatu for AI assistants](https://bookatu.com/en-nz/ai/assistants): what an owner can do from Claude or another MCP client today, how to connect, and example tool calls - [Your booking website](https://bookatu.com/en-nz/website): the website with booking built in that every business gets, and what it costs ## Developers - [Developer documentation](https://bookatu.com/developers.md): the v1 REST API, webhooks and the MCP server, with request and response examples - [OpenAPI 3.1 spec](https://bookatu.com/api/openapi.json): machine-readable spec for the v1 REST API - [Capabilities](https://bookatu.com/api/capabilities): machine-readable JSON of endpoints, MCP tool families and auth modes - [Full reference for AI assistants](https://bookatu.com/llms-full.txt): this file, expanded ## MCP server - [Authenticating agents](https://bookatu.com/auth.md): how an agent gets a credential for the MCP server at https://bookatu.com/api/mcp (an API key, or OAuth 2.1 with PKCE) and what it can reach - [MCP server card](https://bookatu.com/.well-known/mcp/server-card.json): the server's endpoint, transport and tools, as JSON - [OAuth discovery](https://bookatu.com/.well-known/oauth-authorization-server): authorization server metadata for MCP clients that connect with OAuth - [MCP tools](https://bookatu.com/developers.md): 57 tools over JSON-RPC 2.0, each needing one scope on the key, and no delete tools. Booking and clients: list_services, get_availability, create_booking, list_customers, list_appointments, list_staff, reschedule_booking, cancel_booking, create_service, update_service, list_booking_requests, accept_booking_request, decline_booking_request, send_deposit_link, stop_deposit_request, get_checkout, get_visit_availability, create_visit, get_visit, reschedule_visit, cancel_visit, get_business; Products and stock: list_products, create_product, update_product, receive_stock; Blog: blog_list_posts, blog_get_post, blog_create_post, blog_update_post, blog_publish_post, blog_unpublish_post; Intake and consent forms: forms_list, forms_get, forms_create, forms_update, forms_attach_to_service, forms_detach_from_service, forms_list_responses; Email campaigns (draft only): campaigns_list, campaigns_get, campaigns_create_draft; Reports: get_report, get_findings, get_capacity, get_earnings, get_tips, get_deposit_report; Webhooks: webhooks_list, webhooks_create, webhooks_disable; Classes: list_class_sessions, get_class_roster, add_class_attendee, cancel_class_place, mark_class_attendance; Audit log: get_audit_log. - [Docs MCP server](https://bookatu.com/developers.md): https://bookatu.com/api/mcp/docs reads Bookatu's help centre (in every language it is translated into), the blog, the engineering blog and the developer docs, with no API key needed, read only: search_help, get_help_article, search_blog, get_blog_post, search_developer_docs ## Guides - [Share photo galleries with your clients](https://bookatu.com/help/client-galleries.md): Deliver private photo galleries, let clients pick favourites, and sell extra shots. - [Put your menu online and take pickup orders](https://bookatu.com/help/restaurant-menu-and-pickup.md): Show your food menu on your page and let guests order ahead for pickup. - [Sell session packs and chase unpaid sessions](https://bookatu.com/help/session-packs-and-getting-paid.md): Sell blocks of sessions that tick down, and see exactly who owes you. - [Add booking to your own website](https://bookatu.com/help/website-book-now-button.md): Paste one line of code to put booking on Squarespace, WordPress, Wix, Shopify or any other site. - [Follow up with people who didn't finish booking](https://bookatu.com/help/leads-and-follow-ups.md): See people who started a booking or purchase but didn't finish, and reach out. - [Pay as you go: no monthly fee](https://bookatu.com/help/pay-as-you-go.md): Pay 8 dollars per team member, with a small monthly minimum, instead of a subscription. - [Automations that run your admin for you](https://bookatu.com/help/automations-overview.md): Reminders, win-backs, birthdays and more, sent on autopilot. - [Set up automated reminders](https://bookatu.com/help/automated-reminders-setup.md): Turn on confirmations and reminders to stop forgotten visits. - [Win back clients automatically](https://bookatu.com/help/win-back-automation.md): Bring quiet clients back on their own, no chasing. - [Fill cancellations automatically with the waitlist](https://bookatu.com/help/waitlist-auto-fill.md): Cancelled slots auto-offer to your next best client. - [Your booking page](https://bookatu.com/help/your-booking-page.md): The public page where clients book you, in seconds. - [Why my booking page is not live yet](https://bookatu.com/help/why-my-page-is-not-live.md): Publishing needs a confirmed email, and Stripe only when your page takes money online. Here is how to see what is in the way and clear it. - [Connecting Stripe for payments](https://bookatu.com/help/connecting-stripe.md): Connect your own Stripe account so money flows straight to you. - [Adding your team](https://bookatu.com/help/inviting-your-team.md): Give staff their own logins and bookable calendars. - [The calendar](https://bookatu.com/help/calendar.md): Your whole day at a glance. Drag to reschedule. - [Deposits](https://bookatu.com/help/deposits.md): Take a small upfront payment to protect against no-shows. - [No-show shield](https://bookatu.com/help/no-show-shield.md): Charge a deposit only to clients who are a real risk. - [Smart waitlist](https://bookatu.com/help/waitlist.md): Fill cancellations with your most valuable clients first. - [Inbox and channels](https://bookatu.com/help/inbox-and-channels.md): All your client messages (SMS, WhatsApp, Messenger, email) in one place. - [AI receptionist and auto-reply](https://bookatu.com/help/ai-receptionist.md): Answers common questions and books clients, even when you are busy. - [Intake and consent forms](https://bookatu.com/help/intake-forms.md): Have clients fill health or consent forms, and draw their signature, before they arrive. - [Programs (for trainers and coaches)](https://bookatu.com/help/programs.md): Send clients a plan with videos, notes and a checklist. - [Newsletters](https://bookatu.com/help/newsletters.md): Email offers and updates to clients who opted in. - [Retention and win-backs](https://bookatu.com/help/retention.md): Automatically nudge clients who are due back. - [Reviews and the Google flywheel](https://bookatu.com/help/reviews.md): Collect reviews and send happy clients to Google. - [Referrals](https://bookatu.com/help/referrals.md): Turn happy clients into a source of new ones. - [QR codes (sharing your booking link)](https://bookatu.com/help/beam.md): Your booking link, a QR code, and a website widget. - [The Discovery network](https://bookatu.com/help/discovery-network.md): A free 'find a business near me' page that lists you. - [Gift cards](https://bookatu.com/help/gift-cards.md): Sell gift cards online that clients redeem against any service. - [Packages (prepaid bundles)](https://bookatu.com/help/packages.md): Sell 'pay for 5, get 6' style bundles as upfront credit. - [Memberships](https://bookatu.com/help/memberships.md): Recurring monthly plans for steady, predictable income. - [Wallet credit and loyalty](https://bookatu.com/help/wallet-and-loyalty.md): How gift cards, packages and points are spent automatically. - [Developer API and AI agents (MCP)](https://bookatu.com/help/api-and-mcp.md): Let other software, and AI assistants, read and manage your bookings. - [Check out bookings from another till](https://bookatu.com/help/checkout-from-an-outside-till.md): Let an outside point of sale, such as Moneris MGR, read what a booking comes to and post the sale back so the booking completes. - [Let AI tools read Bookatu's guides](https://bookatu.com/help/reading-bookatu-docs-from-ai-tools.md): Give ChatGPT, Claude, Copilot or Perplexity Bookatu's real help and developer docs through llms.txt, markdown copies and a docs MCP server that needs no key. - [Manage your blog from an AI tool](https://bookatu.com/help/manage-your-blog-from-ai-tools.md): Let Claude or any MCP client list, write, edit, publish and unpublish posts on your own storefront blog through the Bookatu MCP server. - [Tax and accounting](https://bookatu.com/help/tax-and-accounting.md): Track the tax you collect and hand a clean report to your accountant. - [Client notes and photos](https://bookatu.com/help/client-notes-and-photos.md): Keep treatment notes, colour formulas, allergies and before/after photos on each client. - [Blocking off time](https://bookatu.com/help/blocking-off-time.md): Stop clients booking breaks, holidays or admin time. - [Funding to grow](https://bookatu.com/help/funding.md): See whether you could be a fit for revenue-based funding. - [Automatic reminders](https://bookatu.com/help/automatic-reminders.md): Cut no-shows with a confirmation and a friendly reminder before every visit. - [Cancellations and your cancellation window](https://bookatu.com/help/cancellations-and-your-window.md): Set how much notice you need, and protect deposits on late cancels. - [Rescheduling a booking](https://bookatu.com/help/rescheduling-a-booking.md): Move an appointment in seconds, by drag or by form. - [The client portal](https://bookatu.com/help/your-client-portal.md): Let clients view their visits and get a receipt, with no password. - [Setting your opening hours](https://bookatu.com/help/setting-your-hours.md): Your hours drive both the calendar and what clients can book. - [Setting up your services](https://bookatu.com/help/setting-up-services.md): Add what you offer, with a price, duration and category. - [Missed-call text-back and callbacks](https://bookatu.com/help/missed-call-text-back.md): Never lose a client to a missed call. - [Getting found online](https://bookatu.com/help/getting-found-online.md): Your booking page is built to rank and to be understood by AI. - [Importing your clients](https://bookatu.com/help/importing-your-clients.md): Bring your existing client list with you from another tool. - [Using Bookatu on your phone](https://bookatu.com/help/the-mobile-experience.md): Run your business, and let clients book, from a phone. - [Managing staff, rooms and chairs](https://bookatu.com/help/managing-multiple-staff-and-rooms.md): Keep several team members, rooms or chairs booked without clashes. - [Time zones and travel](https://bookatu.com/help/time-zones-and-travel.md): How appointment times are shown so nobody turns up at the wrong hour. - [Sharing your booking link on Instagram and Google](https://bookatu.com/help/embedding-your-booking-page.md): Put your booking link where clients already are: Instagram, Google, your email signature and a printed QR code. - [Get booked from Google, Instagram and Maps](https://bookatu.com/help/get-booked-on-google-and-social.md): Copy a tagged booking link for Google, Instagram, Facebook, Apple Maps and Bing, and see which one brought each booking. - [Promo codes and discounts](https://bookatu.com/help/promo-codes-and-discounts.md): Run an offer with a code, or set up a standing discount. - [Keeping clients coming back](https://bookatu.com/help/keeping-clients-coming-back.md): The simple habits that turn one visit into a regular. - [Getting paid and payouts](https://bookatu.com/help/getting-paid-and-payouts.md): How the money your clients pay reaches your bank. - [Refunds and cancellation charges](https://bookatu.com/help/refunds-and-cancellation-charges.md): How to give money back, and when a deposit can be kept. - [Understanding your insights](https://bookatu.com/help/understanding-your-insights.md): The dashboard that shows how your business is really doing. - [Your subscription and billing](https://bookatu.com/help/your-subscription-and-billing.md): The free trial, how plans are priced, SMS, annual billing and how to cancel. - [Exporting your data](https://bookatu.com/help/exporting-your-data.md): Your data is yours. Take a copy whenever you want. - [Privacy requests and data deletion](https://bookatu.com/help/privacy-requests-and-data-deletion.md): Client deletion requests in one queue, with a countdown, plus your own full-business export. - [Contacting support](https://bookatu.com/help/contacting-support.md): How to reach a human, and how to report a problem. - [Stripe is not working](https://bookatu.com/help/connecting-stripe-troubleshooting.md): Fixes for the common Stripe snags: connection, charges and payouts. - [SMS text reminders and the Solo SMS add-on](https://bookatu.com/help/sms-reminders-and-add-on.md): Send reminders and confirmations by text, not just email, to cut no-shows hardest. - [Text confirmations and your own reminder times](https://bookatu.com/help/sms-confirmations-and-reminder-timing.md): Text clients when a booking is made or moved, choose when reminder texts go out, and keep texts out of the night. - [Installing Bookatu as an app](https://bookatu.com/help/installing-bookatu-app.md): Add Bookatu to your home screen, with no app store. - [Selling retail products in your shop](https://bookatu.com/help/selling-retail-products.md): Sell retail and take-home products from your booking site. - [Shipping and collect-in-store for product orders](https://bookatu.com/help/product-shipping-and-fulfilment.md): Choose whether each product ships or is collected, and track every order. - [Deals and off-peak offers](https://bookatu.com/help/deals-and-off-peak-offers.md): Give an automatic discount on your quietest hours. - [Choosing your business type and industry wording](https://bookatu.com/help/choosing-your-business-type.md): Pick your industry and Bookatu rewords the whole experience to match. - [Securing your account: two-factor and team logins](https://bookatu.com/help/securing-your-account.md): Protect your business with a strong password, two-factor and per-person logins. - [Check your security on the Security page](https://bookatu.com/help/the-security-page.md): One page that scores how well protected your business is, says what to fix first, and links to every security setting. - [Sign people out automatically after inactivity](https://bookatu.com/help/auto-sign-out-after-inactivity.md): Sign your team out of your business when they have done nothing for a while, so a screen left open does not stay open. - [Sign in with a passkey](https://bookatu.com/help/sign-in-with-a-passkey.md): Sign in with Face ID, Touch ID, Windows Hello, your phone or a security key instead of typing a password. - [Remove someone from your team and sign them out](https://bookatu.com/help/removing-a-team-member.md): When someone leaves, remove their login, sign them out and close what they set up at your business in one go. - [Local discovery hubs (your city and service pages)](https://bookatu.com/help/local-discovery-hubs.md): Get listed on shared local pages so new clients in your town find you. - [Write blog posts with your own AI](https://bookatu.com/help/write-blog-posts-with-your-own-ai.md): Get a ready prompt for ChatGPT, Claude, Gemini or any other AI, paste its answer back, and Bookatu fills in the post for you to check. - [Your business profile, website and social links](https://bookatu.com/help/your-business-profile-and-website.md): Describe your business and link out to your website, Instagram, TikTok and more. - [Your first-run setup checklist](https://bookatu.com/help/your-setup-checklist.md): A few honest steps from sign-up to a live, bookable storefront. - [Finding your way around the admin](https://bookatu.com/help/finding-your-way-around.md): A quick tour of the admin navigation and where settings live. - [Recurring and standing appointments](https://bookatu.com/help/recurring-appointments.md): Lock in a client's next visits at a set rhythm, all from one booking. - [Run video appointments with Google Meet](https://bookatu.com/help/video-appointments.md): Add a Google Meet link to online bookings, set per service. - [Using your own domain for your booking page](https://bookatu.com/help/custom-domain.md): Point a web address you own, like book.yoursalon.com, at your Bookatu booking page. - [Moving or reassigning a booking](https://bookatu.com/help/moving-and-reassigning-bookings.md): Drag a booking to a new time, or move it to another staff member, in a few taps. - [Set up a daily checklist for your team](https://bookatu.com/help/team-checklist.md): Build a daily task list your staff and trainees tick off on their phones. It resets every morning. - [Add a trainee who only sees the checklist](https://bookatu.com/help/trainee-accounts.md): Give a junior or apprentice a login that shows only the daily checklist, and nothing else. - [Share a private class or clinic link](https://bookatu.com/help/share-a-private-class.md): Keep a class off your public page and share a link so only the people you send it to can book. - [Book several services in one visit](https://bookatu.com/help/several-services-in-one-visit.md): Let a client book a colour then a cut as one visit, with one confirmation, one deposit and one checkout. - [Set which services can be booked together](https://bookatu.com/help/service-combination-rules.md): Choose which services can share a visit, which can never be booked together, and which extras go with each service. - [Book a service that needs two or more people](https://bookatu.com/help/bookings-with-two-or-more-staff.md): Set how many of your team a service needs at once, like two stylists on one client or a couples massage. - [Book a service that needs a room and equipment](https://bookatu.com/help/services-that-need-a-room-and-equipment.md): Make one service hold two kinds of resource at once, like a treatment room and a laser. - [Let a client swap out of a late cancellation](https://bookatu.com/help/quick-swap.md): Quick swap lets a client who can't make it inside your late window offer their time to your waitlist, and leave with no fee if someone takes it. - [Invoice a company that pays by bank transfer](https://bookatu.com/help/invoicing-a-company.md): Send a proper invoice to a business — with a reference, terms and your bank details — and tick it off when the transfer lands. - [Send a client a payment link](https://bookatu.com/help/sending-a-payment-link.md): Charge for something outside a booking — a top-up, a product you sold, a session agreed over text — with a link they pay by card. - [Set tiered commission and goal bonuses](https://bookatu.com/help/tiered-commissions-and-goal-bonuses.md): Pay a higher rate once someone sells more in a pay period, and a fixed bonus when they reach a sales target. - [Set up a booth or chair renter](https://bookatu.com/help/booth-rental.md): Mark a team member as renting a booth or chair, set their rent, and keep them apart from your employees. - [Set pay periods and download payroll](https://bookatu.com/help/pay-periods-and-payroll-export.md): Choose how often you pay your team, then download each pay period's commission, bonuses and tips for your payroll system. - [Connect QuickBooks Online](https://bookatu.com/help/connecting-quickbooks-online.md): Have each day's sales, tax, tips and deposits posted to QuickBooks Online for you, once Bookatu has switched it on. ## Blog - [How to handle late cancellations without losing clients](https://bookatu.com/blog/how-to-handle-late-cancellations.md): How to handle late cancellations: when to charge the fee, when to waive it, what to say, and how to pass the time to someone on your waitlist instead. - [Let clients book multiple services in one appointment](https://bookatu.com/blog/book-multiple-services-in-one-appointment.md): How to let clients book multiple services in one appointment: back-to-back times, one deposit, sensible combinations and a single checkout at the till. - [Salon blog ideas: 30 topics worth writing about](https://bookatu.com/blog/salon-blog-ideas.md): 30 salon blog ideas from client questions, the seasons and your own street, plus how to turn one into a finished post with the AI you already use. - [How to write a salon blog post with ChatGPT or Claude](https://bookatu.com/blog/write-a-salon-blog-post-with-chatgpt.md): How to write a salon blog post with ChatGPT, Claude or Gemini: the prompt to use, what to check before you publish, and how to keep it sounding like you. - [Cyber security checklist for salons, spas and clinics](https://bookatu.com/blog/cyber-security-checklist-for-salons.md): A plain cyber security checklist for salons, spas and clinics: own logins, two-step, passkeys, shared screens, old keys and staff who have left. - [Staff offboarding checklist for salons and studios](https://bookatu.com/blog/staff-offboarding-checklist.md): A staff offboarding checklist for salons and studios: what to do when someone leaves, from logins, keys and calendar sync to their bookings and clients. - [Front desk computer security for salons and clinics](https://bookatu.com/blog/front-desk-computer-security.md): Front desk computer security, step by step: a login for each person, auto sign-out after inactivity, passkeys for quick sign-in and a screen out of view. - [Salon staff permissions: what each role should see](https://bookatu.com/blog/salon-staff-permissions.md): Set salon staff permissions with care: what owners, managers, front desk and stylists should see and change, what stays locked, and when to review it. - [Quick swap: let a late cancellation go without the fee](https://bookatu.com/blog/quick-swap-late-cancellations-without-the-fee.md): Quick swap lets a client who must cancel late offer their time to your waitlist. If someone takes it, they pay no late fee and your chair stays full. - [Passkeys, auto sign-out and a Security page for teams](https://bookatu.com/blog/passkeys-and-a-security-page-for-your-team.md): A new Security page scores your business and links each fix. Add passkeys for the whole team, auto sign-out for shared computers and one-step offboarding. - [Write your blog with the AI you already use](https://bookatu.com/blog/write-your-blog-with-the-ai-you-already-use.md): The blog editor builds a prompt for ChatGPT, Claude or Gemini. Paste the reply back and the post fills itself in for you to check, with no AI credits used. - [Booking clients in another time zone, with both clocks labelled](https://bookatu.com/blog/booking-clients-in-another-time-zone.md): A client booking a video consult from abroad, or a visit ahead of a trip, now sees times on a clock that is clearly labelled. You keep your own clock with theirs beside it. A phone number typed from abroad, the way people write it there, gets that country's code. And a moved booking emails the client the new time with a calendar file. - [Choose who does each service, and give each person their own hours](https://bookatu.com/blog/assign-services-and-hours-to-each-staff-member.md): Limit a service to the people who actually do it, from the service or from the person. Give anyone on your team their own working week, with a break if they take one. And add a photo to every card, so clients can see who they are booking. - [Check clients in, edit bookings and block time off from your calendar](https://bookatu.com/blog/check-clients-in-and-edit-bookings-from-your-calendar.md): Mark a client as arrived from the calendar, change a booking's service, length or price after it is made, and block a whole week of leave as one entry. Restaurants can take a party size and a table on phone bookings, and front-desk logins can book when you allow it. - [Go live without Stripe, and choose what clients can change online](https://bookatu.com/blog/online-booking-pay-in-person.md): If clients pay you in person rather than online, your booking page no longer needs Stripe to go live. And a new section in Settings lets you decide whether clients can cancel or move a booking online, how close to the start, and how many times a booking can be moved. - [Print or email receipts at the till, and tax rates to three decimals](https://bookatu.com/blog/print-or-email-receipts-at-your-salon-till.md): Every till sale now has a receipt you can print or email. Here is how that works, plus barcode scanners that end with Tab, opening the cash drawer, tax rates like 14.975%, and invoice payment links that charge the full total. - [Every booking and what they bought, on one client profile](https://bookatu.com/blog/full-client-history-on-one-profile.md): A client's profile now counts every booking they have with you, shows what they bought beyond their appointments, keeps a postal address, and holds on to the note you typed when you first added them. Here is what changed and where to find it. - [Your waitlist now hears about more than cancellations](https://bookatu.com/blog/automatic-waitlist-for-appointments.md): Cancellations are no longer the only thing that reaches your waitlist. Time freed by a moved booking, an unpaid deposit or a no-show marked before the start is offered too, waiting clients can get more than one offer, and repeat bookings check your diary first. - [See your bookings in Google Calendar, Outlook or Apple Calendar](https://bookatu.com/blog/sync-salon-bookings-to-google-outlook-apple-calendar.md): Each team member can now see their bookings in the calendar app they already use, or connect their own Google Calendar. Here is how it works, who can see what, and what it does not do. - [What happens when a client asks us to delete their data](https://bookatu.com/blog/what-happens-when-a-client-asks-us-to-delete-their-data.md): A client can request deletion from their own account, confirm it by email, and change their mind for 48 hours. Here is the whole lifecycle, including what stays behind and why. - [GDPR without the panic: what Bookatu handles for your salon](https://bookatu.com/blog/gdpr-without-the-panic.md): Clients serve themselves a copy of their data, deletion requests run on rails with a 30-day countdown in your dashboard, and you can export your whole business any day. GDPR when the software does its share. - [Let Claude book your clients: Bookatu's MCP server in practice](https://bookatu.com/blog/book-clients-with-claude-mcp.md): Bookatu runs an MCP server, so an MCP-capable assistant like Claude can see your services, check live availability and create real bookings with a key you issue. Here is how that works, in plain words. - [Your next client might not use your website: when people ask ChatGPT (or any AI agent) to book](https://bookatu.com/blog/when-clients-ask-chatgpt-to-book.md): People are starting to hand whole errands to AI assistants, and booking an appointment is a natural errand to hand over. What agent-ready means for a salon, and how Bookatu keeps you bookable when the one doing the booking is software. - [AI agents and your booking data: what a key lets in, and what it never touches](https://bookatu.com/blog/ai-agents-and-your-booking-data.md): Bookatu has two doors for AI: the assistant inside your admin and outside agents that connect with an API key. What each one can do, how keys and scoping work, and the lines nothing is allowed to cross. - [Run your salon from a chat: book, reschedule and block time by typing](https://bookatu.com/blog/run-your-salon-from-a-chat.md): The Bookatu admin has an assistant you can talk to in plain words. Type what you want and it books, reschedules or blocks time for you, shows you the change first, and never touches your calendar until you confirm. - [Receive a whole delivery by photographing the supplier invoice](https://bookatu.com/blog/receive-stock-from-a-photo-of-the-invoice.md): A box arrives with a paper invoice. Photograph it, send it to the assistant, and it reads the lines, matches them to the stock you already carry, and proposes the receipt for you to confirm. Sold something? Tell it, and the count drops. - [Set up a new service, its consent form and a deposit in one go](https://bookatu.com/blog/set-up-a-service-consent-form-and-deposit-in-one-go.md): A new treatment usually means three separate trips into settings: the service, the consent form, the deposit. Describe it once and the assistant lays all three out as a plan for you to check, with the pieces already wired together. - [Undo anything the assistant does, and never end up with duplicate clients](https://bookatu.com/blog/undo-anything-and-never-get-duplicate-clients.md): Two fair worries about letting software make changes: that it does the wrong thing, and that it quietly messes up your client list. The assistant is built around both. Nearly every change undoes in a tap, and it picks the client you meant instead of inventing a new one. - [AI for your salon: the end of the blank description box](https://bookatu.com/blog/ai-writing-help-for-your-salon.md): Every description box in Bookatu now has a Write it for me button. It drafts the wording in your voice and keeps your real prices, with an Undo one click away. - [Digital consent forms from the PDF you already use](https://bookatu.com/blog/digital-consent-forms-one-upload.md): Waxing, peels, lash and microneedling all need signed consent. Upload the intake PDF you already use and Bookatu builds the digital form for you to check. - [AI booking software: what it should actually mean](https://bookatu.com/blog/what-ai-booking-software-should-mean.md): AI in booking software should hand you back an evening, not put on a show. Where Bookatu uses AI, and why every feature still works with it switched off. - [Client intake forms your clients can finish on a phone](https://bookatu.com/blog/intake-forms-clients-can-finish-on-a-phone.md): Most intake forms are built for a desk and filled in on a phone. Here is how a phone-first form gets finished in a few minutes, signature and all. - [Import your forms and client list without the typing](https://bookatu.com/blog/import-your-forms-and-client-list-without-the-typing.md): Moving to a new booking system usually means re-typing everything. Bookatu reads your existing consent form and your client spreadsheet for you, and it stays free even when the smart help runs out. - [Stop cropping heads off: focal points for photographers](https://bookatu.com/blog/stop-cropping-heads-off-your-photos.md): Your best frame is only as good as its crop. Set a focal point on each photo once, and every thumbnail, tile and hero on your booking page keeps the face, not the ceiling. A visual tour of the photographer storefront, with real screenshots. - [Sell photography collections clients pay for upfront](https://bookatu.com/blog/photography-collections-clients-buy-upfront.md): A family collection, a newborn-and-milestones package, a two-shoot brand bundle. Packages let clients pay once for a set of sessions, with built-in credit and a validity window, right on your booking page. - [Turn your paper consent form into one clients sign online](https://bookatu.com/blog/turn-your-paper-consent-form-into-an-online-one.md): You already have a consent form. Upload the PDF and Bookatu drafts the online version for you to check, so you are not rebuilding it field by field. - [Consent and aftercare forms for nail and beauty salons](https://bookatu.com/blog/consent-forms-for-nail-and-beauty-salons.md): Patch tests, allergies, a health history and a photo permission. The record you want before a first appointment, filled in and signed on the client's phone. - [A consent form your clients sign on their phone](https://bookatu.com/blog/a-consent-form-your-clients-sign-on-their-phone.md): No clipboard and no printer. The client opens a link, the easy fields are already filled, they draw their signature with a finger, and they are done. - [Money math in integer cents, and the discount that vanished](https://bookatu.com/blog/money-math-in-integer-cents.md): We gave a fifty-cent discount and the ledger recorded none of it. Floating point was not even the culprit. A field guide to doing money arithmetic with integers: clamping, proration, and making a ledger of unit prices sum to the exact total. - [A seeded sandbox beats a copy of production](https://bookatu.com/blog/seeded-sandbox-instead-of-prod-data.md): Our whole local environment is an in-process Postgres that boots from empty, applies real migrations, and fills itself with a convincing fake salon. No production credentials on laptops, no real client data in screenshots, and a demo that never goes stale. - [The dropdown that refused to be clicked](https://bookatu.com/blog/the-dropdown-that-refused-to-be-clicked.md): A menu rendered perfectly, sat exactly where it should, and swallowed every click. The culprit was an entrance animation that never really ended. A short tour of CSS stacking contexts, animation fill modes, and how to hunt bugs you cannot see. - [Dashboard charts with zero dependencies](https://bookatu.com/blog/dashboard-charts-with-zero-dependencies.md): We built the trend lines, sparklines, and category bars on our dashboard as plain inline SVG. No chart library, a few hundred lines total, dark mode for free. Here is the case for hand-rolled charts, and for when you should absolutely not do this. - [Test the pixels: screenshot QA for a small team](https://bookatu.com/blog/test-the-pixels-screenshot-driven-qa.md): Our test suite was green and the dropdown was unclickable. Unit tests cannot see stacking bugs, dark-theme breakage, or mobile overflow. Here is the small screenshot rig that now looks at every surface for us, and the visual bugs it catches that tests never will. - [Loyalty points that quietly bring clients back](https://bookatu.com/blog/loyalty-points-that-bring-clients-back.md): A points program does not need punch cards or a separate app. Turn on loyalty, set what a visit and a dollar are worth, and let regulars earn their way to a credit they will come back to spend. - [Before and after photos, kept where you will actually find them](https://bookatu.com/blog/before-and-after-photos-on-the-client-profile.md): Your camera roll is not a filing system. Keep before and after photos on the client's profile, private to your team by default, so last visit's work is one tap away at the next appointment. - [The QR code on your counter that books clients while you work](https://bookatu.com/blog/qr-code-on-the-counter-that-books.md): Every 'I'll book later' is a booking you might not get. A QR code on the counter, the mirror, or the window sends people straight to your booking page while the intention is still warm. - [Offer online sessions and let the video link make itself](https://bookatu.com/blog/offer-online-sessions-with-google-meet.md): Mark a service as an online video call and every booking for it gets its own Google Meet link in the confirmation email. Here is how a personal trainer kept the clients that distance was costing him. - [Ring up counter sales in a few taps, discount included](https://bookatu.com/blog/ring-up-counter-sales-with-a-discount.md): A client at the counter wants the serum you just used and a top coat to go with it. Here is how to ring that up in a few taps, take 10 percent off on the spot, and have the sale land in your books the moment it happens. - [Airy for a spa, bold for a barber: choosing a look for your booking page](https://bookatu.com/blog/choose-a-look-for-your-booking-page.md): Your booking page should feel like your shop, not like a template. Bookatu comes with six shop-front looks. Pick one in settings, preview it in your own brand colour, and save. Your layout and your colours stay exactly where they are. - [Promo codes that fill a quiet week and tell you what worked](https://bookatu.com/blog/promo-codes-that-fill-quiet-weeks.md): A code that expires tonight can fill this afternoon's chairs. Give it a channel and every booking it brings is counted, so next month you are not guessing whether the post worked. You read it in a table, in dollars. - [Your booking page speaks your clients' language](https://bookatu.com/blog/booking-page-in-your-clients-language.md): Your clients should not have to book in a language they do not think in. Pick your booking page's language in one setting, let dates and prices follow, and keep your own dashboard in the language you prefer. - [Get the health history and consent signed before the client arrives](https://bookatu.com/blog/intake-consent-forms-before-clients-arrive.md): A first facial should not start with a clipboard. Build your intake and consent form once, attach it to the right services, and clients fill and sign it on their phone before they walk in. - [Turn a cancellation into a booking with the waitlist](https://bookatu.com/blog/turn-cancellations-into-bookings-with-the-waitlist.md): Your best day is one text away from having a hole in it. Here is how the waitlist fills a Saturday cancellation in minutes, with the slot offered to the clients who already asked for it. - [Know what your retail shelf is worth](https://bookatu.com/blog/know-what-your-retail-shelf-is-worth.md): A salon that sells skincare, polish and haircare should be able to see what is running low and what the whole shelf is worth. Here is how to turn on stock tracking and read that one number. - [How to do a stocktake from your phone, no clipboard needed](https://bookatu.com/blog/do-a-stocktake-from-your-phone.md): A physical stock count without printing a list or sitting at a laptop. Walk the shelf, type what you actually count, and let the system correct your on-hand and log the difference so you can see what walked off. - [Move your stock spreadsheet into Bookatu without retyping it](https://bookatu.com/blog/move-your-stock-spreadsheet-into-bookatu.md): You already keep your retail in a spreadsheet with columns like Brand, Item, SKU, In Stock and Price. Save it as a CSV and import it. Bookatu reads your column names as they are, matches on SKU so nothing duplicates, and a price-only sheet updates just prices. - [The checklist that keeps every shift running the same](https://bookatu.com/blog/salon-daily-checklist-opening-closing.md): You cannot be on the floor for every shift, and standards quietly slip when you are not. A daily checklist your team ticks off on their phones is the plain, boring fix that actually works. - [How to fill your weekly classes and keep them full](https://bookatu.com/blog/fill-your-weekly-classes-and-keep-them-full.md): A class at a fixed time with a spot limit is the easiest thing you sell, if people can see it, book it and pay for it without texting you. Here is how to turn a weekly class into a standing, self-filling booking. - [Get clients rebooking before they leave the chair](https://bookatu.com/blog/get-clients-rebooking-before-they-leave.md): The best moment to book the next visit is while your client is still in front of you, happy and relaxed. Miss it, and you are relying on them to remember weeks later. Here is how to make rebooking the norm, not the exception. - [Online booking for photographers: shoots, deposits and delivering the gallery](https://bookatu.com/blog/online-booking-for-photographers.md): How a wedding and portrait photographer stopped chasing enquiries over DM, took a deposit at the moment of booking, and delivered the finished gallery through the same link the client already had. - [How to cut no-shows: deposits, reminders and a cancellation window people respect](https://bookatu.com/blog/reduce-no-shows-deposits-reminders.md): No-shows aren't bad luck, they're a system gap. Here's the three-part setup that turns a hopeful booking into one that actually turns up, without treating your good clients like suspects. - [Take bookings online without paying commission on every client](https://bookatu.com/blog/zero-commission-online-booking.md): Marketplace booking apps take a cut of every new client, forever. Here's why a booking page you own costs a flat fee instead, and what that difference adds up to over a year. - [Run your dojo's weekly timetable online, from beginner class to rained-out park session](https://bookatu.com/blog/martial-arts-dojo-class-booking.md): How a small BJJ and striking gym swapped a whiteboard timetable for an online class schedule that books and pays for itself and handles rained-out outdoor sessions, then rewards the members who bring their friends along. - [How a kids gymnastics club runs weekly classes without losing its mind](https://bookatu.com/blog/gymnastics-club-booking.md): How a small kids gymnastics club runs weekly classes by age group without counting heads off a spreadsheet: group sessions with spots and venues, live weather and instant credit for outdoor sessions, and referrals that fill a term. - [How a badminton club filled its courts with online session booking](https://bookatu.com/blog/badminton-club-online-booking.md): How a small Hamilton badminton club moved its weekly social and coached sessions online and got its Tuesday evenings back, using bookable group sessions with live spot counts, weather-aware cards, automatic credits, and referral rewards. - [How a Small Dance Studio Filled Its Weekly Ballet and Hip-Hop Classes](https://bookatu.com/blog/dance-studio-class-booking.md): A dance studio owner swaps her fraying group chat for weekly classes people book and pay into online, with capped spots and outdoor sessions that carry their own weather, filling the room through the dancers she already has. - [Weekly swim lessons that book themselves: a learn-to-swim school's quiet Monday night](https://bookatu.com/blog/swim-school-lesson-booking.md): How a small learn-to-swim school turned its repeating weekly classes into online group sessions parents book and pay for themselves, with live weather on every outdoor card and automatic credits when a lesson is rained off. - [How a small reformer studio fills every machine without a single double-booked class](https://bookatu.com/blog/pilates-reformer-class-booking.md): How a small reformer pilates studio sells fixed-time classes online without ever overselling its machines and auto-credits everyone the moment a session is called off, all on a zero-commission booking platform that also turns happy regulars into referrals. - [How a bouldering gym filled its beginner classes without a single phone call](https://bookatu.com/blog/climbing-gym-classes-booking.md): Running intro nights and coached sessions gets messy fast when you track it in your head. Here is how one climbing gym owner moved every class online and got her evenings back. - [Your box already runs on a timetable. Let people book into it.](https://bookatu.com/blog/crossfit-box-class-booking.md): A CrossFit box already runs on a fixed timetable. Here's how turning each class into a bookable, paid-for spot online ends the group-chat headcount and lets your best members bring their friends, with rained-off park sessions handled on their own. - [Running a weather-dependent park bootcamp without the 6am group-chat chaos](https://bookatu.com/blog/outdoor-bootcamp-group-training-booking.md): How one park bootcamp swapped a chaotic group chat for proper bookable sessions, with the weather on the card and rainy mornings that credit everyone on their own. - [How a Weekend Golf Coach Filled His Saturday Clinics Without Chasing a Single Text](https://bookatu.com/blog/golf-coaching-clinic-booking.md): Marcus runs group clinics at a driving range every Saturday morning. Here's how he stopped juggling payments and cancellations, and started letting people book and pay for a spot online in about a minute. - [Run 1:1 sessions and small-group training without the diary chaos](https://bookatu.com/blog/small-group-personal-training-booking.md): A personal trainer's day only holds so many one-on-one hours. Here's how adding small-group sessions, booked and paid for online, lets you fill a morning with six people instead of one, without the back-and-forth. - [Booking that fills every class at your boxing gym](https://bookatu.com/blog/boxing-gym-group-classes-booking.md): A kickboxing coach was overbooking his Saturday class and quietly losing money to no-shows. Here is how putting each class online, forecast and all, sorted it out for him. - [Booking lessons and group classes without losing your evenings](https://bookatu.com/blog/music-school-lesson-booking.md): A guitar teacher's tale of taking 1:1 lessons and small group classes online, capping seats, taking payment up front, and turning a rained-off park session into one calm tap instead of an hour of refunds. - [How one nail studio stopped drowning in messages and let clients book themselves](https://bookatu.com/blog/nail-salon-online-booking-referrals.md): A small Mount Eden nail studio was drowning in booking messages until it let clients book their own appointments and filled its slow days with group sessions that regulars now bring their friends along to. A plain, human look at how online booking and referrals grow a salon. - [How a Small Restaurant Filled Its Quiet Nights With Online Reservations](https://bookatu.com/blog/restaurant-online-reservations.md): How a twenty-eight seat trattoria stopped losing tables to a ringing phone and filled its quiet midweek nights with fixed-time supper clubs people book and pay for online, with happy regulars bringing the crowd and no commission to pay. - [Fill every day of your school-holiday sports camp](https://bookatu.com/blog/kids-holiday-sports-camp-booking.md): How Bex, who runs a school-holiday sports camp out of a New Lynn park, put every camp day online so it fills itself, forecast and rain-outs included. - [How a barber shop filled its chairs and stopped the no-shows](https://bookatu.com/blog/barber-shop-online-booking.md): A New Plymouth barber was losing four cuts every Saturday to no-shows. Here's how online appointments and a small deposit turned his best day of the week back into a full one. - [How a Wednesday night run club counts itself now](https://bookatu.com/blog/running-club-coached-runs-booking.md): Reuben runs a Wednesday night club from the boat shed by the lake. Here is how putting each week's run on his page as a capped, bookable group session, with a live forecast on the card and payment taken up front, quietly handed the admin back to the runners. - [How to fill every bike in your spin studio without chasing texts](https://bookatu.com/blog/spin-studio-indoor-cycling-booking.md): A whiteboard and a phone full of maybes is no way to run a room of fourteen bikes. Here's how one Wellington studio put its class timetable online and filled the room before opening. - [How a Piha surf school stopped dreading the Friday-night phone](https://bookatu.com/blog/surf-school-lesson-booking.md): Ana teaches beginners to surf at Piha, where the wind decides everything. Here is how running lessons as bookable group sessions, each with a live forecast on the card, gave her back her Friday nights and her rain-day sanity. - [How a Tuesday night tennis clinic runs itself now](https://bookatu.com/blog/tennis-clinic-group-sessions-book-and-pay-online.md): Meet Will, who runs a beginners tennis clinic every Tuesday at his local club. Here is how running it as a fixed-time group session, with a live weather forecast on the card and payment taken online, quietly fixed the whole thing. - [Mini-session days that fill up before dinner](https://bookatu.com/blog/photography-mini-session-days-book-online.md): Priya sells out a full Saturday of fifteen-minute autumn mini-sessions at the botanic gardens. Here is how laying the day out as bookable sessions, with one location and a live forecast on every slot, took the DM avalanche out of it entirely. - [A class timetable that fills its own spots](https://bookatu.com/blog/class-timetable-group-sessions-book-online.md): Mara runs eight classes a week off a clipboard by the door, and it shows. Here is how putting every class on the timetable as a capped, bookable session let her members sort their own spots and filled her Saturday reformer by Thursday. - [Why there's a tiny weather forecast on your booking page](https://bookatu.com/blog/weather-forecast-on-your-booking-page.md): There is a small animated weather forecast on the booking page for outdoor sessions, and it is not only there to look cute. It answers the question everyone asks before booking, and when a session is rained off, everyone gets credited back automatically. - [Why your booking page is your colour, and your dashboard is ours](https://bookatu.com/blog/your-brand-belongs-to-your-clients.md): When you set your brand colour in Bookatu, it paints your booking page, your emails and everything your clients touch. It does not paint the dashboard you work in. That is a deliberate choice, and it is the same one every tool you trust makes. Here is the thinking. - [How to put your services on sale without discounting everything](https://bookatu.com/blog/put-your-services-on-sale.md): You do not have to edit every price by hand to run a promotion. Put a whole category on sale in one place, let the discount come off automatically at checkout, and switch it back off when the week is over. - [How we ship features that touch money without changing anyone's price by accident](https://bookatu.com/blog/shipping-money-features-safely.md): A pricing bug is the kind you cannot take back once a card is charged. Here is the discipline we use to add discounts, staff pricing and sales to the booking flow without a single price moving until we mean it to. - [How much photo storage do you actually need?](https://bookatu.com/blog/how-much-photo-storage-do-you-need.md): The honest answer is that it depends on what you shoot, not on a number on a pricing page. Here is a plain guide to what fills up a gallery, what your clients downloading never costs you, and how to size your plan without overpaying. - [Set the hours you actually work (and let clients book around them)](https://bookatu.com/blog/set-the-hours-you-actually-work.md): Weekends only, evenings after a day job, three long days and four off. Your booking calendar should match your real life, not a default nine to five. Here is how to set opening hours per day, per person, with buffers and notice that protect your time. - [Add a Book Now button to your website or Instagram bio](https://bookatu.com/blog/book-now-button-website-instagram-bio.md): You already have a website and a bio link. Paste one line of code, or drop in your booking link, and turn the visitors you already get into booked appointments, with no plugin and no commission. - [Booking software for photographers: book, deliver and get paid in one place](https://bookatu.com/blog/booking-software-for-photographers.md): A plain guide to booking software for photographers: take deposits that stop no-shows, deliver private proofing galleries that sell the extra shots, and keep 100% of every booking with 0% commission. - [Introducing Pay as you go: no monthly fee, pay only for active clients](https://bookatu.com/blog/introducing-pay-as-you-go.md): A new way to pay for Bookatu, built for businesses that are just starting out, seasonal, or quiet some months. No subscription. Pay 50 cents per active client, with a small monthly minimum, and nothing in a month when no one books. - [One Platform, Seven Trades: Who Bookatu Is For](https://bookatu.com/blog/one-booking-platform-for-salons-trainers-restaurants-photographers.md): Bookatu is one booking and payments platform that reshapes itself for your trade, whether you run a salon, a gym, a restaurant or a photography studio. Here is why a tailored tool beats a blank calendar, with a day-in-the-life example for each. - [Preview, pick, pay, download: private galleries that sell your photos for you](https://bookatu.com/blog/photographer-private-galleries-preview-pick-pay-download.md): A private online gallery lets clients browse a safe watermarked preview, choose their favourites, and pay for extras before they download. Here is how that one flow saves you hours and earns you more. - [Photo Proofing That Protects Your Work: Watermarks, Low-Res Previews, and Pay-First Downloads](https://bookatu.com/blog/photo-proofing-protect-your-work-online.md): Proofing is where most photos quietly leak. Here is how watermarked low-res previews, baked-in marks, and payment-gated downloads keep your full-resolution work safe, plus the honest limits of stopping image theft. - [Event-driven by design: how one payment becomes loyalty, retention, and a receipt](https://bookatu.com/blog/event-driven-by-design-the-post-payment-ripple.md): A booking platform lives or dies on consistency. Here is how a single Stripe payment fans out into loyalty points, retention, a receipt and a ledger entry, why every effect is gated on a real state change, and where we are taking the architecture next. - [Set up payments for your salon: it really does take two minutes](https://bookatu.com/blog/set-up-payments-for-your-salon.md): Connecting payments sounds technical, but it isn't — it's a short, guided form from Stripe. Here is exactly what you will be asked, why, and how to get from "started" to "ready to take deposits" in one sitting. - [Sell Session Packs and Stop Chasing Payments: A Calmer Money Setup for Trainers and Coaches](https://bookatu.com/blog/sell-session-packs-stop-chasing-payments-trainers-coaches.md): Per-session billing makes your income lumpy and your week stressful. Here is how prepaid session packs and a simple "who owes me" board help you get paid up front, keep clients showing up, and stop chasing cash. - [Booking Software for Hair Salons: A Plain Guide](https://bookatu.com/blog/booking-software-for-hair-salons.md): A plain guide to booking software for hair salons: your own branded booking page, synced stylist calendars, deposits that stop no-shows, and 0% commission. - [Take Online Reservations and Design Your Floor Plan Online: Fewer Phone Calls, Fewer No-Shows](https://bookatu.com/blog/restaurant-floor-plan-online-reservations-fewer-no-shows.md): A visual floor plan plus online booking lets guests reserve a real table while you are busy, cuts the calls your host has to answer, and gives you the reminders that keep tables filled. Here is how it works and what the research says. - [Booking Software for Barbershops: Keep 100% of Every Cut](https://bookatu.com/blog/booking-software-for-barbershops.md): A plain guide to booking software for barbershops: your own branded booking page, deposits that stop no-shows, payouts straight to your bank, and 0% commission. - [Get paid into your own bank account: how 0% commission keeps the money yours](https://bookatu.com/blog/paid-into-your-own-bank-account-0-commission-stripe-connect.md): Booking marketplaces can take a cut of every appointment and sit on your cash for days. Here is how 0% commission and Stripe Connect put the money in your own bank account, in your own name, and clean for tax time. - [How automated reminders cut no-shows (and win back your evenings)](https://bookatu.com/blog/automated-reminders-cut-no-shows.md): No-shows quietly drain your week. Here is how automated appointment reminders cut them down, what a good reminder actually says, and how to back it up with deposits and a few small habits. - [Deposit and cancellation policies that protect your time](https://bookatu.com/blog/deposit-cancellation-policies-that-work.md): A clear deposit and cancellation policy is the quiet rule that keeps your calendar honest. Here is how to write one, word it kindly, and let your booking system do the enforcing. - [Turn one-time clients into regulars with memberships](https://bookatu.com/blog/one-time-clients-into-regulars-memberships.md): A happy first-timer is still a coin flip to return. Salon memberships turn that coin flip into a routine, and give you predictable income while they do it. Here is how to build one clients actually want. - [Packages vs memberships: which grows your revenue?](https://bookatu.com/blog/packages-vs-memberships-grow-revenue.md): Both bring cash in upfront and pull clients back, but they grow your revenue in different ways. Here is how to read packages vs memberships and pick the one that lifts your takings. - [How an AI receptionist books clients while you work](https://bookatu.com/blog/ai-receptionist-books-while-you-work.md): You cannot answer every message while your hands are full. An AI receptionist for salons replies for you, answers the common questions and turns enquiries into bookings, even after hours. - [Get found on Google: local SEO for salons and studios](https://bookatu.com/blog/local-seo-for-salons-get-found-on-google.md): A practical guide to local SEO for salons and studios, covering your Google Business Profile, reviews and online booking, so nearby clients find you and book before they call anyone else. - [Win back lapsed clients automatically](https://bookatu.com/blog/win-back-lapsed-clients-automatically.md): Lapsed clients are recurring revenue that paused, not sales you lost. Here is how to win them back automatically and turn a one-off return into a steady rhythm again. - [The complete guide to online booking for solo beauty pros](https://bookatu.com/blog/online-booking-guide-solo-beauticians.md): Working solo means you are the booker, the therapist and the accounts team at once. Here is how online booking for solo beauticians takes the admin off your plate, fills your week, and keeps clients coming back. - [Reduce no-shows without scaring clients away](https://bookatu.com/blog/reduce-no-shows-without-scaring-clients.md): You can reduce no-shows without making loyal clients feel mistrusted. The trick is to be clear rather than strict, and to put the gentle defences only in front of the bookings that actually carry risk. - [5 automations every small salon should turn on today](https://bookatu.com/blog/automations-every-small-salon-should-turn-on.md): Five practical salon automations you can switch on this week to cut no-shows, protect your diary, and turn one-off clients into regulars, without adding to your to-do list. - [Booking App for Nail Salons: A Practical Guide](https://bookatu.com/blog/booking-app-for-nail-salons.md): A practical guide to choosing a booking app for nail salons: deposits that stop no-shows, your own branded link, and keeping 100% of every booking with 0% commission. - [Secure links, not passwords: a friendlier way to share photos and bookings with clients](https://bookatu.com/blog/secure-magic-links-share-photos-bookings-with-clients.md): Passwords slow people down and links that live online forever are a quiet risk. Here is a plain-English look at passwordless magic links and links that expire, and why they are safer and friendlier for sharing client galleries and bookings. - [Get found by new local clients: how Bookatu's Discover hubs work](https://bookatu.com/blog/get-found-by-local-clients-discover-hubs.md): When someone searches for a service in your town, you want to be on the short list they find. Discover hubs are free pages that group real, bookable businesses by city and by service. - [Go live in a day: the first-run setup checklist for new owners](https://bookatu.com/blog/go-live-in-a-day-first-run-checklist.md): The hardest part of new software is the first hour. Bookatu shows a short, honest checklist the moment you sign in, so you go from sign-up to a live booking page the same day. - [Booking Software for Personal Trainers: What Actually Works](https://bookatu.com/blog/booking-software-for-personal-trainers.md): Pick booking software that fits how trainers really work: recurring slots, card holds against no-shows, packages and memberships in one place, and 100% of every booking in your bank. - [Booking Software for Massage Therapists: Keep 100%](https://bookatu.com/blog/booking-software-for-massage-therapists.md): A plain guide to booking software for massage therapists: what actually cuts no-shows, why deposits land in your own bank, and how 0% commission keeps every booking yours. - [Booking Software for Lash and Brow Artists: A Plain Guide](https://bookatu.com/blog/booking-software-for-lash-brow-artists.md): A plain guide to booking software for lash and brow artists: real service lengths and patch tests, your own branded booking site, deposits that quiet no-shows, and 0% commission. - [Booking Software for Spas: A Practical Owner's Guide](https://bookatu.com/blog/booking-software-for-spas.md): A plain-language guide to booking software for spas and wellness studios: 0% commission, deposits straight into your own bank, and all the core features on every plan. - [Booking Software for Tattoo Studios: An Owner's Guide](https://bookatu.com/blog/booking-software-for-tattoo-studios.md): A plain-talk guide to booking software for tattoo studios: deposits that hold, a calendar per artist, the stuff around the appointment sorted, and 0% commission so the shop keeps every dollar. - [Booking Software for Skin Clinics and Estheticians](https://bookatu.com/blog/booking-software-for-skin-clinics.md): How to pick booking software for skin clinics and estheticians that handles consults, deposits and treatment courses, keeps your client list yours, and takes 0% commission. - [Booking Software for Makeup Artists That Pays You Direct](https://bookatu.com/blog/booking-software-for-makeup-artists.md): A plain guide to booking software for makeup artists: one branded link, deposits into your own bank, calendar sync for mobile days, and a client list that stays yours. - [Booking Software for Yoga and Pilates Studios: What Matters](https://bookatu.com/blog/booking-software-for-yoga-pilates-studios.md): A plain guide to booking software for yoga and pilates studios: class passes, memberships, deposits that stop empty mats, your own branded link and 0% commission. - [How to Take Deposits for Appointments: A Practical Guide](https://bookatu.com/blog/how-to-take-deposits-for-appointments.md): A practical guide to taking deposits for appointments: flat vs percentage, how much to ask, who pays, card holds, and a refund rule clients won't resent. - [Leaving Fresha or Booksy: how to go independent without losing your clients](https://bookatu.com/blog/leaving-fresha-or-booksy-without-losing-clients.md): Thinking of leaving a marketplace but worried about losing your regulars? You can switch and keep every client. Here is a calm, step-by-step plan to go independent. - [Salon Cancellation Policy Examples You Can Copy Today](https://bookatu.com/blog/cancellation-policy-examples.md): Copy-and-paste salon cancellation policy examples for salons, spas, barbers, gyms and clinics. Swap in your own notice and deposit, then go live the same day. - [How to Set Up Online Booking: A Simple Guide for Owners](https://bookatu.com/blog/set-up-online-booking-in-an-afternoon.md): A plain, practical guide to setting up online booking for a small service business: what to prep, how to list your services, and the settings that quietly protect your day. - [SMS vs Email Appointment Reminders: Cut No-Shows](https://bookatu.com/blog/sms-vs-email-appointment-reminders.md): SMS or email for appointment reminders? Each does a different job. Here's how to use both at the right moment to cut no-shows, with timing and wording that work. - [How to Get More 5-Star Reviews for Your Salon or Clinic](https://bookatu.com/blog/get-more-5-star-reviews.md): A practical guide to getting more 5-star reviews for your salon, spa, studio or clinic: when to ask, how to make it effortless, and how to keep unhappy clients off your public page. - [How to Price Your Services Without Guessing](https://bookatu.com/blog/how-to-price-your-services.md): A plain, practical guide to pricing your services: work out your real costs, charge for the result, sanity-check local rates, and raise prices without losing good clients. - [How to Fill Quiet Weekday Appointment Slots](https://bookatu.com/blog/fill-quiet-weekday-slots.md): Dead Tuesday mornings and that 2pm gap cost you money. Here's how to fill quiet weekday appointment slots without dropping your prices or chasing strangers. - [Paper Diary to Online Booking: The Calm Way to Switch](https://bookatu.com/blog/paper-diary-to-online-booking.md): Still running your salon on a paper diary? Here's the calm, stage-by-stage way to move to online booking without losing appointments, confusing regulars, or wiping out a weekend. - [Why 0% booking commission matters for your margins](https://bookatu.com/blog/why-zero-percent-commission-matters.md): A per-booking commission looks small on one appointment. Across a full year of bookings it is one of the largest invisible costs a service business carries. - [How to Automate Your Salon Front Desk (Without Sounding Like a Robot)](https://bookatu.com/blog/automate-your-front-desk.md): Your salon front desk is a pile of small repeating jobs eating your day. Here's how to automate bookings, reminders, deposits and the waitlist so they run themselves. - [Getting paid your way: money into your account, not a platform wallet](https://bookatu.com/blog/getting-paid-into-your-own-account.md): Some platforms hold your money in their wallet and pay you on their schedule. With Bookatu, deposits and sales go straight into your own Stripe account. Here is why that matters. - [Gift cards: a quiet cash-flow engine for small studios](https://bookatu.com/blog/gift-cards-cash-flow-engine.md): Gift cards are money in the bank today for services you deliver later, and every one you sell can introduce a brand new client to your business. - [Fill your calendar without discounting: rebooking and waitlists](https://bookatu.com/blog/fill-your-calendar-without-discounting.md): Discounts fill chairs by training clients to wait for the next deal. There is a better way to fill a quiet week: rebook before they leave, and let a smart waitlist mop up the gaps. - [Win back lapsed clients with automatic reminders](https://bookatu.com/blog/win-back-lapsed-clients-with-reminders.md): Clients rarely leave on purpose. They drift. A well-timed reminder, sent automatically, brings them back before they settle somewhere else. - [How to actually reduce no-shows: a practical playbook](https://bookatu.com/blog/how-to-reduce-no-shows.md): No-shows are not bad luck. They are a system problem with a system fix. Here is the full playbook: reminders, deposits, a fair cancellation window and a waitlist that fills the gaps. - [Memberships vs packages: which recurring revenue fits your business](https://bookatu.com/blog/memberships-vs-packages.md): Both bring in cash upfront and pull clients back. But they suit different businesses. Here is how to tell which one fits the way you actually work. - [Your clients are yours: why your salon should own its client relationships](https://bookatu.com/blog/your-clients-are-yours.md): On a marketplace, your regulars are not really yours. They are the platform's, rented back to you through fees and ads. Here is why owning the relationship changes everything. - [How deposits stop no-shows (and what an empty chair really costs)](https://bookatu.com/blog/how-deposits-stop-no-shows.md): A no-show is not just a missed appointment. It is paid time you cannot get back. Here is how a small deposit changes client behaviour without scaring anyone off. - [Getting found online: the local SEO and reviews flywheel](https://bookatu.com/blog/local-seo-and-reviews-flywheel.md): When someone nearby searches for your service, you want to be the business they find. Here is how reviews, a complete profile and a fast booking page work together. - [Why we built a booking platform that takes 0% commission](https://bookatu.com/blog/why-we-built-a-zero-commission-booking-platform.md): Most booking platforms get cheaper for them and more expensive for you the busier you get. We built Bookatu the other way round. Here is the thinking behind 0% commission. ## Engineering - [A hidden menu item is not a gate](https://bookatu.com/engineering/a-hidden-menu-item-is-not-a-gate.md): Almost every button in the Bookatu admin runs a server action, and each business decides on its own role grid who may do what. We audited every action against that grid. Of 40 candidate gaps, 34 held up and 6 were by design. Here is what the real ones had in common, the public side where the question is ownership, and how the fixes were tested on the old code first. - [Browser tests that read like the journey](https://bookatu.com/engineering/browser-tests-that-read-like-the-journey.md): Our newest browser tests are written as the journey a person takes, in Given, When and Then steps that use their words. Quick swap needs two waiting clients reaching for one time, so every journey takes a seeded set of its own and can run again. Here is how they wait for hydration, ignore React's hidden streaming copy, pass three times in a row with no retries, and the four app bugs they found. - [A private channel nobody else can join](https://bookatu.com/engineering/a-private-channel-nobody-else-can-join.md): The who's-online bar in our admin had not connected for three months, and nothing on screen said so. Allowing the socket in our CSP would have taken five minutes and switched back on a channel anyone could read and spoof. Here is what we built instead: a short-lived token, a private channel, and two row-level security rules, plus two lessons from putting them into production. - [One rule, every door](https://bookatu.com/engineering/one-rule-every-door.md): A client can now book a colour and a cut as one visit, and a braiding salon can say that a 4 braids and a 6 braids are never booked together. Bookatu takes bookings through five different doors. This is how those rules live in one place that every door has to pass through, and how we taught an engine built around a grid to find starts that are not on it. - [Pin today, fail first](https://bookatu.com/engineering/pin-today-fail-first.md): Most of what we ship changes code that already works for businesses taking bookings every day. Before a feature touches that code, we write down what it does today as tests that must pass on the old commit, then tests for the new behaviour that must fail on it. A small script checks both against a copy of the base. Review findings get the same treatment: no fix until a test reproduces the finding. - [GST plus QST: tax lines that add up to the cent](https://bookatu.com/engineering/gst-plus-qst-tax-lines-that-add-up.md): One tax rate per business was enough until Canada. Quebec charges GST and QST, British Columbia charges GST and PST, and some services carry only one of them. Here is how our tax engine works each tax out on its own, rounds so the cents always add up, freezes the result on the sale, and hands the same figures to the tax report, the CSV exports and QuickBooks. - [An append-only tip ledger](https://bookatu.com/engineering/an-append-only-tip-ledger.md): A tip at checkout can belong to three people, and the split is sometimes wrong. We record each share as a row the database will not let anyone edit, split tips with largest-remainder arithmetic so the cents always add up, and change a split by writing an adjustment that moves money and sums to zero. Here is how it works, and how commission, payroll and QuickBooks read it. - [Handing over a slot that is still booked](https://bookatu.com/engineering/handing-over-a-slot-that-is-still-booked.md): Quick swap lets a client who would pay a late-cancel fee hand their time to someone on the waitlist instead. The time is never free, not even for a moment. Here is the one transaction that releases one booking and writes the other, how two claimers racing give one winner, and how a cancellation and a claim at the same moment give one outcome. - [Passkeys without telling anyone who has an account](https://bookatu.com/engineering/passkeys-without-telling-anyone-who-has-an-account.md): Business logins can now sign in with a passkey. The WebAuthn library does the cryptography, and most of our work went into everything around it: where the relying party comes from, challenges that live on the server and are used once, a sign-in prompt that never asks who you are, sign counters, and a fresh check before a session can add a passkey of its own. - [An idle timer you cannot reset by deleting a cookie](https://bookatu.com/engineering/an-idle-timer-you-cannot-reset-by-deleting-a-cookie.md): A business can now sign its team out after 15 minutes to 2 hours without activity. Our sessions are stateless, so the server has no record of when anyone last did anything. Here is how a signed, per-business activity cookie answers that question without being something you can delete for a fresh window, and the two review findings that changed how it ships. - [Parsing what someone else's AI wrote](https://bookatu.com/engineering/parsing-what-someone-elses-ai-wrote.md): The blog editor can now hand a business owner a prompt for ChatGPT, Claude, Gemini or any other AI, and read back whatever it replies. We do not control that model or its output. Here is how we ask for JSON, read it tolerantly, strip HTML until nothing changes, stay fast on hostile input, and the two review findings that changed the panel. - [Six tables, one booking a night](https://bookatu.com/engineering/six-tables-one-booking-a-night.md): Our availability engine grew up in a salon, where a busy stylist means no appointment however many chairs are free. A restaurant is the opposite shape, and one line that had been in the file since its first version meant a dining room with six tables went dark the moment the first party sat down. The fix was small. The two layers underneath it were not. - [The optional parameter that was four hours wrong](https://bookatu.com/engineering/the-optional-parameter-that-was-four-hours-wrong.md): We booked the noon slot at a test shop in Perth and the confirmation email said 4:00pm. Nothing threw, nothing logged, and the email was well formatted and wrong. The cause was a question mark in a function signature, and the part worth reading is the shape of the fix rather than the bug. - [Green for the wrong reason](https://bookatu.com/engineering/green-for-the-wrong-reason.md): We put a bug back into the code to find out which of the tests written to catch it would go red. Three different ways of breaking it, and the suite stayed green through all three. This is what was wrong with those tests, and the cheap loop that came out of it, which then turned up a rule nothing in our suite has ever checked. - [The link in the email was never going to work](https://bookatu.com/engineering/the-link-in-the-email-was-never-going-to-work.md): A feature request sent us to read our own invoicing code, and the Pay now button in every invoice we had ever emailed pointed at an address that does not exist. Here is the bug, the worse one hiding behind it, and why the fix was a route rather than a string. - [Propose then confirm: a safe pattern for AI that writes to your database](https://bookatu.com/engineering/propose-then-confirm-a-safe-pattern-for-ai-that-writes-to-your-database.md): Owners can run parts of Bookatu by chat, and every one of those requests is a write to a live database that other businesses share. We never gave the model write access. It proposes a structured change, we validate it like any form post, and a person confirms before anything is saved. - [Undo for AI actions: recording every change with its reverse](https://bookatu.com/engineering/undo-for-ai-actions-recording-every-change-with-its-reverse.md): A confirm dialog stops most mistakes with an AI assistant, not all of them. So next to the changes ours makes there is an Undo, and it is not a history feature bolted on afterwards. Each reversible change records its own reverse at the moment it happens, so it can be taken back in one tap. - [The allowlist is the boundary: keeping an AI assistant on rails](https://bookatu.com/engineering/the-allowlist-is-the-boundary-keeping-an-ai-assistant-on-rails.md): The most useful question to ask about an AI assistant is not what it can do, it is what it cannot. Ours can call a fixed, hand-picked set of tools and nothing else. Here is why that list is an allowlist rather than a denylist, why it lives in code rather than in a prompt, and what we keep off it on principle. - [React 19 quietly resets your form, and when that bites](https://bookatu.com/engineering/react-19-quietly-resets-your-form-and-when-that-bites.md): Our intake form posts through a server action. During testing, one rejected field came back to a page where everything the client had typed was gone, including a signature they had drawn with a finger. React 19 resets forms after an action on purpose, and the reasoning is sound. Here is why the reset exists, where it hurts, and the small submit pattern that keeps typed input on the page. - [One app, two theme planes: where color-scheme leaks](https://bookatu.com/engineering/one-app-two-theme-planes-where-color-scheme-leaks.md): Our platform shell has its own light and dark theme, and every storefront has an independent one. The custom property tokens were scoped correctly, yet native checkboxes still flipped with the wrong theme. The culprit was color-scheme, a property that inherits from the root like any other, and it bit us a second time across an iframe boundary. - [The signature pad that would not draw](https://bookatu.com/engineering/the-signature-pad-that-would-not-draw.md): Our consent forms end with a client drawing their signature on a canvas. In testing it accepted every touch and produced no ink. The cause was a canvas that measured itself while hidden inside a later step of a multi-step form. Here is what a zero-sized canvas actually does, how to size one properly for phone screens, and the re-setup pattern that keeps the ink and never posts a stale signature. - [Packing a day: laying out overlapping bookings without a calendar library](https://bookatu.com/engineering/packing-a-day-overlapping-bookings-without-a-calendar-library.md): Our day-view preview drew every booking at full width, so overlapping appointments rendered as text over text. The fix was the classic interval packing pass: assign each booking the lowest column whose previous booking has ended, then size each overlap cluster by its own peak concurrency. Extracting it as a pure function is what finally made it testable. - [Keeping AI free: a fair-use quota that never blocks the work](https://bookatu.com/engineering/keeping-ai-free-a-fair-use-quota-that-never-blocks-the-work.md): We wanted to use a language model across the product to make imports more accurate, without putting AI behind an upgrade and without a surprise bill. The trick was to treat AI as a boost on top of a result that is already correct, meter it per tenant with no new tables, and let it fall back the instant an allowance runs out. - [Storefront themes that can't break a layout, and the CSS layer that fought us](https://bookatu.com/engineering/storefront-themes-that-cannot-break-a-layout.md): Letting every business pick a look for their shop page sounds like a support nightmare waiting to happen. Here's how we made themes that restyle a storefront but are structurally incapable of breaking it, and the @layer gotcha that ate an afternoon. - [The focus bug hiding in a disabled input](https://bookatu.com/engineering/the-focus-bug-hiding-in-a-disabled-input.md): A search box that kicked the cursor out after every couple of keystrokes. The cause was one prop doing exactly what it was told, and a browser rule most of us half-remember. A short story about a sharp little bug. - [Idempotent webhooks: making sure the money only moves once](https://bookatu.com/engineering/idempotent-webhooks-the-money-only-moves-once.md): Payment providers promise to deliver a webhook at least once, which is a polite way of saying sometimes twice. If a repeat delivery confirmed the booking a second time, awarded loyalty twice and emailed two receipts, our customers would notice fast. Here is the small idea that makes every downstream effect happen exactly once, no matter how many times the same event lands. - [Settings as a directory, not a wall of tabs](https://bookatu.com/engineering/settings-as-a-directory-not-a-wall-of-tabs.md): A booking business has a lot to configure, and for a while our settings screen showed all of it at once behind a row of tabs. It worked, but it read as a wall. We rebuilt it as a plain directory of rows that opens one focused section at a time. Same fields, same save actions, a fraction of the cognitive load. - [Generous storage that still makes money: a hard cap, real-byte metering, and pack overage](https://bookatu.com/engineering/generous-gallery-storage-that-still-makes-money.md): A photographer's plan now includes up to a terabyte of gallery storage. Here is how we made the included space generous without turning it into a loss: enforce the cap when photos go in, trust the size the store reports rather than the one the browser claims, and sell the overflow as simple fixed packs. - [Reading the visitor's language: Accept-Language, q-values, and refining by country](https://bookatu.com/engineering/reading-the-visitors-language-accept-language-region-refine.md): Our marketing site serves regional markets like en-NZ and de-DE, and the bare URL has to redirect each visitor to the right one. We used to do that by IP country alone, which sent a German tourist in New York to an English page. Now we read the browser's own language preference first, refine it by where they are, and we moved the language dropdown to the footer because the page usually guesses right. - [Protecting photographers' images on the web: what actually helps](https://bookatu.com/engineering/protecting-photographer-images-baked-watermarks-downscale-exif-ownership-route.md): Right-click blockers and CSS overlays are theatre. Here is the pipeline we use in the Bookatu photographer galleries: baked-in pixel watermarks via canvas, a hard downscale to 1080px, EXIF stripping, and serving the full-resolution file only through an ownership-checked route. - [The refund we never meant to give: closing a free-download loophole in gallery proofing](https://bookatu.com/engineering/gallery-proofing-free-download-loophole-permanent-state.md): A photo client could trade a delivered photo back and forth in a way that settled to free. The fix was one identifier, and a clear lesson about modelling state by its lifetime. - [Magic links done right: why a login token is not a share link](https://bookatu.com/engineering/magic-links-done-right-login-vs-gallery-tokens.md): Two things in Bookatu look identical from a browser address bar: the passwordless login link and the gallery share link. They must never be the same token. Here is how we sign, scope, and expire them, with a sign and verify sketch. - [One dashboard, seven industries: a config-driven, vertical-aware admin](https://bookatu.com/engineering/config-driven-vertical-admin-seven-industries.md): Bookatu runs salons, spas, trainers, coaches, studios, restaurants and photographers from one admin. Here is how a single config map, plus named constants instead of hardcoded industry strings, keeps that admin clean as the list of verticals grows. - [How 0% commission works: Stripe Connect and money that never touches us](https://bookatu.com/engineering/zero-commission-stripe-connect.md): A walk through how Bookatu takes a client deposit straight into the salon's own Stripe balance with a direct charge on a connected account, so the platform never holds the money. - [Two planes and a gotcha: per-tenant theming with CSS custom properties](https://bookatu.com/engineering/per-tenant-theming-css-custom-properties-dark-mode.md): How Bookatu themes every tenant's storefront from one component tree: brand colour injected as CSS variables, dark mode built as a second value plane, and the inline-specificity bug that needs exactly one !important. - [One codebase, thousands of branded sites: our multi-tenant model](https://bookatu.com/engineering/multi-tenant-architecture.md): How Bookatu serves every tenant's branded storefront and back office from one Next.js app: a slug in the path, a flag-gated host proxy, and org_id on every query. - [A +25GB storage pack is just a quantity line: billing add-ons as Stripe subscription items](https://bookatu.com/engineering/billing-add-ons-as-stripe-subscription-items.md): How Bookatu turns a photographer's "+25GB storage pack" into a quantity line on the org's existing platform subscription, finds or creates a versioned price, prorates the change, and keeps the in-app storage cap from drifting away from what Stripe actually bills. - [Localizing into 13 languages without /(locale) routes](https://bookatu.com/engineering/i18n-without-locale-routes.md): How Bookatu ships its UI in 14 languages with no /[locale] URL segment: a pure deep-merge catalog, a visitor-locale resolver over header, cookie and geo, and SEO bolted on later behind a flag. - [Keeping a client photo gallery private: row scoping, a private bucket, and a route that 404s on any mismatch](https://bookatu.com/engineering/private-photo-galleries-multi-tenant-row-scoping-ownership-404.md): How Bookatu keeps each photographer's client galleries private in a multi-tenant app: org plus customer row scoping in Postgres with Drizzle, a private blob store, and a serving route that checks ownership and returns 404 for anything you do not own. - [Building a touch-friendly booking calendar from scratch](https://bookatu.com/engineering/building-the-booking-calendar.md): Why we built Bookatu's drag-to-reschedule calendar on raw pointer events instead of a library, and how the touch model, swim lanes and optimistic updates actually work. - [Stopping fake signups without punishing real owners](https://bookatu.com/engineering/stopping-fake-signups.md): How Bookatu keeps junk businesses off a public booking platform with layered checks that fail open, so a DNS hiccup or a Google outage never blocks a real salon owner. - [Recurring appointments and the 'admin force-book' rule](https://bookatu.com/engineering/recurring-appointments-force-book.md): How Bookatu books a standing recurring series through the same pipeline as one-off bookings, why admin scheduling force-books while customer booking stays strict, and the one collision the database still refuses. - [Custom domains for every tenant with Vercel for Platforms](https://bookatu.com/engineering/custom-domains-vercel-platforms.md): How Bookatu lets each tenant point their own domain at their storefront: a flag-gated routing proxy, the Vercel Domains API behind a wrapper that never throws, and a TTL cache that keeps the common request free. - [Pricing by active clients: computing who actually counts](https://bookatu.com/engineering/pricing-by-active-clients.md): How Bookatu bills by active clients instead of seats: a 90-day window, a deliberately plain in-memory de-dupe across two activity sources, and a clean split between lifecycle and counting. - [Testing a booking engine with pglite and 1600+ tests](https://bookatu.com/engineering/testing-a-booking-engine.md): How Bookatu tests its booking engine against a real in-memory Postgres: actual migrations, partial unique indexes that catch double-bookings, and 1600+ tests that run anywhere. - [Per-language URLs for SEO via a proxy rewrite](https://bookatu.com/engineering/per-language-urls-for-seo.md): Cookie-based localisation is invisible to Googlebot, so it only ever indexed our English pages. Here's how we made 14 languages crawlable with a flag-gated proxy rewrite and zero new routes. ## Comparisons - [Bookatu vs Fresha: the 0% commission alternative](https://bookatu.com/en-nz/compare/vs-fresha): Fresha now charges a monthly subscription plus a 20% fee on new marketplace clients. Bookatu takes 0% commission. Every price links to its source. - [Fresha alternatives in 2026: prices, fees and who each one suits](https://bookatu.com/en-nz/compare/fresha-alternatives): Fresha alternatives with real prices: Timely, Booksy, Vagaro, Square, GlossGenius, Setmore, Goldie, Kitomba and Bookatu, each linked to its pricing page. - [Bookatu vs Booksy: predictable pricing, no booking commission](https://bookatu.com/en-nz/compare/vs-booksy): Booksy is US$29.99 a month plus US$20 for each extra staff member, with an optional 30% Boost fee on new clients. Bookatu takes 0% commission. Sources linked. - [Bookatu vs Vagaro: priced by clients, not calendars](https://bookatu.com/en-nz/compare/vs-vagaro): Vagaro is priced per location by bookable calendars, from AU$45 a month in Australia. Bookatu prices by active clients with 0% commission. Sources linked. - [Bookatu vs Square Appointments: booking that works in New Zealand](https://bookatu.com/en-nz/compare/vs-square-appointments): Square does not process card payments in New Zealand. Bookatu takes deposits in NZ through your own Stripe account, with 0% commission. - [Bookatu vs Timely: a price that does not grow with your team](https://bookatu.com/en-nz/compare/vs-timely): Timely is priced per staff member; Bookatu is priced by active clients, with 0% commission. Prices for New Zealand and the US, each linked to its source. ## Optional - [Blog](https://bookatu.com/en-nz/blog): articles for salon, studio and clinic owners - [Engineering](https://bookatu.com/engineering): how the platform is built - [Discover](https://bookatu.com/en-nz/discover): businesses taking bookings on Bookatu - [Security](https://bookatu.com/security): the platform's security posture - [Privacy](https://bookatu.com/privacy): privacy policy - [GDPR](https://bookatu.com/en-nz/gdpr): data-protection rights and how to exercise them - [Terms](https://bookatu.com/terms): terms of service - [Status](https://bookatu.com/status): live service status