Online appointments — connecting Microsoft Teams
OAuth-connect an M365 work account so every virtual booking creates a real Teams meeting with a lobby.
Microsoft Teams meetings are created via Microsoft Graph under the connected user's calendar. Once your platform admin has the Azure AD app registration set up (TEAMS_CLIENT_ID + TEAMS_CLIENT_SECRET), the connect flow is one click.
Connect
- Settings → Booking → Online Appointments.
- Pick Microsoft Teams — auto-create a Teams meeting from the provider dropdown.
- Click Connect Microsoft Account.
- Sign in with your work or school M365 account in the popup.
- Approve:
- Read and create your online meetings — used to call
me/onlineMeetings. - Read your profile — fetches your email address for display.
- Maintain access to data you have given it access to — issues a refresh token so we don't have to ask you to sign in again every hour.
- Read and create your online meetings — used to call
- Popup closes. Settings shows "Connected — [email protected]".
Works with which accounts?
✅ M365 Business Basic / Standard / Premium ✅ M365 Apps for Business ✅ Office 365 / Microsoft 365 E1 / E3 / E5 ✅ Education plans
❌ Personal Microsoft accounts (outlook.com, hotmail.com, live.com) — Microsoft doesn't expose me/onlineMeetings to consumer accounts. Authentication will succeed but meeting creation returns 403 every time. Use Zoom or Google Meet on a personal plan.
What gets created per booking
A scheduled online meeting with:
- Subject: "Online appointment with {your salon name}"
- Start / end times in ISO 8601 with your salon's timezone offset
- Lobby enabled — customers wait until you admit them. This is the default Teams behaviour for external attendees.
- No per-meeting passcode — passcodes require Teams admin policy in your M365 tenant; if you need them, ask your IT to enable the policy and reconnect.
The joinWebUrl is what goes into the booking, emails, SMS, and .ics.
Disconnecting
Click Disconnect — local tokens are cleared. Existing meeting URLs continue to work because Teams hosts them; you're just stopping Trimsy from creating new ones.
Troubleshooting
- "Missing tokens — make sure offline_access scope is granted" — your IT admin restricted user consent and didn't grant the
offline_accesspermission. Ask them to grant admin consent for Trimsy in Azure AD → Enterprise applications. - Meeting create returns 403 — most likely you connected a personal Microsoft account. Disconnect and reconnect with a work/school account.
- 403 on a work account — your M365 plan doesn't include Teams (rare on Business plans, common on the very-cheapest legacy SKUs). Ask your IT.