Booking source tracking: which channels bring completed meetings

Booking source tracking that follows each channel past the booking to the completed meeting, with a UTM naming plan, a worked example and a simple checklist.

Caletus TeamUpdated
At a glance

How can you identify channels that generate completed meetings?

To find which channels bring completed meetings, give every visitor or booking a written-down source, keep that label attached, and link each booking to its outcome with a stable ID. Compare channels using the same visitors and time window. Keep unknown sources visible, and remember a source label doesn't prove the channel caused the meeting.
On this page
  1. Decide which source question you're answering
  2. Standardize UTM campaign labels first
  3. Pick a group of visitors and lock the source rule
  4. Compare channels by completed meetings
  5. Link each booking to its outcome
  6. Use Caletus scheduling analytics for source and outcome data
  7. Set up cross-domain tracking as its own task
  8. Keep unknown sources visible
  9. Compare audiences and costs fairly before moving budget
  10. Booking source tracking checklist
  11. Booking source tracking FAQs
  12. Sources cited in this article

Booking source tracking tells you which marketing channel each booking came from. To make it useful, follow every booking through to the meeting itself and compare channels by completed meetings as well as bookings. The channel with the most bookings isn't always the one that fills your calendar with real conversations.

Here's a common case. Paid search brings in the most bookings, so the team wants to raise its budget. Then someone checks what happened next: the newsletter produced more completed meetings from fewer bookings. The first report wasn't wrong. It stopped too early.

Appointment booking source tracking needs a clear rule for giving credit, a stable booking ID and enough time to see what happened. This guide covers each one, with a worked example you can copy.

Decide which source question you're answering

"Where did this booking come from?" can mean several things. You might want the channel that first brought the visitor, the one that brought them back, or the touch that gets credit for the booking. Those can give different answers for the same person.

Google Analytics, for example, keeps user-level, session-level and event-level traffic sources separate. A first-user source report and a session source report answer different questions, so don't swap one for the other.[1]

Write a rule a teammate could follow and get the same answer. Say when the source is assigned, which touches count, how far back you look and what you do with direct or missing data. Then lock the rule for the whole comparison, even if another version would make a favorite campaign look better.

One caveat applies to everything below. A source label shows the path someone took, but it can't show why they booked. A prospect may have heard about you from a colleague before clicking a tracked email. Attribution applies your rule to the data you have, and it can't tell you what would have happened without the channel.

Standardize UTM campaign labels first

Google's campaign guide describes UTM parameters for source, medium, campaign and creative, and it notes that the values are case-sensitive. So "Newsletter" and "newsletter" end up as two different labels. Consistent naming keeps one campaign from splitting across several rows.[2]

FieldExample valueWhat it means
utm_sourceclient_newsletterThe publication or platform sending the visit
utm_mediumemailThe type of channel
utm_campaignautumn_demo_guideThe specific campaign
utm_contentprimary_demo_ctaThe exact link or creative
Example campaign naming plan

These values are examples, not required names or Caletus variables. Keep a short naming sheet with the owner, destination, campaign dates and approved label combinations. Never put names, email addresses, account details or booking-access tokens into UTM tags.

Click through each link and check where it actually lands after any redirects. A perfectly tagged link won't help if the next page drops the tags. Also keep two IDs apart: the campaign ID tells you how someone arrived, and the booking ID tells you which meeting to follow.

Pick a group of visitors and lock the source rule

The example report below follows one group of tracked visitors. Each one first reached a booking page between August 1 and 7, 2026. Each had seven days from that first visit to book, and each booking was followed for 30 days. The full example was reviewed on September 14.

Every visitor gets one channel when they join the group. The rule is to use the latest tracked, non-direct touch in the 30 days before their first visit. If there isn't one, they go in a visible "direct/unknown" bucket. This is a rule chosen for the example, and it isn't Caletus's or Google's default.

A later click from another channel doesn't change the source in this report. That keeps visitor counts and outcomes comparable. It won't answer "which touch came right before the booking?" If you need that, build it as a separate, clearly labeled view.

To keep the math simple, each visitor sits in one bucket and can add at most one booking and one completed meeting. Every booking has a final outcome within the 30 days. In real data, meetings without an outcome yet need their own status, so don't quietly count them as no-shows.

