Mahi Time
Help / Admin handbook

The admin handbook.

Plain-English operator manual for tenant admins. Skim the table of contents on the left, or read it end-to-end like a setup checklist. Each major section has a sketch of the Mahi Time sidebar so you know exactly which menu item to click.

Table of contents

  1. The first 30 minutes after signup
  2. Company settings
  3. Adding staff
  4. Setting weekly hours and time-off
  5. Services and products
  6. Importing from Fresha / Timely / Setmore / Kitomba
  7. Locations
  8. Customers
  9. Bookings and the calendar
  10. Public booking page
  11. Payments and Stripe Connect
  12. Vouchers and loyalty
  13. SMS and email reminders
  14. Google Calendar sync
  15. The AI voice agent
  16. Reports and exports
  17. Roles and team members
  18. Billing
  19. Common questions
  20. Team services (one visit, several staff)
  21. Getting help

1. The first 30 minutes after signup

The welcome email lays out six steps; this section covers them in order. You can do them in any order, but doing it in this sequence means each step builds on the last.

  1. Set up your company, /admin/<your-slug>/company-settings. Logo, brand colours, business hours, vertical (barber, salon, clinic, tradesman, etc.). Drives terminology and defaults across the app.
  2. Add your staff, the people who take bookings. Base plan covers two calendar users; extras are NZ$21/mo.
  3. Set weekly availability, open each staff member, click "Set weekly hours". Pick days, set start/end, add a recurring break if needed.
  4. Add products and services, type them in by hand, or paste your existing Fresha / Timely / Kitomba URL into the importer to pull your catalogue across automatically.
  5. Connect Google Calendar (optional), per staff. They sign in to Google once; bookings sync both ways from then on.
  6. Share your booking link, your public page is live at app.mahitime.com/book/<your-slug>. Embed on your website, post on Instagram, link from your Google Business Profile.

If you do nothing else, do steps 1–3. The rest can wait until you've taken your first online booking and seen the system in action.


2. Company settings

Settings → Company.

Identity

  • Name, the public-facing name customers see at the top of their booking page.
  • Slug, the URL fragment (app.mahitime.com/book/<slug>). You can change this; old links won't redirect, so do it before you go live.
  • Logo, uploaded to the booking page header and on every email + receipt. Square or banner-shaped both work.
  • Brand colours, primary and secondary. The booking page picks these up immediately. Pick contrast that reads on white.
  • Contact email + phone, shown in the footer of receipts and customer-facing emails.
  • Address, shown on receipts and the public booking page.

Vertical

Pick the closest match (Hair Salon, Barber, Beauty Clinic, Tradesman, Massage, Tattoo, Custom). This sets your default terminology (staff vs. barber vs. technician), default service durations, default business hours, and which features show in the sidebar.

You can override every term individually, see Terminology below.

Business hours

Tenant-level default. Each staff member can override (their availability takes precedence). Used by the public booking page when a service has no specific staff assigned.

Booking rules

  • Lead time, minimum notice before a slot can be booked online. Default 1 hour.
  • Booking horizon, how far ahead the public page shows slots. Default 90 days.
  • Cancellation window, how late a customer can cancel without a fee. Default 24 hours.
  • No-show fee, auto-charged from the saved card, if you've enabled it AND the customer agreed at booking time.

Terminology

Settings → Company → Terminology. Rename any of: chair / staff / service / booking / customer / location to match your trade. A tradesman might use "job" instead of "booking", "callout" instead of "service".


3. Adding staff

People → Staff.

Each staff member is two things bundled:

  • A User (login + role).
  • A Staff Profile (calendar column, services they perform, photo, bio shown on the public booking page).

Add a new staff member

  1. Click "Add staff".
  2. Enter name + email. They'll receive a welcome email with a link to set their password.
  3. Pick their role:
    • Admin, full access.
    • Reception, calendar + customers + bookings; no settings, no billing.
    • Accounts, payments, vouchers, reports.
    • Staff, sees only their own calendar.
  4. Tick "Is barber" / "Is stylist" / "Is technician" (this label adapts to your terminology) if they should appear as a bookable column on the calendar. Untick for back-office users (admin, reception) who don't take bookings.
  5. Save. They get an email with the set-password link.

