Travel & Hospitality
The booking started 3 weeks ago. Your cookies expired 2 weeks ago.
Travel purchases have the longest research-to-booking windows in e-commerce. Guests browse for weeks across multiple devices and domains before committing. Safari's 7-day cookie limit ensures you lose attribution long before the booking happens. Datafly Signal's server-set cookies persist for 400 days.
Why travel attribution is broken
The travel booking funnel is uniquely hostile to client-side tracking. Long windows, multiple domains, and high ad spend make every lost attribution point expensive.
Long research windows
Travellers spend 2-4 weeks researching before booking. They visit your site 8-12 times across that window. With client-side cookies capped at 7 days, the first visit that started the journey is erased before the booking that ends it.
Cross-domain booking flows
Main site for research, separate search engine, third-party booking engine, confirmation on yet another domain. Each domain boundary breaks the cookie chain and fractures the user journey into disconnected fragments.
High ad spend, poor attribution
Travel brands spend heavily on Google, Meta, and TikTok ads. When cookies expire before conversion, the booking cannot be attributed to the campaign that drove it. You over-invest in channels that look like they convert and under-invest in ones that actually do.
One guest across every domain
The Identity Hub links a traveller's sessions across your main site, search engine, booking engine, and confirmation pages into a single unified profile — even in Safari, even across separate domains.
Main Site
yourhotel.com
Search Engine
search.yourhotel.com
Booking Engine
book.yourhotel.com
Confirmation
confirm.yourhotel.com
Identity Hub
AES-256-GCM encrypted tokens / 60s TTL / single-use nonces
- Encrypted identity tokens passed between domains via URL parameter
- Server-side resolution — works in Safari, no client-side storage dependency
- 60-second TTL with single-use nonces prevent replay attacks
- Consent-gated — identity linking requires explicit user consent
Full attribution through the entire booking window
Client-side cookies expire after 7 days. Server-set cookies from your own subdomain persist for 400 days. Here is what that means for a typical travel booking journey.
Traveller clicks a Google Ads campaign for "Barcelona hotels" and browses your site.
Retargeting ad on Instagram. Traveller returns and compares room types.
Safari ITP wipes all client-set cookies. The traveller is now a "new visitor" to client-side analytics.
Returns via organic search to compare final options. Client-side: new session, no history. Server-side: recognised, full journey intact.
Traveller books a 5-night stay. Client-side: conversion attributed to organic (wrong). Server-side: attributed to original Google Ads click (correct).
Result: Client-side attributes the booking to organic search (wrong channel, wrong ROAS). Server-side attributes it to the Google Ads campaign on Day 1 (correct channel, accurate ROAS).
Travel-specific event mapping
A single Booking Completed event carries your travel-specific fields — destination, dates, room type, booking value, number of travellers — and is simultaneously transformed for each vendor API.
GA4 receives a properly formatted purchase event with item arrays. Meta CAPI receives a Purchase event with content parameters and custom data. Each vendor gets exactly the payload they expect from a single source event.
- Travel-specific fields: destination, check-in/out, room type, travellers
- GA4 purchase event with structured item arrays
- Meta CAPI Purchase with custom travel data
- PII hashed or stripped before vendor delivery
- Passport numbers stripped at Org Data Layer
# Booking Completed Pipeline
# Travel-specific fields → multiple vendor deliveries
event: Booking Completed
source: web
org_data_layer:
schema: travel/booking-v2
pii:
email: sha256
phone: sha256
ip_address: mask
passport_number: strip
consent:
required: [analytics, marketing]
pipelines:
- vendor: google_analytics_4
event_name: purchase
mapping:
transaction_id: properties.booking_id
value: properties.booking_value
currency: properties.currency
items:
- item_id: properties.destination
item_name: properties.destination_name
item_category: properties.room_type
price: properties.booking_value
quantity: properties.travelers
- vendor: meta_conversions_api
event_name: Purchase
mapping:
event_id: properties.booking_id
value: properties.booking_value
currency: properties.currency
content_ids:
- properties.destination
content_type: hotel
content_name: properties.destination_name
custom_data:
check_in: properties.check_in_date
check_out: properties.check_out_date
travelers: properties.travelers
room_type: properties.room_typeAttribution models for long booking cycles
Travel research spans weeks and crosses multiple domains. Every ad platform claims the booking. Signal's configurable attribution models let you credit the channels that actually influenced the decision — not just the last click before checkout.
Last Click
Attribute the booking to the final touchpoint. Clean baseline for migration from platform-native attribution.
First Click
Credit the dreaming/inspiration phase — the ad that planted the destination idea weeks before booking.
Time Decay
Weight credit toward the booking phase while acknowledging the research that preceded it.
Position Based
40/20/40 — credit both the inspiration campaign and the final booking driver.
Linear
Equal credit across the 3-6 week research journey. No channel invisible.
Custom Rules
Define logic per product — flights, hotels, packages, ancillaries. Different journeys, different models.
Frequently asked questions
- Why do travel buyers cause attribution problems for client-side tracking?
- Travel research-to-booking windows run 30-90 days, with luxury and group travel often longer. Safari ITP's 7-day cap on JavaScript-set cookies means the gtag _ga, Meta _fbp, and TikTok _ttp cookies expire mid-research for half your visitors. By the time the customer returns to book, client-side identity is gone. 400-day server-set first-party cookies cover the full search-to-confirmation cycle including Safari users.
- How does cross-domain identity work for OTAs and brand-direct flows?
- Cross-domain identity resolution via OIDC + PKCE means a customer who researches on the OTA, then visits the airline's direct site, then completes booking via a confirmation email link, is stitched into one journey. The same anonymous_id flows across every domain in the booking path. Sign-in events on any surface link the anonymous_id to a loyalty programme user_id, after which all subsequent visits resolve to the same customer record.
- How does this work with our GDS and PSS booking systems?
- Booking events from your GDS (Sabre, Amadeus) or PSS (Navitaire, AirIT) flow into the same pipeline server-to-server. The same anonymous_id ties web research to mobile app browsing to call-centre bookings to confirmation emails. Final-bind attribution flows back to the original click ID — gclid, fbclid, ttclid, msclkid — even if the click was 60 days earlier. Loyalty programme matching joins the booking record to the customer's historical purchase patterns.
- Can it handle peak booking traffic during sales periods?
- The platform is single-tenant Kubernetes inside your own cloud, with horizontal scaling on every component. Capacity is sized for 10x your current peak by default. Black Friday, Boxing Day, summer-launch, and other peak booking periods are absorbed with predictable latency. Real customer events queue through Kafka with backpressure handling, so traffic spikes do not lose events.
- Does this support our loyalty programme integration?
- Yes. Loyalty events (tier change, point earn, point burn, status update) flow through the same pipeline as web and app events. The combined event stream feeds your CDP for audience segmentation (e.g. "high-tier loyalty customers who searched but did not book"), your warehouse for ML-driven offer modelling, and ad vendors for matched-list activation against loyalty members.
Related
Safari ITP Recovery
400-day first-party cookies for the long travel research-to-booking cycle.
Identity
Cross-domain identity resolution from OTA to airline-direct to confirmation email flows.
Mobile SDK
iOS and Android SDKs for travel apps — same identity as web and confirmation email.
Attribution
Cross-platform attribution that prevents OTA / direct / metasearch double-counting.
Attribute every booking to the right channel
See how Datafly Signal recovers the attribution data that expires before your guests book — and links their journey across every domain they touch.