Darmowe narzędzie · bez logowania

Tester SHA-256 dla konwersji rozszerzonych

Sprawdź, czy Google Ads i Meta dostają zahashowany e-mail i telefon klienta, czy hash pustego pola albo undefined, z którym żadna konwersja się nie dopasuje. Bez BigQuery sprawdzisz hash z podglądu GTM, a z BigQuery wszystkie zapisane hashe jednym zapytaniem.

  • 84 pustych i testowych wartości dla e-maila i telefonu
  • Zasady normalizacji z dokumentacji Google Ads i Meta
  • Wersja online i zapytanie SQL dla BigQuery
  • Dane nie opuszczają Twojej przeglądarki

Autor: Marcin Miłowski, konsultant GA4, GTM i BigQuery · Aktualizacja: październik 2026

Gdzie masz hashe do sprawdzenia?

Lista do porównania

Hashe SHA-256 pustych i błędnych wartości

Jeśli hash z Twojej strony jest na tej liście, tag wysyła do Google Ads albo Meta pustą lub przypadkową wartość zamiast danych klienta. Najszybciej sprawdzisz to skrótem Ctrl+F (Cmd+F na Macu): wklej początek swojego hasha.

Pole e-mail

Zahashowana wartośćSHA-256Skąd się bierze
(pusty tekst)e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855pusta zmienna: tag uruchomił się, zanim formularz zapisał e-mail
(spacja)36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068spacja w pustym polu formularza
null74234e98afe7498fb5daf1f36ac2d78acc339464f950703b8c019892f982b90bzmienna ma wartość null
NULLfb329000228cc5a24c264c57139de8bf854fc86fc18bf1c04ab61a2b5cb4b921NULL z bazy danych lub CRM, bez zamiany na małe litery
undefinedeb045d78d273107348b0300c01d29b7552d622abbc6faf81b3ec55359aa9950czmienna nie istnieje, a kod zamienił ją na tekst
none140bedbf9c3f6d56a9846d2ba7088798683f4da0c248231336e6a05679e4fdfewartość None z kodu po stronie serwera, po normalizacji
nan9b2d5b4678781e53038e91ea5324530a03f27dc1d0e5f6c9bc9d493a23be9de0NaN z JavaScriptu po normalizacji
05feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9liczba zero zamiast pustego pola
falsefcbcf165908dd18a9e49f7ff27810176db8e9f63b4352213741664245224f8aawartość logiczna zamiast danych
[object object]c9a560c74de368dcd2e6ac5544ad12a9afd32584b71a52147303479f726e0408obiekt JavaScript zamieniony na tekst, po normalizacji
{{email}}2fa568238f6d6aa0d84b7d66ec13b95eef51f803f1fdc5b8c54e475574ee6de3niewypełniona zmienna w szablonie lub tagu
mail00d8d3f11739d2f3537099982b4674c29fc59a8fda350fca1379613adbb09119nazwa pola zamiast wartości
email82244417f956ac7c599f191593f7e441a4fafa20a4158fd52e154f1dc4c8ed92nazwa pola zamiast wartości
e-mail39e0749da40f625e3ac47efdf64b79fa28f8aad01f3c2746176ea4a03a9e98e1etykieta pola zamiast wartości
zerof9194e73f9e9459e3450ea10a179cdf77aafa695beecd3b9344a98d111622243tekst zastępczy w polu
[email protected]f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44aadres testowy z formularza lub z kodu
[email protected]973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824a89ea65dba4e813badres przykładowy z dokumentacji lub kodu
(pusty tekst, hash liczony dwa razy)cd372fb85148700fa88095e3492d3f9f5beb43e555e5ff26d95f5a6adc36f8e6podwójne hashowanie pustej zmiennej

Pole telefon

Zahashowana wartośćSHA-256Skąd się bierze
(pusty tekst)e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855pusta zmienna: tag uruchomił się, zanim formularz zapisał telefon
+4840bb9b604a4c05e5615ff8a71e8035b4f6ffe01ba260129be2bf8d9fd7bee097sam kierunkowy kraju dopisany do pustego pola (Google Ads)
4898010bd9270f9b100b6214a21754fd33bdc8d41b2bc9f9dd16ff54d3c34ffd71sam kierunkowy kraju dopisany do pustego pola (Meta)
+48undefinedbc73e8b53f8fc741284de2e2977efb9f87b36a6ca78235bd172b933d78fb2908kierunkowy dopisany do nieistniejącej zmiennej
48undefinedd9e8719b212db2f8db5020fe20a74ebf2f67b1eee709dc8785a57bfa7a44d85dto samo przy normalizacji Meta
+48nullb5bb30a906c8fe791b3e1175340b4b4e78cbbe60c5f28a95b39eaee0adc45f08kierunkowy dopisany do zmiennej z wartością null
05feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9liczba zero zamiast numeru
000000000f120bb5698d520c5691b6d603a00bfd662d13bf177a04571f9d10c0745dfa2a5numer zastępczy z formularza
+4800000000095d073e0bd1bbf5f41c100cf98a3fbcf1eb360d5f4df5596a90c5ab75d80c4c7numer zastępczy z kierunkowym
12345678915e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225numer testowy
+481234567897af87dd94e1187579818739230965dee6e025ea02bdbd79546907cc121589e3fnumer testowy z kierunkowym
telefonb7367edaa7bb675764606b5a9343e09ee90242ce419eabfca14c7c7325e550f6nazwa pola zamiast wartości
phone45569da57f4b7bf472d7a864ef4781451cae6383fee9fb0ae40c59aa1ce475b7nazwa pola zamiast wartości

