Zoom Integration

Automatically create a Zoom meeting for every confirmed booking and deliver the join link to your client – in the confirmation email, Telegram, and any other notification channel you use.

How It Works

Baza Booking Calendar connects to Zoom through a Server-to-Server OAuth app – a credential type Zoom provides for server-side integrations that don’t require any user to log in at runtime. Once you paste your credentials into BBC, the plugin handles token management automatically.

The integration is opt-in per service. You decide exactly which services should generate Zoom meetings – online consultations, classes, coaching sessions – while leaving in-person or facility bookings untouched.

When a booking for a Zoom-enabled service is confirmed:

  • BBC calls the Zoom API and creates a meeting named after the service and booking
  • The unique join URL is stored with the booking record
  • Join Zoom meeting button is added to the client’s confirmation email
  • The join URL is appended to all messaging channel notifications (Telegram, Viber, etc.)
  • A Zoom badge appears in the admin bookings list
  • Join button appears in the booking side-panel header

If the booking is later cancelled, rejected, or expired, BBC automatically deletes the Zoom meeting.

Prerequisites

  • Zoom account – Pro, Business, or higher (free accounts have limited API access)
  • You must be the account owner or admin to create Marketplace apps and manage OAuth scopes
  • Baza Booking Calendar on a Pro plan or higher
  • Your WordPress site must be publicly reachable over HTTPS so that Zoom can deliver webhook events

Step 1 – Create the Zoom App

  1. Go to marketplace.zoom.us and sign in as the account owner.
  2. Click Develop, Build App and select Server-to-Server OAuth, then click Create.
  3. Enter any app name (e.g. Baza Booking Calendar) and click Create.
  4. On the App Credentials tab, copy your Account IDClient ID, and Client Secret. Keep this page open – you’ll return to it for the webhook step.

Step 2 – Configure Scopes

BBC requires exactly four scopes. Add them in the Scopes tab of your Zoom app.

meeting:write:meeting:admin
meeting:write:meeting:master
meeting:read:meeting:admin
user:read:user:admin

To add scopes: open the Scopes tab, click Add Scopes, search for each name, select it, and click Done. Repeat for all four, then save.

Important: These scope names are exact. Do not use shortened variants like meeting:write:admin – they are different scopes and will cause authentication errors.

ScopePurpose
meeting:write:meeting:adminCreate and delete meetings on behalf of any user in your account
meeting:write:meeting:masterRequired for master account / sub-account structures
meeting:read:meeting:adminVerify meeting details after creation
user:read:user:adminResolve the host’s Zoom user ID

The webhook lets Zoom notify BBC when meetings start or end. Meeting creation and deletion work without it, but the webhook enables real-time event tracking.

Your BBC webhook endpoint URL:

https://yoursite.com/wp-json/bbc/v1/api/zoom

This URL is also shown on the BBC Zoom settings page for easy copying.

To add the event subscription in Zoom:

  1. Go to your app’s Feature tab and enable Event Subscriptions.
  2. Click Add New Event Subscription, give it a name, and paste your endpoint URL.
  3. Click Add Events, search for Meeting, and select Start Meeting and End Meeting. Optionally also add Participant/Host joined meeting.
  4. Save – Zoom displays a Secret Token. Copy it and paste it into BBC’s Webhook Secret Token field.
  5. Click Validate. BBC handles the challenge automatically. If your site is reachable, validation completes in seconds.

Step 4 – Connect in BBC

  1. In WordPress admin, go to Baza Booking, Zoom.
  2. Paste the Account IDClient IDClient Secret, and (if configured) Webhook Secret Token.
  3. Click Test connection. BBC calls the Zoom Users API and reports the account email on success.
  4. Enable the Enable Zoom synchronization toggle and click Save.

All credentials are encrypted at rest and never included in settings exports.

Step 5 – Enable per Service

Zoom meeting creation is off by default for every service, even after the integration is active.

  1. Go to Baza Booking, Services and open the service that should have Zoom meetings (e.g. an online consultation).
  2. In the service settings panel, enable the Create Zoom meeting checkbox.
  3. Save the service.

From this point on, any booking confirmed for that service will automatically create a Zoom meeting.

Tip: Leave the checkbox off for in-person services. This keeps your Zoom account clean and avoids sending join links to clients booking physical appointments.

Meeting naming: BBC names each meeting using the service title and order ID – for example, Photography Session #a3f2c1. This makes your Zoom meetings list readable without any extra configuration.

Meeting Lifecycle

EventWhat happens
Booking confirmed (Booked)Zoom meeting created, join URL stored and sent to client
Booking remains activeMeeting persists, join URL accessible from admin panel
Booking cancelled / rejected / expiredZoom meeting deleted via API
Booking moved to TrashZoom meeting deleted immediately

Re-confirmation: If a cancelled booking is moved back to Booked, BBC checks for an existing meeting and only creates a new one if none is found – no duplicates.

Duration: Calculated from booked slots. A 3-hour booking creates a 180-minute meeting. Minimum duration is 30 minutes.

Timezone: Meeting start time uses the timezone set in WordPress – Settings – General – Timezone.

Notifications

ChannelHow the Zoom link appears
Client emailStyled Join Zoom meeting button (brand blue) added to the confirmation email
Admin emailNot shown – admins access the link via the bookings dashboard
TelegramRaw join URL appended as a plain text line (renders as a clickable link)
Viber / WhatsApp / SMSRaw join URL appended as plain text

The join URL is also included automatically in reminder notifications – clients always have the link when they need it.

Troubleshooting

Test connection fails

  • Check that credentials were copied without leading/trailing spaces
  • Ensure the app status in Zoom Marketplace is Activated
  • Verify all four required scopes are present in the Scopes tab

Meetings not created after confirmation

  • Confirm Enable Zoom synchronization is on in BBC – Zoom settings
  • Confirm Create Zoom meeting is enabled on the specific service
  • Check that the booking reached Booked status – meetings are not created for Pending bookings when manual confirmation is required

Scope error in Zoom API response Return to the Scopes tab in Zoom Marketplace, add all four scopes listed in Step 2, save, and wait 1–2 minutes for changes to propagate before testing again.

Webhook validation fails

  • Your site must be publicly reachable over HTTPS – local or firewalled environments cannot receive Zoom webhooks
  • Verify the Webhook Secret Token in BBC matches the one shown in Zoom Marketplace exactly
  • Check that no firewall or Cloudflare rules block POST requests to /wp-json/bbc/v1/api/zoom

FAQ

A paid Zoom account (Pro, Business, or higher). Free accounts may work for testing but are not supported for production use.

The Zoom account owner whose credentials are configured in BBC. All meetings appear in that account’s Zoom dashboard.

Not out of the box – BBC connects to a single Zoom account. Per-service accounts require custom development.

BBC does not automatically update the meeting time when booking dates are edited. To get the client an updated link, cancel and re-confirm the booking, which deletes the old meeting and creates a new one.

No. BBC deletes the meeting automatically when a booking is cancelled, rejected, expired, or trashed.

Yes – meeting:write:meeting:master is included specifically to support sub-account and master account structures. Use master account credentials and meetings will be created correctly.

Last Modified: 12.08.2026