1. Görsel Paket (Hero + Context)

2. Cross-domain takip nedir, otellerde neden gerekli?
Kısa cevap : Cross-domain takip; kullanıcı bir domainden diğerine geçtiğinde (ör. otelsite.com → bookingengine.com) aynı kullanıcı/oturumun tek yolculuk gibi izlenmesini sağlar. Otellerde rezervasyon motoru ayrı domaindeyse, cross-domain olmadan dönüşüm genellikle “yanlış kaynak” ile raporlanır ve self-referral sorunları oluşur. Bu yüzden SEM stratejisi içinde rezervasyon ölçümleme katmanında domain geçişinin korunması kritik hale gelir.
Otel dünyasında bu ihtiyaç çok yaygındır çünkü rezervasyon motorları: • ayrı bir domain (tamamen farklı) üzerinde olabilir, • ya da bir subdomain üzerinde çalışabilir (booking.site.com gibi), • bazen ise üçüncü taraf bir sağlayıcıya aittir.
GA4 tarafında amaç şudur: kullanıcı ana siteden rezervasyon motoruna geçerken Client ID / oturum bağlamı korunmalı; aksi halde GA4 bunu “yeni bir oturum” gibi görür ve attribution kayar. Google’ın GA4 cross-domain yaklaşımında önerilen yol, yapılandırmayı mümkün olduğunca Analytics arayüzü (Admin) üzerinden yapmak ve domainleri listelemektir. Cross-domain takibe başlamadan önce GA4 ve Tag Manager ile otel dönüşüm takibi mantığının net olması gerekir.
Otellerde cross-domain yoksa tipik 4 belirti
- Referral/self-referral artışı: booking engine domain’i “referral” kaynak gibi görünür.
- Direct/Other şişmesi: dönüşüm direct gibi raporlanır (kanal kredisi kayar).
- Dönüşüm yolu kopukluğu: kullanıcı ana site kampanyasından gelir ama dönüşüm başka kaynakta görünür.
- Ads optimizasyon hatası: dönüşümler yanlış kampanyaya yazıldığı için teklif stratejileri bozulur.
“Referral Exclusion yeter mi, cross-domain şart mı?”
Kısa mantık: • Referral exclusion, belirli domainlerden gelen trafiği “direct”e iter (bazı sorunları maskeler). • Cross-domain ise kullanıcı yolculuğunu doğru şekilde birleştirmeyi hedefler. Otel rezervasyon motoru senaryolarında genellikle cross-domain + doğru hariç tutmalar + test birlikte düşünülür. (Not: GA4’te arayüz ve isimler zamanla değişebilir; prensip aynı kalır.)
☑ Mini Check
- • Rezervasyon motoru ayrı domain/subdomain mi?
- • Dönüşümler “direct/other” altında şişiyor mu?
- • Booking engine domain’i referral/self-referral olarak görünüyor mu?
- • Kampanya performansı ile gerçek satış arasında tutarsızlık var mı?
Ne yapmalıyım?
- • Önce domain topolojinizi çıkarın (ana site + rezervasyon motoru + ödeme).
- • GA4’te cross-domain domain listesini planlayın.
- • Thank you sinyalini (sayfa/event) netleştirin.
- • Test planını yazmadan canlıya almayın.
3. Otellerde “web site + rezervasyon motoru” ayrımı nasıl çalışır?
Otel tarafında iki sistem vardır: • Pazarlama sitesi: oda/konsept içerikleri, kampanyalar, SEO landing’ler, CTA’lar • Rezervasyon motoru (booking engine): tarih/oda/kişi seçimi, fiyat, ödeme ve onay
Çoğu ekip “web sitesi GA4 kurulu, tamam” der; oysa rezervasyon motoru farklı bir domaindeyse asıl değerli event (purchase/booking_complete) o tarafta gerçekleşir. Bu yüzden ölçüm tasarımını iki parçaya ayırmak gerekir: pazarlama tarafında oturumun korunması, operasyon tarafında ise rezervasyon yönetiminde dönüşüm adımları ile tamamlanan booking bilgisinin doğru okunması.
Senaryo haritası (pratik)
- •Senaryo A — Aynı domain: • En kolay kurulum: thank you sayfası + GA4 purchase/event
- •Senaryo B — Subdomain: • Çoğu zaman cookie/domain ayarları daha yönetilebilir; yine de test şart
- •Senaryo C — Farklı domain (en yaygın kritik): • Cross-domain + linker mantığı + doğru hariç tutma + event tetikleme entegrasyonu