Photo + bio (for the public page)

People → Staff → <name> → Profile. Upload a square headshot and a two-sentence bio. These appear on the public booking page when customers pick a staff member.

Services this staff offers

People → Staff → <name> → Services. Tick which services this person performs. Anyone NOT ticked won't be offered for that service on the public page. Useful when only your senior stylist does balayage.

Locations this staff works at

People → Staff → <name> → Locations. Tick the locations. A staff member only appears in the calendar for the locations they're ticked at.


4. Setting weekly hours and time-off

Weekly hours

People → Staff → <name> → Availability. Click "Set weekly hours".

For each day of the week:

  • Working, tick or untick.
  • Start / End, the working window.
  • Break (optional), a recurring break (lunch, e.g. 12:00–13:00).

These hours drive what the public booking page offers as a slot. If Mia's only working Tuesday to Saturday, the page won't show Sunday or Monday for Mia.

One-off time-off

Right-click an empty space on Mia's calendar column → "Block out time". Pick the start and end. Type a reason (private to staff, not shown on the public page).

Recurring time-off (lunch breaks, school pickup)

Right-click → "Block out time" → tick "Repeat". Pick the days of the week, the time-of-day, and the end-of-recurrence date (or leave open for "until further notice"; we top it up monthly).

Time-off pulled from Google Calendar

If a staff member has connected Google Calendar (see §14), their personal events automatically appear as time-off blocks on the Mahi calendar, labelled with the Google event title. This stops the public page from offering slots that conflict with their own calendar.


5. Services and products

Catalog → Services and Catalog → Products.

Add a service

  1. Click "Add service".
  2. Name, duration, price.
  3. Pick a category (or create one). Categories group services on the public booking page.
  4. Optionally upload a photo (shows on the public page).
  5. Optionally set a deposit policy (% or flat amount required at booking).

Add a product

  1. Click "Add product".
  2. Name, price, GST treatment, stock count.
  3. Tick "Available at till" to make it pickable in Quick Sale.
  4. Tick "Available at booking" to offer it as a take-home item on the booking confirm step.

Stock counts

Stock decrements automatically on Quick Sale + booking-attached products. Reception can update stock counts after a delivery.


6. Importing from Fresha / Timely / Kitomba