Compare channels by completed meetings

NoteExample: these figures are made up to show the math. They aren't Caletus customer results or channel benchmarks. Costs are illustrative and match this group of visitors. Cost for direct/unknown visitors is unknown, so it's left blank rather than set to zero.
ChannelTracked visitorsBookingsCompleted meetingsCompleted per bookingCompleted per visitorCostCost per completed meeting
Paid search400603050%7.5%US$1,200US$40
Newsletter250504080%16%US$400US$10
Partners150302480%16%US$360US$15
Direct/unknown200201050%5%Not availableCan't calculate
Total1,00016010465%10.4%IncompleteNot calculated
Example channel report

Paid search has the most bookings here, but the newsletter has more completed meetings. That's a reason to dig into the audience, the path to booking and the costs. It doesn't mean email always beats ads.

The math is simple once you fix what you're counting. Use these three formulas:

  • Completed per booking = completed meetings ÷ original bookings × 100
  • Completed per visitor = visitors with a completed meeting ÷ tracked visitors × 100
  • Cost per completed meeting = cost for that channel and visitor group ÷ its completed meetings

For paid search, US$1,200 ÷ 30 = US$40 per completed meeting. For the newsletter, US$400 ÷ 40 = US$10. Don't blend these into one all-channel figure while some costs are missing, because it'll look like a full cost when it isn't.

If a channel has zero completed meetings, you can't calculate cost per completed meeting. Show the cost and the zero, and mark the ratio as not calculable. A division error shouldn't turn into a reassuring US$0.

Want to know how many visitors book at all before you get to outcomes? See how to measure appointment booking conversion rate.

Link each booking to its outcome

Completed meeting tracking depends on a clean chain of records: campaign to visitor, visitor to booking, and booking to final status. Use stable, approved IDs for each link. Matching records because their timestamps look close adds doubt you don't need.

RecordWhat to keep
AcquisitionSource, medium, campaign, touch time and how it was captured
Visitor groupVisitor ID, first visit time, assigned channel and rule version
BookingOriginal booking ID, time created, meeting type and approved link key
ChangesNew booking ID after a move, plus a verified link to the original
OutcomeCompleted, canceled, no-show, pending or unknown, with the time it was recorded
CostCurrency, what's included, how it was split and the period it covers
Suggested fields for your own report (not a Caletus API schema)

Protect the ID mapping and share only what the analysis needs. A marketing summary doesn't need the contents of a client or candidate record. Keep personal details out of campaign exports, and use approved access controls when someone has to match records by hand.

When a meeting is rescheduled, it keeps its original source in this report. Don't count the new time as a second booking from that campaign. If you can't trace the new booking back to the original, report the gap instead of guessing. For more on moved meetings, see how to measure meeting cancellations and rescheduling trends.

Use Caletus scheduling analytics for source and outcome data

Caletus's scheduling analytics page describes reporting on sources, booking pages, host outcomes, completions, cancellations, reschedules and exports. Check the field definitions and where the data comes from before you use them in a channel report.[3]

Then test a real sample you're allowed to use. Can you link the recorded source to the booking and its final outcome? Does the export keep the original booking ID after a reschedule? Which date does the filter use? Write the answers down before you promise anyone a fully automatic report.

If a field you need is missing, a coordinator can keep a simple sheet that maps campaign IDs to booking IDs for a small pilot. For anything bigger, use documented integrations or exports your technical team has tested. Revenue attribution and analytics connections need their own setup, so don't assume a source chart includes them.

Set up cross-domain tracking as its own task

If your website and booking page sit on different domains, Google's cross-domain guide says each one needs compatible tags and settings. It also warns that redirects can strip the linking parameters. Moving from your site to a scheduler won't carry the visitor's identity across by itself.[4]

Test an embedded scheduler separately too. Check what your page can see and what the scheduler reports. A booking form shown inside your site may keep its clicks to itself. If you're still choosing a setup, compare a booking link vs an embedded scheduler.

Then run one test path from start to finish:

  1. Open a tagged link and land on the booking page.
  2. Book a test meeting.
  3. Come back later through a different channel.
  4. Reschedule the meeting.
  5. Record the final outcome.

At each step, check that the source label and booking ID match what you expected. Respect your consent and tracking settings. Gaps in measurement don't justify quietly collecting more data.