Developer + Pazarlama ortak dili (köprü)
Bu konu genelde iki ekip arasında “boşluk” oluşturur: • Pazarlama ekibi “Ads dönüşüm yok” der. • Dev ekip “tag var çalışıyor” der. • Sorun: oturum bütünlüğü + sinyal doğruluğu. Bu rehberin amacı da tam olarak bu boşluğu kapatmak: hem teknik hem pazarlama ekibi aynı akışa bakabilsin. Bunun için otel booking engine ölçümleme altyapısı web geliştirme ve entegrasyon tarafıyla birlikte ele alınmalıdır.
☑ Mini Check
- • Rezervasyon motoru URL yapısı (domain/subdomain) belirlendi mi?
- • Thank you sayfası var mı, URL deseni net mi?
- • “Rezervasyon tamamlandı” sinyali dataLayer/event olarak üretilebiliyor mu?
- • Test ortamı (staging) var mı?
Ne yapmalıyım?
- • Rezervasyon motorunda “tamamlanma” noktasını tek cümleyle tanımlayın.
- • Thank you sayfası yoksa “event tabanlı” sinyal planlayın.
- • Gelir parametrelerini (value/currency) kaynak sistemden alıp taşıma planı yapın.
- • Pazarlama ekibinin raporda görmek istediği KPI’yı netleştirin (rezervasyon + gelir).
4. GA4’te Cross-Domain kurulumu (domain listesi + temel prensip)
Kısa cevap : GA4 cross-domain ölçümü için, birlikte ölçmek istediğiniz domainlerde aynı GA4 tag ID (G-… aynı web stream) çalışmalı ve GA4 Admin’de cross-domain domain listesi tanımlanmalıdır.
GA4 tarafında cross-domain’in “çekirdeği” şudur: ana site ve rezervasyon motoru aynı property/web stream ile ölçülür ve GA4, domainler arası geçişi ilişkilendirir. Google’ın dokümantasyonunda da vurgulanan kritik nokta: cross-domain kapsamına alacağınız domainlerdeki tag’lerin aynı tag ID’yi kullanmasıdır.
Kurulum mantığı (arayüz değişebilir, prensip sabit)
Genel akış: 1. GA4 property → Data streams (Web) → ilgili stream 2. Tag/measurement ayarları içinde cross-domain bölümünde domainleri ekleme 3. Domain listesi: ana site + booking engine domain’i (ve gerekiyorsa ödeme adımı) 4. Kurulum sonrası test: geçişte attribution kopuyor mu?
Not: GA4’te “up to 100 conditions” gibi limitler ve ayar detayları olabilir; büyük portföylerde kural sayısını yönetmek gerekebilir.
Subdomain için her zaman cross-domain gerekir mi?
Genel prensip: subdomain’ler bazen aynı cookie domain yapısıyla daha kolay ölçülür; ama otel rezervasyon motoru “teknik olarak” ayrı bir uygulama olduğunda yine de self-referral benzeri davranışlar görülebilir. Burada doğru karar, “teoride gerekmez” değil, test sonucuna göre gerek var/yok demektir.
Linker mantığı (neden URL’ye parametre eklenir?)
Cross-domain çalıştığında bazı senaryolarda URL’lerde _gl gibi parametreler görebilirsiniz. Bu, domainler arası kimlik bilgisinin taşınmasına yardımcı olan “linker” mekanizmasının bir parçasıdır. Google Tag Platform dokümantasyonu, GA4 kullanıcılarının çoğunlukla yapılandırmayı Admin üzerinden yapmasını önerirken, cross-domain’in temelinde bu linker yaklaşımının olduğunu da açıklar.
Teknik not (kritik)
Sheet’teki teknik notla uyumlu şekilde: yanlış cross-domain kurulumu direct/other trafik şişmesine ve attribution sapmasına yol açabilir—bu yüzden test süreci “opsiyonel” değil, zorunludur.

