Otel rezervasyonları GA4'te, misafirin siteden rezervasyon motoruna ve ödeme sayfasına kadar tek bir oturum olarak izlenmesi ve onaylı rezervasyonun tekil kimlik, değer ve para birimiyle kaydedilmesiyle ölçülür. Doğru kurulumda dört parça birlikte çalışır. Site ile harici motor arasında alanlar arası ölçüm, tarih aramasından ödemeye kadar ayrı tanımlanmış olaylar, rezervasyon kimliğini işlem kimliği olarak kullanan tek bir satın alma olayı ve iptalleri ayıran bir PMS mutabakatı. GA4 rezervasyonun nereden geldiğini gösterir, konaklamanın gerçekleşip gerçekleşmediğini ise PMS söyler.
Akdeniz kıyısındaki 96 odalı bir otelde çalışmaya başladığımda aynı misafir dört sistemde dört ayrı hikayeydi. Reklam paneli dönüşüm, motor onay, PMS konaklama, muhasebe gerçekleşen gelir gösteriyordu. Bazı raporlar aynı oda rezervasyonunu iki kez sayıyor, harici motora geçişte reklam izi kayboluyordu. Doğrudan rezervasyonların yüzde 25,9'u iptal edildiği halde panelde başarılı dönüşüm olarak duruyordu. İlk ay tek bir yeni kampanya açmadım, önce ölçümü yeniden kurdum. Bu yazıda o kurulumun olay sözlüğünü, alan listesini ve test planını paylaşıyorum.
Bir online mağazada satın alma ile gelir aynı anda oluşur. Otelde ise misafir bugün rezervasyon yapar, aylar sonra konaklar ve arada iptal edebilir. Buna otel sitelerinin teknik yapısı eklenince ölçüm beş noktada kırılır.
Bu kırılmalar giderilmeden kampanya değiştirmek, aynı hatayı daha iyi bir algoritmayla büyütmek demektir. Reklamların neden rezervasyon getirmediğini teşhis ederken ölçüm halkasına da bu yüzden ilk sırada bakıyorum. Teşhis tablosunun tamamı otel reklamlarının neden rezervasyon getirmediğini anlattığım yazıda.
Yöntem, motorun nasıl çalıştığına bağlıdır. Kurulumdan önce motor sağlayıcısına hangi yapıyı kullandığını ve kendi GA4 etiketinize izin verip vermediğini sorun.
| Motorun yapısı | Ölçüm yolu | Dikkat edilecek nokta |
|---|---|---|
| Sitenin içinde, aynı alan adında | Aynı GA4 etiketi yeterli | Olayların doğru adımda tetiklenmesi |
| Ayrı alan adında, etiketinize izin veriyor | Aynı ölçüm kimliği ve alanlar arası ölçüm ayarı | Geçişte bağlantı parametresinin korunması |
| Yalnızca kendi entegrasyonunu sunuyor | Sağlayıcının GA4 bağlantısı ya da sunucu bildirimi | Hangi olayların hangi alanlarla gönderildiği |
| Çerçeve içinde açılıyor | Sağlayıcıyla birlikte özel çözüm | Çerçevedeki olaylar ana sayfaya kendiliğinden geçmez |
Motor ayrı alan adındaysa alanlar arası ölçüm GA4'ün yönetici bölümünde, veri akışının etiket ayarlarında iki alan adı tanımlanarak açılır. Siteden motora giden bağlantıya otomatik bir parametre eklenir ve oturum kopmaz. Ödeme sağlayıcısının alan adı ise aynı bölümdeki istenmeyen yönlendirmeler listesine yazılır. Böylece kart doğrulamasından dönen misafir yeni bir kaynaktan gelmiş gibi görünmez. Sözlükte bunun karşılığı referral exclusion.
Vakadaki otelde sağlayıcının desteklediği alanlar arası ölçüm yöntemini, aynı GA4 veri akışını ve yönlendirmelerde bağlantı bilgisinin korunmasını tek tek test ederek kurduk. Kaynağı bilinmeyen satışı tahminle bir kampanyaya yazmadık.
Olay sözlüğü, misafirin her adımının hangi isimle, hangi alanlarla ve hangi amaçla kaydedileceğini yazan kısa bir belgedir. Pazarlama ekibi, motor sağlayıcısı ve geliştirici aynı belgeye bakar. Benim otellerde kullandığım temel liste şu.
| Misafirin adımı | Olay | Taşıdığı alanlar | Rolü |
|---|---|---|---|
| Tarih ve kişi araması | search ya da özel bir arama olayı | Giriş tarihi, gece sayısı, yetişkin ve çocuk sayısı | Talep sinyali |
| Müsait odaların listelenmesi | view_item_list | Oda tipleri, fiyat, para birimi | Müsaitlik görüldü |
| Müsait oda bulunamaması | Özel bir olay, örneğin no_availability | Tarih ve gece sayısı | Kaçan talep raporu |
| Oda ve fiyat planı seçimi | select_item | Oda tipi, fiyat planı, fiyat | Ara adım |
| Misafir bilgisi ve ödeme adımı | begin_checkout ve add_payment_info | Değer ve para birimi | Ara adım |
| Onaylı rezervasyon | purchase | Rezervasyon kimliği, değer, para birimi, oda kalemleri | Ana dönüşüm |
| İptal | refund | Rezervasyon kimliği ve iade tutarı | Net gelir düzeltmesi |
| Telefon ve WhatsApp tıklaması | Özel bir iletişim olayı | Sayfa ve dil | İletişim niyeti, satış değil |
Olay adlarını GA4'ün önerdiği satış olaylarıyla uyumlu tutmak, raporların hazır gelmesini sağlar. Özel alanlar için GA4'te olay parametresi tanımlanır. Hangi olayın hedef sayılacağı ise ayrı bir karardır. Ben otellerde yalnızca onaylı rezervasyonu önemli etkinlik olarak işaretliyorum. Ara adımlar hunideki kaybı görmek içindir, teklif algoritmasına hedef olarak verilmez. GA4 satış olaylarının genel yapısını GA4 ecommerce eventleri yazısında anlattım.
Müsait oda bulunamaması olayı çoğu kurulumda unutulur, oysa otel için en değerli raporlardan biridir. Hangi tarihlerde, hangi gece sayısında ve hangi pazardan gelen misafirin boş elle döndüğünü gösterir. Reklamın tanıttığı tarihte oda yoksa sorun reklamda değil, takvimdedir.
Satın alma olayı otelin en önemli verisidir ve her alanı bir karar besler. Eksik ya da yanlış bir alan, aylar sonra bütçe kararında hata olarak geri döner.
| Alan | Ne yazılır? | Neden önemli? |
|---|---|---|
| İşlem kimliği | Motorun oda rezervasyonu kimliği | Tekrar sayımı önler, PMS ile eşleşmeyi sağlar |
| Değer | Rezervasyonun beklenen oda geliri, kapora değil | Getiri ve teklif doğru değerle çalışır |
| Para birimi | Rezervasyonun alındığı para birimi | Dövizle gelen rezervasyon yanlış değerle yazılmaz |
| Oda tipi ve fiyat planı | Aile odası, iade edilemez plan gibi | Hangi teklifin sattığı görünür |
| Giriş tarihi ve gece sayısı | Konaklamanın tarihi ve süresi | Rezervasyon tarihi konaklama tarihinden ayrılır |
| Rezervasyon öncesi süre | Rezervasyon ile giriş arasındaki gün | Pazar ve sezon planı |
| Kişisel veri | Gönderilmez | İzin ve veri minimizasyonu |
Vakadaki otelde ön ödeme tutarı, rezervasyonun beklenen brüt değeri ve gerçekleşen oda geliri ayrı alanlarda tutuldu. Kapora hiçbir raporda toplam konaklama değeri gibi gösterilmedi. Grup ya da çok odalı rezervasyonlarda her oda rezervasyonu kendi kimliğiyle işlendi, çünkü iptal ve tarih değişikliği çoğu zaman tek oda için yapılır.
Aynı rezervasyonun iki kez sayılması, otel hesaplarında gördüğüm en yaygın ve en pahalı hatadır. Panel olduğundan iyi görünür, algoritma olmayan bir başarıyı büyütmeye çalışır. Dört kaynağı kontrol ediyorum.
Her gün motorun onay sayısı, GA4'teki satın alma sayısı ve Google Ads dönüşüm sayısı yan yana yazılıyor. Rakamların birebir tutması beklenmez, ama farkın nedeni bilinmelidir. Açıklanamayan fark, ölçümün bir yerde kırıldığını gösterir.
Telefon ya da WhatsApp tıklaması bir rezervasyon değildir, bir iletişim niyetidir. Bu tıklamayı satın alma hedefi yaparsanız algoritma tıklayan kişiyi bulmayı öğrenir, konaklayan misafiri değil. Vakadaki otelde tıklama hiçbir zaman satın alma hedefi yapılmadı. Görüşme ve onaylı rezervasyon satış ekibinin CRM kaydına, konaklama PMS kaydına bağlandı.
Akış şöyle kuruldu. Talebin kaynağı ilk temasta kaydedildi, CRM'deki satış fırsatı PMS'deki rezervasyonla kimlik üzerinden eşleşti ve konaklamanın gerçekleşip gerçekleşmediği takip edildi. Otelde PMS ve motor Cloudbeds'teydi, satış ekibinin talep akışı HubSpot'ta yönetildi ve ikisi n8n ile bağlandı. Yılın sonunda 2.200 tekil talepten 396 gerçekleşen oda rezervasyonu çıktı. Bu 396 rezervasyon 1.410 doğrudan rezervasyonun insan destekli kısmıydı ve online rezervasyonlara ikinci kez eklenmedi.
Mesajdan rezervasyona giden yolu, ilk yanıt süresini ve teklif akışını otellerde WhatsApp taleplerinin rezervasyona dönüştürülmesi konusunda ayrıca ele alıyorum.
GA4 rezervasyonun alındığı anı ölçer. Konaklamanın tamamlandığını ise yalnızca PMS bilir. Bu yüzden iptali iki yerde işliyorum. GA4'te iptal edilen rezervasyon için aynı işlem kimliğiyle bir iade olayı gönderiliyor. Google Ads'te iptal ve kısmi iadeler desteklenen süre içinde dönüşüm düzeltmesiyle geri bildiriliyor.
Ama hiçbir reklam platformunun, aylar sonra gerçekleşen konaklamayı eksiksiz yazacağını varsaymıyorum. Platformun eşleme süresinin dışında kalan sonuç PMS raporunda korunuyor ve bütçe kararları o tabloya göre veriliyor. Vakadaki otelde iptal oranı yüzde 25,9'dan yüzde 16,8'e indi, ama bu düşüşü görebilmemizin tek nedeni iptalin ayrı bir olay olarak ölçülmesiydi. Konunun bütün ayrıntısını iptal edilen rezervasyonların reklam sonuçlarına etkisi yazısında anlattım. Reklam paneli ile GA4'ün neden farklı rakam gösterdiğini de reklam paneli ve GA4 farkı yazısında açıkladım.
Ölçüm kurulduktan sonra bir rezervasyonun hangi kanala yazılacağı açıkça yazılmalı. Aksi halde her platform aynı satışı kendi başarısı olarak raporlar ve toplam, gerçek gelirden büyük çıkar.
Vakadaki otelde kural şuydu. PMS ile eşleşmiş, gerçekleşmiş her oda rezervasyonu, 30 gün içindeki son uygun ücretli tıklamaya atandı. Bir rezervasyon yalnızca bir kanala gitti. Görüntülemeye dayalı katkı ve platformların kendi atıf modelleri bu tablonun üstüne eklenmedi. Sonuçta 1.410 doğrudan rezervasyonun 840'ı ücretli kanallara yazıldı. Kalan 570 rezervasyonun hepsi SEO'ya da yazılmadı. Organik arama, Google ücretsiz rezervasyon bağlantıları, CRM, tavsiye ve kaynağı bilinmeyen kayıtlar ayrı tutuldu.
Bu kural tek doğru kural değil, ama yazılı ve tutarlı olması şart. Son tıklama modelinin neyi gösterip neyi göstermediğini atıf hataları yazısında tartıştım.
Otel sitesine Avrupa'dan gelen misafir, çerez izni konusunda Türkiye'deki misafirden farklı kurallara tabidir. İzin bandı, Consent Mode v2 ayarı ve sunucu tarafındaki bildirimler bu kurallara göre kurulmalı. Vakadaki otelde kampanya izleri izin sınırları içinde sunucu kaydına bağlandı. Analytics'e misafirin adı, iletişim bilgileri ya da serbest metin gönderilmedi. Hangi verinin hangi hukuki dayanakla işleneceği hukuk danışmanınızla birlikte verilecek bir karardır. Benim işim ölçümün bu sınırlar içinde çalışmasını sağlamak.
Ölçüm kurulumu, test edilmeden bitmiş sayılmaz. Her otelde aşağıdaki planı uyguluyorum. Test rezervasyonları PMS'de iptal ediliyor ve raporlardan ayrılıyor.
| Test | Nasıl yapılır? | Beklenen sonuç |
|---|---|---|
| Alanlar arası geçiş | Siteden motora geçip DebugView ile oturumu izlemek | Oturum ve kaynak kopmadan devam eder |
| Ödeme dönüşü | Kartla test ödemesi ve banka doğrulama sayfası | Dönüşte kaynak ödeme sağlayıcısı olmaz |
| Teşekkür sayfası | Onay sayfasını yenilemek ve geri dönmek | İkinci satın alma oluşmaz |
| Para birimi | Dövizle test rezervasyonu | Değer doğru para birimiyle gelir |
| Mobil ve dil | Telefonda İngilizce ve Almanca akış | Aynı olaylar aynı alanlarla tetiklenir |
| Reklam tıklaması | Test bağlantısıyla siteye girmek | Tıklama kimliği motorda korunur |
| İptal | Test rezervasyonunu iptal etmek | İade olayı ve PMS kaydı eşleşir |
| Günlük mutabakat | Motor, GA4 ve Google Ads sayılarını yan yana yazmak | Farkların nedeni bilinir |
Satın alma olayının testine dair genel kontrolleri purchase event testi yazısında topladım. Otelde fark, testin mutlaka mobilde, yabancı dilde ve dövizle de yapılmasıdır.
Bir otelde ölçüme kampanyadan önce başlıyorum. İlk hafta PMS'deki son 12 ayı oda tipi, kanal, kalış süresi, pazar, iptal ve rezervasyon öncesi süreyle eşliyor, motor ve ödeme sağlayıcısındaki kaynak kaybını test ediyorum. Ardından olay sözlüğünü yazıyor, motor sağlayıcısıyla birlikte kuruyor ve yukarıdaki test planını uyguluyorum. Ölçüm ancak günlük mutabakat temiz çıktığında kampanyalara hedef olarak bağlanıyor.
Ölçüm oturduktan sonra her rezervasyonun gerçek maliyeti hesaplanabilir hale gelir. Bu hesabı otellerde rezervasyon başına pazarlama maliyeti yazısında, kampanyaya nasıl bağlandığını otel Google Ads kampanyası ve Google Hotel Ads yazılarında anlattım. Ölçülen kaybın sitede nasıl kapatıldığını otel web sitesinde rezervasyon dönüşümü yazısında bulabilirsiniz. Bütün sistemin bir otelde nasıl çalıştığı otel dijital pazarlama vaka analizinde, çerçevesi otel pazarlaması rehberinde. Ölçümünüzü birlikte kurmak isterseniz otel dijital pazarlama ve reklam yönetimi sayfasından ücretsiz rezervasyon analizi isteyebilirsiniz.
Rezervasyonun nereden geldiğini ölçer, ama gerçekleşen geliri tek başına ölçemez. Misafir aylar sonra konaklar ya da iptal eder. Bu bilgi PMS'tedir. Doğru kurulumda GA4 kaynağı ve misafirin yolunu, PMS ise konaklamayı ve net geliri gösterir. İkisi rezervasyon kimliğiyle eşleşir.
Motor kendi GA4 etiketinize izin veriyorsa aynı ölçüm kimliği ve alanlar arası ölçüm ayarıyla site ve motor tek oturumda birleşir. Motor yalnızca kendi entegrasyonunu sunuyorsa sağlayıcının hangi olayları hangi alanlarla gönderdiği kontrol edilir. Her iki durumda da ödeme sağlayıcısının alan adı istenmeyen yönlendirmelere eklenmelidir.
Rezervasyonun beklenen oda geliri, kapora ya da ön ödeme değil. Değerin vergi dahil mi hariç mi olduğuna bir kez karar verilip her yerde aynı tanım kullanılmalı. Ek hizmet geliri ayrı tutulursa oda satışının performansı daha net okunur.
Silinmez. Aynı işlem kimliğiyle gönderilen iade olayı, gelir raporunda iptali düşer. Google Ads tarafında dönüşüm düzeltmesi ayrıca gönderilir. Net konaklama gelirinin ana kaynağı yine PMS raporu olmalı.
Kendiliğinden görünmez. Telefon tıklaması GA4'te iletişim niyeti olarak kaydedilir. Görüşmenin rezervasyona dönüşüp dönüşmediği CRM'de, konaklamanın gerçekleşip gerçekleşmediği PMS'te izlenir. Bu kayıtlar kaynakla birlikte tutulursa telefon satışları da reklama bağlanabilir.