Bookings integration

Phorest

Phorest integration overview
  • CategoryBookings
  • AuthHTTP Basic

Overview

Phorest connects on /integrations in the dashboard. Click the Phorest card and the "Connect Phorest" modal takes exactly four fields: Username (starts with "global/"), Password, Business ID and Region (EU, or US for the United States, Canada and Australia). The credentials come from the Phorest "API access" email, and the backend counts fields present (not filled), so extras like a branch id are refused with a 400. On save MessageMind authenticates against the right regional host, lists the branches on the business and, if the business has more than one, lets you pick which branch the AI should book into. Once connected, your AI agent reads live salon availability, matches or creates a client, books an active appointment in the salon's diary and mints a Phorest-hosted deposit payment link in the same thread.

What MessageMind can do with it

  • Read the salon's branches, staff, services and service categories per branch.
  • Check live appointment availability for a service, optionally pinned to a stylist, across a date window.
  • Look up existing client records by phone, email or an external id before creating a new one.
  • Create a confirmed (ACTIVE) appointment in the salon's diary and retry on another stylist who was free at the same second if the first choice loses the slot.
  • Mint a Phorest-hosted deposit payment link with a one-hour expiry that auto-cancels the appointment if it is not paid.
  • Sync the salon's service catalogue (price, duration, category, booking link) into MessageMind on a daily poll because Phorest publishes no webhooks.

Requirements

  • A Phorest account with Third Party API access granted by Phorest support.
  • The API username (which starts with 'global/'), password and business id from the Phorest 'API access' email. The business id is NOT the salon account number and NOT a branch id.
  • The correct Phorest region for the business: EU, or US for the United States, Canada and Australia.
  • At least one branch configured on the Phorest business.

How to connect

  1. Ask Phorest support to enable Third Party API access on the account. Phorest issues the API username (prefixed 'global/'), password and Business ID by email.
  2. In the MessageMind dashboard, open /integrations and click the Phorest card. The 'Connect Phorest' modal opens with the note: 'Enter the credentials from your Phorest "API access" email. If the connection is refused, check the Region first: the wrong region looks exactly like a wrong password.'
  3. Fill the four fields: Username (placeholder 'global/your-username'), Password (hidden by default with a show/hide toggle), Business ID and Region (default 'eu', switch to 'us' for the United States, Canada or Australia).
  4. Click Integrate. The toast 'Connecting to Phorest...' appears while MessageMind authenticates and lists the branches on the business.
  5. On success the toast reads 'Phorest connected. Live availability can take up to 5 minutes to appear in your assistant.' A wrong region looks exactly like a wrong password, so the modal copy nudges you to check Region first on any refusal.

Authentication and permissions

Mechanism
HTTP Basic authentication against platform.phorest.com (EU) or platform-us.phorest.com (US). No OAuth, no token refresh, no expiry.
Credentials
API username (starts with 'global/'), password and Business ID, stored on the MessageMind tenant and sent as the Authorization header on every call. The Region is part of the credential and is stored beside it. No branch id is accepted on the connect form: the backend counts fields present, not filled, so sending it blank still triggers a 400.

Available data and actions

Reads

  • Branches on the business, with time zone, currency, country and address.
  • Services per branch, including internet name, duration, base price and category.
  • Staff per branch, filtered to those bookable online.
  • Live appointment availability for a service, with optional staff pinning.
  • Clients by phone, email or external id, and a client's full record by id.
  • The salon's online booking page settings, to verify ownership and whether online booking is enabled.

Writes

  • New client records when no existing match is found.
  • New ACTIVE bookings on the salon's calendar.
  • Deposit payment links tied to the just-created appointments, with a one-hour expiry and auto-cancel on unpaid expiry.
  • Booking cancellations, and appointment cancellations as a fallback when a booking cancel is refused by the salon's own policy window.

AI agent use cases

  • Quote the next free slot for a named service in a WhatsApp or Instagram thread, with the stylist and the branch, in the salon's currency and time zone.
  • Pin a specific stylist when the client asks for one by name and only offer times that stylist is actually free.
  • Match an existing Phorest client by the chat's phone or email before creating a new card, so loyalty, history and deposits stay on one record.
  • Book the appointment active and send the Phorest deposit link in the same message so the client pays before leaving the thread.