☑ Mini Check
- • Ana site ve rezervasyon motoru aynı GA4 stream/tag ID ile ölçülüyor mu?
- • Cross-domain domain listesi yazıldı mı (tam domainler)?
- • Geçişte URL parametreleri ve oturum devamlılığı test edildi mi?
- • “Self-referral” veya direct şişmesi kontrol edildi mi?
Ne yapmalıyım?
- • Önce “tek GA4 stream / tek tag ID” standardını doğrulayın.
- • Domain listesini minimal tutun (gereken domainler).
- • Kurulum sonrası 3 test yapın: kampanyalı giriş → booking → thank you.
- • Raporlarda source/medium değişiyor mu kontrol edin.
5. GTM ile Thank You Page veya “booking_complete” event tetiklemesi
Bu bölüm, pratikte iki yöntemle ilerler:
Yöntem 1 — Thank you sayfası (page_view tabanlı) tetikleme
Eğer rezervasyon tamamlandığında kullanıcı belirli bir URL’ye düşüyorsa (ör. /confirmation veya /thank-you), GTM’de şu mantık çalışır: • Trigger: Page View (URL contains / equals …) • Tag: GA4 Event (ör. booking_complete veya GA4 recommended purchase) GTM’de GA4 event tag’leri ve tetikleyici seçimi, Tag Manager’ın resmi yardım akışına uygun şekilde yapılır: GA4 Event tag → Triggering alanı → uygun trigger seçimi → test (Preview) → GA4 DebugView kontrolü.
Avantaj: Basit, hızlı, çoğu tesiste yeterli. Risk: Thank you URL değişirse ölçüm kırılır; ayrıca bazı motorlar SPA/AJAX akış kullanabilir.
Yöntem 2 — Event tabanlı tetikleme (dataLayer / custom event)
Thank you sayfası yoksa veya sayfa değişmeden “modal/step” ile tamamlanıyorsa, daha sağlıklı yöntem: • Rezervasyon motoru “tamamlandı” anında dataLayer.push({ event: "booking_complete", ... }) gönderir • GTM: Custom Event trigger (booking_complete) • GA4 Event tag: parametrelerle birlikte gönderilir Bu yöntem, gelir (value/currency), transaction_id gibi verilerin taşınması için de daha uygundur. Burada rezervasyon motoru için data layer tasarımı kritik hale gelir.

