The marketing system saw the journey. The booking platform confirmed the reservation.
Building the server-side architecture that joined them.
Atomic Golf is an entertainment and hospitality venue with a digital acquisition model built around paid social, paid search, and organic discovery.
The customer journey begins on atomicgolf.com, where visitors browse venues, packages, and offers, then cross into the REX booking engine on a separate domain to complete a reservation.
Google Analytics 4 (GA4) and Google Tag Manager (GTM) were in place and functioning correctly on the main website. Paid campaigns were running across Meta and Google Ads. The REX platform was confirming reservations reliably. Each layer worked on its own terms. The limit the architecture had reached was the domain boundary. When a visitor left atomicgolf.com and entered the REX booking environment, the signal path connecting the marketing visit to the reservation outcome had no governed bridge.
The most commercially important event in the customer journey, a confirmed reservation, was happening on a third-party domain the marketing team did not control.
Browser-side tracking could reach the main website and capture engagement, CTA clicks, and booking intent. It could not reliably follow the user into REX and return a confirmed reservation event with the original session and campaign context intact.
The practical consequence was misattribution at scale. Paid social visitors who completed a reservation could return to GA4 as Direct or Organic. The session context from the originating paid campaign had dissolved at the domain boundary. GA4 cross-domain linker parameters were preserving the GA client ID in some cases, but a new session was often starting on the REX domain. When it did, the booking appeared under the new session's source rather than the campaign that drove the original visit. Paid campaign performance was being systematically understated.
The backend reservation system held the authoritative transaction data: confirmed reservation, value, package, guest count, and customer contact details. None of it was reaching GA4 or Meta in a form the platforms could use for optimization. Meta was receiving browser-side events from the marketing site with fbp and fbc identifiers, but without the hashed customer data needed to produce a usable Event Match Quality score. Meta's Event Match Quality was sitting at 4/10. The browser knew the marketing journey. The backend knew the customer. Neither knew what the other had.
Building the server-side architecture
Meta Event Match Quality improved from 4/10 to 9/10 following the CAPI implementation and browser-backend identity stitching.
— Bobak Mostaghasi, CEO, Atomic Golf
At 4/10, most server events were unmatched to user profiles and the bidding algorithm was operating on weak signal. At 9/10, the optimization input reflects actual booking customers.
Paid media ROAS improved from 2–3x to 12x. Two things changed simultaneously. Meta's bidding algorithm started receiving confirmed reservation signals with accurate customer identity rather than browser proxy events, which improved algorithmic optimization. More consequentially, the marketing team now had attribution they could trust. They could see clearly which campaigns were actually driving bookings and which had appeared productive only because the broken attribution model was crediting them for revenue they hadn't produced. The campaigns that didn't hold up were killed. The ones that did were scaled. The ROAS improvement was the result of better algorithmic signal and better human decisions, both made possible by the architecture.
Attribution accuracy across GA4 improved. Reservations previously returning as Direct or Organic due to session loss at the domain boundary are now attributed to the originating paid channel.
All project milestones were delivered on time and under budget. The architecture was stabilized without changing the client's existing booking processes or requiring changes to the REX platform.
If the most important conversion event in the customer journey happens in a third-party environment the marketing team does not control, the attribution layer needs a server-side bridge.
The Assessment maps the gap.
The Measurement Architecture Assessment — a 30-minute call, a fixed-fee diagnostic, a clear picture of where your signal layer breaks and what to do about it.