Configuration

  • Region: EU or US, picked at connect. The wrong region looks exactly like a wrong password, so it is the first thing to double-check on a refused connection.
  • Branch: picked from the branches listed on the business after a successful authenticate; a single-branch business is auto-selected.
  • Deposit expiry: one hour, applied to every deposit link so unpaid holds release themselves.
  • Daily catalogue sync: Phorest publishes no webhooks, so services, categories and staff are polled and fingerprinted.
  • Calendar binding: Phorest participates in the 'one Calendar/Meetings integration at a time' rule, so connecting it blocks (and is blocked by) Teams, Google Calendar, GHL Calendar and Amelia.
  • Zoom connects independently as an online meeting provider and is excluded from the dashboard single-calendar gate.

Example workflows

Connect Phorest

  1. Open Phorest's 'API access' email and copy the username (starts with 'global/'), password and Business ID.
  2. In /integrations, click the Phorest card to open the 'Connect Phorest' modal.
  3. Paste the four fields and pick the Region (EU by default; US for the United States, Canada or Australia).
  4. Click Integrate. The toast 'Connecting to Phorest...' is shown while MessageMind authenticates against the regional host.
  5. On success you see 'Phorest connected. Live availability can take up to 5 minutes to appear in your assistant.' and the agent begins quoting live slots.

Book a service and collect the deposit

  1. Customer asks when they could come in for a specific service, optionally with a specific stylist.
  2. The AI checks live availability on the right branch and quotes the first viable slot in the salon's time zone and currency.
  3. Customer confirms. The AI matches them to an existing Phorest client by the chat phone or email, or creates a new client card.
  4. The AI creates the appointment ACTIVE in Phorest. If the chosen stylist lost the slot in the meantime, it retries with another stylist who was free at the exact same second.
  5. The AI asks Phorest for a deposit payment link and shares the Phorest-hosted URL in the chat. If the salon takes no deposit, the appointment stands with no link.

Limitations

  • Phorest's Third Party API has no webhooks, so appointment and catalogue changes are read on a poll (five minutes for appointments, one day for the services catalogue).
  • Phorest issues the Business ID by support ticket; it cannot be discovered from the API, and a branch id pasted into the Business ID field is rejected as an unrecognised business id.
  • A Phorest business lives on exactly one region (EU or US). Reads are proxied from either host, but a write sent to the wrong host fails.
  • Phorest's client search is exact match, so a phone number is tried in a few shapes with an upper bound on variants.
  • A salon with online booking switched off still gets availability answers in-thread, but no booking link can be handed out as a fallback.
  • Phorest counts as a Calendar/Meetings integration, so Teams, Google Calendar, GHL Calendar and Amelia cannot be connected at the same time.

Troubleshooting

The username field is refused with 'Username must start with "global/"'.

Copy the username exactly from your Phorest 'API access' email. It is prefixed with 'global/' and that prefix is part of the credential.

Connect is refused and you suspect the password.

The wrong Region looks exactly like a wrong password. Check the Region first: pick US for salons in the US, Canada or Australia and EU everywhere else. If Region is right, re-copy the password from the Phorest 'API access' email.

Connect fails with 'unrecognised business id'.

The Business ID is the one Phorest emailed with API access; it is NOT the salon account number and NOT a branch id. Paste the exact Business ID from the Phorest 'API access' email.

Connect ends with 'Failed to connect to Phorest' or 'Something went wrong on our side'.

The second message asks you to contact support and mention Phorest. For the generic failure, confirm Username, Password, Business ID and Region, then retry; the credentials panel does not persist a partial attempt.

A client was quoted a slot but the booking was refused as taken.

Phorest has no slot hold, so a race against a human booking at the Front Desk is possible. The AI automatically retries another stylist who was free at the same second when the client did not name one, and falls back to offering the next openings that day otherwise.

Live availability has not appeared in the assistant yet.

The connect toast states live availability can take up to 5 minutes to appear. Give it a few minutes before reconnecting.

Disconnect and reconnect

  • In the MessageMind dashboard, open /integrations, select Phorest and choose Disconnect. The stored credentials are removed from the tenant and the appointment event poll stops.
  • Appointments already created in Phorest stay on the salon's calendar; disconnecting does not cancel them.
  • To reconnect, paste the four fields again (optionally after regenerating the credentials in Phorest).