Calendly

Calendly embed not working

The booking page on calendly.com and the embed on your site fail differently. Most blank widgets are a blocked script, a dead event URL, or a parent with no height.

Symptoms

Common causes

The event type was unpublished or renamed

The data-url still points at the old event. Calendly shows an error or an empty state inside the frame. The rest of your page is unaffected.

The widget script is blocked

Consent tools and Content-Security-Policy block the Calendly script or the iframe. The div is on the page. Nothing fills it.

The parent has no height

An inline widget inside a collapsed panel, or a parent with overflow hidden and height 0, clips the iframe to nothing. It looks like the embed failed to load.

Client-side navigation did not re-run the widget

The script boots on the first load. A later route change in a single-page app leaves the container empty. A full reload works.

The link is a personal page, not the event you meant

The homepage of a Calendly account is not the event type the campaign promised. Visitors land on the wrong booking, or on a list they cannot use.

Fix it

  1. Open the event URL on its own

    Paste the data-url into a browser. If Calendly itself says the event is unavailable, fix or replace the event. The embed cannot do better than the URL.

  2. Confirm the script and the container

    The page needs the widget script and a container whose URL matches that event. A generator often keeps one and drops the other.

  3. Read the console

    A blocked frame or script error names the policy. Allow the Calendly host in frame-src and script-src if you set a Content-Security-Policy.

  4. Give the parent a real height

    Do not put the inline embed in a zero-height tab. Set a min-height and test on a phone, where the clip is easier to miss.

  5. Reload after client-side navigation

    If a full reload shows the calendar and a route change does not, re-initialize the widget when the container is mounted. This is an app bug, not a Calendly outage.

  6. Book a slot with a monitor address

    Pick a time you can cancel. A missing confirmation screen is the bug even when the grid of times rendered.

Catch it automatically

Map a booking funnel: open the page, choose a slot, assert the confirmation. FunnelWatch does not need your calendar password. A free ping on the public link still only proves the URL returned, so use it as the cheap check and the replay as the real one.

Watch the next break before a customer does.

Map the path once. The next publish does not get to fail in private.

Questions

The iframe is empty and calendly.com works.

The event is up. Your page is not loading the script, or it is clipping the frame. Check the console and the parent height.

Do I have to give FunnelWatch my Calendly login?

No. The check uses the public booking page, the same way a visitor does.

Why did this start after a redesign?

The new component kept the heading and lost the widget script or the event URL. Compare view source to the embed code Calendly gives you now.

Related