Lead attribution for booked meetings maps every marketing touchpoint that contributed to a prospect scheduling a consultation. Because a booked meeting is a conversion point in its own right, separate from the closed deal that may follow, it needs its own tracking if you want to judge channels fairly. The practices that work are capturing the traffic source where the visitor first lands, passing it through hidden fields in the booking form, firing client-side events through Google Tag Manager, and using multi-step routing forms to see where prospects drop off. The core tools are Google Analytics 4, Google Tag Manager, a CRM such as HubSpot or Salesforce, and a scheduling platform such as OnceHub that can carry source data through to the meeting record.
Ask a marketing team which channel brought in last quarter's best clients and you will usually get a confident answer. Ask how they know, and the confidence tends to fade.
The reason is almost always the same. Their tracking follows a visitor from the ad to the website, then loses them somewhere between the website and the sales call. The part of the journey that matters most is the part nobody is measuring.
For a business that sells through conversation, nothing happens until someone agrees to talk.
After a high-ticket ad campaign, nobody expects a prospect to reach for a credit card. A wealth management client does not buy a retirement plan from a landing page. A company does not sign a six-figure software contract from an ad.
What you want them to do first is book a call. That booking is the moment a stranger becomes a prospect, and it is the first point where they spend something real, namely an hour of their time. Clicks cost nothing. Form fills cost a minute. A booked meeting is a commitment.
This is the idea that changes how you read every report you produce.
Some salespeople close better than others. That is not a criticism, just a fact of running a sales team. But it means revenue is a blend of two things: how good the marketing was at producing serious prospects, and how good the person on the call was at converting them.
If you only measure closed deals, you cannot tell those two apart. A strong campaign whose leads mostly went to a newer rep will look weak. A mediocre campaign whose leads went to your best closer will look excellent. You end up moving the budget based on who happened to be on shift.
Measuring the booking separately fixes this. You learn which channels persuade the right people to take the first step, and separately, which people turn those conversations into business.
Say a financial advisory firm runs an ad campaign that produces 50 booked wealth management consultations, and very few of them become clients.
Without booking-level attribution, the campaign looks like a failure and gets cut. With it, the firm can ask the right follow-up questions. Did the campaign reach the wrong audience, so the meetings were with people who were never going to invest? Or did it reach exactly the right people, and something went wrong in the conversation itself?
Those two answers lead to opposite decisions. One says change the targeting. The other says keep the campaign and look at the consultation process. Only booking-level data lets you tell which one you are dealing with.
Before getting into the setup, it helps to know how credit gets assigned, because the model you choose shapes what your data tells you.
All the credit goes to the first interaction. If a prospect first found you through a blog post about retirement income planning, that blog post gets full credit for the eventual booking, regardless of what happened afterward.
It is useful for understanding what introduces people to you. It tends to undervalue everything that happens closer to the decision.
All the credit goes to the final interaction before the booking. If the prospect booked right after clicking a retargeting ad, that ad gets full credit.
This is the default in many analytics tools, which is part of why it is so widely used. It tends to overvalue retargeting and branded search, which often catch people who had already decided.
Multi-touch models spread credit across the whole journey. The W-shaped model is the one most relevant to booked meetings, because it gives heavy weight to three specific moments: the first touch, the point where the visitor becomes a known lead, and the touch that produced the booked meeting. A common split gives each of those three around 30% of the credit, with the remaining 10% shared across everything in between.
That third weight is why W-shaped attribution suits a meeting-led sales process. It treats the booking as one of the defining moments of the journey, which is exactly what it is.
Whichever model you pick, every one of them depends on the same thing: knowing where the visitor came from in the first place. That is where most setups quietly fail.
The usual advice is to add UTM parameters to your campaign links and let them carry the source through to the end. In theory that works. In practice, the trail goes cold long before the booking.
Three things strip them out on a normal journey:
None of this is unusual. It is the normal path for anyone making a considered decision, which describes almost everyone who books a consultation.
Stop relying on URL parameters to survive multi-page browsing or iframe boundaries. Capture UTM parameters the moment the visitor arrives on your landing page and persist them in first-party storage (such as cookies or local storage) before script blockers or page transitions clear them.
Then carry that stored value forward yourself, rather than hoping the URL does it for you. The rest of this guide is about how.
The order matters here. Each one builds on the one before.
Once you have captured the source at the landing page, you need a way to attach it to the booking. Hidden fields do that.
A hidden field is a question on your booking form that the guest never sees and never fills in. It is populated automatically. According to OnceHub's guide to passing booking data with hidden fields, these fields let you pass internal data such as campaign sources and tags without displaying it to the guest. They stay hidden throughout, including in the guest's confirmation email and in the calendar event created for the meeting.
You can map each hidden field to a field in your CRM, so the source arrives as structured data rather than as a line in a notes box someone has to read and retype.
One detail worth getting right: hidden fields can also be filled from URL parameters, which is convenient, but a value passed that way is visible in the link itself. If the data is genuinely sensitive, populate the field another way rather than putting it in the URL.
Why this step matters most: While several scheduling tools struggle to preserve landing-page source data across iframe embeds or multi-page user paths, OnceHub allows you to capture initial parameters into hidden fields, store them alongside the meeting record, and forward them seamlessly to your CRM.
It is the most technical step in this guide. It is also the most practical one.
Some teams do all their analysis in the CRM. Others want bookings to appear in Google Analytics next to traffic, spend, and every other conversion, so they can compare channels in one place.
For that, you need the scheduling tool to tell Google Tag Manager when something happens. OnceHub's booking pages and forms fire standardized client-side events—such as oncehub.booking_calendar.loaded, oncehub.booking_calendar.time_slot_selected, and oncehub.booking.scheduled—that Google Tag Manager can pick up and forward to GA4.
Setting it up starts with connecting OnceHub to Google Tag Manager, which takes your Tag Manager container ID. From there, you trigger tag execution when oncehub.booking.scheduled fires, then mark that key event as a conversion in GA4 to inform ad platform optimization.
This is where attribution stops being a scorecard and starts telling you what to fix.
A routing form asks a short sequence of qualifying questions before it shows anyone a calendar. In a multi-step form, button clicks send client-side events such as oncehub.form.button_clicked. Rather than seeing only who booked, you see exactly where prospects dropped off in the interaction funnel.
Here is the pattern to look for. One hundred people click the first button. One hundred clicks the second. Only 60 make it through the third and reach the booking step.
Forty percent of your interested prospects left at one specific question. That question is your leak. In an advisory firm, it is frequently the one asking about investable assets or account size, asked too early or worded too bluntly. Moving it later, or offering ranges instead of asking for a figure, is the kind of change this data makes obvious.
Without step-level events, all you would know is that the form underperforms. You would have no idea where, and you would end up redesigning the whole thing instead of fixing one question.
The branching itself is built in routing forms, ensuring qualified leads reach your calendar while screening lower-fit inquiries.
If configuring Tag Manager events is more than you need right now, there is a much simpler option. For a long time, it was simply how this was done.
Set your booking calendar or routing form to send the guest to an external URL once they book. Make that URL a thank-you page. Then count visits to it in your analytics tool. Every visit represents a booking.
OnceHub's booking calendar redirect allows you to configure dedicated redirect URLs for initial bookings, reschedules, and cancellations. It can also pass parameters, including the booking calendar ID, guest form answers, and original URL parameters directly to your thank-you page for seamless web tracking.
Because separate redirect URLs can be assigned to bookings, reschedules, and cancellations, your web analytics can accurately isolate completed new bookings from modified appointment sessions.
The final step connects everything above to revenue.
Make sure the scheduling tool sends the booked meeting, along with its hidden source fields, into the contact record in HubSpot or Salesforce. That way the meeting sits on the same timeline as every other interaction with that prospect, from the first ad they saw to the deal they eventually sign.
This is what lets you work backward from a closed deal to the campaign that started it. Six months after a consultation, when an advisory client finally moves their accounts over, the original source remains stored on the CRM record rather than lost in an unlinked web report.
Here is how the pieces come together for a financial advisory firm promoting a single service through three channels at once.
The firm hosts an in-person retirement planning seminar. To generate consultations, it promotes one booking page in three places:
Rather than building three booking pages, it uses the same one everywhere and changes only the UTM tags on each link:
The landing page captures each source on arrival, and hidden fields carry it into every booked consultation.
A month later, the firm can see exactly which channel produced each meeting. The more useful finding is usually not which channel produced the most bookings, but which produced the right ones. The brochure QR code might generate fewer consultations than LinkedIn and still produce more clients, because the people scanning it had just spent two hours in a room learning about retirement income.
That is, finding total booking counts would hide completely.
The structure transfers directly to paid advertising. A B2B firm running ads at operations directors, with a demo as the goal and a deal size in the tens of thousands, can tag each ad variation, capture the source on arrival, screen with a routing form, and pass everything through to Salesforce.
It can then answer which ad creative produced demos rather than clicks, where unqualified visitors left the routing form, and once deals close, which campaigns produced revenue, judged fairly because the booking and the close are measured separately.
Collecting the data is half of it. The other half is reading it in a way that changes what you do.
OnceHub's booking analytics shows totals across your account and breaks them down per user and per booking calendar. You can filter by booking status, whether completed, canceled, or rescheduled, by the scheduling tool used, by host, and by UTM parameter.
Save the views you check often so you are not rebuilding the same filters every week. A saved view of bookings per advisor, filtered to the current campaign, answers most of the questions a sales manager asks on a Monday.
The per-user view matters most for the booking-versus-close question. If two advisors take bookings from the same channel and one converts them at twice the rate, you are looking at a coaching opportunity, not a marketing problem.
Any activity table can be exported as a CSV or Excel file. That makes it easy to hand a quarter of data to an AI assistant such as ChatGPT or Claude and ask the questions that are tedious to answer by hand: which days and times produce the most kept appointments, which campaigns produce bookings that tend to cancel, and whether certain sources book further out than others.
None of that needs a data team. It needs an export and a well-phrased question.
Some scheduling tools, OnceHub among them, also offer capacity views showing how booked up each person and calendar is. These are still developing, so treat them as a useful indicator rather than a precise planning tool. Where they help is spotting imbalance: one advisor consistently fully booked while another has room, which is a reason to adjust how high-value leads are distributed.
No single tool tracks a prospect from the first ad to the closed deal. Each one sees a different part of the journey, and attribution only works when they pass information to each other.
Here is what each tool covers, how to set it up for booked meetings, and where it stops.
GA4 is Google's analytics platform, and the place most teams look first to understand where traffic comes from. It records activity as events, which suits booking tracking well, since a booked meeting is simply another event once something sends it.
What it does for meeting attribution
GA4 shows you traffic by channel, the landing pages people arrive on, and how bookings trend against spend over time. When a booking event arrives, you can mark it as a key event, which is GA4's current name for a conversion, and report on it alongside every other channel.
How to set it up
Where it stops
GA4 defaults to data-driven attribution for key events, alongside options for paid and organic last click or Google paid channels last click. However, GA4's native attribution scope is limited to web interactions. If you want a full W-shaped view that credits the booking as one of three defining milestone moments in a high-ticket sales lifecycle, that multi-touch revenue modeling belongs in your CRM.
GA4 also sees only what happens on your website. It has no view of the conversation, the deal, or the revenue.
Best for: comparing traffic and booking trends across every channel in one place.
Google Tag Manager is a free container that sits on your website and manages tracking code. Instead of a developer editing your site every time you want to track something new, you configure it once in Tag Manager.
What it does for meeting attribution
Tag Manager is the connector between your scheduling tool and your analytics platforms. It listens for client-side events such as oncehub.booking_calendar.loaded, oncehub.booking_calendar.time_slot_selected, oncehub.booking.scheduled, or routing form interactions like oncehub.form.button_clicked, then forwards them to GA4, Google Ads, LinkedIn, or Meta.
How to set it up
Where it stops
Tag Manager stores nothing and reports nothing. It forwards events as they happen, so if your scheduling tool does not fire an event, Tag Manager has nothing to send. It also runs in the browser, which means some of the ad and cookie blocking described earlier in this guide can affect it.
Best for: turning booking clicks and form steps into conversions your ad platforms and analytics can use.
Your CRM is where a booked meeting becomes part of a relationship rather than a single event. For a financial advisory firm, this is usually where the most important attribution question gets answered, because a client relationship runs for years rather than ending at one transaction.
What it does for meeting attribution
The CRM is the only tool in this list that connects a booking to revenue. When the meeting arrives in the contact record with its source attached, you can follow that prospect through to a closed deal and work backward to the campaign that started it. That connection is what lets you calculate customer acquisition cost by channel rather than estimating it.
It is also where multi-touch models such as W-shaped attribution live, since GA4 no longer offers them.
How to set it up
Where it differs between the two
HubSpot offers attribution reporting at several tiers, but multi-touch revenue attribution, which ties closed deals back across every touchpoint, requires Marketing Hub Enterprise. Professional offers more limited, contact-level attribution. HubSpot has also revised its list of attribution models, so check which ones are available in your account before planning a reporting setup around a specific model.
Salesforce credits campaigns through Campaign Influence, which links the campaigns a prospect interacted with to the opportunities they produced. The models available depend on your edition and any marketing add-ons you use.
Where it stops
A CRM can only report on data it receives. If the original source never made it into the booking, it will never appear in the CRM either, no matter which attribution model you choose. The CRM is also blind to what happens on your website before someone becomes a known contact.
Best for: connecting booked meetings to closed revenue and calculating customer acquisition cost by channel.
OnceHub is a scheduling and routing platform, and in this stack it covers the stretch the other three cannot see: what happens between a visitor arriving on your site and a meeting landing on a calendar. That stretch is exactly where source data usually gets lost.
What it does for meeting attribution
OnceHub carries the source from the landing page into the booking and on into the CRM. It also generates the events the other three tools depend on, and shows where prospects leave a qualification form before they ever reach a calendar.
How to set it up
Where it stops
OnceHub is not an analytics platform or a CRM. It does not report on website traffic before a visitor reaches the booking step, and it does not track deals or revenue. It does its job by passing clean data to GA4 and your CRM, so it works best alongside them rather than instead of them.
Best for: carrying source data from the first landing page through to the booked meeting and into the CRM.
|
Tool |
Role in the stack |
What it captures |
Attribution models |
The gap it leaves |
|
GA4 |
Analytics and reporting |
Website traffic and key events |
Data-driven, paid and organic last click, Google paid channels last click |
No view of deals or revenue |
|
Google Tag Manager |
Event connector |
Clicks and form steps, as they happen |
None, it forwards rather than reports |
Stores and reports nothing |
|
HubSpot or Salesforce |
Revenue record |
Contacts, meetings, deals, revenue |
Multi-touch, depending on tier or edition |
Only sees data it is sent |
|
OnceHub |
Scheduling and routing |
Source at booking, booking events, form drop-off |
Not an attribution tool itself |
No traffic or revenue reporting |
Picture a prospect moving through all four.
They click a LinkedIn ad and land on your site, where the source is captured on arrival. They move through a OnceHub routing form, with each step sending an event through Tag Manager to GA4. They book a consultation, and hidden fields attach the LinkedIn source to the meeting. The meeting arrives in HubSpot or Salesforce with that source on the record. Six months later, when the deal closes, the revenue traces back to the original ad.
Remove any one of the four and the chain breaks at that point. That is why the question to ask is not which tool is best, but which link in your current chain is missing.
If you do not know where your booked meetings come from, you are making budget decisions on guesswork, and probably crediting the wrong channels for your best clients.
The fix is not more tools. Most teams already have GA4, Tag Manager, and a CRM. What is usually missing is the connection between them: something that captures the source at the first touch, carries it through the booking, and delivers it to the record where revenue eventually lands.
Get that one connection right and every report you produce afterward becomes something you can act on.
To set it up, start with the Google Tag Manager connection guide for event tracking, or the hidden fields guide for passing source data. If you want to test it on a live campaign first, OnceHub has a free trial, so you can run hidden field tracking on a single booking page before rolling it out across every campaign.
Lead attribution for booked meetings is the process of identifying which marketing touchpoints led a prospect to schedule a call or consultation. It treats the booking as its own conversion, separate from any sale that follows, so you can judge which channels persuade serious prospects to take the first step. In practice, it means capturing the traffic source when a visitor arrives and carrying it through to the meeting record. OnceHub does this with hidden fields that attach the source to each booking and send it on to your CRM.
Add UTM parameters to your campaign links, capture them on first-party landing pages, and pass them into the booking form so the source is saved with the meeting record. Relying solely on URL parameters across iframe embeds or multi-page sessions often fails due to ad blockers or browser privacy controls. OnceHub accepts captured sources through hidden fields on the booking form, so meetings arrive in your CRM with full attribution metadata attached.
Create hidden fields on the booking form for source, medium, and campaign, then populate them automatically when the visitor books, either from the parameters you captured on arrival or from the booking link itself. The guest never sees or fills in these fields. In OnceHub, hidden fields stay out of the guest's confirmation email and calendar event, and you can map each one to a field in HubSpot or Salesforce. One caution: a value passed through a URL parameter is visible in the link, so avoid that route for anything sensitive.
Usually for one of three reasons. Browser privacy tools strip tracking parameters or block the scripts that read them, the visitor moves between pages or domains on the way to the booking page, or the prospect leaves and returns days later through a different channel. The fix is to capture the source the moment the visitor lands and store it, rather than hoping it survives in the URL. OnceHub then carries that stored source into the booking through hidden fields, even if the original parameters are long gone.
Send a client-side booking event (such as oncehub.booking.scheduled) from your scheduling tool to GA4 through Google Tag Manager, then mark it as a key event. Once marked as a key event, bookings appear in your acquisition reports alongside other marketing traffic. OnceHub connects to Google Tag Manager using your container ID, firing client-side events like slot selections or completed bookings that GTM forwards to GA4.
No. GA4 defaults to data-driven attribution alongside last-click options, having retired legacy models like linear, first-click, and position-based in late 2023. Multi-touch models such as W-shaped attribution—which heavily weight first touch, lead creation, and opportunity creation—are best managed in enterprise CRMs like HubSpot or Salesforce.
It depends on the question you are asking. First-touch shows what introduces people to you, last-touch shows what pushes them to act, and W-shaped is usually the most useful for a meeting-led sales process because it weighs the moment an opportunity is created, which is typically the booked meeting. Whichever model you choose, it is only as accurate as the source data behind it, which is why capturing the source at the first landing point matters more than the model itself.
Both, but separately. Booked meetings tell you which channels persuade prospects to take the first step, while closed deals reveal which conversations turn into revenue. If you only measure closed deals, a strong campaign can look weak if its leads went to a newer rep. OnceHub's booking analytics breaks bookings down per host and calendar, separating channel performance from individual conversion rates.
Use a multi-step qualification form where button clicks fire client-side events like oncehub.form.button_clicked. If 100 people start and only 60 complete the final step, the step prior to the drop is where your funnel leaks. OnceHub routing forms send step events through GTM to GA4, isolating friction points so you can optimize specific questions.
Redirect guests to a thank-you page after they book and count pageviews in your analytics tool. OnceHub's booking calendar redirect allows separate redirect URLs for bookings, reschedules, and cancellations while passing booking parameters and URL tags to the destination page.
Ensure your scheduling tool logs each meeting against the CRM contact record and maps hidden attribution fields to custom properties. This puts the meeting on the timeline alongside closed revenue, allowing you to calculate CAC by channel. OnceHub passes hidden field data into HubSpot or Salesforce, keeping source data intact through deal close.