Form gönderimi, web sitelerindeki en kritik dönüşüm noktalarından biri. Lead toplama, e-bülten kayıt, iletişim, sipariş, anket, her biri bir dönüşüm. Ancak form platformlarının çeşitliliği (Typeform, Tally, HubSpot, Shopify Forms, iframe embed formlar) dönüşüm takibini karmaşık hale getiriyor.
Bu rehber, form dönüşüm takibinin temel yapı taşlarını bir araya getiriyor: event mekanizmaları, GTM entegrasyonu, veri zenginleştirme, webhook tabanlı aktarım ve CRM entegrasyonu. Her platform için detaylı uygulama rehberlerine de buradan ulaşabilirsiniz.
Form Dönüşüm Takibinin Temelleri
Form dönüşüm takibi, bir form gönderimini analitik araçlarına (GA4, Google Ads, vb.) ve CRM sistemlerine doğru şekilde bildirme sürecidir. Bu sürecin 3 temel bileşeni vardır:
- Event yakalama: Form gönderildiğinde bir event tetiklenmeli
- Veri zenginleştirme: Event ile birlikte kaynak, kampanya ve kullanıcı bilgisi taşınmalı
- Aktarım: Event ve veriler analitik/CRM sistemlerine iletilmeli
Event Mekanizmaları
Form platformları event’leri farklı yöntemlerle dış dünyaya iletir. Doğru yöntemi seçmek, güvenilir takip için kritik.
dataLayer.push()
Google Tag Manager ile çalışan standart yöntem. Form platformu doğrudan dataLayer.push() çağrısı yapar, GTM bu event’i yakalar:
window.dataLayer = window.dataLayer || [];
dataLayer.push({
event: "form_submitted",
formId: "contact-form",
formName: "İletişim Formu",
});
Kullanan platformlar: Typeform (TypeformSubmit), Tally (Tally.FormSubmitted, GA4 entegrasyonu ile)
Avantaj: GTM doğrudan yakalayabilir, ek kod gerekmez.
window.postMessage
iframe veya embed formlar için en güvenilir yöntem. Form platformu iframe içinden parent sayfaya mesaj gönderir:
// iframe içinden (form platformu)
window.parent.postMessage(
{
event: "formSubmitted",
formId: "abc123",
},
"*",
);
// Parent sayfada (listener)
window.addEventListener("message", function (event) {
if (event.origin === "https://form-platform.com") {
dataLayer.push({ event: "iframe_form_submitted" });
}
});
Kullanan platformlar: Tally (ücretsiz, tüm embed’lerde), HubSpot Conversations (chat widget)
Avantaj: Üçüncü taraf çerez kısıtlamalarından etkilenmez, cross-domain sorunlarını aşar.
Detaylı uygulama için GTM ile iFrame Form Etkinliklerini Yakalamak rehberine bakabilirsiniz.
Shadow DOM Event Listener
Bazı platformlar formları Shadow DOM içinde render eder. Bu durumda standart DOM selector’ları çalışmaz, shadowRoot üzerinden erişim gerekir:
const formEmbed = document.querySelector("form-embed");
const shadow = formEmbed.shadowRoot;
if (shadow) {
const form = shadow.querySelector("form");
form.addEventListener("submit", function () {
dataLayer.push({ event: "shopify_form_submitted" });
});
}
Kullanan platformlar: Shopify Forms
Webhook
Form gönderiminde HTTP POST isteği ile JSON payload gönderilir. Server-side tracking için en doğru yöntem:
{
"eventType": "FORM_RESPONSE",
"data": {
"formId": "FORM_ID",
"fields": [
{ "label": "Email", "value": "user@example.com" },
{ "label": "utm_source", "type": "HIDDEN_FIELDS", "value": "google" }
]
}
}
Kullanan platformlar: Tally (ücretsiz, sınırsız), Typeform, HubSpot
Avantaj: Tarayıcı bağımsız, ad blocker’lardan etkilenmez, güvenilir.
HubSpot _hsq API
HubSpot’a özel tracking API. _hsq global nesnesi üzerinden sayfa görüntüleme, kullanıcı tanımlama ve özel olay takibi:
var _hsq = (window._hsq = window._hsq || []);
_hsq.push(["trackEvent", { id: "form_submitted", value: 1 }]);
GTM Entegrasyonu
Tüm form platformlarında GTM entegrasyonu benzer pattern’i takip eder:
- Event yakalama: dataLayer, postMessage veya Shadow DOM yöntemiyle
- Trigger oluşturma: GTM’de Custom Event trigger
- Tag oluşturma: GA4 Event, Google Ads Conversion veya diğer platform etiketleri
GTM Custom HTML ile Evrensel Listener
Birden fazla form platformu kullanıyorsanız, tek bir GTM Custom HTML etiketi ile tümünü yakalayabilirsiniz:
<script>
(function () {
window.addEventListener("message", function (event) {
var trustedOrigins = ["https://tally.so", "https://form.typeform.com"];
if (trustedOrigins.indexOf(event.origin) === -1) return;
var eventName = null;
if (event.data && event.data.event === "Tally.FormSubmitted") {
eventName = "tally_form_submitted";
} else if (event.data && event.data.event === "TypeformSubmit") {
eventName = "typeform_form_submitted";
}
if (eventName) {
window.dataLayer.push({ event: eventName });
}
});
})();
</script>
Origin kontrolü güvenlik açısından kritiktir. Trusted origins listesine yalnızca güvendiğiniz form platformlarının domain’lerini ekleyin.
Veri Zenginleştirme
Form gönderiminin kendisi yeterli değil. Hangi kaynaktan, hangi kampanyadan, hangi sayfadan geldiğini de bilmeniz gerekir.
Hidden Fields
Form akışında görünmeyen ancak URL parametreleri ile değer alan alanlar:
https://form-platform.com/form/ID?source=email&campaign=q1-launch
Tüm büyük form platformları hidden fields destekler. Tally ve Typeform’da embed formlar için parent sayfanın URL parametreleri otomatik olarak forma aktarılır.
UTM Parametreleri
Reklam kampanyalarından gelen trafiğin form dönüşümlerine atfedilmesi:
https://example.com/kayit?utm_source=google&utm_medium=cpc&utm_campaign=marka
UTM parametreleri hidden fields üzerinden form platformuna taşınır. CRM’e aktarırken bu alanları eşlemeyi unutmayın.
Webhook ile Server-Side Tracking
Client-side tracking’in zayıf olduğu senaryolarda (ad blocker, üçüncü taraf çerez kısıtlamaları, consent gereksinimleri) webhook tabanlı server-side tracking daha güvenilir sonuç verir.
Webhook Güvenliği
Webhook endpoint’lerinizi korumak için:
- Signature doğrulama: Platform’un gönderdiği HMAC imzasını kontrol edin
- Origin kontrolü: IP whitelist veya token doğrulama kullanın
- Idempotency: Aynı event’in tekrar işlenmesini engelleyin
- Timeout: 10 saniye içinde 2XX yanıt dönün
Webhook vs Client-Side Tracking
| Kriter | Client-Side (GTM) | Server-Side (Webhook) |
|---|---|---|
| Güvenilirlik | Ad blocker’lardan etkilenir | Tarayıcı bağımsız |
| Gerçek zamanlılık | Anında | Platform retry sürelerine bağlı |
| Veri zenginliği | Tarayıcı verileri mevcut | Sadece form verileri |
| Consent | Consent gerektirir | Form gönderimi = consent |
| Kurulum | GTM container yeterli | Endpoint geliştirme gerekir |
En sağlıklı yaklaşım, her iki yöntemi birlikte kullanmaktır: GTM ile gerçek zamanlı tracking, webhook ile veri doğrulama ve CRM aktarımı.
CRM Entegrasyonu
Form verilerinin CRM’e aktarılmasında 3 yöntem kullanılır:
- Doğrudan entegrasyon: Platform’un yerleşik CRM bağlantısı (ör. Typeform-HubSpot)
- Otomasyon araçları: Zapier, Make, n8n ile bağlantı
- Webhook + API: Doğrudan CRM API’sine veri gönderme
Kaynak bilgisinin (UTM, hidden fields) CRM’e doğru aktarılması için alan eşleştirmelerinin (field mapping) eksiksiz yapılması gerekir. Eşleme yapılmazsa veriler (not set), undefined veya direct olarak işaretlenir.
Platform Rehberleri
Her platform için detaylı kurulum ve uygulama rehberleri:
- Typeform Dönüşüm Takibi Rehberi: dataLayer event’leri, GTM entegrasyonu, cross-domain tracking, hidden fields, HubSpot CRM entegrasyonu
- Tally Dönüşüm Takibi Rehberi: postMessage event’leri, webhook kurulumu, hidden fields, UTM tracking, Zapier/Make ile CRM aktarımı
- HubSpot Dönüşüm Takibi Rehberi: _hsq API, GA4/GTM entegrasyonu, AJAX form gönderimi, Conversations chat tracking
- Shopify Forms Tracking: Shadow DOM ile form event yakalama, localStorage verileri
- GTM ile iFrame Form Etkinliklerini Yakalamak: postMessage ile iframe tracking, GTM Custom HTML listener, cross-domain dikkat noktaları
Platform Karşılaştırması
| Özellik | Typeform | Tally | HubSpot | Shopify Forms |
|---|---|---|---|---|
| dataLayer event | Evet | Pro | _hsq API | Shadow DOM |
| postMessage | Evet | Evet (ücretsiz) | Chat widget | Hayır |
| Webhook | Evet | Evet (ücretsiz) | Evet | Hayır |
| Hidden fields | Evet | Evet (ücretsiz) | Form API | Hayır |
| UTM tracking | Evet | Hidden fields ile | UTM + _hsq | Hayır |
| Doğrudan CRM | HubSpot | Hayır | Kendisi CRM | Shopify CRM |
| Zapier/Make | Evet | Evet | Evet | Evet |
| GTM (embed) | Pro | Pro (code injection) | Pages entegrasyonu | Theme kodu |
Checklist
Form dönüşüm takibi kurulumunu tamamladıktan sonra kontrol edin:
- Form gönderiminde GTM dataLayer’da event görünüyor mu?
- Hidden fields / UTM parametreleri form gönderiminde taşınıyor mu?
- Cross-domain tracking aktif mi? Referral exclusion yapıldı mı?
- CRM’de yeni contact kaynak bilgisi (source) doğru geliyor mu?
- Webhook (varsa) başarılı teslim ediyor mu? İmza doğrulaması aktif mi?
- Consent yönetimi GDPR/ePrivacy gereksinimlerini karşılıyor mu?
- Ad blocker aktifken webhook fallback çalışıyor mu?
- 01 Form platformları event'leri üç yöntemle iletir: dataLayer.push() (Typeform, Tally Pro), postMessage (Tally, iframe formlar) ve webhook (server-side)
- 02 Hidden fields ve UTM parametreleri ile form gönderimlerine kaynak, kampanya ve kullanıcı bilgisi eklenir
- 03 Client-side (GTM) ve server-side (webhook) tracking birlikte kullanıldığında en güvenilir sonuç elde edilir
- 04 Webhook tabanlı tracking ad blocker ve üçüncü taraf çerez kısıtlamalarından etkilenmez
- 05 Cross-domain tracking, iframe embed ve consent yönetimi her form platformunda ayrı ayrı ele alınmalıdır
+ Form dönüşüm takibinin temel bileşenleri nelerdir?
Üç temel bileşen: event yakalama (form gönderiminde bir event tetiklenmeli), veri zenginleştirme (kaynak, kampanya ve kullanıcı bilgisi event ile birlikte taşınmalı) ve aktarım (event ve veriler analitik/CRM sistemlerine iletilmeli).
+ dataLayer, postMessage ve webhook arasındaki fark nedir?
dataLayer.push() GTM ile doğrudan çalışır ve ek kod gerektirmez. postMessage, iframe embed formlarda ana sayfaya event gönderir ve üçüncü taraf çerez kısıtlamalarını aşar. Webhook ise server-side çalışır, ad blocker'lardan etkilenmez ancak endpoint geliştirmeyi gerektirir.
+ Webhook ve client-side tracking birlikte mi kullanılmalı?
Evet. GTM ile client-side tracking anlık dönüşüm bildirimi sağlar. Webhook ile server-side tracking ise ad blocker, consent kısıtlaması ve çerez sorunlarından bağımsız çalışır. İkisini birlikte kullanmak veri doğrulaması ve CRM aktarımı için en sağlıklı yaklaşımdır.
+ iframe embed formlarda dönüşüm takibi neden sorunlu olur?
iframe içindeki formlar farklı bir domain'de çalıştığında üçüncü taraf çerez kısıtlamaları (Safari ITP, Firefox ETP) nedeniyle GTM/GA4 tracking çalışmayabilir. postMessage yöntemi bu sorunu aşar çünkü event ana sayfaya iletilir ve cookie bağlamı korunur.