How to track lead source in Cal.com
Tie every Cal.com booking back to the campaign, channel, or content that drove it, with the full pre-booking journey attached to each invitee.
On this page
Cal.com is the open-source scheduler of choice for technical teams, developer tools, and SaaS founders, and most people who book through it are coming from a specific content piece, ad, or campaign. This guide gets that source data stitched onto every booking, so you can see exactly which channel sends meetings instead of guessing.
The setup is short, you’ll be done in under five minutes, and it works on the free Cal.com tier.
What SourceLoop captures from Cal.com
After setup, each Cal.com booking lands in SourceLoop with:
- Origin channel plus
utm_source,utm_medium,utm_campaign,utm_content, andutm_termfrom the visitor’s first session - Last channel touched in the session that actually produced the booking
- Every page visited between the first session and the booking, in order
- Landing page and referrer from the original visit
- Session count before the visitor finally booked (great for measuring intent)
- Days between first visit and booking so you can see your real sales cycle length
- Invitee email pulled from the Cal.com booking event in the browser
- Device, country, and browser so you can spot which segments convert best
Before you start
Make sure you have:
- A SourceLoop workspace (free trial here if you don’t have one)
- Edit access to your website’s HTML, or to the tag manager that injects scripts
- A Cal.com account with at least one event type set up (free or paid)
Step 1: Install the SourceLoop tracking script
Open SourceLoop, head to Setup -> Tracking code in the left sidebar, and copy the snippet shown on that page.
Drop the snippet inside the <head> of every page on your site. Particularly important: the page that hosts your Cal.com embed or links to your cal.com/<your-handle> booking page. If you use Google Tag Manager, paste the snippet into a Custom HTML tag set to “All Pages”.
Step 2: Embed Cal.com on your booking page
SourceLoop captures Cal.com bookings made on a page where the tracking script is already running. Use whichever Cal.com embed style fits your site:
- Inline embed: Cal.com -> Event Type -> Embed -> Inline -> paste the snippet on your page
- Floating popup button: same menu, “Floating popup” tab -> paste the script
- Element click: trigger Cal.com from any existing button or link on your page
All three behave the same for attribution. There’s nothing else to configure on the SourceLoop side. As soon as a visitor books, the lead and their full pre-booking journey show up in your dashboard.
Step 3: Verify it’s working
Open your site in an incognito window, navigate to the page with the Cal.com embed, and add ?utm_source=test&utm_campaign=cal-verify to the URL. Book a test slot using a real email you control.
Within a few seconds, the booking should appear in Contacts Hub with the test UTMs attached. If you don’t see it, append ?sl_debug=1 to your page URL to enable SourceLoop’s diagnostic console output, useful for spotting setup issues quickly.
Where to see Cal.com bookings
Once it’s live, every Cal.com booking shows up in three places inside SourceLoop:
Contacts Hub
Visit app.sourceloop.ai/contacts to see every Cal.com booking as a row in the Contacts Hub. Expand any row and you get the visitor’s full pre-booking timeline, what brought them in, which posts they read, and when they came back to actually book.
Attribution dashboard
Pull up the traffic dashboard at app.sourceloop.ai/dashboards/traffic. Bookings made through Cal.com flow into the conversions count, sliced by source, campaign, channel, and landing page. Useful to answer questions like “is paid LinkedIn pulling its weight against organic search?”
Funnel reports
In app.sourceloop.ai/funnels, drop a “Cal.com booking” step into any funnel definition. Then break the funnel down by utm_source or landing page to see which acquisition channel actually converts visitors into booked meetings, not just clicks.
You can also forward Cal.com bookings as offline conversions to Google Ads, Meta, and LinkedIn so their bidding algorithms learn from real booked meetings, not just form fills. See Connect your Google Ads account for the offline-conversions wiring.
That’s it, Cal.com bookings are now tied back to whatever channel actually produced them.
Frequently asked questions
-
Does this work with self-hosted Cal.com?
Yes. SourceLoop works directly through the Cal.com embed on your page, so self-hosted instances are treated exactly the same as the hosted version.
-
Do I need a paid Cal.com plan?
No. Embed widgets and inline links are available on the free Cal.com tier, which is everything SourceLoop needs.
-
What if visitors book via my Cal.com link shared in an email or LinkedIn DM?
Those bookings won't appear in SourceLoop at all. Because Cal.com integrates via embed (no API key), SourceLoop only sees bookings made on a page that has the tracking script. To attribute traffic from emails or social, point those campaigns at a landing page on your own domain that embeds the Cal.com widget.
-
Do I need to connect Cal.com's API?
No. There's no OAuth flow, no API key to manage, no webhook setup. SourceLoop captures Cal.com bookings purely from the embed on your page, with zero configuration on the Cal.com side.
-
Does this work with Cal.com routing forms?
Yes, as long as the routing form is embedded on a page where the SourceLoop script is installed. The form fill plus the resulting booking are both captured.