Örnek dataLayer şablonu (otel rezervasyon odaklı)
Aşağıdaki örnek “şablondur”; alan isimleri rezervasyon motorunuza göre uyarlanır: window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "booking_complete", transaction_id: "RZV-123456", value: 1250.00, currency: "TRY", nights: 4, adults: 2, children: 0, room_type: "Deluxe Sea View", rate_plan: "Early Booking", booking_engine_domain: "booking.example.com" }); Neden bu alanlar? • GA4 gelir raporlaması için çoğu senaryoda transaction_id + value + currency gibi temel parametreler kritik kabul edilir. • Ek alanlar (nights, room_type, rate_plan) pazarlama analizi için güçlü segmentler üretir; ama önce “temel doğruluk” sağlanmalıdır.
Test (en kritik adım)
Kurulumdan sonra 3 aşama test yapmadan canlıya geçmeyin: 1. GTM Preview: Trigger çalıştı mı, tag ateşledi mi? 2. GA4 DebugView: Event GA4’e düştü mü? 3. Rapor testi: “booking_complete/purchase” event’i normal kullanıcı akışında doğru sayılıyor mu?
☑ Mini Check
- • Thank you URL deseni net mi? (yöntem 1)
- • SPA/AJAX akış var mı? (yöntem 2 gerekir mi?)
- • dataLayer event’i booking_complete anında kesin tetikleniyor mu?
- • DebugView’de parametreler (value/currency/transaction_id) geliyor mu?
Ne yapmalıyım?
- • Önce en sağlam “tamamlandı” sinyalini seçin (URL mi event mi).
- • Gelir parametrelerini eklemeden önce event’in tekil ateşlendiğini doğrulayın.
- • DebugView’de parametreleri kontrol edin, sonra Ads import’a geçin.
- • Değişiklikleri dokümante edin (hangi URL/event, hangi alanlar).
6. Parametreler ve rezervasyon gelirini event’e eklemek
Kısa cevap : Geliri doğru raporlamak için event’inizde en azından transaction_id, value ve currency alanlarını taşıyın; bunlar eksikse GA4’te “revenue yok” veya eksik görünebilir. Bu çekirdek veri seti, booking engine gelir ölçümü tarafında GA4 ve Google Ads doğrulamasının başlangıcıdır.
Bu noktada iki yaklaşım var:
Yaklaşım A — GA4 recommended purchase event’i (e-ticaret mantığı)
GA4 e-ticaret ölçümünde purchase ve ilgili parametreler yaygın kullanılır. “Rezervasyon” da sonuçta bir “satın alma” gibi davranabildiği için, booking complete anında purchase event’i göndermek birçok otelde mantıklıdır. Minimum çekirdek: • transaction_id • value • currency
Yaklaşım B — booking_complete custom event + temel parametreler
Bazı ekipler otel özelinde isimlendirme ister: booking_complete. Bu da gayet olabilir; önemli olan tutarlı isim ve parametrelerin doğru taşınmasıdır.
Otel rezervasyonuna özel pratik parametre seti
Aşağıdaki tablo “kapsam + fayda” mantığıyla iyi bir başlangıçtır: Not: Event parametreleri ve raporlanabilirlik GA4’te “event parameters” mantığıyla yönetilir; hangi parametrenin raporda dimension/metric olacağı kurulumunuza bağlıdır. Bu parametrelerin operasyon tarafındaki kayıtla eşleşmesi için PMS entegrasyonu ile rezervasyon verisini doğrulamak da önemlidir.
| Parametre | Tür | Örnek | Neden gerekli? | Öncelik |
|---|---|---|---|---|
| transaction_id | string | RZV-123 | Tekil rezervasyon; çifte sayımı önler | Yüksek |
| value | number | 1250.00 | Gelir metriği | Yüksek |
| currency | string | TRY/EUR | Gelirin doğru para birimi | Yüksek |
| nights | number | 4 | Konaklama uzunluğu analizi | Orta |
| room_type | string | Deluxe | Segmentleme | Orta |
| rate_plan | string | Early Booking | Kampanya/teklif analizi | Orta |
| booking_engine_domain | string | booking... | Debug/teşhis | Düşük |
Sık hata listesi (otel özelinde)
- •currency yok: value var ama revenue görünmez/eksik olur.
- •transaction_id yok: duplicate sayım riski artar.
- •İki kez ateşleme: thank you + event aynı anda çalışır, double booking olur.
- •Test yapılmaması: “çalışıyor” sanılır, rapor bozulur.
Competitor gap’i kapatan mini bölüm (fark yaratan)
Çoğu kaynak cross-domain’i teorik anlatır; otel ölçümünde asıl fark şu “mini çerçeve” ile gelir: Otel Rezervasyon Ölçüm Çerçevesi (3 katman): 1. Oturum bütünlüğü: cross-domain + linker mantığı doğru mu? 2. Sinyal doğruluğu: booking_complete tekil mi, doğru anda mı? 3. Değer doğruluğu: value/currency/transaction_id doğru mu? Bu üç katmandan biri bile eksikse, yönetim raporları sapar ve Ads optimizasyonu “yanlış hedef” üzerinde çalışır.

