Embedding Zoom Scheduler on your website

You can embed Zoom Scheduler directly on your website to let visitors book meetings without leaving your site. This helps maintain brand continuity by keeping your fonts, colors, and style consistent, while also streamlining the booking process for your users.

Requirements for embedding Zoom Scheduler on your website

Table of Contents

How to embed Zoom Scheduler on your website

  1. Sign in to the Zoom web portal.
  2. In the navigation menu, click Scheduler, then select the booking page you want to embed.
  3. Click Share, then select Add to Website.
  4. Customize the embedded frame:
  5. Click Copy code to copy the <iframe> snippet.
  6. Paste the code into your website’s HTML.
    If you use one of the following website providers, refer to their support articles for embedding instructions:

Recommended responsive snippet

<div style="max-width: 900px; margin: 0 auto;">
  <iframe
    src="https://scheduler.zoom.us/<your-handle>/<your-page>?embed=true"
    style="width:100%; min-height:560px; border:0;"
    frameborder="0"
  </iframe>
</div>

Common issues and quick fixes:

Advanced Integration: URL Parameters, UTMs & Origin (postMessage)

You can pass data into your embedded Zoom Scheduler through URL parameters and receive a confirmation callback using postMessage. This allows you to prefill booking forms, track campaign data, and integrate bookings with analytics or CRM workflows.

Add URL parameters (tracking & prefill)

Supported parameters

Example

<iframe
  src="https://scheduler.zoom.us/<your-handle>/<your-page>?embed=true
       &utm_source=website&utm_medium=hero&utm_campaign=q3
       &utm_term=embed
       &firstname=Alex&lastname=Lee
       &month=2025-10"
  style="width:100%; min-height:560px; border:0;"
  frameborder="0"
  title="Book time with Alex Lee">
</iframe>

Notes

Dynamic injection examples

Vanilla JavaScript

<script>
  const iframe = document.querySelector('#zs-embed');
  const base = "https://scheduler.zoom.us/<handle>/<page>?embed=true";
  const params = new URLSearchParams({
    utm_source: 'website',
    utm_medium: 'pricing',
    utm_campaign: 'fall',
    firstname: window.userFirstName || '',
    lastname: window.userLastName || ''
  });
  iframe.src = `${base}&${params.toString()}`;
</script>

React component

export default function SchedulerEmbed({ utm, user, month }) {
  const base = "https://scheduler.zoom.us/<handle>/<page>?embed=true";
  const q = new URLSearchParams({
    utm_source: utm.source,
    utm_medium: utm.medium,
    utm_campaign: utm.campaign,
    utm_term: utm.term,
    firstname: user?.firstName,
    lastname: user?.lastName,
    month
  }).toString();
  return (
    <iframe
      title="Book time"
      style={{ width: "100%", minHeight: 560, border: 0 }}
      src={`${base}&${q}`}
    />
  );
}

Origin (optional — receive confirmation through postMessage)

Providing an Origin allows the embedded Scheduler to send form-filled booking information to your page after a successful booking. This can be used for:

Notes

Example Listener

<script>
  window.addEventListener('message', (event) => {
    // Always verify sender
    if (event.origin !== 'https://scheduler.zoom.us') return;

    // The confirmation payload with booking + form details
    const data = event.data;
    console.log('Zoom Scheduler booking confirmed:', data);

    // Example: analytics event or CRM call
    // analytics.track('Booking Confirmed', data);
  });
</script>

Troubleshooting