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  ·  9 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 traveling, the booking came in at 11pm, and the client shows up to a meeting that has no link.

CalNative Booking 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 calendar invite. There are four providers to choose from, and since version 1.2.0 all four work with a personal Gmail account as well as Google Workspace. The right one depends on what your clients expect and how much setup you are willing to do once.

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
  • 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 about ten minutes in Google Cloud, depending on which you pick.

The four providers

ProviderSetupLink per bookingRequires
Jitsi MeetNoneUniqueNothing
Static linkPaste one URLAlways the sameA room you already have
ZoomServer-to-Server OAuth appUniqueZoom account + Marketplace app
Google MeetConnect your Google accountUniqueGmail or Google Workspace + an OAuth client in Google Cloud

The short version: if you want something working in thirty seconds, pick Jitsi Meet. If your clients expect Google Meet, connect your Google account — it works on a personal Gmail account too. If they expect Zoom specifically, use Zoom. And if you already have one room you use for every call, a static link attaches it to every booking.

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 default provider on new installs.

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, 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 — connect your own Google account

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 never expires.

But Google will not attach a Meet room to an event created by a service account. A Meet room has to belong to a person. Earlier versions worked around this with domain-wide delegation, which only a Google Workspace admin could set up — so Meet was out of reach on a personal Gmail account. Since CalNative Booking 1.2.0 that is gone. You connect your own Google account once, and the plugin uses it for one thing only: adding the Meet link to each booking event. The service account still does everything else, exactly as before.

Setup takes about ten minutes, in the same Google Cloud project as your service account. Select Google Meet in Settings → Video and the plugin shows a seven-step guide with a direct link to each Google Cloud page, with your project ID, home page, privacy policy, domain and redirect URI already filled in for you to copy. The outline:

  1. Open your project in Google Cloud Console.
  2. Set up the Google Auth Platform: an app name, a support email and an audience. Choose External for a personal Gmail account, or Internal if your calendar account belongs to a Workspace organization you manage.
  3. On the Branding page, add your home page, your privacy policy page and your domain under Authorized domains.
  4. On the Audience page, click Publish app. You can skip this if you chose Internal.
  5. On the Clients page, create a Web application client with the redirect URI shown in the plugin, then copy the Client ID and Client Secret.
  6. Paste both into Settings → Video, save, and click Connect Google account. Sign in with the account that owns your booking calendar and tick the calendar permission on Google’s screen.
  7. Make a test booking and look for the Join Meeting button in the confirmation email.

Two things catch people out. Google shows an “unverified app” warning when you connect — that is expected, because the app is your own; click Advanced, then go to your app. And do not leave the app in Testing: Google expires a Testing connection after seven days, and Meet links would quietly stop. Publishing it in step 4 avoids that.

If something does go wrong, you will hear about it. A booking that could not get a Meet link is still confirmed — availability and bookings never depend on the Meet connection — and a notice on your WordPress dashboard shows the reason Google gave. If calendar access was not granted when you connected, the settings page lists what Google did grant and which box to tick. Disconnect revokes the plugin’s access at Google as well as removing it from your site.

Once a provider is configured, every new booking carries its link into three places automatically: the Google Calendar event, the calendar 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}

The templates are plain text — the branded card, with a Join Meeting button, is applied when the email is sent, so there is no HTML to write. If you are upgrading from an old version and your templates 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 needs no account of any kind. For a solo consultant or a small practice it is genuinely hard to beat.

Use Google Meet if your clients already live in Google — it is the tidiest result, since the Meet room sits natively on the calendar event, and it now works on a personal Gmail account as well as Workspace. Move to Zoom if your clients expect Zoom by name, or you need recordings, waiting rooms and dial-in numbers. 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