Skip to main content

Virtual Classes

Offer live online classes through Zoom, Google Meet, or Microsoft Teams. When you mark a class as virtual, BailaYa automatically creates a meeting on your connected platform and shares the link with enrolled students.

Prerequisites

Before creating virtual classes, connect at least one video platform in Settings → Integrations:

  • Zoom — Requires a Zoom API access token
  • Google Meet — Requires a Google Calendar API access token (meetings are created as Calendar events with Meet links)
  • Microsoft Teams — Requires a Microsoft Graph API access token
tip

You only need to configure the platforms you plan to use. The virtual class option only appears in the class creation form when at least one platform is connected.

Connecting a platform

  1. Go to Settings → Integrations.
  2. Scroll to the Virtual Class Platforms section.
  3. For your chosen platform:
    • Toggle the switch to Enabled.
    • Paste your Access Token (see platform-specific docs below).
    • For Google Meet, optionally set a Calendar ID (defaults to your primary calendar).
    • Click Save.

Getting access tokens

PlatformWhere to get a token
ZoomZoom Marketplace — Create a Server-to-Server OAuth app or use a personal access token
Google MeetGoogle Cloud Console — Enable the Calendar API and generate OAuth2 credentials
Microsoft TeamsAzure Portal — Register an app and grant OnlineMeetings.ReadWrite permission

Creating a virtual class

  1. Open Schedule and click Create Class (or edit an existing class).
  2. Fill in the class details as usual (name, time, instructor, etc.).
  3. At the bottom of the form, you'll see a Virtual Class toggle (only visible if a platform is connected).
  4. Toggle Virtual Class on.
  5. Select your Platform from the dropdown (only configured platforms appear).
  6. Click Save.

BailaYa will:

  • Create a meeting on the selected platform with the class name and scheduled time.
  • Store the meeting URL on the class record.
  • Make the meeting link available to enrolled students.

If the platform is temporarily unavailable, the class is still created — the meeting link can be added later by editing the class.

What students see

  • On the class detail page, enrolled students see a Join Virtual Class button with the meeting link.
  • The meeting link is also included in booking confirmation emails.
  • The link is only visible to students who are enrolled in the class — it is not shown publicly.

Recurring virtual classes

When you create a recurring class series with the virtual option enabled, each individual class in the series gets its own unique meeting link. This ensures students always join the correct session.

Editing a virtual class

You can toggle the virtual setting when editing a class:

  • Enabling virtual on an existing in-person class creates a new meeting.
  • Disabling virtual on a virtual class removes the meeting link (the external meeting is deleted from the platform).
  • Changing the platform creates a new meeting on the new platform and deletes the old one.

Hybrid classes

A class can be both in-person and virtual at the same time:

  • Assign a Room for in-person attendees.
  • Enable Virtual Class for remote attendees.
  • Both groups see the same class on the schedule, but remote students get the meeting link.

Platform-specific notes

Zoom

  • Meetings are created as scheduled meetings (Type 2).
  • join_before_host is enabled so students can join before the instructor.
  • mute_upon_entry is enabled by default.
  • Recording is disabled by default.

Google Meet

  • Meetings are created as Google Calendar events with a Google Meet conference attached.
  • If you specify a Calendar ID, the event is created on that calendar; otherwise it uses the primary calendar.
  • The Meet link is extracted from the calendar event's conference data.

Microsoft Teams

  • Meetings are created via the Microsoft Graph Online Meetings API.
  • Lobby bypass is set to "everyone" so students can join directly.
  • Entry/exit announcements are disabled by default.

API reference

Virtual class fields are included in the standard schedule API:

FieldTypeDescription
isVirtualbooleanWhether this is a virtual class
virtualPlatformstringZOOM, GOOGLE_MEET, or TEAMS
virtualMeetingUrlstringThe meeting join URL (read-only, auto-generated)
virtualMeetingIdstringThe external meeting ID on the platform (read-only)

These fields are included in POST /api/schedule (create) and PATCH /api/schedule/:id (update).