Guides

How to Add a Video Meeting Link to Every WordPress Booking

Every online consultation needs a meeting link, and copying one in by hand after each booking is the step everyone eventually forgets. CalNative Booking 1.1.4 generates the link automatically — from Jitsi, Zoom, Google Meet, or a link you already own. Here is how each option works and which one to pick.

17 July 2026  ·  8 min read
How to Add a Video Meeting Link to Every WordPress Booking

If your appointments happen over video, there is a small manual step sitting between every booking and the actual meeting: creating the link and getting it to the client. Most people handle it by replying to each confirmation email with a Zoom room pasted in. It works, until the day it doesn’t — you are travelling, the booking came in at 11pm, the client shows up to a meeting that has no link.

CalNative Booking 1.1.4 removes the step. Turn on video meetings and every booking gets a link automatically — in the calendar event, in the confirmation email, and in the ICS invite. There are four providers to choose from, and the right one depends less on which platform you like and more on what kind of Google account you have.

What this guide covers

  • Turning video meetings on
  • The four providers compared, and which to choose
  • Setting up Jitsi Meet, a static link, Zoom, and Google Meet
  • Why Google Meet needs Google Workspace and domain-wide delegation
  • Where the link appears once it is generated

Turning it on

Go to CalNative Booking → Settings → Video and switch on Generate meeting link on each booking. A provider dropdown appears, and below it a setup card for whichever provider you select. Only the relevant card is shown, so the page stays short.

That is the whole toggle. What takes a few minutes is the provider itself — anywhere from zero configuration to a Workspace admin change, depending on which you pick.

The four providers

ProviderSetupLink per bookingRequires
Jitsi MeetNoneUniqueNothing
Static linkPaste one URLAlways the sameA room you already have
ZoomOAuth appUniqueZoom account + Marketplace app
Google MeetAdmin changeUniqueGoogle Workspace + admin access

The short version: if you use a personal Gmail account, pick Jitsi Meet or a static link. Google Meet link generation is not available on personal accounts at all, for reasons covered further down. If you are on Google Workspace with admin access, Meet is the most seamless option. If your clients expect Zoom specifically, use Zoom.

Jitsi Meet — free, no account, nothing to configure

Jitsi is an open-source video platform with a free public instance at meet.jit.si. It needs no account, no API key, and no app — clients click the link and the meeting opens in their browser. For most people reading this, it is the correct choice, and it is the reason the feature is usable at all on a personal Gmail account.

Select Jitsi Meet as the provider and set a Room prefix. The prefix brands the URL; a random suffix is appended per booking so no two clients ever land in the same room:

Room prefix:  consultation

Generated:    https://meet.jit.si/consultation-a1b2c3d4e5
              https://meet.jit.si/consultation-9fK2mQ7xLp

Use your business name or the session type rather than something generic. The suffix is what keeps rooms private, but the prefix is what the client sees first.

The trade-off worth knowing: rooms on the public Jitsi instance are unlocked by default, so anyone with the link can join. The link is unguessable and only goes to the client and to you, which is fine for ordinary consultations. If you handle confidential sessions and want a locked room, set a password from inside the meeting once it starts, or run your own Jitsi instance and use the static link option to point at it.

If you already run every call from a personal meeting room — a Zoom Personal Meeting Room, a recurring Google Meet, a Microsoft Teams link — this option simply attaches that URL to every booking. Select Static link and paste the URL into Meeting URL.

This is the only provider where every booking gets the same link, which matters more than it sounds. If two clients book back-to-back and one runs over, the second client walks into the first one’s session. For a low volume of well-spaced appointments it is not an issue; if your calendar is dense, use a provider that generates a unique room and let the buffer time setting do its job.

It is also the escape hatch for anything not on the list. Any URL works — a self-hosted Jitsi instance, Whereby, Google Meet from a personal account, a phone bridge. If you can express it as a link, this option will send it.

Zoom — unique meetings via a Server-to-Server OAuth app

Zoom generates a genuinely new meeting per booking, scheduled at the right time, in your Zoom account. Setup runs through the Zoom App Marketplace:

  1. Sign in at marketplace.zoom.us and choose Develop → Build App
  2. Select Server-to-Server OAuth — not a general OAuth app, which is designed for logging other people in
  3. Copy the Account ID, Client ID, and Client Secret
  4. Add the meeting write scope so the app is allowed to create meetings, then activate it
  5. Paste all three credentials into Settings → Video and save

Server-to-Server OAuth is the right app type here because the plugin acts as you, on your own account, with no human clicking “allow” — which is exactly what a booking made at 2am needs.

Google Meet — and why it needs Workspace

This is the option that surprises people, so it is worth explaining rather than just listing steps.

CalNative talks to Google Calendar through a service account — a robot identity with its own email address, which you share your calendar with. That works for reading availability and writing events, and it is why the plugin needs no OAuth consent screen and never expires.

But Google will not attach a Meet conference to an event created by a service account. A Meet room has to belong to a person. The only way around it is domain-wide delegation: authorising the service account to impersonate a real user in your organisation, so the event — and the Meet room on it — is created as that human. Impersonating a user is a serious permission, so only a Workspace administrator can grant it. Personal Gmail accounts have no admin console and no domain, so there is nothing to delegate. That is the whole reason the feature is Workspace-only.

If you do have Workspace admin access, the plugin walks you through it in Settings → Video, and the outline is:

  1. In Google Cloud Console → IAM & Admin → Service Accounts, edit your service account, tick Enable Google Workspace Domain-wide Delegation, and copy the numeric Client ID
  2. In admin.google.com → Security → Access and data control → API controls → Manage domain-wide delegation, add the Client ID with this scope exactly: https://www.googleapis.com/auth/calendar
  3. Set Owner email in the General tab to the Workspace user who owns the calendar — this is the account being impersonated
  4. Wait a few minutes for the change to propagate, then make a test booking

The confirmation email should show a Join Meeting button. If it doesn’t, check your PHP error log for a Google Meet link failed entry — in practice that almost always means the Client ID or the scope was not saved correctly in the admin console. The scope must match character for character; a trailing space is enough to break it.

One reassurance if you tried this on an earlier version: in 1.1.4 and later, a failed Meet link no longer affects anything else. Delegation is used only for link generation, so if it isn’t configured, availability and bookings carry on working normally and the booking simply arrives without a link.

Once a provider is configured, every new booking carries its link into three places automatically: the Google Calendar event, the ICS invite attached to the guest’s confirmation email, and the emails themselves via the {meet_link} token.

That token works in both the host and guest templates under Settings → Email:

Hi {name},

Your consultation is confirmed for {date} at {time}.

Join here: {meet_link}

Since 1.1.4 the templates are plain text — the branded card is applied when the email is sent, so there is no HTML to write. If you are editing templates for the first time after upgrading and they still contain markup, click Reset to default template to switch them over.

Which one should you pick?

Start with Jitsi Meet. It takes about thirty seconds, costs nothing, gives every client a private room, and works regardless of what kind of Google account you have. For a solo consultant or a small practice it is genuinely hard to beat.

Move to Zoom if your clients expect Zoom by name, or you need recordings, waiting rooms, and dial-in numbers. Use Google Meet if you are already on Workspace and have admin access — it is the tidiest result, since the Meet room lives natively on the calendar event. Choose a static link when you already have a room that works and just want it attached to every booking without another integration to maintain.

All four are included, and switching is a dropdown — the provider is not a decision you are locked into. Existing bookings keep the links they were created with, so you can change provider whenever you like without breaking anything already on the calendar.

Back to Blog