{"id":10468,"date":"2026-09-18T18:10:00","date_gmt":"2026-09-18T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10468"},"modified":"2026-10-26T11:52:52","modified_gmt":"2026-10-26T10:52:52","slug":"przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/","title":{"rendered":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie"},"content":{"rendered":"<p>SHA-256 oblicza z danych wej\u015bciowych warto\u015b\u0107 o sta\u0142ej d\u0142ugo\u015bci, nazywan\u0105 skr\u00f3tem lub haszem. Poprawna odpowied\u017a Conversions API nie potwierdza prawid\u0142owego dopasowania adresu e-mail. Wiarygodnie wygl\u0105daj\u0105cy skr\u00f3t SHA-256 mo\u017ce powsta\u0107 z niew\u0142a\u015bciwie przygotowanych danych. Inne identyfikatory nadal mog\u0105 wspiera\u0107 dopasowanie. Przyj\u0119cie zdarzenia, jako\u015b\u0107 danych i rzeczywiste dopasowanie wymagaj\u0105 zatem osobnych kontroli.<\/p>\n<p>Normalizacja oznacza tutaj przygotowanie warto\u015bci do postaci wymaganej dla konkretnego pola przed haszowaniem. Dla adresu e-mail kolejno\u015b\u0107 obejmuje usuni\u0119cie bia\u0142ych znak\u00f3w z pocz\u0105tku i ko\u0144ca, zamian\u0119 liter na ma\u0142e, a nast\u0119pnie obliczenie SHA-256. Zmiana gotowego skr\u00f3tu nie naprawia b\u0142\u0119du wej\u015bcia.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10468-capihash-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Dwie obliczone warto\u015bci SHA-256 i por\u00f3wnanie z fikcyjnym wynikiem oczekiwanym. To nie jest wynik dopasowania Meta.\"><figcaption>Dwa zapisy, dwa skr\u00f3ty. Lokalne por\u00f3wnanie z oczekiwan\u0105 warto\u015bci\u0105 nie potwierdza przyj\u0119cia przez API ani atrybucji.<\/figcaption><\/figure>\n<h2>Dlaczego dok\u0142adna posta\u0107 wej\u015bcia ma znaczenie<\/h2>\n<p>SHA-256 przetwarza bajty. Spacje i wielko\u015b\u0107 liter zmieniaj\u0105 wynik. W przyk\u0142adzie trzy zapisy tego samego fikcyjnego adresu daj\u0105 trzy r\u00f3\u017cne skr\u00f3ty. Por\u00f3wnanie z oczekiwanym skr\u00f3tem wymaga znormalizowanego zapisu. Nie oznacza to, \u017ce Meta w og\u00f3le nie por\u00f3wnuje innych warto\u015bci ani \u017ce ca\u0142e zdarzenie musi pozosta\u0107 bez dopasowania.<\/p>\n<h2>Regu\u0142y p\u00f3l zamiast jednej funkcji do wszystkiego<\/h2>\n<p>Poni\u017csza tabela u\u0142atwia przygotowanie integracji. Rozstrzygaj\u0105ce pozostaj\u0105 aktualna specyfikacja p\u00f3l Meta i u\u017cywana wersja SDK. SDK to biblioteka programistyczna u\u0142atwiaj\u0105ca korzystanie z API. Mo\u017ce ju\u017c normalizowa\u0107 i haszowa\u0107 dane, dlatego wcze\u015bniejsze przekszta\u0142cenia musz\u0105 by\u0107 zgodne z tym dzia\u0142aniem.<\/p>\n<table><thead><tr><th>Pole<\/th><th>Przygotowanie i kontrola<\/th><\/tr><\/thead><tbody>\n<tr><td><code>em<\/code><\/td><td>Usuni\u0119cie zewn\u0119trznych bia\u0142ych znak\u00f3w i ma\u0142e litery; bez wymy\u015blonych poprawek samego adresu.<\/td><\/tr>\n<tr><td><code>ph<\/code><\/td><td>Numer mi\u0119dzynarodowy z kodem kraju, do haszowania zapisany samymi cyframi. Prefiksy zale\u017cne od kraju wymagaj\u0105 wcze\u015bniejszej interpretacji.<\/td><\/tr>\n<tr><td><code>fn<\/code>, <code>ln<\/code><\/td><td>Ma\u0142e litery i kontrola zewn\u0119trznych bia\u0142ych znak\u00f3w. Sprawdzone funkcje Python\/Node.js nie usuwaj\u0105 tutaj automatycznie wszystkich wewn\u0119trznych spacji i znak\u00f3w interpunkcyjnych.<\/td><\/tr>\n<tr><td><code>ct<\/code><\/td><td>Nazwa miejscowo\u015bci ma\u0142ymi literami, bez spacji i interpunkcji wed\u0142ug specyfikacji pola; dzia\u0142anie SDK wymaga test\u00f3w na przyk\u0142adach.<\/td><\/tr>\n<tr><td><code>country<\/code>, <code>st<\/code><\/td><td>Kraj jako dwuliterowy kod ISO, np. <code>pl<\/code>. Region wymaga osobnej obs\u0142ugi: skr\u00f3t stanu USA nie jest \u015bwiatow\u0105 regu\u0142\u0105 zapisu region\u00f3w.<\/td><\/tr>\n<tr><td><code>ge<\/code>, <code>db<\/code><\/td><td>Je\u017celi dane s\u0105 dost\u0119pne i przetwarzanie dozwolone: <code>f<\/code>\/<code>m<\/code> albo poprawna data w formacie <code>YYYYMMDD<\/code>. Brakuj\u0105cych warto\u015bci nie nale\u017cy zgadywa\u0107.<\/td><\/tr>\n<\/tbody><\/table>\n<p>Numery telefon\u00f3w mo\u017cna przetwarza\u0107 automatycznie z uwzgl\u0119dnieniem kraju i aktualnej biblioteki, takiej jak libphonenumber. Samo usuni\u0119cie znak\u00f3w innych ni\u017c cyfry nie wystarcza: w niemieckim przyk\u0142adzie <code>+49 (0)170 1234567<\/code> pozosta\u0142oby zb\u0119dne zero. Usuwanie zera po ka\u017cdym kodzie kraju r\u00f3wnie\u017c jest b\u0142\u0119dem; pocz\u0105tkowe zero mo\u017ce nale\u017ce\u0107 do w\u0142oskiego numeru mi\u0119dzynarodowego. Niejednoznaczne dane wymagaj\u0105 wyja\u015bnienia. Kontrola formatu nie potwierdza aktualnej dost\u0119pno\u015bci numeru.<\/p>\n\n\n<!-- lw-flux-illu 10464-a2 -->\n<figure class=\"lw-illu\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/flux-10464-a2.webp\" width=\"1120\" height=\"630\" loading=\"lazy\" decoding=\"async\" alt=\"Pranie jest posortowane wed\u0142ug rodzaju w trzech koszach, a jedwabna chusta wisi osobno. Tak samo ka\u017cdy rodzaj danych klienta potrzebuje w\u0142asnej regu\u0142y przed hashowaniem (uczynieniem nieczytelnymi).\"><figcaption>Pranie jest posortowane wed\u0142ug rodzaju w trzech koszach, a jedwabna chusta wisi osobno. Tak samo ka\u017cdy rodzaj danych klienta potrzebuje w\u0142asnej regu\u0142y przed hashowaniem (uczynieniem nieczytelnymi).<\/figcaption><\/figure>\n\n\n<h2>Warto\u015bci przekazywane bez haszowania<\/h2>\n<p><code>client_ip_address<\/code>, <code>client_user_agent<\/code>, <code>fbp<\/code> i <code>fbc<\/code> s\u0105 przekazywane bez haszowania, zgodnie ze specyfikacj\u0105 p\u00f3l. Nie oznacza to braku znaczenia dla prywatno\u015bci ani braku zwi\u0105zku z danymi osobowymi. Adres IP musi odpowiada\u0107 zdarzeniu; adres proxy nie zast\u0119puje adresu przegl\u0105darki. Identyfikator\u00f3w plik\u00f3w cookie i klikni\u0119\u0107 nie wolno dowolnie wymy\u015bla\u0107.<\/p>\n<p>To wa\u017cne przyk\u0142ady, a nie pe\u0142na lista p\u00f3l API. Jawne mapowanie okre\u015bla walidacj\u0119, normalizacj\u0119, haszowanie albo przekazanie bez zmian. Nowe pola wymagaj\u0105 osobnej decyzji zamiast obj\u0119cia ca\u0142ego obiektu jedn\u0105 p\u0119tl\u0105 haszuj\u0105c\u0105.<\/p>\n<h2>Powtarzalny test bez prawdziwych danych klient\u00f3w<\/h2>\n<p>Przyk\u0142ad w Pythonie oblicza pe\u0142ne skr\u00f3ty fikcyjnego adresu. Pierwsze dwa wyniki zaczynaj\u0105 si\u0119 od <code>524d6368<\/code> i <code>de4c5edc<\/code>; wersja znormalizowana zaczyna si\u0119 od <code>dd432348<\/code>.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> hashlib\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">samples = &#91;\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"  Max.Mustermann@Example.COM \"<\/span>,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"  max.mustermann@example.com \"<\/span>,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">\"max.mustermann@example.com\"<\/span>,\n<\/span><span class=\"cbb-line\">&#93;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">for<\/span> value <span class=\"cbb-keyword\">in<\/span> samples:\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">print<\/span>(<span class=\"cbb-function\">repr<\/span>(value), hashlib.<span class=\"cbb-function\">sha256<\/span>(value.<span class=\"cbb-function\">encode<\/span>(<span class=\"cbb-string\">\"utf-8\"<\/span>)).<span class=\"cbb-function\">hexdigest<\/span>())\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">expected = <span class=\"cbb-string\">\"dd432348e6c3373c5f646913fa94ae7947bc0086b42028aedec4371e3e3c2cdb\"<\/span>\n<\/span><span class=\"cbb-line\">normalised = samples&#91;<span class=\"cbb-number\">0<\/span>&#93;.<span class=\"cbb-function\">strip<\/span>().<span class=\"cbb-function\">lower<\/span>()\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">assert<\/span> hashlib.<span class=\"cbb-function\">sha256<\/span>(normalised.<span class=\"cbb-function\">encode<\/span>(<span class=\"cbb-string\">\"utf-8\"<\/span>)).<span class=\"cbb-function\">hexdigest<\/span>() == expected<\/span><\/code><\/pre><\/figure>\n<p>Test potwierdza lokalne obliczenie, a nie dopasowanie przez Meta. W te\u015bcie integracji ta sama warto\u015b\u0107 powinna przej\u015b\u0107 przez wszystkie etapy przetwarzania a\u017c do danych ostatecznie wysy\u0142anych do Meta. Potrzebne s\u0105 r\u00f3wnie\u017c przypadki puste, mi\u0119dzynarodowe numery telefon\u00f3w, kody pocztowe i wej\u015bcia ju\u017c zahaszowane. Niezabezpieczone dzienniki nie s\u0105 miejscem na surowe dane klient\u00f3w ani prawdziwe identyfikatory.<\/p>\n<p>B\u0142\u0119dy i ostrze\u017cenia API nadal maj\u0105 znaczenie. Niew\u0142a\u015bciwy skr\u00f3t mo\u017ce pozosta\u0107 niezauwa\u017cony, ale SDK mo\u017ce odrzuci\u0107 niepoprawne wej\u015bcie jeszcze przed wys\u0142aniem. Event Match Quality jest wska\u017anikiem diagnostycznym, a nie dowodem przypisania konkretnego zdarzenia do konkretnej osoby. Pojedynczy b\u0142\u0105d haszowania nie pozwala przewidzie\u0107 okre\u015blonej zmiany wska\u017anika ani liczby zdarze\u0144.<\/p>\n<h2>Przegl\u0105darka czy serwer: decyduje przep\u0142yw danych<\/h2>\n<p>Normalizacja i haszowanie mog\u0105 dzia\u0142a\u0107 w przegl\u0105darce lub na serwerze. Meta udost\u0119pnia tak\u017ce kliencki parameter builder. Haszowanie w przegl\u0105darce nie wymusza wys\u0142ania surowego adresu: decyduj\u0105 rzeczywiste \u017c\u0105dania i pozosta\u0142e skrypty. Backend r\u00f3wnie\u017c mo\u017ce otrzymywa\u0107 surowe dane, co wi\u0105\u017ce si\u0119 z obowi\u0105zkami ochrony.<\/p>\n<p>Integracja potrzebuje jasno wskazanego etapu odpowiedzialnego za przetwarzanie, udokumentowanego stanu wej\u015bcia i kontroli wychodz\u0105cych danych. Tajny token dost\u0119pu CAPI nie mo\u017ce trafi\u0107 do publicznie udost\u0119pnianego kodu przegl\u0105darki. Haszowanie nie zast\u0119puje szyfrowania transmisji ani zgodno\u015bci przetwarzania z prawem.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy zahaszowane dane klient\u00f3w s\u0105 automatycznie anonimowe?<\/h3><p>Nie. W opisanym dopasowaniu powi\u0105zanie z osob\u0105 pozostaje zamierzone i mo\u017cliwe dzi\u0119ki dodatkowym danym. Taki skr\u00f3t nie zapewnia automatycznej anonimizacji. Podstawa prawna, przejrzysto\u015b\u0107 i ewentualna wymagana zgoda wymagaj\u0105 niezale\u017cnego ustalenia.<\/p>\n<h3>Jak zapobiega\u0107 podw\u00f3jnemu haszowaniu?<\/h3><p>Haszowanie skr\u00f3tu daje wynik inny ni\u017c oczekiwany pojedynczy skr\u00f3t. Interfejs mi\u0119dzy etapami musi wi\u0119c jasno okre\u015bla\u0107, czy przekazywana jest warto\u015b\u0107 surowa, czy ju\u017c znormalizowany SHA-256. Wzorzec 64 znak\u00f3w szesnastkowych nie potwierdza pochodzenia ani poprawnej normalizacji. W\u0142asny identyfikator mo\u017ce przypadkowo mie\u0107 ten sam format. Regu\u0142y rozpoznawania w SDK wymagaj\u0105 kontroli i nie stanowi\u0105 dowodu pochodzenia.<\/p>\n<h3>Jak traktowa\u0107 kody pocztowe i external_id?<\/h3><p><code>zp<\/code> wymaga przygotowania odpowiedniego dla kraju. Dokumentacja Python SDK wskazuje pi\u0119\u0107 cyfr dla USA, a dla pozosta\u0142ych kraj\u00f3w standardy krajowe. Jednocze\u015bnie sprawdzona funkcja normalizuj\u0105ca dzieli tekst przy pierwszym \u0142\u0105czniku: <code>00-950<\/code> zmieni\u0142oby si\u0119 w <code>00<\/code>. To efekt dzia\u0142ania SDK, a nie og\u00f3lna regu\u0142a dla polskich kod\u00f3w pocztowych. Integracja wymaga jawnego przypadku testowego sprawdzonego z aktualn\u0105 specyfikacj\u0105 pola.<\/p><p><code>external_id<\/code> to w\u0142asny identyfikator. Sprawdzona \u015bcie\u017cka Python UserData przekazuje t\u0119 list\u0119 bez dodatkowego haszowania; inne funkcje mog\u0105 dzia\u0142a\u0107 inaczej. Rozstrzygaj\u0105cy pozostaje aktualny schemat. Udokumentowane zasady musz\u0105 okre\u015bla\u0107 etap haszowania oraz to, czy wej\u015bcie jest surowe, czy ju\u017c zahaszowane. Pixel i CAPI wymagaj\u0105 identycznej ko\u0144cowej postaci. Automatyczne traktowanie tego pola jak adresu e-mail jest niew\u0142a\u015bciwe.<\/p><\/div>\n<div class=\"lw-quellen\"><h2>\u0179r\u00f3d\u0142a<\/h2><ul>\n<li><a href=\"https:\/\/developers.facebook.com\/documentation\/ads-commerce\/conversions-api\" target=\"_blank\" rel=\"noopener noreferrer\">Meta Conversions API<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/facebook\/facebook-python-business-sdk\/blob\/main\/facebook_business\/adobjects\/serverside\/normalize.py\" target=\"_blank\" rel=\"noopener noreferrer\">Meta Python Business SDK: normalizacja i haszowanie<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/facebook\/facebook-python-business-sdk\/blob\/main\/facebook_business\/adobjects\/serverside\/user_data.py\" target=\"_blank\" rel=\"noopener noreferrer\">Meta Python Business SDK: pola danych u\u017cytkownika<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/facebook\/facebook-nodejs-business-sdk\/blob\/main\/src\/objects\/serverside\/utils.js\" target=\"_blank\" rel=\"noopener noreferrer\">Meta Node.js Business SDK: normalizacja p\u00f3l<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/facebook\/capi-param-builder\/blob\/main\/client_js\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">Meta: przygotowanie parametr\u00f3w w przegl\u0105darce<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/google\/libphonenumber\" target=\"_blank\" rel=\"noopener noreferrer\">Google: libphonenumber<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/google\/libphonenumber\/blob\/master\/FAQ.md\" target=\"_blank\" rel=\"noopener noreferrer\">Google libphonenumber: pytania o odczyt i walidacj\u0119<\/a><\/li>\n<li><a href=\"https:\/\/www.edpb.europa.eu\/sme\/find-practical-info\/faq_en\" target=\"_blank\" rel=\"noopener noreferrer\">EROD: pytania o ochron\u0119 danych<\/a><\/li>\n<\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Poprawne haszowanie CAPI wymaga przygotowania odpowiedniego dla pola i jasnych zasad przetwarzania. Powtarzalny przyk\u0142ad SHA-256 rozdziela lokalne obliczenie, przyj\u0119cie przez API i dopasowanie.<\/p>\n","protected":false},"author":1,"featured_media":30787,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[92250,92136],"class_list":["post-10468","post","type-post","status-publish","format-standard","hentry","category-digital-marketing-pl","tag-meta-conversions-api-pl","tag-server-side-gtm-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T10:52:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie\",\"datePublished\":\"2026-09-18T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:52:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/\"},\"wordCount\":1157,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10468.png\",\"keywords\":[\"Meta Conversions API\",\"Server-Side GTM\"],\"articleSection\":[\"Digital Marketing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/\",\"name\":\"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10468.png\",\"datePublished\":\"2026-09-18T16:10:00+00:00\",\"dateModified\":\"2026-10-26T10:52:52+00:00\",\"description\":\"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10468.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10468.png\",\"width\":1200,\"height\":630,\"caption\":\"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik","description":"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/","og_locale":"en_US","og_type":"article","og_title":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik","og_description":"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-18T16:10:00+00:00","article_modified_time":"2026-10-26T10:52:52+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie","datePublished":"2026-09-18T16:10:00+00:00","dateModified":"2026-10-26T10:52:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/"},"wordCount":1157,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png","keywords":["Meta Conversions API","Server-Side GTM"],"articleSection":["Digital Marketing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/","name":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png","datePublished":"2026-09-18T16:10:00+00:00","dateModified":"2026-10-26T10:52:52+00:00","description":"Dlaczego przyci\u0119cie i ma\u0142e litery rozstrzygaj\u0105, czy zdarzenie Conversions API znajdzie osob\u0119, i kt\u00f3rych parametr\u00f3w nie wolno haszowa\u0107.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10468.png","width":1200,"height":630,"caption":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/przygotowanie-danych-klientow-do-meta-conversions-api-formatowanie-i-hashowanie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Przygotowanie danych klient\u00f3w do Meta Conversions API: formatowanie i hashowanie"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10468"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10468\/revisions"}],"predecessor-version":[{"id":26699,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10468\/revisions\/26699"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30787"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}