Online appointments — connecting Zoom
OAuth-connect a Zoom account so every virtual booking spawns a real Zoom meeting with a waiting room and password.
Once your platform admin has the Zoom Marketplace app configured (set ZOOM_CLIENT_ID + ZOOM_CLIENT_SECRET in the environment), connecting is a one-click flow.
Connect
- Settings → Booking → Online Appointments.
- Pick Zoom — auto-create a Zoom meeting from the provider dropdown.
- Click Connect Zoom Account.
- Sign in to Zoom in the popup and approve:
- View your meetings + Create and manage meetings — Trimsy uses this to create scheduled meetings under
users/me. We never delete or modify meetings that aren't created by Trimsy. - View your user information — for displaying the connected account email.
- View your meetings + Create and manage meetings — Trimsy uses this to create scheduled meetings under
- The popup closes. Settings shows "Connected — [email protected]".
Works with any Zoom plan including the free tier. The free tier limits group calls to 40 minutes; that's a Zoom plan limitation, not a Trimsy one.
What gets created per booking
Every virtual booking creates a scheduled Zoom meeting (type: 2) with:
- Topic: "Online appointment with {your salon name}"
- Duration matching the booking duration
- Start time in your salon's timezone
- Waiting room: ON — your customers join the lobby and you admit them.
- Mute upon entry: ON — politeness default.
- Auto-recording: OFF — explicitly opt-in if you want recordings.
- Audio: VoIP + dial-in — customers without a working microphone can call in.
The unique join URL and Zoom-generated password go into the booking record and into every email / SMS / .ics for that customer.
Disconnecting
Click Disconnect. Existing meeting links stay valid — Zoom still hosts them. Trimsy just stops creating new ones until you reconnect or switch provider.
Troubleshooting
- "Token exchange failed" on connect — almost always the redirect URL not matching what's in the Zoom Marketplace app. Has to match exactly, including http vs https and trailing slash. Ask your platform admin.
- Meeting create returns 401 mid-flight — Zoom rotates the refresh token on every refresh. If a refresh failed and the token wasn't persisted, future calls fail. Reconnect from settings to recover.
- Free tier 40-minute limit — that's Zoom's plan limit, not the API. Upgrade your Zoom plan if you need longer sessions.