Multi-Touch Attribution for Hotels: Crediting the Booking Correctly
Last-click attribution hands the whole booking to whichever channel happened to be standing closest when the guest finally hit "reserve," and that channel is almost always brand search or metasearch. This is the owner's guide to fixing it: which attribution model to run, how to join GA4, the booking engine, the PMS, and the CRM into one guest path, how to run an incrementality test that settles the argument, and how to move budget on the result without blowing up the direct channel.
The booking that four channels claim and one gets paid for
A guest in Chicago sees a friend's photos from your property on Instagram in March. In April she reads a travel article that mentions you, opens the OTA app to check prices, and closes it. In May she gets an email from your list because she signed up for the guide two years ago. In June she searches your hotel's name on Google, clicks the metasearch ad because it was the first thing on the page, and books direct for a September stay. Your marketing report credits the booking to Google Hotel Ads. The Instagram spend, the PR retainer, the content program, and the email platform each produced nothing, according to the only report ownership ever sees.
That's last-click attribution. It survives at independent hotels because it's the default in the booking engine, in the agency's dashboard, and in the mental model of everyone who grew up on it. Imprecision would be forgivable. This is worse: it's wrong in the same direction every single time. It overpays the bottom of the funnel, where the guest was already going to book, and it underpays everything that put the hotel in the consideration set in the first place. A hotel that runs its budget on last-click will, year after year, shift money into brand search and metasearch, starve upper-funnel programs, and then wonder why the same campaigns cost more each year to produce the same bookings.
How much does last-click miss? Expedia Group's Path to Purchase research with Luth Research found that travelers across seven countries view 141 pages of travel content in the 45 days before booking, and US travelers view 277. Across the seven countries they averaged 303 minutes with that content. The activity bunches up at the end: Skift's write-up puts it at roughly 2.5 page views a day early in planning, rising to 25 on the day of purchase, and notes that 89% of travelers who visited an OTA went on to another travel site, such as a hotel, airline or metasearch site. Last-click sees exactly one of those touches. In the 24 hours before booking it usually sees the least interesting one.
Most marketers know this. Hotels have a harder time acting on it than most, because the booking engine, the PMS and the CRM were each built as separate systems with no shared identity. So the attribution problem is a data join problem first and a modeling problem second.
Last-click does not measure which channel earned the booking. It measures which channel was open in the browser when the guest stopped researching. Those are different questions, and the budget only cares about the first one.
What last-click actually costs
Under last-click, a resort's report will usually hand the biggest share of direct bookings to brand search and metasearch, and the agency, quite rationally, recommends putting more money there. Two well-known experiments say a large share of those clicks were never incremental. eBay, as Recast summarizes it, paused brand search ads for 30% of its users and found the ads had no significant impact on sales. Google's own meta-analysis of 390 search ad pause studies found that about 50% of ad clicks were incremental when the advertiser already ranked first organically, 82% at organic positions two through four, and 96% at position five and below. That study measured clicks, not bookings, and it dates from 2012. Still, your hotel ranks first for its own name, so assume a big slice of brand-search bookings would have arrived anyway until a test says otherwise.
Metasearch has the same problem. Atticus Li, citing SiteMinder's metasearch guidance, treats roughly 40% overlap with organic and direct as tolerable and anything past about 50% as paying for bookings the hotel would have gotten for free. He calls those industry anchors, not a rule. If 40% to 50% of metasearch bookings would have booked direct without the ad, and metasearch is being credited with 100% of them, the reported cost per acquisition is understated by nearly half and every reallocation decision built on it is wrong. Meanwhile the content, email, and social programs that are underreported get cut first in a soft quarter because they show no bookings, which further concentrates spend at the bottom of the funnel, which makes the metasearch numbers look even better. Round and round it goes.
The stakes are high because direct is the cheapest channel to acquire through. Kalibri Labs found, in 2016 data, that hotels paid 13% to 17% of the room rate to win guests through OTAs against 3% to 8% through brand.com. D-EDGE's 2025 Direct Distribution Report puts the direct distribution cost for its partner hotels in Europe and Asia-Pacific at 3.5%, against the 12% to 28% typically charged by OTAs. And independents still lean hard on the OTAs: Cloudbeds' 2026 State of Independent Hotels Report found OTAs delivered 63.4% of independent hotel bookings in 2025. Every dollar of direct marketing misallocated because of bad attribution is a dollar not spent moving a booking off an OTA commission.
Choosing the model: what each one overpays and underpays
Every attribution model is a rule for dividing one booking's credit among the touches that preceded it. There is no neutral model. Each one has a bias, and the job is to choose the bias you can live with, understand it, and correct for it with a test. One thing has changed: Google no longer supports first click, linear, time decay or position-based models in Google Ads, and GA4 dropped them in November 2023, leaving data-driven and last click. The rules-based models still show up in agency and booking engine reports, and you can calculate them yourself from exported path data. The table lays out all six and what each one gets wrong.
| Model | How credit is assigned | Overpays | Underpays | Hotel use case |
|---|---|---|---|---|
| Last click | 100% to the final touch before booking | Brand search, metasearch, retargeting | Social, content, PR, email, display | Comparison baseline only; never for budgeting |
| First click | 100% to the first recorded touch | Social, paid discovery, blog content | Everything that closed the booking | Measuring awareness campaigns in isolation |
| Linear | Equal share to every touch in the path | Low-intent repeat touches (retargeting impressions) | Decisive touches in short paths | Quick sanity check against last click |
| Time decay | More credit to touches closer to booking | Bottom of funnel, though less than last click | Early inspiration touches in 45-day research windows | Short-window promotions, flash sales |
| Position based | Most credit to the first and last touches, the remainder split across the middle | Nothing severely; middle touches mildly | Email nurture and remarketing in long paths | Default rules-based model for most hotels |
| Data driven | Machine learning weights each touch by its observed lift across converting and non-converting paths | Whatever the tracked data over-represents (usually Google's own channels) | Untracked touches: offline, OTA billboard effect, word of mouth | Hotels with enough volume; validate with an incrementality test |
Two of these deserve comment. Position based, sometimes called "U-shaped," is the right rules-based default for most hotels because the two touches it rewards, first and last, are the two you can actually verify. The first touch is where consideration began; the last touch is where the guest converted. Everything in between gets a share without any single middle touch being able to dominate. Since Google dropped it, you'll be computing it in your own attribution table. Fine. It's simple enough to explain to an owner in one sentence, and that matters more than most analysts admit.
Data-driven attribution is now the default for most conversion actions in Google Ads and the default in GA4. With enough data it beats any rules-based model, because it looks at both converting and non-converting paths and asks what each touch actually changed. Google says every conversion action is eligible regardless of volume, but it recommends at least 200 conversions and 2,000 ad interactions in a 30-day period. A hotel booking fewer than 200 direct reservations a month is under that line. The bigger issue is not volume. It's that GA4's model runs on its own visit-level data and has no view of the OTA search that never clicked through, the phone call to reservations, or the group block that came from a sales call. Feed a data-driven model half the path and it gives you a confident answer about half the path. That is why the data join comes before the model choice.
The channel credit shift: what changes when you switch
Abstract model comparisons do not move budgets. A worked example does. Below is a hypothetical 90-day window for a 200-key independent resort with roughly $150,000 of quarterly digital spend and 1,000 direct bookings, run through three models on the same booking data. The numbers are made up to show the mechanics. In this example brand search and metasearch give up 26% to 39% of their last-click credit, and the upper and middle funnel absorb it.
| Channel | Last click bookings | Position based bookings | Data driven bookings | Credit shift (last click to data driven) |
|---|---|---|---|---|
| Brand paid search | 310 | 212 | 188 | -39% |
| Metasearch (Google Hotel Ads, Tripadvisor) | 270 | 214 | 201 | -26% |
| Organic search (brand and non-brand) | 180 | 176 | 172 | -4% |
| Email and CRM | 90 | 148 | 161 | +79% |
| Paid social and display | 50 | 128 | 141 | +182% |
| Content, PR, referral | 40 | 84 | 92 | +130% |
| Direct and untracked | 60 | 38 | 45 | -25% |
Read the last column against the marketing budget. Assume brand paid search was consuming about 22% of spend and claiming 31% of bookings under last-click, which made it look like the most efficient channel in the mix. Under data-driven attribution it claims 19%, which makes it roughly average. Assume paid social was consuming 18% of spend and claiming 5% of bookings, which is why it was on the list to be cut; under data-driven it claims 14%, which puts it close to cost-neutral and, given that it is the channel most responsible for bringing new guests into the consideration set, arguably the one to protect. Email, which costs almost nothing per booking, nearly doubles its credit. None of these numbers are the truth. They are a less wrong version of the truth than last-click, and the point of the next section is to find out how wrong they still are.
The data join: GA4, booking engine, PMS, and CRM
Hotels don't run last-click because they like it. They run it because it's the only model that works when the systems don't talk to each other. GA4 knows the sessions and the sources. The booking engine knows the reservation and, if it is instrumented, the source of the final session. The PMS knows the stay, the revenue, the cancellation, and the guest profile. The CRM knows the email history and, sometimes, the loyalty identity. Multi-touch attribution requires all four to agree on who the guest is, and they were not designed to.
Below is the join map. It's less glamorous than the modeling, and it's where most of the work sits.
| System | Join key | What it contributes to the guest path | Most common failure |
|---|---|---|---|
| GA4 (website analytics) | GA client ID and user ID, passed into the booking engine | Every tracked session, source and medium, campaign, landing page, on-site behavior | Booking engine on a different domain breaks the session; cross-domain measurement not configured |
| Booking engine | Confirmation number, GA client ID captured at checkout, email | The conversion event, rate plan, room type, booking value, promo code | Purchase event fires without the client ID, so the booking cannot be tied back to earlier sessions |
| PMS | Confirmation number, guest profile ID, email | Actual stay, realized revenue, cancellations, no-shows, ancillary spend, repeat status | Cancellations never flow back, so attribution rewards channels with high cancel rates |
| CRM and email platform | Email, loyalty ID, hashed email for ad platform matching | Email opens and clicks, list membership, segment, past stays, lifetime value | Email clicks tagged with UTMs that GA4 reads as "referral" or "(not set)" |
| Ad platforms (Google, Meta, metasearch) | Click IDs (gclid and similar), hashed email uploads for enhanced conversions | Impressions and clicks, cost, view-through where allowed | Safari and privacy settings expire the click context in one to seven days |
Three of these failures deserve a closer look. First, the cross-domain break. Most independent hotels run the marketing site on one domain and the booking engine on the vendor's domain. Unless cross-domain measurement is configured correctly, GA4 sees the hand-off to the booking engine as a new session with the referral source "yourhotel.com," and every booking is attributed to your own website. It can go unnoticed for a long time. The fix is a configuration change, not a project, and it should be the first thing verified.
Second, cancellations. Attribution runs on the booking event, and the PMS is the only system that knows whether the guest ever arrived. Channels differ sharply in cancellation behavior. The Cloudbeds 2026 report put cancellations at 21.8% for OTA bookings against 10.6% for direct, and within direct, a flexible-rate metasearch booking won't behave like a past-guest email offer. If the attribution model never learns about the cancellation, it credits channels with bookings that produced no revenue and undercredits the ones that produced real stays. Feed realized revenue from the PMS back into the attribution table, ideally at checkout, and rerun the credit on stayed revenue rather than booked revenue. That one change can reorder the channel ranking.
Third, the privacy window. Safari's Intelligent Tracking Prevention deletes JavaScript-set cookies after seven days without a return visit, and after 24 hours when the visitor arrived from an ad click. For a hotel with a 45-day research window and a 30-plus day booking window, that means a Safari user who clicks an ad, researches for two weeks, and returns to book is counted as a brand-new direct visitor. On iPhone-heavy traffic, that erases a lot of upper-funnel credit before any model runs. The mitigations are server-side tagging so cookies are set by your own server rather than JavaScript, first-party identity via the email captured at booking, and enhanced conversions that match hashed emails back to ad platforms. They are worth doing. They are also the reason a click-based model, however good, will always undercount, and why the incrementality test is not optional.
The attribution model is a map drawn from the roads your tracking can see. Incrementality testing is driving out to check whether the roads exist. Owners should fund the second before they trust the first.
Incrementality: the test that ends the argument
Every attribution model, including data-driven, is correlational. It tells you which touches appeared in converting paths more than in non-converting ones. It cannot tell you what would have happened if a touch had not been there. Incrementality testing does exactly that, by withholding a channel from a comparable group and measuring the difference in bookings. It's the only method that answers what ownership actually asks: if we cut this budget, what do we lose?
Supermetrics' guide lays out the general methods. The table below adapts them to what a single hotel or a small portfolio can practically run. The pattern that matters most is the geo holdout, because hotels have a natural geographic structure in their feeder markets that most e-commerce businesses lack.
| Test design | How it works for a hotel | Minimum run | What it settles |
|---|---|---|---|
| Brand search pause | Turn off brand paid search entirely in one or two feeder markets; watch organic brand clicks and direct bookings from those markets versus control markets | 4 to 6 weeks, outside peak | What share of brand-search bookings would have arrived organically |
| Metasearch geo holdout | Exclude a matched set of metro areas from Google Hotel Ads and Tripadvisor bidding; compare direct booking rate and OTA share in test versus control | 6 to 8 weeks | Whether metasearch is winning new bookings or intercepting direct ones |
| Email holdout | Randomly withhold 10% of the list from a campaign or the whole calendar for a quarter; compare booking rate and revenue per contact | One full campaign cycle, ideally 90 days | Real lift from email versus bookings that loyal guests would have made anyway |
| Paid social conversion lift | Use the ad platform's built-in lift study or a geo split; measure new-to-file bookings, not total bookings | 4 to 6 weeks with meaningful spend | Whether social is creating consideration or retargeting people already booking |
| Marketing mix model | Regress weekly bookings on weekly spend by channel, seasonality, events, rate, and competitor pricing over two to three years | 104-plus weeks of history | Portfolio-level channel elasticity, including offline and OTA billboard effects |
A few practical rules. Run tests in shoulder season, not in the six weeks that pay for the year, because the cost of a wrong test is low then and the noise from compression nights is lower. Match test and control markets on historical booking volume, lead time, and rate, not just on population. Measure the outcome in the PMS, on stayed revenue, not in the ad platform. And measure the right outcome: a metasearch test should track total direct bookings from the test markets plus OTA bookings from those markets, because turning off metasearch can also push bookings to the OTA at full commission. A test that shows metasearch is 55% incremental to direct but that OTA bookings rose to absorb the rest is a test that says keep metasearch and negotiate the bid.
Metasearch vendors have started to run this analysis themselves, which is worth taking with appropriate skepticism but not dismissing. Tripadvisor's published test-and-control studies for hotel brands are structured the right way, with matched groups and lift in clicks and bookings as the outcome. Ask your metasearch integrator whether they will run a true holdout on your account. The ones that will are confident in the channel. The ones that redirect you to the ROAS dashboard are telling you something.
Mix modeling is the other half. Ruler Analytics makes the practical case that the two answer different questions: multi-touch is the tactical tool for optimizing campaigns now, mix modeling the strategic one for deciding which channel to fund over time. For a single hotel, a full mix model is usually more than the data can support until there are two or three years of clean weekly history. For a portfolio with that history it's the right tool, and the one that can capture the OTA billboard effect, which no click-based model will ever see. A 2026 paper from TikTok researchers on cannibalization-corrected attribution lands in the same place: across several markets, paid-attributed new users consistently exceeded what experiments measured as incremental. Attributed and incremental are different numbers.
Reallocating on the result
The point of all of this is a budget decision, and the budget decision has to be made carefully because the direct channel is fragile in a way that the attribution report does not show. Cutting brand search to zero because a test showed it was 50% incremental is a mistake if the 50% that was incremental was being intercepted by an OTA bidding on your name. The reallocation logic below is deliberately slow: move 15% to 25% of a channel's budget per quarter, measure, then move again.
| Finding from attribution and test | Signal threshold | Action | Guardrail |
|---|---|---|---|
| Brand search incrementality below 60% | Organic brand clicks recover 40%-plus of paused paid clicks | Cut brand bids 30% to 50%; keep a defensive floor where OTAs bid on the name | Watch OTA share of brand-name bookings weekly; restore bids if it rises 3 points |
| Metasearch pass-through above 50% | Holdout markets show direct bookings fall less than half of metasearch's attributed volume | Lower bids to hold position 2 to 3 rather than 1; shift savings to non-brand and social | Metasearch CPA stays inside the 8% to 14% of booking value benchmark |
| Email credit rises 50%-plus under multi-touch | Holdout group books at least 20% less than the mailed group | Fund list growth: on-site capture, post-stay sequences, pre-arrival upsell content | Frequency capped; unsubscribe rate below 0.3% per send |
| Paid social credit rises 100%-plus and new-to-file share is high | Lift study shows 25%-plus more first-time bookers in exposed group | Protect or grow social; move spend from brand search to prospecting audiences | Measure on new-to-file bookings in the PMS, not on platform-reported conversions |
| Content and referral credit rises but volume is small | Position-based credit above 8% of bookings | Maintain; add UTMs to every placement so the credit can be measured properly next quarter | No new spend until the tracking is clean |
At the bottom of the funnel, Foundry CRO's 2026 benchmarks put Google Hotel Ads at 8% to 14% of booking value in cost per acquisition, and RoomMaster puts OTA commissions at 15% to 30% per booking. Those are attributed figures, not incremental ones, so apply your own pass-through rate to them before comparing to the OTA. Do the division: a metasearch program at 10% attributed CPA and 55% incrementality is really running at about 18% incremental CPA. That's roughly an OTA commission, with more work. That does not mean stop; it means the channel is a parity defense, not a growth engine, and should be budgeted as one.
A 90-day implementation plan
This does not require a new platform. It needs the systems you already own configured correctly, one honest test, and a report ownership can read. In order:
Weeks 1 to 3: fix the plumbing. Verify cross-domain measurement between the website and the booking engine. Confirm the booking engine's purchase event carries the GA client ID, the confirmation number, and the booking value. Standardize UTM conventions across the agency, the email platform, the metasearch integrator, and any PR or content partners; check in particular whether email traffic has been reporting as "referral." Turn on enhanced conversions in Google Ads and the equivalent hashed-email matching in Meta. If the site runs on Safari-heavy traffic, scope server-side tagging now; it can be deployed inside the 90 days but it needs to be scoped in week one.
Weeks 3 to 6: build the join and the baseline. Create a single attribution table, in a warehouse or even a well-structured spreadsheet at first, with one row per booking: confirmation number, booking date, arrival date, channel path from GA4, booking value, and, once the stay passes, realized revenue and cancellation status from the PMS. Run the last 90 days through last-click, position-based (calculated in the table, since GA4 no longer offers it), and GA4's data-driven model and put the three columns side by side, as in the credit shift table above. This is the baseline. Nobody reallocates yet.
Weeks 6 to 12: run one test. Pick the channel where the credit shift was largest and the spend is meaningful. Usually that's brand search or metasearch. Design a geo holdout with matched control markets, run it for four to six weeks outside peak, and measure stayed direct revenue plus OTA revenue from the test markets against control. Document the incrementality rate. This number, applied to the attributed CPA, is the first true cost per acquisition the hotel has ever had for that channel.
Week 12: the reallocation memo. One page. The three-model comparison, the test result, the true CPA by channel, and a proposed 15% to 25% shift for the next quarter with the guardrail metric that will trigger a reversal. Present it as the first quarter of a rolling process, not as a verdict, because the second test will refine the first and the model will get better as the join gets cleaner. Often the hardest part isn't the analytics. It's agreeing on what the scorecard should track, and a structured review of the reporting stack, the tracking configuration and the channel benchmarks is a sensible place to start - explore our AI & Technology Scorecard and Reporting service →.
Where AI actually helps
Most of the work above is configuration and discipline, and it would be dishonest to dress it up as artificial intelligence. There are three places where machine learning changes the outcome. The first is the data-driven model itself, which is a genuine improvement over rules-based models once the path data is complete enough to feed it. The second is identity resolution: probabilistic matching of the guest across the GA client ID, the booking email, the PMS profile, and the loyalty record is a well-solved machine learning problem and it is the piece that turns four partial records into one guest. The third is the mix model, which now exists as open-source tooling such as Meta's Robyn that a portfolio's revenue analyst can run with the right guidance.
What AI does not do is substitute for the incrementality test. A model, however sophisticated, that has never seen a world where the channel was turned off cannot tell you what turning it off would do. A sensible stack runs a light rules-based model for weekly optimization, a data-driven model for monthly reporting, one holdout test per quarter for truth, and, once the history supports it, a mix model annually for the budget. Each layer checks the one below it. The attribution report ownership sees at the end is the same one-page scorecard every quarter, with the credit shift, the incrementality rates, and the true CPA by channel, and it gets more trustworthy each time it is produced.
Last-click won't disappear from the booking engine dashboard, and it doesn't need to. It's a fine answer to which channel closed the booking and the wrong answer to which channels earned it. Hotels keep funding the first answer while asking the second question.
Frequently Asked Questions
We are a single 120-room hotel. Is multi-touch attribution worth the effort at our size?
Yes, with the scope trimmed. At that volume you will not have enough conversions for GA4's data-driven model to be reliable every month, so calculate position-based in your own table as the standing model and compare it against last-click quarterly. The plumbing fixes, cross-domain measurement, the purchase event carrying the client ID, and consistent UTMs, cost nothing and are worth doing at any size because they make every other report more accurate. The one test worth running is a brand search pause for four weeks in a shoulder period, because brand search is often a big line item and the eBay and Google findings suggest much of it may not be incremental. The arithmetic: a hotel spending $8,000 a month on brand search that finds half of it recoverable organically has found $48,000 a year.
Our agency reports on last-click and says multi-touch is unreliable. How do we handle that?
Ask for both, side by side, with the same booking data, and ask for the cancellation-adjusted version from the PMS. An agency that is confident in its channel mix will welcome a second model because it usually helps the upper-funnel work they are running. An agency whose fee is tied to metasearch or brand search spend has a structural reason to prefer last-click, and you should understand that incentive without treating it as bad faith. The cleanest resolution is the incrementality test. Propose a geo holdout on the channel they are most confident in, agree on the measurement in advance, and let the result decide. If the agency declines to run a holdout on its own recommended channel, that is a data point about the channel.
How do we account for OTA bookings that were influenced by our own marketing?
This is the billboard effect and it runs in both directions: your marketing sends some guests to book on an OTA, and the OTA's listing sends some guests to book direct. Click-based attribution cannot see either flow because the OTA is a separate domain. The two practical approaches are, first, to include OTA bookings from test markets as an outcome in every geo holdout so you can see whether cutting a channel shifts bookings to the OTA rather than losing them, and, second, at the portfolio level, to include OTA production as a variable in a marketing mix model. A rough proxy for a single hotel is to track the ratio of direct to OTA bookings by feeder market monthly and watch how it moves against marketing spend in that market. It is not attribution, but it is the right direction of evidence and it is free.
Should we buy a dedicated attribution platform?
Not first. A platform that reads GA4 and booking engine data inherits every gap in the underlying tracking, however nice the dashboard. If the cross-domain hand-off is broken or the purchase event is missing the client ID, the platform will present a beautiful chart of incomplete data. Fix the join, run the three-model comparison in GA4, and run one test. If at that point the volume and complexity justify a tool, you will know exactly what you need it to do and be able to evaluate it against your own baseline. For a single hotel, a clean GA4 configuration plus a monthly export to a spreadsheet or lightweight warehouse may be all you need for a long while.
How much budget should move in the first reallocation?
No more than 15% to 25% of any single channel's budget in one quarter, with a named guardrail metric that triggers a reversal. The direct channel is fragile in ways the report does not show: an OTA can begin bidding on your brand name the week you drop your bids, and metasearch position losses can shift bookings to the OTA at a full commission. The reallocation is a rolling process, not a single correction. Move a quarter of the way, measure stayed revenue and OTA share for the following quarter, and move again. One large cut on one test is the risky version: the test can be right and the market can still react to the cut in ways the test never saw. Moving gradually gets you to the same place with the direct channel intact.
Peter Mack is a hospitality technology strategist and founder of HospitalityOS, helping independent hotels and resorts implement AI systems that drive revenue and reduce operational costs. With 25 years in hospitality operations and technology, he has worked with properties of all types and in every region as both a General Manager, Founder, Operator, Asset Manager, and Owner.