Tester rozpoznaje więcej wartości niż ta lista, także zapisane wielkimi literami i zahashowane dwa razy.

Jak korzystać

Dwie ścieżki: bez BigQuery i z BigQuery

Bez BigQuery sprawdzisz jeden formularz testowy w kilka minut. Z BigQuery zobaczysz, jaki procent wszystkich konwersji wysyła błędny hash.

Nie mam BigQuery

  1. Wyślij formularz testowy. Włącz podgląd GTM (i server-side GTM, jeśli go masz) i wyślij formularz albo zamówienie na swój testowy e-mail i numer telefonu.
  2. Skopiuj hash. W podglądzie GTM kliknij zdarzenie konwersji i otwórz zmienną z danymi użytkownika. W server-side GTM sprawdź pole user_data. W Meta pomoże zakładka Testuj zdarzenia w Menedżerze zdarzeń.
  3. Wybierz e-mail albo telefon i platformę. Normalizacja telefonu różni się między Google Ads i Meta, więc wynik zależy od tego wyboru.
  4. Wklej hash i dane z formularza. Tester pokaże, czy hash się zgadza, a jeśli nie, czy to pusta wartość, czy błąd normalizacji.

Mam BigQuery

  1. Znajdź tabelę z hashami. Hashe są w BigQuery tylko tam, gdzie sam je zapisujesz: w logach server-side GTM, w tabeli uploadu konwersji offline albo w danych z CRM.
  2. Uzupełnij pola w testerze. Wybierz e-mail albo telefon, platformę, tabelę i kolumnę z hashem. Jeśli w tej samej tabeli masz jawne dane, dodaj ich kolumnę.
  3. Uruchom SQL w konsoli BigQuery. Zapytanie używa funkcji SHA256 i TO_HEX. Dodaj filtr dat, żeby nie skanować całej historii.
  4. Odczytaj wynik. Zobaczysz liczbę i procent wierszy: brak hasha, pusta wartość, zły format, wielkie litery, hash niepasujący do danych i poprawne hashe.

Skąd biorą się puste hashe

6 błędów, przez które Google Ads i Meta dostają hash zamiast klienta

Hash pustego pola wygląda w podglądzie tak samo jak poprawny e-mail: 64 znaki z cyframi i literami. Dlatego ten błąd potrafi przetrwać miesiące, a konwersje rozszerzone pokazują wtedy niską skuteczność dopasowania.

  • Tag uruchamia się za wcześnie. Wyzwalacz na kliknięcie przycisku odpala tag, zanim formularz zapisze e-mail w dataLayer. Hashuje się pusty tekst.
  • Własny kod hashuje brakującą wartość. Zmienna zwraca undefined, a kod JavaScript zamienia ją na tekst „undefined” i hashuje.
  • Formularz w iframe albo w pop-upie. GTM na stronie nie widzi pola w osadzonym formularzu, więc zmienna zbiera etykietę pola albo nic.
  • Podwójne hashowanie. Wtyczka sklepu albo CRM wysyła już zahashowany e-mail, a tag hashuje go drugi raz.
  • Brak normalizacji. Wielkie litery, spacje, kropki w Gmailu albo telefon bez kierunkowego kraju dają hash innych danych niż te, które zna Google czy Meta.
  • Zły zapis hasha. Wielkie litery w hashu albo Base64 zamiast zapisu szesnastkowego (hex).

Z praktyki: w serwisie cateringu dietetycznego Google Ads zgłaszał błąd krytyczny konwersji rozszerzonych, bo dane były hashowane SHA-1 zamiast SHA-256. Na innej platformie cateringowej w dataLayer brakowało zahashowanego telefonu w formacie E.164. Zobacz case study

Ściąga

Normalizacja e-maila i telefonu przed SHA-256: Google Ads i Meta

Google Ads i Meta normalizują dane inaczej, zwłaszcza telefon. Hash zmienia się całkowicie po zmianie jednego znaku, więc dane trzeba zapisać dokładnie tak, jak wymaga platforma, do której je wysyłasz.

KrokGoogle AdsMeta Conversions API
Dane bez hashadozwolone: tag Google sam je normalizuje i hashuje przed wysłaniemniedozwolone: em i ph muszą być zahashowane (piksel w przeglądarce hashuje sam)
E-mailbez spacji na początku i końcu, małe litery; w gmail.com i googlemail.com usuń kropki przed @bez spacji na początku i końcu, małe litery; kropek nie usuwaj
Plus w e-mailuzostaw (jan+test@)zostaw
Telefonformat E.164: plus, kierunkowy kraju, bez spacji i myślników, np. +48600100200same cyfry z kierunkowym kraju, bez symboli i zer na początku, np. 48600100200
HashSHA-256, zapis hexSHA-256, zapis hex

