# 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.

Source: https://sourceloop.ai/help/track-lead-source-in-cal-com/
Updated: 2026-05-28

---

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`, and `utm_term` from 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](https://app.sourceloop.ai/sign-up) 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.

![SourceLoop Setup page with the tracking code script ready to copy](/help/screenshots/sourceloop-tracking-code-script.png)

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.

> **Off-site Cal.com links can't be tracked**
> SourceLoop captures Cal.com bookings only when the widget loads on a page that has the SourceLoop script. Bookings made through a raw `cal.com/<handle>` link shared in email, Slack, calendar invites, or DMs **won't appear in SourceLoop at all**, because the visitor never touches a tracked page and there's no API key for SourceLoop to fall back on. Route your Cal.com campaigns through a landing page on your own domain that embeds the widget.

## 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](https://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.

![SourceLoop Contacts Hub showing a lead's full journey timeline with sources, sessions, and the Cal.com booking event](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

Pull up the traffic dashboard at [app.sourceloop.ai/dashboards/traffic](https://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?"

![SourceLoop attribution dashboard with Cal.com bookings grouped by source, campaign, and landing page](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

In [app.sourceloop.ai/funnels](https://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.

![SourceLoop funnel report with Cal.com booking as a conversion step](/help/screenshots/sourceloop-funnel.png)

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](/help/connect-google-ads/) 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.
