Skip to main content

Junocal + Zoom

Auto-generated Zoom meetings for virtual classes, on your studio's own Zoom account. Below: exactly what we access, how it works, and how to disconnect.

What the integration does

When a studio owner or admin connects a Zoom account to Junocal, every virtual class they schedule can auto-generate a Zoom meeting on that Zoom subscription. When the joining link is ready, confirmed online clients can find it on their booking page and in booking emails sent after it becomes available. In-person clients at a hybrid session are not sent the online joining details.

Rescheduling a class updates the existing Zoom meeting (the join URL stays the same, the time changes). Cancelling a class deletes the meeting. If you delete the meeting directly inside Zoom instead, Junocal clears the dead link from the class so your clients don't email broken URLs.

Meetings are hosted on your Zoom account, not Junocal's. We never charge against your Zoom subscription, we never join your meetings, and we never see who attended or what was recorded.

What we ask Zoom for, and why

We request user-level meeting permissions; they do not grant account-administrator access:

• meeting:write:meeting — to create the meeting when you schedule a virtual class.

• meeting:update:meeting — to update the meeting time when you reschedule.

• meeting:delete:meeting — to delete the meeting when you cancel.

• meeting:read:meeting — required for notifications when a meeting is deleted directly in Zoom, so Junocal can remove the broken joining link.

We do not request recordings, your Zoom profile, chat messages, contacts or webinar permissions. The meeting permissions cover your authorized Zoom user; Junocal applies meeting changes only to the meetings it tracks. The consent screen shows the requested access before you connect.

Connecting Zoom — step by step

1. Sign in to Junocal as the studio owner or an admin. Front-desk and instructor roles can't connect Zoom.

2. Open Integrations from the Manage studio menu, find the Zoom card, and click "Connect Zoom".

3. Junocal redirects you to Zoom's consent screen. Review the meeting permissions Zoom shows you. Click Authorize.

4. Zoom redirects you back to Junocal. The Integrations page now shows "Zoom connected".

5. The next time you schedule a virtual class, choose Zoom under Online location to create and manage the meeting link automatically. Existing classes keep whatever link (or no link) they had.

Setting availability for online appointments

Appointment times come from the selected instructor's availability. Connecting Zoom creates meeting links; it does not open bookable hours.

1. As an owner or admin, open Team → Availability. Choose My availability for your own hours, or Edit availability beside the instructor who will take the appointment. Instructors can open Availability in their staff workspace.

2. Under Weekly hours, add the days and time ranges when appointments can be booked, then click Save. Use Exceptions to close a date or add one-off hours.

3. In Appointments, open the appointment type and check that this instructor is selected. Choose Zoom for automatic meeting links when the studio is connected, then save your changes.

4. Open the customer booking page and choose a future date within those hours. Existing bookings, calendar conflicts, notice periods and booking windows can reduce the available times.

Scheduled group classes use the date and time entered in Schedule. They do not require appointment availability.

What happens during a class's life

Schedule a virtual class with Zoom selected under Online location → Junocal creates a Zoom meeting on your account and retries temporary provider failures in the background. The meeting topic mirrors the class name (e.g., "Teaching: Reformer Flow"), the start time and duration match the class, and the timezone matches your studio. Waiting room and mute-on-entry are enabled. Your Zoom account and waiting-room settings determine when clients can enter; start the meeting as its host.

Reschedule the class → Junocal updates the Zoom meeting in place. The join URL doesn't change, so clients who already received it still have a working link.

Cancel the class → Junocal deletes the Zoom meeting. Clients with bookings get the cancellation email, and joining details are no longer available on cancelled bookings.

Delete the Zoom meeting directly from your Zoom dashboard → Zoom notifies Junocal via webhook, and Junocal clears the dead URL from the class so confirmation emails don't link to a 404.

Disconnecting and revoking access

Two paths, both equally final:

From Junocal: Integrations → Zoom → Disconnect. Junocal deletes its stored connection and managed links first, then asks Zoom to revoke the OAuth grant. Future virtual classes can use a manual custom link or another configured provider.

From Zoom: marketplace.zoom.us → Manage → Installed Apps → Junocal → Uninstall. Zoom sends Junocal a deauthorization notification, and Junocal deletes your stored tokens within seconds of receipt — this satisfies Zoom Marketplace's data-compliance requirement and our privacy policy commitment.

Existing Zoom meetings stay on your Zoom account after disconnecting; Junocal doesn't reach back to delete them. If you want them gone, delete them from Zoom directly.

What we store, and for how long

Junocal sends Zoom the session name, start time, duration, timezone and studio name. Internal session notes are not copied to the meeting description.

From the OAuth flow: a one-way hash of the Zoom user identifier (so a signed uninstall notice can find the right connection) and the refresh token, encrypted at rest with AES-256-GCM using a key Junocal holds. Junocal does not store your raw Zoom user or account ID.

From each meeting we create: the Zoom meeting ID, the join URL, the meeting password, and a reference to which Junocal class it belongs to. Cancelling a class removes its managed Zoom meeting and tracking record. Joining details are no longer available on cancelled bookings.

When you disconnect or uninstall: the OAuth account and Junocal's Zoom-meeting links are deleted. Meetings already created in Zoom remain in your Zoom account.

Security

Refresh tokens are encrypted at the application layer (AES-256-GCM) before they hit the database, on top of the database's own at-rest encryption. Short-lived access tokens are stored in database rows and refreshed after expiry.

All communication with Zoom's API runs over TLS 1.2 or higher. Webhook events from Zoom are verified via HMAC-SHA256 against the Secret Token Zoom issued for our app — unsigned or tampered requests are rejected.

Refresh tokens can be decrypted only by server code with access to the application encryption key. That key is kept outside the database in server-side configuration; tokens are not exposed to the browser.

Troubleshooting

"Reconnect required" banner on the Integrations page → Zoom revoked our grant (often because you changed your Zoom password or your Zoom admin restricted third-party apps). Click Reconnect and re-authorize.

Class created but no Zoom link appeared → check the class detail page first; the link writes back a moment after class creation. If it is still missing, check Integrations → Zoom for a connection error. Temporary failures are retried. You can also supply a valid custom link while support investigates.

Zoom link points to a meeting that says "This meeting has been removed by the host" → the meeting was deleted directly in Zoom. Junocal usually clears the URL within seconds of Zoom's webhook arriving; if it didn't, edit the class manually and switch to "Custom link" or reschedule to regenerate.

Need to use a different Zoom account → disconnect first, then connect again as the other account. Junocal stores one Zoom account per studio.

Did this guide solve the problem?

Still have a Zoom question

For connection problems, scope clarifications, data-handling questions, or anything not covered above, email hello@junocal.com. We reply within 48 hours.