Google formuláře jsou často využívané pro registrace na události nebo výzkumy a následně vloženy na web jako iframe. Stranou nechme diskusi o tom, zda by měl být Google Form takto využíván. Klienti ho mají rádi a uživatelé tyto formuláře klidně odesílají, takže s nimi problém nemám. Potíže ale začaly, když jsme chtěl formuláře měřit.
Do samotného iframu není možné zasáhnout, takže ani není možné používat postMessage pro informování okna o události a je nutné na to jít workaroundem. Našel jsem a začal využívat řešení postavané na tomto kódu z infoentropy.com. Kód dělá pouze to, že kontroluje počet načtení iframu. Pokud dojde k více než jednomu načtení, bere se to jako odeslání.
<script>jQuery(function () { window.loaded = 0; f = jQuery("iframe#googleframe"); f.load( function () { window.loaded++; if (window.loaded >= 2) { dataLayer.push ({ "event": "cfsubmitted", "contactform-type": "googleform" }); // zde by mohl být i kód pro přímé odeslání do GA, přes GTM je elegantnější. } }); });</script>
Implementace měření iframe
- Přiřadíte iframu ID googleframe.
- Vytvoříme v Google Tag Manager proměnnou pro typ kontaktního formuláře.
- Pomocí GTM vložíme Vlastní kód HTML a spouštění nastavíme při načtení konkrétních stránek, kde jsou Google Formuláře. V podstatě dojde k vložení dataLayer přímo z Google Tag Manager.
- Vytvoříme tag v GTM, který při události cfsubmitted vystřelí Google Analytics událost.
- V Google Analytics nyní vidíme událost, můžeme ještě vytvořit na základě události cíl.
Možnosti úpravy kódu
Tento kód je dobré ještě upravit, pokud to pro vás dává smysl:
- Přidat proměnnou odeslano s možnostmi 0/1. Nyní pokud by uživatel odeslal 3x, bude informace zaslána 3x do Google Analytics.
- Kód by bylo možné snadno upravit tak, aby měřil znovunačtení jakéhokoliv iframe a v dataLayer poté vracel id tohoto iframe.