☑ Mini Check
- • purchase/booking_complete event’i tekil mi (double fire yok)?
- • transaction_id + value + currency geliyor mu?
- • nights/room_type gibi parametreler doğru kaynaktan mı geliyor?
- • DebugView + rapor karşılaştırması yapıldı mı?
Ne yapmalıyım?
- • Önce çekirdeği kur: transaction_id + value + currency.
- • Sonra otel segment parametrelerini ekle (nights, room_type).
- • Double fire riskini “tek yöntem” kuralıyla azalt (URL ya da event).
- • 1 haftalık izleme planı yap (direct/referral anomali var mı?).
7. Uygulama sırası (önerilen) – “Kurulum Sprint’i”
- Domain haritası (ana site + booking engine + ödeme)
- GA4 cross-domain domain listesi + doğrulama
- Thank you sinyali seçimi (URL/event)
- GTM tetik + GA4 event tag (Preview test)
- Parametreler (transaction_id/value/currency)
- DebugView + rapor doğrulama (kapanış)
8. Cross-Domain ve Thank You Event Örnek Kod Şablonu (Download Asset)
Cross-Domain ve Thank You Event Örnek Kod Şablonunu İndir — SEM / Rezervasyon Motoru Takibi (v1.0)
Bu şablon, otel rezervasyon motoru farklı domain/subdomain’deyken cross-domain ölçüm + thank you event tetiklemesini “en az sürtünmeyle” hayata geçirmenize yardımcı olur. Developer’ın dataLayer/event üretimini standartlaştırır; pazarlama ekibinin ihtiyaç duyduğu çekirdek gelir parametrelerini (transaction_id, value, currency) net bir formatta taşır.
Kim Kullanır?
Otel web geliştirme ekibi + ölçümden sorumlu pazarlama/performans uzmanı.
Nasıl Kullanılır?
- Rezervasyon motorunda “tamamlandı” anında aşağıdaki dataLayer şablonunu üretin.
- GTM’de Custom Event trigger + GA4 Event tag kurup parametreleri eşleyin.
- GTM Preview + GA4 DebugView ile doğrulayın; sonra rapor/Ads import kontrolüne geçin.
Ölçüm & Önceliklendirme (Kısa sürüm)
- ▢ ✅ GTM Preview: trigger yakalandı, tag ateşledi
- ▢ ✅ GA4 DebugView: event göründü
- ▢ ✅ Parametreler dolu: transaction_id, value, currency
- ▢ ✅ Double fire yok (tek event)
- ▢ ✅ Raporlarda booking engine referral/self-referral anomali yok
- ▢ ✅ Cross-domain geçişte oturum bölünmüyor (test senaryosu)
PDF içinde: Problem→Kök Neden→Çözüm tablosu + 14 gün sprint planı + önce/sonra KPI tablosu
9. Kapanış – “Doğru kurulum yoksa optimizasyon yok”
Yanlış kurgulanmış cross-domain ve thank you event yapıları, gelir ve rezervasyon raporlarında ciddi sapmalara yol açabilir. Bu yüzden hedefiniz “bir event görmek” değil; doğru oturumu doğru değerle ölçmektir (ve bunu testle kanıtlamaktır).
Bu yapıyı sahada netleştirmek için oteller için dönüşüm takibi ve Tag Manager kurulumu sayfasına geçebilir, karar öncesinde dönüşüm takibi ve Tag Manager hakkında sık sorulan sorular bölümünü inceleyebilirsiniz.

Bir Sonraki Adım
Attribution sapması yaşayan oteller ve ölçümden sorumlu ekipler için, doğru domain + event tasarımını netleştirir.
Sık Sorulan Sorular
Cross-domain takip nedir, otellerde neden gerekli?▾
Rezervasyon motoru farklı bir domainde ise dönüşüm nasıl ölçülür?▾
Thank you sayfası event’i nasıl kurulur?▾
Rezervasyon tutarı (gelir) event’e nasıl eklenir?▾
Cross-domain yanlış kurulursa ne olur?▾
İlgili İçerikler
- → cross-domain rezervasyon takibi
- → SEM stratejisi içinde rezervasyon ölçümleme
- → GA4 ve Tag Manager ile otel dönüşüm takibi
- → otel booking engine ölçümleme altyapısı
- → rezervasyon motoru için data layer tasarımı
- → booking engine gelir ölçümü
- → rezervasyon yönetiminde dönüşüm adımları
- → PMS entegrasyonu ile rezervasyon verisini doğrulamak
- → dönüşüm takibi ve Tag Manager hakkında sık sorulan sorular
İlgili Yazılar
