How to Track UTM Parameters in Cal.com

See which campaign sent each Cal.com booking. Add one script tag to the page with your embed, then test with a UTM link.

Author
SourceTrack Team
Read Time
05 Mins read
Published Date
How to Track UTM Parameters in Cal.com

Someone books time with you on Cal.com. You would like to know what sent them. This guide shows how. Embed Cal.com on your site, add one script tag, and SourceTrack records the booking with its source.

How Cal.com handles UTM parameters on its own

Cal.com’s help center has a page on forwarding query parameters from your site into an embedded booking page. It says that any query parameters in your page URL can be forwarded to the embedded booking page, but that this is off by default. You turn it on with a small setting, Cal.config.forwardQueryParams = true, added right after the code from the Embed Snippet Generator. The page’s own example uses name and email to prefill the booking form, and it lists adding UTM parameters or other tracking information as a use, so they carry through the booking flow.

Two cautions from the same page. Query parameters are passed as they are, so do not put sensitive information in them. And on Framer, auto-forwarding does not work at the moment, because Framer runs custom HTML in its own iframe; Cal.com suggests reading the parent page’s query string and passing the values through the prefill config instead.

What the page does not describe is any special UTM handling beyond forwarding, and it does not say where UTM values end up afterwards. I could not confirm from the official page which Cal.com screens or webhook fields show them, so check the Cal.com documentation for your plan before relying on that.

That leaves some gaps for lead-source reporting:

  • Forwarding is off until someone turns it on and tests it.
  • It only passes along what is in the page URL at that moment. It does not remember how the visitor first found you.
  • It does not tell you which campaign brought the booking in a report next to the rest of your traffic.

What SourceTrack records for each Cal.com booking

SourceTrack listens on your own page. When the Cal.com embed is on a page that carries the SourceTrack script, it records the booking and attaches the visitor’s campaign details: the UTM tags, the referring site and the landing page. It also links the attendee’s name and email to their earlier visits, and shows the booking inside the visitor’s journey. This works for the embed only, and on a best-effort basis, which is why the test below matters.

SourceTrack keeps the UTM values from the visit in the browser session and connects them to the attendee when the booking completes. So you do not need the forwarding setting above for SourceTrack to see where the booking came from.

For extra reliability, SourceTrack also supports an optional inbound webhook. In Cal.com, open your settings, go to Webhooks and add your SourceTrack webhook URL for the BOOKING_CREATED trigger. This helps if an attendee closes the window right after confirming.

Step 1: Add the script tag

Copy your one script tag from SourceTrack. Paste it into the head of your website, once. The install guide shows where it goes. On WordPress, see the WordPress guide.

Step 2: Embed Cal.com on your page

Put your Cal.com booking calendar on a page of your site with the Cal.com embed. SourceTrack records a booking when the Cal.com embed is on your page. Nothing needs to change inside Cal.com.

Open the page with the calendar using a link like this:

https://yourwebsite.com/book?utm_source=test&utm_medium=email&utm_campaign=form_test

Open it in a new private window. If your browser sends Do Not Track or Global Privacy Control, SourceTrack respects that and will not track the visit. Then book a test meeting.

Step 4: Look at the booking in SourceTrack

Open SourceTrack and find the new booking. Check that the source, medium and campaign match your test link.

What you will see

SourceTrack records a confirmed booking for your test. It shows the source test, the medium email and the campaign form_test from your link.

Common problems and fixes

Nothing shows up after the test. Rule out a privacy signal first. SourceTrack honours Do Not Track and Global Privacy Control, and some browsers and extensions send them by default. If yours does, the visit is not tracked, on purpose. Test in a profile without those signals.

The script is not on the page with the embed. The script tag belongs in the head of the page that holds the Cal.com embed. If it is only on another page, or a page builder moved it, there is nothing to attach the booking to. View the page source and look for it.

The embed runs in a popup or an iframe. The embed should be placed from your page. If your builder wraps the whole page in a separate iframe, as some do, make sure the SourceTrack script runs in the page that contains the embed.

The booking is missing. Capture is best-effort. Add the optional webhook described above, then run the test again.

For more checks, see the troubleshooting guide and the install guide. The basics of UTM parameters explains how to tag links well, and the integrations page shows how each tool connects.

Further reading

Frequently asked questions

Do I need to change anything in Cal.com?

No. You do not add hidden fields or change your Cal.com settings. The script tag goes on your own site, on the page with the embed.

Is every Cal.com booking confirmed?

Capture works for the embed only, and on a best-effort basis. That is why the test in Step 3 matters. Book a test meeting and check it shows up.

SourceTrack still looks at where they came from, such as a search engine or another website. If the link has no tags and the visit has no referring site, it shows as Direct. So tag the links you control, like emails, ads and social posts.

Does Cal.com pass UTM parameters on its own?

Only if you switch it on. Cal.com can forward your page’s query parameters to the embedded booking page, but this is off by default and takes a small setting added to the embed code.

Why is my Cal.com booking missing from SourceTrack?

The usual causes are Do Not Track or Global Privacy Control in the visitor’s browser, a script that is not on the page with the embed, or a booking page that is only linked. Capture is best-effort, so the optional webhook can help.

Next step

Tag the links you share and watch the bookings come in. Learn the basics in how to track UTM parameters, check the install guide if a test booking does not appear, or see how every tool connects.

Related Blogs

How to Track UTM Parameters: The Basics

Learn what UTM parameters are, how to build tagged links, and how to see which campaign sent each lead. Plain steps, no code.

SourceTrack Team

Attribution & Growth Engineering

20 Oct, 2026

How to Track UTM Parameters in Calendly

See which campaign sent each Calendly booking. Add one script tag to the page with your embed, then test with a UTM link.

SourceTrack Team

Attribution & Growth Engineering

20 Oct, 2026

How to Track UTM Parameters in Contact Form 7

See which campaign sent each Contact Form 7 lead. Add one script tag, no hidden fields, then test with a UTM link.

SourceTrack Team

Attribution & Growth Engineering

20 Oct, 2026