Atrybucja zapytań bez cookies: skąd przyszło zapytanie, gdy odwiedzający odrzucił zgodę
Raport dla klienta agencji zwykle zaczyna się od pytania „skąd przyszły zapytania". Odpowiedź z narzędzi analitycznych działających w przeglądarce jest z definicji niepełna: liczą tylko osoby, które zgodziły się na cookies, a to nie wszyscy. Zapytanie jest tymczasem faktem: leży w bazie, ma datę, treść i adres strony, z której zostało wysłane. Ten materiał opisuje, jak platforma przypina źródło do zapytania po stronie serwera, co z tego trafia do panelu, maila, webhooka i raportu, dlaczego te liczby różnią się od Google Analytics, oraz gdzie metoda ma granice, których nie warto ukrywać przed klientem.
Pojęcia, którymi posługuje się ten tekst
Zapytanie to kontakt faktycznie zapisany przez serwer: wysłany formularz kontaktowy, prośba o oddzwonienie, wycena z kalkulatora, formularz landingu. Samo kliknięcie „Wyślij" nie wystarcza; wysyłka odrzucona przez zabezpieczenie antyspamowe nie jest zapytaniem.
Próba kontaktu to kliknięcie w numer telefonu, adres e-mail, komunikator, mapę albo przycisk oddzwonienia. To sygnał zamiaru, nie odbyta rozmowa, i liczy się tylko wtedy, gdy działa skrypt pomiarowy, czyli po zgodzie.
Wizyta to ciąg odsłon jednej osoby na jednej witrynie, zakończony po 30 minutach bez aktywności. Bez cookies wizyta nie jest tym samym co „użytkownik": ta sama osoba następnego dnia to nowa wizyta.
Zgoda to wybór w banerze prywatności witryny. Baner ma dwie kategorie: „analityka" (skrypt pomiarowy platformy, Google Analytics) i „marketing" (piksele reklamowe). Bez zgody skrypty z danej kategorii nie są uruchamiane.
Atrybucja to przypisanie zapytaniu źródła, z którego przyszła osoba: wyszukiwarka, reklama, social, mailing, odesłanie z innej strony.
Parametry UTM to pięć nazwanych parametrów dopisywanych do adresu linku przez tego, kto link publikuje: utm_source (skąd, na przykład google, facebook, newsletter), utm_medium (jaki rodzaj, na przykład cpc dla reklamy w wyszukiwarce, email, social), utm_campaign (nazwa kampanii), utm_term i utm_content (słowo kluczowe i wariant kreacji). Adres z parametrami wygląda tak: https://firma.pl/?utm_source=google&utm_medium=cpc&utm_campaign=wiosna.
Identyfikator kliknięcia to parametr, który system reklamowy dopisuje do adresu sam, przy każdym kliknięciu w reklamę: gclid w Google Ads, fbclid w Meta, msclkid w Microsoft Ads, ttclid w TikToku. Google Ads i Microsoft Ads robią to przy włączonym automatycznym tagowaniu w ustawieniach konta reklamowego; to ustawienie trzeba sprawdzić, zanim uzna się, że identyfikatory nie docierają. Identyfikator służy do jednego: pozwala zgłosić systemowi reklamowemu, że dane kliknięcie skończyło się zapytaniem albo sprzedażą.
Dwie warstwy pomiaru
Analityka witryn na platformie ma dwie warstwy i trzeba je rozdzielić, bo różnie reagują na zgodę.
Warstwa serwerowa działa zawsze. Każde żądanie do witryny klienta jest zapisywane po stronie serwera bez adresu IP i bez pełnego identyfikatora przeglądarki: ścieżka, kod odpowiedzi, domena odsyłacza, klasyfikacja automatu. Tu liczą się też zapytania z formularzy, błędy serwera i ruch botów, opisany osobno we wpisie o dwunastu kategoriach automatów. Ta warstwa nie potrzebuje zgody, bo nie zapisuje niczego na urządzeniu odwiedzającego i nie buduje profilu osoby.
Warstwa przeglądarkowa działa po zgodzie. Skrypt pomiarowy witryny jest osadzony jako zasób banera zgód w kategorii „analityka", więc zanim odwiedzający kliknie zgodę, skrypt nie rusza. Dopiero on tworzy wizytę: pseudonimowy klucz liczony z identyfikatora witryny, adresu i znormalizowanej nazwy przeglądarki, z sekretem rotowanym co dobę. Kontekst wizyty żyje po stronie serwera, nie w cookie, więc pierwsze źródło wejścia jest pamiętane przez całą wizytę, także gdy osoba przejdzie z podstrony na podstronę.
Z tej konstrukcji wynika kilka rzeczy, które trzeba znać, zanim obieca się klientowi „pełną ścieżkę użytkownika". Ta sama osoba ma inny klucz na każdej witrynie. Klucz zmienia się o północy i po zmianie adresu sieciowego, a w sieciach komórkowych adres zmienia się często, więc wizyty z telefonu rozpadają się częściej niż z komputera. Wizyta zaczyna się w chwili zgody, nie w chwili wejścia: jeśli ktoś wszedł z reklamy, przeczytał ofertę i dopiero na podstronie „Kontakt" kliknął zgodę, wizyta zaczyna się na „Kontakcie", a jej pierwsze źródło to własna witryna. Platforma nie liczy „unikalnych użytkowników", tylko wizyty w zdefiniowanym oknie.
Jak zapytanie dostaje źródło
Przy zapisie zapytania platforma szuka źródła w czterech miejscach, w ustalonej kolejności. Pierwsze, które daje odpowiedź, wygrywa.
Po pierwsze, z otwartej wizyty. Jeśli odwiedzający wyraził zgodę i jego wizyta jest otwarta, zapytanie dziedziczy ostatnie źródło inne niż bezpośrednie. Ktoś wszedł z wyszukiwarki, wrócił po kwadransie z zakładki i wysłał formularz: źródłem zostaje wyszukiwarka, bo wejście bezpośrednie nie nadpisuje znanego kanału. Ktoś wszedł z wyszukiwarki, a po dziesięciu minutach wrócił z reklamy: źródłem zostaje reklama, bo to ostatnie znane źródło. Gdy cała wizyta była bezpośrednia, zapytanie jest bezpośrednie. Gdy wizyta zaczęła się od zgody na drugiej podstronie i jej jedynym źródłem jest własna witryna, wizyta nie mówi nic i platforma przechodzi do kolejnego miejsca.
Po drugie, z ukrytych pól formularza. Na każdej stronie witryny działa krótki skrypt, który czyta parametry kampanii z adresu tej strony i dopisuje je jako ukryte pola do wszystkich formularzy witryny, także wyceny i oddzwonienia: pięć parametrów UTM oraz cztery identyfikatory kliknięć. Skrypt niczego nie zapisuje na urządzeniu, ani w cookie, ani w pamięci lokalnej przeglądarki, więc nie wymaga zgody. Każda wartość jest przycinana do 200 znaków.
Po trzecie, z nagłówka odsyłacza. Gdy skrypt nie zdążył albo został wyłączony, serwer czyta parametry z adresu strony, z której wysłano formularz. Wysyłka idzie do tej samej witryny, więc przeglądarka przekazuje pełny adres razem z parametrami. Sam adres własnej strony bez parametrów nie jest źródłem: platforma nie zapisze „odesłania z domeny klienta", bo to nic nie mówi o tym, skąd przyszła osoba.
Po czwarte, nic. Zapytanie bez żadnej z powyższych informacji dostaje kanał „nieznane". Platforma nie zgaduje i nie dopisuje „bezpośrednie" tam, gdzie po prostu nie ma danych. Dotyczy to też zapytań dodanych ręcznie w panelu albo z importu, które nie mają kontekstu żądania.
Model z pierwszego punktu nazywa się „ostatnie niebezpośrednie". Inne modele, od „pierwszego dotknięcia" po rozkładanie zasługi na wiele wejść z wielu dni, wymagają rozpoznawania tej samej osoby między dniami, czyli identyfikatora zapisanego na urządzeniu. Bez cookies platforma widzi jedną wizytę i w jej obrębie ten model jest najuczciwszy: nie kasuje znanego źródła powrotem z zakładki, a oddaje zasługę nowej kampanii, gdy ta faktycznie sprowadziła osobę z powrotem.
Dwanaście kanałów
Źródło jest klasyfikowane do jednego z dwunastu kanałów, tych samych dla wizyt i zapytań, więc liczby w tabelach się zgadzają.
| Kanał | Skąd się bierze |
|---|---|
| Wyszukiwarka | odsyłacz z Google, Bing, DuckDuckGo, Yahoo, Yandex, Ecosia, Brave, Onet, WP, Interii |
| Płatne wyszukiwanie | medium cpc, ppc, paidsearch, adwords, google_ads |
| Mapy | odsyłacz z Map Google |
| Social organiczny | Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest, Reddit albo medium social |
| Social płatny | medium paid_social |
| Odesłanie | inna strona www, nierozpoznana jako wyszukiwarka ani social, albo medium referral |
| Bezpośrednie | brak odsyłacza i brak parametrów |
| odsyłacz z poczty webowej albo medium email, newsletter, mailing | |
| Asystent AI | odsyłacz z ChatGPT, Perplexity, Claude, Copilota, Gemini i podobnych |
| Kampania | parametry UTM bez rozpoznanego medium |
| Wewnętrzne | odsyłacz z tej samej witryny (tylko dla wizyt; zapytanie nigdy nie dostaje tego kanału) |
| Nieznane | brak danych |
Medium z parametru UTM ma pierwszeństwo przed odsyłaczem, więc link z newslettera oznaczony medium „email" trafi do kanału E-mail, nawet gdy klient poczty nie przekazał odsyłacza. Kampania bez medium albo z medium spoza listy ląduje w kanale „Kampania", co jest sygnałem, że konwencja oznaczania linków w agencji wymaga uporządkowania. Kanał „Asystent AI" rozpoznaje osoby, które kliknęły link w odpowiedzi asystenta; roboty asystentów pobierające stronę są liczone osobno, w klasyfikacji botów. Personalizowane linki z mailingu, z tokenem odbiorcy w adresie, to osobny mechanizm landingów kampanijnych oparty na ciasteczku technicznym; nie zastępuje parametrów UTM i nie zmienia opisanej tu klasyfikacji.
Co kryje się pod „bezpośrednie"
Kanał bezpośredni jest większy, niż sugeruje nazwa, i to jest najczęstsze nieporozumienie w raportach. Trafiają tu nie tylko adresy wpisane z ręki i zakładki, ale wszystko, co nie przekazuje odsyłacza: linki z komunikatorów (WhatsApp, Messenger, Signal), z programów pocztowych na komputerze i telefonie, z dokumentów PDF, z kodów QR na ulotkach i z części aplikacji mobilnych. Do tego przeglądarki mogą ograniczać odsyłacz do samej domeny albo go pomijać, gdy strona źródłowa tak zastrzeże. Wniosek jest prosty: każdy link, który agencja albo klient wysyła poza witrynę, powinien mieć parametry UTM, bo inaczej ta część ruchu utonie w „bezpośrednich".
Konwencja oznaczania linków
Konwencja UTM ma być krótka i spisana, bo klasyfikacja zależy od wartości medium. Przykład, który mieści się w kanałach platformy:
| Gdzie publikujesz link | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Reklama w wyszukiwarce Google | cpc | nazwa kampanii | |
| Reklama Meta (Facebook, Instagram) | facebook lub instagram | paid_social | nazwa kampanii |
| Post organiczny w social | facebook, linkedin | social | temat posta |
| Newsletter, mailing | newsletter | numer wydania | |
| Strona partnera, katalog branżowy | nazwa partnera | referral | nazwa umowy |
| Ulotka z kodem QR, wizytówka | ulotka | qr | nazwa akcji |
Ostatni wiersz celowo używa medium spoza listy: trafi do kanału „Kampania" i będzie widoczny w tabeli kampanii z pełną nazwą, co dla materiałów drukowanych jest lepsze niż wciskanie ich w „odesłanie". Wartości piszemy małymi literami i bez spacji, bo dla klasyfikacji „Google" i „google" to dwa różne źródła.
Gdzie to widać
Źródło zapytania pojawia się w kilku miejscach, bez dodatkowej konfiguracji.
Karta zapytania w panelu. Etykieta kampanii składana z source, medium i campaign, na przykład „google / cpc / wiosna". Gdy zapytanie ma tylko identyfikator kliknięcia, etykieta brzmi „Google Ads", „Meta Ads", „Microsoft Ads" albo „TikTok Ads", a sam identyfikator jest wypisany niżej.
Mail z powiadomieniem o zapytaniu. Ta sama etykieta w treści wiadomości, więc handlowiec klienta widzi źródło, zanim otworzy panel.
Webhook. Ładunek zdarzenia lead.created zawiera blok utm z pięcioma parametrami i blok click_ids z identyfikatorami kliknięć. To ten blok pozwala domknąć pętlę reklamową: identyfikator gclid wysłany do CRM klienta wraca do Google Ads jako import konwersji offline, gdy zapytanie zamieni się w umowę. Import konwersji offline to funkcja systemu reklamowego, w której przesyła się listę identyfikatorów kliknięć z datą i wartością zdarzenia; system dopasowuje je do kliknięć i uczy się na sprzedaży, a nie na formularzach. Każdy system ma własne okno czasowe, po którym identyfikator przestaje być dopasowywany, więc import warto robić regularnie, nie raz na kwartał. Z panelu można wysłać przykładowy ładunek na adres webhooka, żeby sprawdzić odbiór po drugiej stronie, zanim przyjdzie prawdziwe zapytanie.
Zakładka „Źródła" w analityce witryny. Cztery tabele: kanały, konkretne źródła według domeny, wejścia z asystentów AI i kampanie UTM z rozbiciem na źródło i medium. Kolumny tabeli kanałów mają te same definicje co zakładka Wyniki: wizyty po zgodzie i po odfiltrowaniu automatów, zainteresowane to wizyty z przewinięciem co najmniej do połowy strony, dłuższym pobytem albo próbą kontaktu, próby kontaktu liczone raz na typ w wizycie, zapytania zapisane przez serwer, konwersja to wizyty zakończone zapytaniem podzielone przez wizyty.
Zakładka „Kontakty". Próby kontaktu według kanału i lista ostatnich zapytań; stąd jedno kliknięcie prowadzi do skrzynki zapytań.
Tygodniowy mail z podsumowaniem. Właściciel witryny dostaje w poniedziałek rano zestawienie z kanałem, który przyniósł najwięcej zapytań, i podstroną, która najlepiej konwertuje. Mail idzie tylko do witryn, które w minionym tygodniu miały jakikolwiek ruch albo zapytanie. Przy portfelu agencyjnym to samo można czytać dla wszystkich witryn naraz, o czym pisaliśmy w procedurze przeglądu portfela.
Eksport CSV z analityki to szereg dzienny (data, wizyty, próby kontaktu, zapytania), nie lista zapytań ze źródłem. Źródło pojedynczego zapytania bierze się z karty zapytania, z maila albo z webhooka.
Zdarzenia konwersji dla systemów reklamowych
Atrybucja po stronie serwera mówi agencji, skąd przyszło zapytanie. Systemy reklamowe potrzebują jeszcze sygnału zwrotnego, żeby optymalizować kampanie pod zapytania, a nie pod kliknięcia. Po wysłaniu formularza platforma wraca na stronę z parametrem sent=1 albo na własną stronę podziękowania ustawioną w formularzu i dopiero na tej odpowiedzi odpala zdarzenia konwersji:
- zdarzenie
kf_leadw warstwie danych, zawsze, bez bramki zgody, bo nie identyfikuje osoby; to wyzwalacz dla Menedżera tagów Google i własnych skryptów, generate_leaddla Google Analytics 4,conversiondla Google Ads, pod warunkiem wpisania etykiety konwersji w ustawieniach integracji witryny; sam identyfikator konta nie wystarczy,Leaddla piksela Meta,SubmitFormdla piksela TikToka,submit_lead_formdla tagu Microsoft Ads.
Zgoda działa tu tak samo jak przy pikselach: zdarzenia analityczne są za zgodą na analitykę, reklamowe za zgodą marketingową. Wyjątkiem jest włączony tryb zgody Google (Consent Mode). W tym trybie tagi Google ładują się zawsze, ale startują ze stanem „odmowa" dla pamięci reklamowej i analitycznej, więc bez zgody wysyłają tylko anonimowe sygnały bez cookies, a po kliknięciu zgody w banerze platforma przekazuje im aktualizację stanu. Google używa tych anonimowych sygnałów do modelowania brakujących konwersji po swojej stronie; to ich mechanizm, nie platformy, i liczby z niego nie pojawią się w panelu.
Własna strona podziękowania per formularz ma jedno zastrzeżenie. Ścieżka w tej samej witrynie, na przykład /dziekujemy, dostaje parametr sent=1 automatycznie i zdarzenia odpalą się na niej. Adres zewnętrzny, na innej domenie, nie dostaje niczego, bo platforma nie ma tam skryptów; konwersje trzeba wtedy mierzyć po tamtej stronie.
Dlaczego liczby różnią się od Google Analytics
Klient, który ma podpięte Google Analytics 4, porówna oba raporty i zobaczy inne liczby. To nie jest błąd żadnej ze stron, tylko cztery różne definicje.
- Zgoda. Google Analytics liczy tylko po zgodzie na analitykę; platforma liczy zapytania zawsze, wizyty po zgodzie. Zapytań w panelu będzie więcej niż konwersji w GA4.
- Sesja. GA4 trzyma sesję w cookie i łączy wizyty tej samej przeglądarki w kolejnych dniach w jednego użytkownika; platforma zamyka wizytę po 30 minutach i o północy. Wizyt w panelu będzie więcej niż użytkowników w GA4 i mniej niż sesji, gdy ludzie wracają w ciągu dnia z innego adresu.
- Model atrybucji. GA4 domyślnie używa modelu opartego na danych, który rozkłada zasługę między wiele wejść z wielu dni; platforma używa ostatniego niebezpośredniego źródła w obrębie jednej wizyty. Udziały kanałów będą inne, zwłaszcza dla kampanii, które sprowadzają ludzi wielokrotnie.
- Automaty. Platforma odfiltrowuje ruch botów po stronie serwera, GA4 po swojemu. Różnica jest największa na małych witrynach, gdzie kilkadziesiąt wejść automatów zmienia proporcje.
W raporcie dla klienta warto podać obie liczby z jednym zdaniem o tym, którą z nich i dlaczego agencja traktuje jako podstawę rozliczenia.
Procedura dla agencji
Poniższa kolejność wynika z tego, co opisano wyżej, i da się ją wykonać w jedno popołudnie dla witryny klienta.
- Konwencja oznaczania linków. Jedna lista dozwolonych wartości medium (cpc, paid_social, social, email, referral i jedno własne dla druku), jedna konwencja nazw kampanii, zapisana w dokumentacji agencji i przekazana klientowi, bo klient też publikuje linki.
- Automatyczne tagowanie w kontach reklamowych. Sprawdzić, że Google Ads i Microsoft Ads dopisują identyfikatory kliknięć; bez tego blok identyfikatorów w webhooku będzie pusty.
- Formularz na stronie wejścia kampanii. Skrypt czyta parametry z adresu strony, na której stoi formularz. Reklama kierowana na stronę główną z formularzem na podstronie „Kontakt" traci parametry przy przejściu, chyba że odwiedzający wyraził zgodę i wizyta niesie źródło. Landing kampanijny z formularzem w pierwszym ekranie rozwiązuje to niezależnie od zgody.
- Etykieta konwersji Google Ads w ustawieniach integracji witryny, obok identyfikatora konta. Piksel Meta, TikToka i tag Microsoft Ads wystarczy wpisać; nie potrzebują etykiety.
- Webhook do CRM klienta z zachowaniem bloku
click_ids. Wysłać przykładowy ładunek z panelu i uzgodnić z klientem, kto i jak często importuje konwersje offline. - Testowe zapytanie z linku z parametrami, najlepiej z dwóch przeglądarek: jednej ze zgodą, drugiej z odmową. W obu karta zapytania ma pokazać etykietę kampanii, mail tę samą etykietę, a webhook parametry UTM. Jeśli etykiety brak, sprawdzić w tej kolejności: czy parametry są w adresie strony z formularzem, czy formularz nie został wstawiony jako obcy kod poza sekcjami platformy, czy wysyłka nie została odrzucona jako spam.
- Raport miesięczny z zakładki „Źródła": tabela kanałów z kolumnami wizyty, próby kontaktu, zapytania, konwersja oraz tabela kampanii. Liczby wizyt dotyczą osób ze zgodą, liczba zapytań wszystkich; warto to napisać w stopce raportu, żeby klient nie dzielił jednego przez drugie bez tej wiedzy.
Zakres danych zależy od planu konta klienta. Plany Start i Standard widzą zakładki Wyniki i Kontakty z 30 dni wstecz. Pro i Agencja otwierają zakładki Źródła, Strony, Google i AI oraz Stan strony, a w Źródłach tabelę kampanii UTM, z odczytem do 400 dni wstecz. Scale dokłada portfel całego konta i eksport, z odczytem do 760 dni. Pakiet Optymalizacja SEO wykupiony do pojedynczej witryny otwiera Źródła, Strony, Google i AI oraz Stan strony na 180 dni niezależnie od planu konta, co przy portfelu mieszanym bywa tańszą drogą niż zmiana planu. Wybór okresu w panelu ma trzy skróty: 7, 30 i 90 dni. Źródło na karcie zapytania i w mailu jest dostępne w każdym planie, bo to część zapytania, nie analityki; webhooki są dostępne od planu Pro.
Granice metody
Uczciwy raport dla klienta wymienia je wprost.
- Parametry kampanii nie przechodzą między podstronami bez zgody. Skrypt czyta adres bieżącej strony i nic nie zapisuje. Przejście z landingu na „Kontakt" gubi parametry, jeśli odwiedzający nie wyraził zgody i wizyta nie została otwarta.
- Zgoda wyrażona później niż na pierwszej stronie nie odtwarza źródła wejścia. Wizyta zaczyna się w chwili zgody i nie wie, skąd osoba trafiła wcześniej.
- Wizyta rozpada się o północy i po zmianie adresu sieciowego. Osoba, która obejrzała ofertę wieczorem w domu i wysłała formularz rano z biura, to dwie wizyty i zapytanie ze źródłem drugiej z nich. W sieciach komórkowych dzieje się to częściej.
- Nie ma łączenia urządzeń ani witryn. Telefon i laptop tej samej osoby to dwa klucze. To cena braku cookies i identyfikatorów; platforma nie próbuje jej obchodzić.
- Zapytania bez kontekstu żądania mają kanał „nieznane". Ręczne dodanie w panelu, import, zapytanie przyjęte przez inny system.
- Zewnętrzna strona podziękowania nie odpala zdarzeń konwersji. Trzeba je mierzyć po tamtej stronie.
- Platforma nie mierzy pozycji w wyszukiwarce ani zasięgu w social. Widzi wejścia z tych kanałów, nie to, co działo się przed kliknięciem. Raport agencji łączy dane platformy z danymi tych systemów, a nie zastępuje ich.
- To pomiar zapytań, nie przychodu. Wartość umowy zamkniętej z zapytania żyje w CRM klienta; identyfikatory kliknięć w webhooku są mostem w tę stronę, nie zamiennikiem.
Co z tego wynika dla portfela
Źródło zapytania liczone po stronie serwera daje agencji liczbę, której nie da się zakwestionować zgodą na cookies: tyle zapytań przyszło, z takich kanałów, w takim okresie. Wizyty liczone po zgodzie pozostają miarą zainteresowania, nie miarą skuteczności. Rozdzielenie tych dwóch rzeczy w raporcie chroni przed najczęstszą awanturą z klientem, w której konwersja „spadła", bo baner zgód zmienił treść i mniej osób go zaakceptowało.
Szczegóły konfiguracji są w dokumentacji i Centrum pomocy: atrybucja zapytań i zdarzenia konwersji, strona podziękowania i źródło zapytania, śledzenie konwersji Google Ads, GA4 i Meta oraz analityka w panelu. Odczyt tych samych liczb dla wszystkich witryn klienta naraz opisuje wpis o projektach klientów.
Narzędzia opisane w tym materiale należą do planów Scale
Serwer MCP, import witryny z dokumentu i generator podstron lokalnych są dostępne od planu Scale, razem z priorytetowym wsparciem i zniesionym limitem miejsc w zespole.
Zobacz plany Scale →