UTM tracking: structură consistentă, GA4 integration și capcane
UTM tracking folosește cinci parametri pentru a urmări sursa exactă a traficului în GA4. Cum structurezi, ce se sparge și cum auditezi link-urile existente.
Cuprins
UTM tracking este metoda standard de etichetare a link-urilor de campanie cu parametri de interogare care spun analiticii de unde vine vizitatorul, pe ce canal și din ce campanie. Parametrii UTM (Urchin Tracking Module) au apărut odată cu Urchin Software, achiziționat de Google în 2005, și sunt azi suportați nativ de GA4, care îi mapează automat la dimensiunile sale native.
Un link fără UTM lasă atribuirea la latitudinea platformei de analitics, care va ghici sau va raporta Direct. Un link cu UTM greșit produce segmente duplicate sau date lipsă. Diferența practică apare la bugetare: dacă nu știi care campanie a adus conversiile, nu știi unde să aloci luna viitoare.
Care sunt cei cinci parametri UTM și ce face fiecare?
Standardul UTM definește cinci parametri, fiecare cu un rol distinct. Primii doi sunt obligatorii pentru ca GA4 să recunoască un link ca traffic de campanie:
utm_source. De unde vine vizitatorul: numele sursei concrete. Exemple:newsletter,facebook,google,partener-x. Nu include canalul, ci entitatea.utm_medium. Canalul de distribuție: tipul de traffic. Exemple:email,cpc,organic,social,referral. GA4 mapează automat valori recunoscute la grupele de canale predefinite.utm_campaign. Numele campaniei care a generat link-ul. Exemple:black-friday-2025,reactivare-mai-2026. Permite segmentarea rezultatelor per inițiativă.utm_term. Folosit în principal pentru paid search: cuvântul cheie care a declanșat anunțul. În Google Ads, poți popula automat cuValueTrack({keyword}). Pentru alte canale, câmpul este opțional și mai rar folosit.utm_content. Diferențiator pentru variante în același anunț sau aceeași campanie. Util pentru teste A/B sau pentru a distinge mai multe link-uri din același email (banner vs. buton vs. link text).
Un URL complet arată astfel: https://exemplu.com/pagina?utm_source=newsletter&utm_medium=email&utm_campaign=black-friday-2025&utm_content=buton-cta. GA4 extrage automat acești parametri la intrarea sesiunii și îi asociază cu toate evenimentele din acea sesiune.
Care e o naming convention bună (lowercase, fără spații, snake_case vs. kebab-case)?
GA4 tratează valorile UTM ca case-sensitive. Valoarea Newsletter și valoarea newsletter produc două rânduri separate în rapoarte. Acesta este cel mai frecvent motiv pentru care rapoartele arată fragmentare ciudată la dimensiunea Source/Medium.
Reguli de bază pentru o convenție sustenabilă:
- Lowercase obligatoriu.
facebook, nuFacebooksauFACEBOOK. Se aplică tuturor celor cinci parametri, fără excepție. - Fără spații. Spațiile se codifică ca
%20sau+în URL, în funcție de implementare. Rezultatul poate fi interpretat diferit de GA4. Folosește separator în locul spațiului. - Alege un separator și ține-te de el. Kebab-case (
black-friday-2025) este mai citibil în URL-uri și consistent cu convențiile din slug-uri. Snake_case (black_friday_2025) evită ambiguitatea cu cratimele din nume proprii. Criteriul nu este tehnic, ci organizațional: ce poate întreg echipa aplica fără să greșească. - Documentează în scris. Un sheet sau un fișier de configurare cu valorile standard pentru
utm_sourceșiutm_mediumelimină variantele accidentale (e-mailvs.emailvs.Email). Orice valoare nouă trece prin lista aprobată înainte de a fi pusă în producție. - Separă campanii plătite de cele organice prin
utm_medium.cpcpentru paid,socialpentru organic social,emailpentru email marketing. Confuzia dintre ele invalidează atribuirea din rapoarte.
Cum apar UTM-urile în GA4 și ce se mapează automat la dimensiunile native?
GA4 citește parametrii UTM la primul eveniment al sesiunii (session_start) și îi stochează ca atribute ale sesiunii. Maparea automată:
utm_sourcemapează la dimensiunea Session sourceutm_mediummapează la dimensiunea Session mediumutm_campaignmapează la dimensiunea Session campaignutm_termmapează la dimensiunea Session manual termutm_contentmapează la dimensiunea Session manual ad content
În plus, GA4 derivă automat Session default channel group pe baza combinației source + medium. Valorile recunoscute (de exemplu: medium=email → Email, medium=cpc + source=google → Paid Search) se încadrează în grupele predefinite. Orice combinație nerecunoscută cade în Unassigned.
Dacă ai nevoie de parametri proprii (un ID intern de campanie, o etichetă de segment), nu inventa un al șaselea parametru UTM. Folosește custom dimensions în GA4 alimentate din parametri de URL proprii. Un utm_brand=x inventat ajunge în GA4 ca dimensiune nerecunoscută, nu ca una nativă. Rapoartele relevante pentru campanii sunt Acquisition > Traffic acquisition și, dacă ai conversii configurate, Advertising > Attribution.
Cum se sparge silențios tracking-ul UTM?
Cel mai frecvent mod de a pierde date UTM nu este o eroare vizibilă, ci o pierdere silențioasă. Link-ul funcționează; vizitatorul ajunge pe pagină; parametrii au dispărut pe drum. Scenariile principale:
- Redirect-uri care nu transmit query string. Un redirect 301 configurat greșit poate transmite doar path-ul, fără parametrii de interogare. Cel mai frecvent apare la link shorteners, la redirect-uri de domeniu (de exemplu, de la varianta non-www la www) sau la redirect-uri de campanie personalizate. Soluția: verifici explicit că URL-ul final păstrează parametrii.
- App webview care nu propagă referrer. Aplicațiile mobile (iOS, Android) care deschid URL-uri într-un webview intern nu transmit header-ul
Refererși pot sau nu să păstreze parametrii UTM, în funcție de implementare. Link-urile din Instagram Stories sau WhatsApp sunt exemple clasice de traffic care apare ca Direct. - JavaScript pe pagina de destinație care rescrie URL-ul. Unele implementări de router sau de analytics curăță parametrii UTM din bara de adrese după ce i-au citit, pentru URL-uri mai curate. Dacă ștergerea se face înainte ca GA4 să citească parametrii, sesiunea pierde atribuirea. GA4 trebuie să citească UTM-urile înainte de orice modificare a URL-ului.
- CDN sau proxy care normalizează URL-urile. Unele configurații de cache normalizează URL-urile (sortează sau elimină parametrii nerecunoscuți) pentru a îmbunătăți rata de hit a cache-ului. Un parametru UTM eliminat de CDN este pierdut complet; vizitatorul primește pagina, analytics-ul pierde atribuirea.
Cum auditezi link-urile existente?
Un audit UTM are două componente: inventarul link-urilor active și detectarea link-urilor care nu transmit date corect.
Inventarul link-urilor. Centralizează toate URL-urile de campanie active într-un sheet sau un sistem de gestionare. Coloanele minime: URL de destinație, utm_source, utm_medium, utm_campaign, utm_content, canal de distribuție (unde apare link-ul), data creării. Fără inventar central, auditezi în retroactiv din GA4, ceea ce e posibil dar lent.
Detectarea UTM-urilor sparte în GA4. Cel mai simplu semnal de problemă este dimensiunea Session source = (not set) sau Session medium = (not set) pentru sesiuni care ar trebui să vină din campanii cunoscute. Creează un segment în GA4 cu filtru pe sursele tale de trafic (de exemplu, sesiuni din perioadele de campanie fără UTM identificabil) și compară volumul cu perioadele anterioare. Un spike de (not set) în timpul unei campanii active indică o problemă de configurare sau de redirect.
Pentru campanii email, compară click-urile raportate de platforma de email cu sesiunile cu utm_medium=email în GA4 pentru aceeași perioadă. O discrepanță de peste 15-20% indică pierderi la redirect sau la webview. Principiul este același cu cel din monitorizarea sistemelor descris în intrarea despre observabilitate: diferența dintre valorile așteptate și cele măsurate este semnalul că ceva s-a stricat. Când configurăm operațiuni de social media pentru clienți (S09 din catalogul crawlerra), structura UTM pe campanie este definită înainte de prima postare, nu adăugată retroactiv.
Fiecare pagină de destinație trebuie să aibă un tag canonical care pointează la URL-ul fără parametri UTM, altfel variantele pot fi indexate separat. Dacă ai versiuni de pagini pentru piețe diferite, hreflang trebuie să pointeze la versiunea canonică, nu la cea cu UTM. Metricile de campanie sunt o formă de engagement rate măsurat dintr-un unghi diferit: cât din audiența care a primit link-ul a convertit. Interpretate izolat, fără context de reach sau de vanity metric, conduc la concluzii la fel de greșite ca absența UTM-urilor.
Întrebări frecvente
Ce se întâmplă dacă nu folosesc deloc UTM-uri?
GA4 va atribui traficul la sursa pe care o poate deduce din referrer, ceea ce e corect pentru traficul organic dar inexact pentru campanii. Email-ul trimis în aplicații de desktop (Outlook, Apple Mail) nu transmite referrer, deci traficul din email fără UTM apare ca Direct în GA4. Traficul din reclame cu UTM configurat greșit are același efect.
utm_source și utm_medium sunt obligatorii?
Da. GA4 nu recunoaște un link ca traffic de campanie dacă lipsesc utm_source și utm_medium. utm_campaign, utm_term și utm_content sunt opționale, dar fără primii doi parametri, link-ul este tratat ca trafic direct sau organic, în funcție de referrer.
Naming convention cu underscore sau cu cratimă?
Ambele funcționează tehnic, dar alege una și ține-te de ea în toată organizația. Underscore (black_friday_2025) citește ușor în URL-uri codificate; cratimă (black-friday-2025) este mai frecventă în slug-uri și path-uri. Criteriul decisiv este consistența: orice mix produce segmente diferite în GA4.
UTM-urile afectează SEO?
Nu direct, dacă folosești canonical corect. Google recunoaște că URL-urile cu parametri UTM sunt variante ale aceleiași pagini. Dacă nu specifici un canonical care să pointeze la URL-ul curat, Googlebot poate indexa variante multiple ale aceleiași pagini. Adaugă un tag canonical pe toate paginile de destinație.
Cum știu că UTM-urile mele se sparg în redirect?
Verifici direct: deschide link-ul în browser și compară URL-ul final cu cel inițial. Dacă parametrii UTM dispar din adresa barei de adrese după redirect, sunt pierduți. Link shorteners ca bit.ly sau Rebrandly păstrează UTM-urile dacă sunt configurați să facă forward complet al query string-ului, dar trebuie verificat explicit pentru fiecare serviciu.