Przykłady normalizacji e-maila w Google Ads

Wpisany e-mailPo normalizacjiPoczątek hasha
[email protected][email protected]a7a3d61e1c1a…
[email protected][email protected]0a0b3c1d060c…
[email protected][email protected]e1edb5820b9b…
[email protected][email protected]f423723ac7f3…
[email protected][email protected]788b0e3c9407…

Kropki znikają tylko w adresach Gmail. Źródła: Google Ads, Set up enhanced conversions for web using the Google tag; Meta, Customer Information Parameters.

FAQ

Pytania o hashowanie e-maila i telefonu w konwersjach rozszerzonych

Czy Meta przyjmuje niezahashowany e-mail i telefon?

Nie w Conversions API. Pola em i ph muszą być zahashowane SHA-256, a Meta odrzuca niezahashowane dane kontaktowe. Piksel Meta w przeglądarce (zaawansowane dopasowanie) hashuje dane sam.

Wysłać do Google Ads e-mail jawnie czy zahashowany?

Google Ads przyjmie oba. Niezahashowane dane tag Google sam normalizuje i hashuje przed wysłaniem do Google. Pamiętaj, że hash SHA-256 to pseudonimizacja, a nie anonimizacja: w świetle RODO zahashowany e-mail nadal jest daną osobową. W obu przypadkach potrzebujesz podstawy prawnej i zgody ad_user_data w Consent Mode. Jawny e-mail w dataLayer widzą wszystkie skrypty na stronie, dlatego warto ograniczać, gdzie się pojawia. Szczegóły ustal z prawnikiem lub inspektorem ochrony danych.

Czy usuwać kropki i plus z adresów Gmail?

Kropki tak, plus nie. Google Ads wymaga usunięcia kropek przed znakiem @ tylko w domenach gmail.com i googlemail.com. Części po plusie nie usuwaj. Meta nie usuwa kropek, wymaga tylko małych liter i usunięcia spacji.

Czym różni się normalizacja telefonu w Google Ads i Meta?

Google Ads wymaga formatu E.164 z plusem, np. +48600100200. Meta wymaga samych cyfr z kierunkowym kraju, bez plusa i zer na początku, np. 48600100200. Te same dane dają więc dwa różne hashe.

Dlaczego mój hash to e3b0c442…b855?

To SHA-256 pustego tekstu. Tag zahashował pustą zmienną, bo uruchomił się, zanim formularz zapisał dane w dataLayer, albo zmienna w GTM wskazuje złe pole. Google Ads i Meta nie dopasują takiej konwersji do żadnego użytkownika.

Czy mogę użyć hasha e-maila jako user_id w GA4?

Nie. Google wymaga, żeby user ID nie zawierał informacji, po której ktoś trzeci ustali tożsamość użytkownika. Hash SHA-256 e-maila bez dodatkowego klucza łatwo dopasować do znanego adresu. Jako user_id używaj wewnętrznego ID klienta z Twojego systemu.

Gdzie znaleźć hash, który wysyła moja strona?

W podglądzie GTM wybierz zdarzenie konwersji i sprawdź zmienną z danymi użytkownika. W server-side GTM otwórz zdarzenie w podglądzie i sprawdź pole user_data albo żądanie wychodzące do Meta. W BigQuery hashe znajdziesz tylko w tabelach, do których sam je zapisujesz, np. w logach server-side GTM albo w uploadzie konwersji offline.

Zielony wynik oznacza, że wszystko działa?

Nie do końca. Oznacza, że hash ma poprawny format i nie jest żadną ze znanych pustych wartości. Żeby mieć pewność, że to właściwe dane, wpisz w testerze to, co podałeś w formularzu testowym.

Czy tester ma limit sprawdzeń?

Bez podania e-maila sprawdzisz hash 3 razy na dobę na jednym urządzeniu. Po podaniu e-maila tester działa bez limitu. Ścieżka z BigQuery nie ma limitu, bo zapytanie SQL uruchamiasz u siebie.

Czy tester wysyła wpisane dane na serwer?

Nie. Hashowanie i porównanie odbywa się w Twojej przeglądarce, a do statystyk strony trafia tylko liczba sprawdzonych hashy, bez ich treści. Na serwer trafia wyłącznie adres e-mail, jeśli sam go podasz, żeby zdjąć limit. Do testów najlepiej używaj własnego, testowego adresu e-mail i numeru.

Tester znalazł pusty hash? Pomogę go naprawić

Na 30-minutowej konsultacji sprawdzimy razem, skąd tag bierze dane, i ustalimy, co poprawić w dataLayer, GTM albo server-side GTM, żeby Google Ads i Meta dopasowywały konwersje do klientów.