Keep unknown sources visible

The example lumps direct visits and missing data into one row to keep things simple. In real reports, split them when you can: confirmed direct traffic, untagged referrals, failed tracking and missing history. Each one points to a different fix.

Don't spread unknown bookings across known channels to make the report look complete. That adds a guess. If you do model it, label the method and keep it apart from what you actually observed.

Watch tracking coverage over time. If a tracking fix doubles the share of bookings with a known source, a channel may look like it grew when you're simply measuring it better. Show matched and unmatched counts next to the outcome numbers.

Compare audiences and costs fairly before moving budget

Channels reach different people. A newsletter may reach people who already know your product, while paid search may bring in new prospects. A partner program may carry commissions or account management time that never shows up in the ad spend column. Define costs the same way for every channel before you call a lower ratio better.

Match the timing as well. Recently booked demos have had less time to happen. Compare groups with the same follow-up window, and show pending outcomes so older channels don't get an unfair head start.

Treat a completed meeting as a conversation that happened. Pipeline and revenue are later stages. Add them only once you've defined them, linked the records and given them their own follow-up period, because revenue attribution needs more evidence than attendance.

Check that the totals add up before you share the chart. In the example, 1,000 visitors, 160 bookings and 104 completed meetings reconcile because each visitor belongs to exactly one channel. A multi-touch report splits credit across channels and counts differently, so never add its numbers to this one.

Booking source tracking checklist

  1. Agree on campaign names, how tags are captured and who owns the data.
  2. Write down the visitor group, ID method, source rule and lookback period.
  3. Match original bookings to outcomes using verified IDs and reschedule history.
  4. Keep direct, unknown, pending and unmatched records visible.
  5. Check that every channel's counts add up, and match costs to the same scope and currency.
  6. Test links, redirects, embeds, repeat visits, reschedules and missing data.
  7. Pick one follow-up question before you move budget based on a small report.

The question worth asking is which tracked paths led to real conversations, what they cost, and how sure you are of the link. The channel that booked the most calls is only the start of that answer.

Booking source tracking FAQs

What is booking source tracking?Booking source tracking records which marketing channel, campaign or link brought each person to your booking page, and keeps that label on the booking. Done well, it follows the booking through to the meeting's outcome, so you can compare channels by completed meetings as well as by bookings.
Do UTM tags automatically follow a booking into Caletus?Check rather than assume. Caletus booking pages can track which campaigns bring in bookings with UTM tags, but test that the tags are captured, kept on the booking and included in your export or CRM, then linked to the meeting's outcome. Run one tagged test booking from each channel first.
Should bookings with an unknown source be split across known channels?Not in your main report. Keep them visible as unknown. Spreading them across channels is a modeling choice rather than something you observed, so if you do it, put it in a separately labeled view and explain the method. Hiding unknowns makes every channel look more certain than it is.
Is the channel with the lowest cost per completed meeting the best one?Not by itself. Check whether the audiences differ, whether all costs are included, how big the sample is, whether enough time has passed for meetings to happen, and how good the later sales results are. The report describes one group of bookings, so treat it as a snapshot rather than a permanent ranking.
Connect your marketing channels to meeting outcomesSee what Caletus analytics shows about booking sources and outcomes, then build a channel report you can explain.Explore analytics
  • booking source attribution
  • completed meeting tracking
  • campaign measurement
  • scheduling analytics
Written by
Caletus Team

Sources cited in this article

  1. [1]Scopes of traffic-source dimensions (opens in a new tab)Google Analytics Help · Accessed September 23, 2026
  2. [2]URL builders: Collect campaign data with custom URLs (opens in a new tab)Google Analytics Help · Accessed September 23, 2026
  3. [3]Caletus Analytics Insights (opens in a new tab)Caletus · Accessed September 23, 2026
  4. [4]Set up cross-domain measurement (opens in a new tab)Google Analytics Help · Accessed September 23, 2026
Put it into practice

See how your meetings get booked

Start free, connect your calendar and try what you just read about in a few minutes. No credit card needed.

  • No credit card required
  • Two-way calendar sync
  • Set up in under 2 minutes
Get your free booking linkSet up in under 2 minutes. Free forever.
Get started