Key takeaways
Strict browser privacy features and ad blockers can introduce serious data discrepancies. A luxury boutique hotel group approached Stape Care after losing clear visibility into its actual conversion volumes. This problem was also coupled with "phantom ROAS," i.e., inflated return figures driven by their flexible booking policy, with cancellation and modification rates reaching 10-20%.
The hotel group asked the Care team to align its Google Ads performance metrics with its internal revenue reports as closely as possible, while maintaining strict compliance with the consent regulations.
At the time, the hotel group was relying on traditional client-side Google Ads tracking. Its setup treated the initial reservation confirmation page (/booking-confirmed) as a signal of final revenue. So whenever a guest booked a luxury suite, a corresponding purchase record was permanently recorded in Google Ads reports.
However, high-net-worth travelers can often cancel or modify their stays offline (via phone, or through travel portals) weeks after that initial click. Since those changes never fed back into Google Ads, a significant gap accumulated between backend data and reported ad performance.
This disconnect was driven by two key issues:
This forced Smart Bidding to aggressively spend premium ad dollars chasing incomplete data and optimize toward a significant amount of "ghost conversions."
To determine the scale of the discrepancy, Stape Care ran a technical audit comparing actual figures from the hotel group's backend PMS, filtered strictly to display CPC-originated traffic only, against data reported in their Google Ads UI.
The audit confirmed that Google Ads reports were heavily distorted. A significant portion of total bookings went untracked, and the conversions that were captured carried no correction for the roughly 15% that were eventually canceled.
| Metric (45-Day Audit Window) | Google Ads UI Reports | PMS Backend (CPC Traffic Gross) | PMS Backend (CPC Traffic Net / Cash Flow) |
|---|---|---|---|
| Recorded Revenue | $139,500 | $204,000 | $172,500 |
| Logged Conversions | 93 reservations | 136 reservations | 115 reservations |
| Reported ROAS | 6.98x (Skewed) | 10.20x (Unrealized) | 8.63x (True Yield) |
To understand the full impact, the Care team examined the 93 reservations ($139,500) that Google Ads did successfully track via the web configuration:
In other words, Google Ads was missing 43 entirely valid gross bookings, while simultaneously optimizing its algorithms toward 14 "ghost" reservations that brought no value to the business.
To minimize the data gap, the Stape Care team updated the client’s tracking setup by moving Google Ads configuration to the server side and integrating webhooks sent from its PMS backend whenever a reservation was canceled or modified.
To make sure the Smart Bidding AI received complete data, passing the original gclid back into the system during any revenue adjustment was recommended. This gives Google additional context about the search query, device, audience profile, and the time of day associated with the initial click, which allows the algorithm to identify and prioritize the specific characteristics of high-value guests who actually checked in.
Instead of asking the client to modify the hotel's internal database to store marketing cookies alongside booking records, the Care team used the Stape Store database, a solution built directly into the Stape infrastructure.
Since the webhooks from the hotel group’s backend PMS didn't carry live browser cookies, Stape Store served as the data bridge between the available web session data and the offline events received later.
Here's how it works:
gclid) get extracted.booking_canceled or booking_modified) alongside the original booking reference.Once the webhook is received, the Google Ads Conversion Adjustments server tag fires, with the transaction ID and retrieved cookie data included directly in the event payload. The tag executes specific actions based on the incoming event type:
booking_canceled: triggers a RETRACTION action. For Hotel Ads, if processed within the 7-day window, it instructs Google's Smart Bidding AI to completely remove that conversion's influence from the active ad group. If processed between days 8 and 55, it clears the “phantom” revenue from UI reporting columns.booking_modified: triggers a RESTATEMENT action that passes the updated net value of the booking event (e.g., if a guest upgrades or downgrades room tiers). This guarantees Google Ads optimizes for actual profit margins rather than projected checkout values.Stape Care analyzed performance over a 45-day post-implementation period. The PMS backend figures below also reflect verified CPC-originated traffic to maintain an accurate baseline.
| Metric (Post-Implementation) | Google Ads UI Reports (Adjusted & Restated) | PMS Backend (CPC Traffic Gross) | PMS Backend (CPC Traffic Net / Cash Flow) |
|---|---|---|---|
| Recorded Revenue | $162,000 | $217,500 | $189,000 |
| Logged Conversions | 108 net reservations | 145 reservations | 126 reservations |
| Reported ROAS | 8.10x (Accurate to Tracked Volume) | 10.87x (Unrealized) | 9.45x (True Yield) |
Before resolving the canceled bookings processing, the shift to Stape's server-side architecture alone stabilized the core tracking infrastructure nearly instantly.
After the rollout, Google Ads successfully captured 124 total reservations ($186,000), which, with user consent opt-outs factored in, results in an 85.5% match rate against the 145 total backend CPC reservations for the same period. This represented an effective 17.1% increase in tracking coverage compared to the pre-implementation baseline of 68.4%. That said, this gross figure still included the ~13% of bookings that would eventually be canceled offline.
Incorporating Stape Care's data adjustment logic on top of the corrected infrastructure allowed the hotel group to successfully align its Google Ads bidding behavior with actual property check-ins.
RETRACTION and RESTATEMENT data adjustments via Stape’s server-side Google Ads tag corrected the $186,000 gross tracking figure down to $162,000 in net realized revenue. Although Google Ads cannot capture 100% of physical booking volume due to consent opt-outs, the reports became materially accurate because canceled bookings were automatically removed or restated, carrying a 13% cancellation retraction.By setting up server-side tracking with Stape, you can:
Comments