Catalog → Import services.

  • Paste your existing public booking URL (e.g. https://www.fresha.com/your-business).
  • The importer detects the platform, pulls the catalogue, and shows you a preview with checkboxes. Untick anything you don't want.
  • Submit. Services are created (or matched to existing names case-insensitively, so re-running the importer updates rather than duplicates).

For SPA platforms (Zenoti, GetTimely, Kitomba) the basic importer falls back to AI extraction, slightly slower but still automated.

For full data migration (customers + booking history), contact [email protected]. We have CSV templates for Fresha and Timely; other platforms are typically a 24-hour custom import.

Step-by-step export instructions per platform:


7. Locations

Catalog → Locations.

  • One location is created automatically on signup.
  • Add more if you have multiple physical sites.
  • Each location has its own URL slug (so you can link customers straight to one shop's booking page: /book/<tenant-slug>/<location-slug>).
  • Each location has its own staff list, business hours, address, and phone number.
  • Reports can be filtered by location.

8. Customers

People → Customers.

Customer profile

  • Name, email, mobile.
  • Booking history (every appointment with date, staff, service, price).
  • Total lifetime value.
  • Notes, internal, not shown to the customer.
  • Preferred staff member (auto-detected after 3+ bookings with the same person).

Adding a customer manually

Click "Add customer". Fill in name + at least one of email or mobile. Existing customers with the same email are auto-merged when they next book.

Customer identity (cross-tenant)

A customer who books at multiple Mahi-using businesses with the same email gets ONE cross-tenant identity. They can sign in at /portal/me to see every booking across every business.

You don't need to do anything for this to work, it's automatic.

Block / archive a customer

Customer profile → ⋯ menu → "Block from online booking". They can still be booked manually by you, but the public page rejects them.


9. Bookings and the calendar

Schedule → Calendar.

Views

  • Day, multi-staff columns, today's view by default.
  • Week, single staff or all-staff overview.
  • Month, high-level overview, click any day to drill in.
  • Switch between locations via the topbar dropdown.

Create a booking

  • Drag on empty time → opens the new booking form pre-filled with the staff + start time you dragged on.
  • Or right-click an empty slot → "Add booking" / "Block out time".
  • Or New booking button (top-right) for a fresh form.

The booking form supports:

  • Multiple services in one booking (cut + colour), auto-stacked back-to-back.
  • A different staff per service if needed.
  • Take-home products attached.
  • Notes for staff.
  • Send-confirmation toggle (defaults on).

Edit / move / cancel

  • Drag to reschedule.
  • Drag across columns to reassign to a different staff member.
  • Drag the bottom edge to resize duration.
  • Right-click for full menu: Edit, Charge, Issue voucher, Cancel.
  • Conflict detection runs on every action, you'll see a clear error if the move would clash with another booking, time-off, or shop closure.

Right-click on a Google-pulled time-off block

If a block was pulled from a staff Google Calendar, the right-click menu includes "Convert to booking". Pick a customer + service, and the block becomes a real Mahi booking, the original Google event is replaced with a Mahi-stamped one.


10. Public booking page

The page is live the moment you sign up at:

https://app.mahitime.com/book/<your-slug>

For multiple locations:

https://app.mahitime.com/book/<your-slug>/<location-slug>

Customising the look

  • Logo + brand colours come from Settings → Company.
  • Service photos come from each Service's photo field.
  • Staff photos + bios come from each Staff Profile.

Embedding on your existing website

Settings → Embed widget shows a one-line <script> snippet. Paste it into your site where you want the booking page to appear. Inherits your site's font and width automatically.

What customers see

  • Pick a service (and optionally a staff member).
  • Pick a slot.
  • Enter contact details (name, mobile, email).
  • Verify the contact (one-time code by SMS or email).
  • Confirm, and pay deposit if required.
  • Receive an SMS + email confirmation with a manage-this-booking link.

Manage existing bookings

Customers go to https://app.mahitime.com/book/<your-slug>/manage to see, reschedule, or cancel their bookings. They sign in via magic link (email) or password (if they've set one).


11. Payments and Stripe Connect

Settings → Payments.

One-time setup

  1. Click "Connect with Stripe".
  2. Stripe asks for your business details, bank account, NZBN, ID.
  3. Once approved (usually under 24h), you're back in Mahi.
  4. Set your deposit policy under each Service (or globally under Settings → Booking rules).

We never touch the money. Customers pay your Stripe account directly.

Take a payment in-store

Schedule → Quick Sale. Add line items (services + products), pick the customer, pick a payment method (cash, EFTPOS via Windcave, Stripe card terminal, voucher), submit.

Take a payment by phone

Open the booking → Charge → "Send pay link by SMS". Customer gets a text with a tokenised link, pays on their phone, the till sees "paid" within seconds.

Refunds

Open the booking → Charge tab → "Refund". Full or partial. The Stripe refund is initiated immediately; customer sees it back on their card in 3–5 business days.

No-show / late-cancellation fees

Settings → Booking rules. Set a fee amount and the cancellation window. The hourly cron sweeps no-shows and charges the saved card if the customer agreed at booking time.


12. Vouchers and loyalty

Vouchers

Accounts → Vouchers.

  • Create a voucher: amount, type (gift card / store credit / package), expiry.
  • Sell at the till (Quick Sale), gets a code automatically.
  • Sell online, add a "Vouchers" link to your menu, customer buys with Stripe.
  • Customer redeems by entering the code at the till or on the booking page.

Loyalty program

Accounts → Loyalty Program (must be enabled by Admin).

  • Set points-per-dollar earn rate.
  • Set redemption rate (e.g. 100 points = $1 off).
  • Optionally restrict redemption to certain services / categories.
  • Customer points are visible on their profile and shown on receipts.

13. SMS and email reminders

Settings → Notifications.

What's included

  • 100 SMS / month included on the base plan.
  • Unlimited email (Postmark).

Auto-sent on every booking

  • Booking confirmation (immediately after creation).
  • Reminder (configurable lead-time, default 24h).
  • Cancellation confirmation.
  • Reschedule confirmation.

Tone + branding

Both SMS and email pull your business name + brand colour. Email uses your logo. You can override the body of any of these from the Notifications settings.

When you run out of SMS

NZ$10 per 100-SMS top-up pack, billed automatically on top of your monthly subscription. You can disable SMS reminders entirely if you want email-only.


14. Google Calendar sync

Two ways to connect.

Option A, Each staff connects their own

People → Staff → <name> → Calendar tab → "Sign in with Google".

Each staff signs in to their own Google account. Bookings push into their personal calendar; their personal events pull into Mahi as time-off blocks (so the public page won't double-book them).

Option B, Admin connects multiple at once

Settings → Bulk connect Google Calendars.

For when you (the owner) have been added as editor on every staff member's calendar (or run the business off a shared calendar account). One OAuth round-trip → you map each calendar to a staff member → done.

What syncs

  • Mahi → Google (immediate): every booking change is mirrored within seconds. Event title is <service>, <customer>.
  • Google → Mahi (every 10 minutes): personal events become time-off blocks so the public page can't double-book.

Disconnecting

Same Calendar tab → "Disconnect". Tokens are wiped. Future bookings stop syncing immediately.


15. The AI voice agent

Optional add-on. NZ$129/mo. Covers up to 2 locations and unlimited staff.

What it does

  • Answers your phone in your business name (you can record a custom greeting in English or Te Reo).
  • Speaks your actual service catalogue and prices.
  • Checks live availability, same scheduling engine as the admin panel, so it can't double-book.
  • Books the slot.
  • Texts the caller a confirmation with the manage-link.
  • Hands off to a human the moment the caller asks.

Setup

  1. Billing → Add AI Voice Agent. Adds the line item to your subscription.
  2. We provision a phone number for you (or port your existing one, takes 2 weeks).
  3. Forward your existing line to the new number, OR replace the published number entirely.
  4. Customise the greeting from Settings → Voice Agent.
  5. Optional: turn on After-Hours mode so the agent only answers when your calendar says you're closed.

What if the agent gets it wrong?

Every call is recorded (with caller consent on the greeting) and transcribed. Review them in Reports → Voice Agent calls. We retrain monthly based on actual transcripts.

If you spot a recurring failure mode (e.g. agent doesn't recognise a particular service name), email [email protected] and we update the training prompt.


16. Reports and exports

Reports.

  • Revenue, by day, week, month. By service, by staff, by location.
  • Bookings, count, average duration, no-show rate, repeat rate.
  • Customers, total LTV, top spenders, most-booked services per customer.
  • Vouchers, outstanding liability, sold-vs-redeemed.

CSV export

Every report has a "Download CSV" button. Imports cleanly into Excel, Google Sheets, or Xero.

Xero summary

Reports → Xero summary. Generates the journal entries you (or your accountant) needs to import into Xero each month.


17. Roles and team members

Settings → Users.

  • Admin, everything.
  • Reception, calendar, customers, bookings, products, Quick Sale.
  • Accounts, payments, vouchers, reports.
  • Staff, only their own calendar / availability / time-off.
  • API, programmatic-only (no UI access).

Each calendar user (anyone who appears as a column on the calendar) counts toward your subscription. The first 2 are included; extras are NZ$21/mo each. Reception, Accounts, and Admin users who don't take bookings (no Staff Profile) DON'T count toward the calendar limit.


18. Billing

Settings → Billing.

  • See current plan, next billing date, payment method.
  • Add the AI Voice Agent add-on.
  • Buy SMS top-ups.
  • Update your card.
  • Cancel, one click. Your data stays accessible read-only for 30 days after cancellation so you can export anything you need.

19. Common questions

"Can I customise the customer-facing email + SMS templates?"

Yes, Settings → Notifications → Templates. Body and subject are editable per template. Variables like {customer_name} and {appointment_time} are substituted at send time.

"Can a customer have multiple email addresses?"

One primary email per customer (used for confirmations and the manage link). They can manage their own contact details from the customer portal.

"What happens if I delete a service that has past bookings on it?"

The service is soft-deleted. Past bookings keep the service name in their history; the service stops appearing on the public page and in the new-booking form.

"Can two staff share one calendar slot?"

Not a single slot, but you can add multiple services to one booking that go to different staff (e.g. nail tech + brow tech for a "spa package"). The booking is one entry in the customer's view; on staff calendars it appears as one card per staff member.

"How do I move bookings between two staff for a day?"

On the day view, drag the booking card from one column to the other. Conflict detection runs immediately; if the new staff isn't available, you'll see a clear error.

"Can I have a calendar that's just for resources, not staff?"

Yes, Catalog → Resources. Create a chair / treatment room / van / hoist / piece of equipment. Bookings can require a resource, and the calendar shows resource columns alongside staff columns.


20. Team services (one visit, several staff)

Some appointments take more than one pair of hands: a colour by one stylist and a cut by another, a treatment with an assistant, or a senior overseeing a junior. Team services let you build those visits once, then your client books in a single tap by choosing their lead. Mahi Time fills the rest of the team automatically from whoever is qualified and free, keeps it as one tidy appointment with one reminder and one payment, and still pays each team member their commission on the part they performed.

It is free and off until you switch it on, so nothing changes for your calendar unless you want it.

Turn it on. Open /admin/<your-slug>/integrations, find Team Services, and click Install. (Admin only.)

Build a team service. Open a service (under Services, or "Cuts" / "Treatments" depending on your vertical), or create a new one, and switch on "This is a team service". A Parts panel appears. Add a part for each step of the visit:

  • Step service: pick an existing service that defines this step. It carries that step's duration, price and the staff who can perform it.
  • Lead: turn this on for exactly one part. It is the step the staff member your client picks will perform; the rest are filled in for you.
  • Starts after: minutes after the visit begins. Leave at 0 to start with the visit, or set it to leave processing time (for example start the cut after the colour has developed).
  • Counts to availability: leave on. Turn it off only for an oversight step, so the same person can supervise it while working elsewhere.

The team service's price and duration are calculated from its parts automatically, so the bundle always adds up.

How it books. Wherever a booking is made (your reception calendar, the public booking page, the staff app, the phone agent, or the API), the client or operator just picks the lead. Mahi Time assembles the rest of the team. On the public page, times where the whole team cannot be covered are not offered, so you never get a booking you cannot staff.

On the calendar. Each part shows as its own card in the relevant staff column, marked with a small link icon. Hover any part to highlight the whole linked visit. You can still drag a single part to another staff member, slide its time, or resize it; it stays part of the one booking.

Cancelling. Right-click a team booking and choose "Cancel just this part" to drop one step (the rest of the visit stays), or "Cancel whole booking" to cancel the lot. Ordinary single-service bookings keep their usual one-click cancel.

Commission. Because each part is its own line performed by its own staff member, the Payroll add-on pays everyone correctly with no extra setup: the colourist earns on the colour, the stylist on the cut, each at their own rate.


21. Getting help

Two ways to reach us:

  • Chat with Koa — the orange "Chat with Koa" button bottom-right of any page on mahitime.com. Fastest answer for "how do I…" questions.
  • Contact formmahitime.com/contact. Better for screenshots and longer descriptions.

If something's broken, give us:

  • Your tenant slug (the bit after /admin/ in the URL).
  • A screenshot.
  • What you were trying to do.

We'll get back inside one business day, usually faster.