Enhanced Conversions for Leads — nastavení přes Google Tag Manager
Když se obchod neuzavírá na webu, ale v CRM za 2 týdny, běžné Enhanced Conversions nepomůžou. Krok za krokem nastavení EC for Leads přes GTM s importem offline konverzí.
Proč je to vůbec potřeba
Typická situace pro B2B a lead gen:
- Člověk klikne na reklamu v Google → nechá na webu poptávku „chci propočet“
- 4 dny mu obchodník volá, připravuje nabídku, posílá cenovou nabídku
- Za 2 týdny klient podepisuje smlouvu — buď v kanceláři, nebo v CRM, ale ne na webu
Google Ads vidí jen první krok — odeslání formuláře. Smart Bidding se optimalizuje na „poptávku“ jako na konečný cíl. Jenže levná poptávka ≠ uzavřený obchod. Algoritmus se učí přinášet hodně levných leadů, ze kterých se uzavře řekněme každý 8. A tobě to připadá, že se reklama stala efektivní, i když peníze bereš jen z každého osmého.
Dřív se tenhle problém řešil přes Offline Conversion Import (OCI) — z CRM jsi vyexportoval seznam uzavřených obchodů s GCLID a nahrál ho do Google Ads. Jenže GCLID se často ztrácí: Safari ITP maže cookies, blokátory ořezávají parametry, UTM se při přesměrováních trhá. Match rate klesal na 40–50 %.
Enhanced Conversions for Leads tenhle přístup nahrazuje. Rozdíl je takový: místo nestabilního GCLID posíláš do Google hashovaný e-mail nebo telefon ve chvíli vyplnění formuláře. Později, až se obchod uzavře, vyexportuješ z CRM closed deals se stejným e-mailem. Google spáruje dva body a obnoví řetězec „klik → poptávka → uzavřený obchod“.
EC for Web vs EC for Leads — neplést
Jsou to dvě různé věci. Před nastavením se ujisti, že potřebuješ právě variantu Leads.
EC for Web EC for Leads Konverze proběhne na webu (nákup v e-shopu) Konverze proběhne offline (uzavření v CRM, hovor, podpis smlouvy) Doplňuje stávající tag Google Ads Conversion Tracking — přidává user data ke stejné události Samostatný tag Google Ads User-Provided Data Event+ pozdější import offline konverzíFunguje hned po nastavení Funguje jen když pravidelně exportuješ closed deals E-commerce B2B, lead gen, high ticket, kurzy, zdravotnictví, stavebnictví Pokud máš e-commerce — jdi do předchozího článku o EC for Web. Tenhle je pro lead generation s dlouhým cyklem.
Kdy použít právě EC for Leads
- Lead magnet → nurturing → uzavření v CRM
- B2B, kde od poptávky ke smlouvě uplyne 1–8 týdnů
- Agent-based sales: klient nechá poptávku, obchod uzavírá obchodník
- High ticket: kurz, zdravotní služba, stavební služba, auto
V praxi to dává:
- Smart Bidding se optimalizuje na uzavřené obchody, ne na poptávky → míň „odpadních“ leadů
- +15–30 % přesnost atribuce — protože párování jde přes e-mail/telefon, ne přes GCLID
- Průhledné LTV trychtýře — vidíš od kliku k penězům, ne k odeslání formuláře
Co musíš mít před začátkem
- ✅ Google Ads účet s konverzí typu Lead (ne Purchase, ne Website Action — právě Lead)
- ✅ Google Tag Manager na webu
- ✅ CRM nebo tabulku, kam se zapisují uzavřené obchody s e-mailem klienta (tohle je kritické — bez toho EC for Leads nedává smysl)
- ✅ Na thank-you stránce (nebo hned po odeslání formuláře) leží v
dataLayerdata klienta — e-mail povinně, telefon ideálně - ✅ Přijaté Customer Data Terms v Google Ads — obvykle to dělá majitel účtu, ne agentura
Kolik to zabere času
Samotné nastavení v GTM — 30–40 minut. Plus zvlášť je potřeba nastavit import offline konverzí z CRM — to je dalších 1–2 hodiny (Google Ads Data Manager nebo Zapier). První data v Diagnostics uvidíš za 24–72 hodin poté, co přes web projde ≥20 konverzí.
Jak to funguje — schéma na 1 minutu
- Uživatel klikne na reklamu → Conversion Linker v GTM uloží GCLID do first-party cookie
- Uživatel vyplní formulář → na thank-you stránku se pushne
dataLayers e-mailem/telefonem - Tag Google Ads User-Provided Data Event se spustí → zahashuje e-mail lokálně a pošle ho do Google spolu s GCLID
- Google hash dočasně uloží na své straně a čeká na signál o uzavřeném obchodu
- Obchodník 1–8 týdnů pracuje s leadem, obchod se uzavře v CRM
- Ty vyexportuješ z CRM closed deals s poli:
email,conversion_name,conversion_time,conversion_value - Nahraješ je do Google Ads přes Data Manager / Zapier / API
- Google spáruje: „Aha, tenhle e-mail před týdnem klikl na reklamu a nechal poptávku“ → přiřadí konverzi k původnímu kliku
Krok 1. Přijmout Customer Data Terms v Google Ads
1. Jdi do Goals (ne do Conversions!)
Jdeš do Google Ads → ikona „klíč“ (Tools and settings) → sekce Measurement → Goals.
Je to jiná sekce než Conversions. Goals je právě to místo, kde se EC for Leads aktivuje.
2. Zapni Enhanced Conversions for Leads
V Goals najdi blok Enhanced conversions for leads. Přepni toggle na ON.
3. Vyber metodu Google Tag Manager
Objeví se výběr metody implementace. Tři varianty:
- Google Tag (gtag.js) — pokud nemáš GTM
- Google Tag Manager — naše varianta
- Google Ads API — server-side, není tématem tohohle článku
4. Přečti si a přijmi Customer Data Terms
Google ukáže text policy. Přečteš → zaškrtneš „I agree to the Customer Data Terms“ → Save. Status se má změnit na Accepted.
Co tím potvrzuješ: máš zákonný důvod předávat data uživatele (consent ve formuláři nebo legitimate interest) a v zásadách ochrany osobních údajů je napsáno, že data mohou být předávána do Google v hashované podobě.
⚠️ Když Terms nejdou přijmout
„If you aren’t able to view terms, it’s because your account conversions are tracked by a manager account“ — znamená to, že konverze jsou řízené z MCC. V takovém případě je potřeba Terms přijmout z rodičovského MCC účtu, ne z dceřiného. Jdi do MCC → Goals → Accept Terms. Tohle často musí udělat právě majitel byznysu, agentura bez přístupu to nezvládne.
Krok 2. Conversion Linker v GTM
Conversion Linker detekuje GCLID v URL a ukládá ho do first-party cookie domény. Bez něj Google nedokáže přiřadit hash e-mailu ke konkrétnímu kliku na reklamu.
Pokud už máš nasazený Google Ads Conversion Tracking — Conversion Linker tam nejspíš už je. Zkontroluj to v Tags. Pokud tam není — vytvoř ho:
1. Vytvoř Conversion Linker tag
- GTM → Tags → New
- Tag Type: Conversion Linker
- Trigger: All Pages
- Název:
Conversion Linker - Save
Krok 3. Zkontroluj dataLayer po odeslání formuláře
Než začneš lézt do nastavení tagu — ujisti se, že se po odeslání formuláře data klienta reálně pushnou do dataLayer. Pokud tam nejsou — dál není co dělat.
1. Otevři svůj web v Chrome DevTools
Jdi na stránku s poptávkovým formulářem. F12 (nebo Cmd+Option+I na Macu) → záložka Console.
2. Vyplň testovací poptávku
Svým reálným e-mailem a telefonem (později se dá z CRM smazat). Zmáčkneš Submit.
3. Podívej se na dataLayer
Do Console napiš: window.dataLayer → Enter. Najdi v odpovědi objekt s událostí po odeslání. Žádoucí formát:
{
event: "lead_submit",
user_data: {
email_address: "[email protected]",
phone_number: "+380501234567",
address: {
first_name: "Ivan",
last_name: "Petrenko",
postal_code: "01001",
country: "UA"
}
}
}
Názvy polí můžeš mít jiné — to je v pořádku. Hlavní je, aby e-mail byl povinně, telefon ideálně. Zapamatuj si přesné klíče — budeš je potřebovat v Kroku 5.
⚠️ Když v dataLayer data nejsou
Znamená to, že vývojář push neudělal. Dej mu tenhle úryvek — je potřeba ho vložit do handleru úspěšného odeslání formuláře (nebo na thank-you stránku):
window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "lead_submit", user_data: { email_address: "{{email_from_form}}", phone_number: "{{phone_from_form}}", // formát E.164: +380... address: { first_name: "{{first_name}}", last_name: "{{last_name}}", postal_code: "{{postal_code}}", country: "UA" } } });Důležité: posílej data v plain textu, bez hashování. Google si je zahashuje sám v prohlížeči před odesláním.
Krok 4. Výběr způsobu sběru dat
Google dává tři varianty sběru user data. Tady je srovnání:
| Metoda | Náročnost | Kdy ji volit |
|---|---|---|
| Automatic | Minimální | Jednoduché formuláře. Ale telefon se nesbírá automaticky — jen e-mail a adresa |
| Manual (CSS Selectors) | Střední | Když potřebuješ telefon, ale nemáš vývojáře na dataLayer. Musíš znát CSS selektory polí formuláře |
| Code (Data Layer) | Vysoká (potřebuješ vývojáře) | Doporučeno — nejstabilnější varianta, maximální Match rate |
Dál ukazuju Code (Data Layer) — právě tuhle variantu Google doporučuje pro maximální přesnost. Když se CSS selektory při redesignech mění, Manual se „rozbije potichu“ a ty si toho nevšimneš. Data Layer je stabilní, pokud ho vývojář udělal.
Krok 5. Vytvoř Data Layer Variables
V GTM: Variables → User-Defined Variables → New.
1. Proměnná pro e-mail
- Name:
DLV - user email - Variable Type: Data Layer Variable
- Data Layer Variable Name:
user_data.email_address(nebo tvůj klíč) - Save
2. Zopakuj pro všechna pole
Vytvoříš stejné proměnné pro:
DLV - user phone→user_data.phone_numberDLV - first name→user_data.address.first_nameDLV - last name→user_data.address.last_nameDLV - postal code→user_data.address.postal_codeDLV - country→user_data.address.country
Čím víc polí posíláš — tím vyšší Match rate u Google. Minimum = e-mail. Ideál = e-mail + telefon + adresa.
Krok 6. Vytvoř Trigger pro událost lead_submit
1. Custom Event Trigger
- GTM → Triggers → New
- Trigger Type: Custom Event
- Event Name:
lead_submit— přesně jako v tvém dataLayer pushi - This trigger fires on: All Custom Events
- Name:
CE - lead_submit - Save
Krok 7. Vytvoř User-Provided Data Variable
1. Nová proměnná typu User-Provided Data
- Variables → New → Variable Type: User-Provided Data
- Type: Code
2. Naváž pole na DLV proměnné
- Email:
{{DLV - user email}} - Phone Number:
{{DLV - user phone}} - First Name:
{{DLV - first name}} - Last Name:
{{DLV - last name}} - Postal Code:
{{DLV - postal code}} - Country:
{{DLV - country}}
Pojmenuj proměnnou UPD - Lead User Data → Save.
Když jsou data zahashovaná už na straně webu
Pokud z nějakého důvodu vývojář hashuje data dřív, než se dostanou do dataLayer (stává se v paranoidních setupech), je potřeba:
- Používat Hex-encoded SHA256 (ne Base64)
- Prefixovat pole:
sha256_email_address,sha256_phone_number,sha256_first_namea tak dálpostal_codeacountry— nehashovat, nechat plain textV 99 % případů tohle dělat nemusíš — ať hashuje Google. Jednodušší a stabilnější.
Krok 8. Google Ads User-Provided Data Event Tag
⚠️ Tohle NENÍ tag Google Ads Conversion Tracking
EC for Leads používá samostatný typ tagu —
Google Ads User-Provided Data Event. Neplést se stávajícím Conversion Tracking tagem, který už máš. Ten funguje zvlášť a není potřeba na něj sahat.
1. Vytvoř tag
- GTM → Tags → New
- Tag Type: Google Ads User-Provided Data Event
- Conversion ID: tvoje Google Ads Customer ID ve formátu
AW-1234567890(bere se z adresy účtu — odstraníš pomlčky) - User-Provided Data:
{{UPD - Lead User Data}}
2. Naváž trigger
Triggering: CE - lead_submit (vytvořený v Kroku 6).
Název: GAds - EC for Leads → Save.
Krok 9. Preview + Publish
1. Preview
Zmáčkni Preview nahoře vpravo. Otevře se Tag Assistant. Zadej URL svého webu → Connect.
2. Projdi trychtýř s odesláním formuláře
V otevřeném okně Tag Assistantu jdi na stránku s formulářem, vyplň ho, zmáčkni Submit. V Tag Assistantu se objeví událost lead_submit.
3. Zkontroluj, že se tag spustil
- Otevři událost
lead_submitv Tag Assistantu - Sekce Tags Fired → má tam být
GAds - EC for Leads - Klikni na něj → záložka Properties
- Zkontroluj
User-Provided Data: e-mail, telefon a zbylá pole nesmí být prázdná
V Preview se data zobrazují v plain textu — to je normální. Hashování probíhá později, za běhu, před odesláním do Google.
4. Když je tag v Tags Not Fired
Znamená to, že trigger CE - lead_submit nesedí. Zkontroluj:
- Event name v dataLayer a v Custom Event Triggeru jsou naprosto stejné (na velikosti písmen záleží)
- Custom Event Trigger je nastavený na All Custom Events, ne na nějaký filtr
- U tagu je Triggering =
CE - lead_submit, ne náhodné All Pages
5. Publish
Když všechno funguje — vrať se do GTM → Submit → popiš verzi („EC for Leads setup“) → Publish. EC začíná fungovat na produkci.
Krok 10. Verifikace přes Network requests
Hlavní rychlá kontrola je, že data reálně letí do Google. Preview ukazuje lokální obrázek, kdežto Network ukazuje reálné HTTP požadavky.
1. Otevři DevTools → Network
Jdi na stránku s formulářem (v běžném režimu, ne v Preview). F12 → záložka Network. Zaškrtni Preserve log.
2. Vyčisti logy a vyplň formulář
Zmáčkni „koš“ v Network, ať to vyčistíš. Vyplň formulář → Submit.
3. Najdi požadavek na google.com/pagead/form-data/
Vyfiltruj Network podle form-data nebo pagead. Má tam být požadavek na adresu https://google.com/pagead/form-data/....
V Query String Parameters (nebo Payload) hledej parametry:
em=— hash e-mailupn=— hash telefonufn=,ln=,pc=,co=— ostatní pole
Pokud vidíš u těchto parametrů neprázdné hodnoty — data reálně letí do Google ✅. Pokud požadavek je, ale parametry jsou prázdné — user_data se někde trhá (vrať se do GTM a zkontroluj DLV proměnné).
Krok 11. Import offline konverzí (kritický krok)
⚠️ Bez tohohle kroku EC for Leads nefunguje
Celý smysl EC for Leads je v tom, aby se odeslání formuláře (které je v GTM) propojilo s uzavřeným obchodem (který je v CRM). Pokud posíláš user data do Google, ale nikdy neexportuješ closed deals — Google se o uzavřených obchodech nikdy nedozví a atribuce se neaktualizuje.
Jsou tři způsoby importu:
Varianta A. Google Ads Data Manager (doporučeno)
- Google Ads → Tools → Data Manager → Connect product
- Vybíráš zdroj: Google Sheets / BigQuery / Salesforce / HubSpot / SFTP / Cloud Storage / HTTP
- Nastavuješ rozvrh (denně / každou hodinu)
- Mapuješ pole: email → User-Provided → Email, value → Conversion Value, timestamp → Conversion Time, currency → Currency
- Save → Test import
Formát CSV (pro Google Sheets / SFTP):
email,conversion_name,conversion_time,conversion_value,conversion_currency
[email protected],Lead Closed,2026-04-24 14:30:00+00:00,5000,UAH
[email protected],Lead Closed,2026-04-24 15:12:00+00:00,12000,UAH
Varianta B. Zapier
Pokud CRM nemá nativní integraci s Data Managerem — vem Zapier. Trigger — „New Closed Deal in CRM“, Action — „Google Ads: Upload Offline Conversion“. Namapuješ pole, spustíš. Funguje okamžitě.
Varianta C. Google Ads API
Pokud máš vývojáře a chceš plnou kontrolu — přes ConversionUploadService + UserIdentifier. Složitější, ale flexibilnější. Doporučuju jen tehdy, když ostatní dvě varianty z nějakého důvodu nesedí.
Frekvence importu — denně automaticky. Google přijímá data za posledních 90 dní. Takže to můžeš spustit a navždy zapomenout.
Krok 12. Kontrola v Google Ads Diagnostics
Za 24–72 hodin po publikaci (a když přes formulář prošlo ≥20 poptávek):
- Google Ads → Tools → Conversions → klik na svou Lead konverzi
- Záložka Diagnostics
- Sekce Enhanced conversions for leads
| Metrika | Co znamená | Cíl |
|---|---|---|
| Data received | % konverzí, se kterými přišla user data z webu | > 70 % |
| Match rate | % konverzí, kde Google dokázal spárovat e-mail s účtem Google | > 50 % |
| Status | Recording / Not recording | Recording |
Pokud Status = Not recording po 72 hodinách — tag se vůbec nespouští nebo je dataLayer prázdný. Vrať se do Preview.
Pokud Data received nízké (< 50 %) — EC není napojené na všech konverzních bodech (možná máš víc formulářů — každý musí pushnout user_data).
Pokud Data received vysoké, Match rate nízké — problém je ve formátu dat (viz níž).
Časté problémy
| Problém | Příčina | Jak to spravit |
|---|---|---|
| Status = Not recording | Tag se nespouští | GTM Preview → zkontroluj trigger Custom Event = lead_submit |
| Match rate = 0 % | Data jsou předhashovaná na webu, ale GTM je považuje za plain text (nebo naopak) | Buď posílej plain text (doporučeno), nebo přidej k polím prefix sha256_ |
| Match rate nízký (< 30 %) | Špatný formát telefonu | Formát E.164: +380501234567 — plus, bez mezer, závorek, pomlček |
| E-mail se nepáruje | Mezery, velká písmena | Před pushem do dataLayer: email.toLowerCase().trim() |
| „Terms are not accepted“ | Účet je pod MCC | Přijmi Customer Data Terms z rodičovského MCC účtu |
| Conversions se neimportují | E-mail v CRM se liší od e-mailu na webu (s mezerou, jinou doménou) | Před uploadem — normalizuj: lowercase + trim. Zkontroluj, jestli CRM nepřidává sufixy typu +sales |
| EC mlčí, ale Consent Mode = denied | Uživatel odmítl cookies | By design. EC neposílá data bez consentu. Zkontroluj % granted mezi svými uživateli. |
| Smart bidding nemění chování | Málo dat (< 30 uzavřených obchodů/měsíc) | EC for Leads potřebuje objem. U malých účtů se efekt projeví za 2–3 měsíce |
Co dál — po 2–3 týdnech
- Match rate se stabilizuje na 50–80 %. Google začíná vidět celý obrázek od kliku k uzavřenému obchodu.
- Smart Bidding se překalibruje — algoritmus si všimne, že část „leadů“ se reálně stává prodeji a část ne. Začne tahat provoz podobný těm prvním.
- Můžeš přepnout strategii na
Maximize Conversion Values prioritou na konverzi „Lead Closed“ (a ne prostě „Lead Submit“). Teď už Google data na to má. - Conversion Value Rules — pokud máš MQL → SQL → Closed s různými pravděpodobnostmi, dá se jim přiřadit různá váha. Například Closed Deal = ×10 proti MQL = ×1.
Dál je zrcadlo tohohle na Facebook CAPI: posíláš hashovaný e-mail do Facebooku po odeslání formuláře a uzavřené obchody přes Conversions API Offline Events. Logika je stejná.
✅ Krátký checklist
- Google Ads → Goals → Enhanced conversions for leads = ON, metoda GTM
- Customer Data Terms přijaté (ze správného účtu, pokud MCC)
- Conversion Linker tag v GTM + trigger All Pages
- Po odeslání formuláře — v dataLayer je
user_data.email_address(plain text)- DLV proměnné vytvořené pro email, phone, first_name, last_name, postal_code, country
- Custom Event Trigger
CE - lead_submitvytvořený- User-Provided Data Variable (Code type) vytvořená a navázaná na DLV
- Google Ads User-Provided Data Event tag vytvořený se správným Conversion ID
- Preview verified — tag se spouští, user_data není prázdné
- Network verified —
em=,pn=letí nagoogle.com/pagead/form-data/- GTM kontejner je publikovaný
- Nastavený pravidelný import closed deals z CRM přes Data Manager / Zapier
- Za 24–72 hodin — Diagnostics: Status = Recording, Data received > 70 %, Match rate > 50 %
Další k tématu
Google Tag Gateway přes Cloudflare — podrobný návod
Jak za 10–15 minut zapnout Google Tag Gateway přes Cloudflare a vrátit 11–25 % ztracených konverzí v Google Ads a GA4. Krok za krokem, v češtině.
Enhanced Conversions — nastavení krok za krokem pro Google Ads a GA4
Data z formuláře se na webu už sbírají, ale do Google Ads a GA4 se nedostanou? Krok za krokem — kam klikat, co uvidíte, jak ověřit. Nastavení přes Google Tag Manager.
Jak nastavit konverze v Google Ads pomocí Google Tag Manager
Jednoduchý a rychlý manuál na nastavení konverzí.