An embedded Calendly iframe is sandboxed by the browser. The parent page’s UTMs and Cometly’s identifiers don’t cross the iframe boundary, so when Calendly fires the booking confirmation back to your site, it arrives without any of the attribution context that was on the original page. Solving this single problem usually moves more demo attribution out of Direct than any other change.
The two-step fix
Step one: add a short pre-Calendly form on your booking page. Capture name and email before showing the Calendly widget. The form fires the Comet Pixel’s Lead event with the source attribution intact, so even if the Calendly booking later fails to round-trip, you still have the visitor’s identity tied to their original source.
Step two: configure the Calendly event type to 'Redirect to an external site' on confirmation, instead of showing Calendly’s default confirmation page. Point the redirect at a thank-you page on your own domain — say, /demo/booked — and turn on Calendly’s 'Pass URL parameters' option so the invitee’s email and event details land in the thank-you page URL.
- Build a thank-you page on your domain (e.g. /demo/booked)
- Install the Comet Pixel on the thank-you page
- In Calendly: Event Type → Confirmation Page → Redirect to external site
- In Calendly: enable 'Pass event details to your redirect page' (URL parameters)
- In Cometly: configure the Demo Booked event to listen on the thank-you page URL
If you can’t change Calendly settings
If you’re using a different scheduler or can’t modify Calendly (some Enterprise plans restrict redirects), pair the pre-form approach with a webhook from the scheduler back to Cometly. Most schedulers — Calendly, Chili Piper, OnceHub, HubSpot Meetings — support outbound webhooks on booking. Cometly has a generic webhook event type that catches the payload and matches it back to the original visitor by email.
What to watch for.
- Skipping the pre-form
Without the pre-form, you have no identity for visitors who never finish the Calendly flow. Always capture identity before the iframe.
- Redirecting to a Calendly-hosted page
The Comet Pixel can’t run on Calendly’s domain. Redirect to your own domain.
- Forgetting to pass URL parameters
Without the invitee email in the redirect URL, Cometly can’t match the booking to the visitor. Turn the option on in Calendly.
Recap.
- Add a short pre-Calendly form (name + email) so the visitor is identified before booking
- Configure Calendly to 'Redirect to an external site' instead of showing the confirmation page
- Point the redirect at a thank-you page on your own domain where the Comet Pixel fires
- Pass Calendly invitee email and event details as URL parameters to the thank-you page
- Keep both UTM parameters and Cometly’s `comet_*` parameters in your ad URLs for redundancy