{"id":479,"date":"2026-09-18T17:30:00","date_gmt":"2026-09-18T15:30:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=479"},"modified":"2026-10-26T13:08:32","modified_gmt":"2026-10-26T12:08:32","slug":"sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/","title":{"rendered":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM"},"content":{"rendered":"<p>B2B oznacza sprzeda\u017c mi\u0119dzy firmami. Lead to kontakt z potencjalnym klientem. Taki kontakt mo\u017ce rozpocz\u0105\u0107 si\u0119 od reklamy, a wys\u0142anie formularza nast\u0105pi\u0107 dopiero po kilku wizytach. Parametr\u00f3w kampanii ze strony wej\u015bciowej cz\u0119sto nie ma ju\u017c wtedy w bie\u017c\u0105cym adresie URL. Oddzielny zapis pozwala przekaza\u0107 takie warto\u015bci do formularza, a nast\u0119pnie do CRM, czyli systemu zarz\u0105dzania kontaktami z klientami i szansami sprzeda\u017cy. Rozwi\u0105zanie uzupe\u0142nia integracj\u0119 formularza; GA4 nie traci automatycznie zarejestrowanego \u017ar\u00f3d\u0142a kampanii przy nast\u0119pnym przej\u015bciu na wewn\u0119trzn\u0105 podstron\u0119.<\/p>\n<h2>1. Znaczenie First Touch i Last Touch<\/h2>\n<p>Przyk\u0142ad zachowuje najwcze\u015bniejsz\u0105 i najnowsz\u0105 zaobserwowan\u0105 wizyt\u0119 z prawid\u0142owymi parametrami UTM lub obs\u0142ugiwanymi identyfikatorami klikni\u0119\u0107. Wizyty bez takich parametr\u00f3w nie zmieniaj\u0105 zapis\u00f3w. First Touch oznacza zatem najwcze\u015bniejszy kontakt z kampani\u0105 nadal dost\u0119pny w tej przegl\u0105darce, a Last Touch ostatni zarejestrowany kontakt z kampani\u0105. Atrybucja przypisuje kontakty lub sprzeda\u017c do kana\u0142\u00f3w marketingowych. Dwa zapisy nie odtwarzaj\u0105 pe\u0142nej \u015bcie\u017cki zakupowej ani atrybucji wielokana\u0142owej.<\/p>\n<p>Parametry UTM to oznaczenia kampanii dodane do adresu URL, np. utm_source=newsletter. Pi\u0119\u0107 p\u00f3l UTM opisuje \u017ar\u00f3d\u0142o, medium, kampani\u0119, s\u0142owo kluczowe i tre\u015b\u0107 reklamy. gclid oraz li_fat_id s\u0105 dodatkowo zapisywane oddzielnie z czasem rejestracji. P\u00f3\u017aniejsza kampania e-mail mo\u017ce dzi\u0119ki temu zmieni\u0107 Last Touch bez usuni\u0119cia identyfikatora klikni\u0119cia Google. Inne identyfikatory, w tym wbraid i gbraid, wymagaj\u0105 odr\u0119bnie sprawdzonej integracji.<\/p>\n<h2>2. Zgoda i termin wa\u017cno\u015bci danych<\/h2>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" alt=\"Dane kampanii trafiaj\u0105 do CRM po zgodzie, przez zapis i jawne mapowanie formularza. Brakuj\u0105ce dane pozostaj\u0105 nieznane.\" height=\"650\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/quality-479-20261024.png\" width=\"1120\"\/><figcaption>Dane kampanii trafiaj\u0105 do CRM po zgodzie, przez zapis i jawne mapowanie formularza. Brakuj\u0105ce dane pozostaj\u0105 nieznane.<\/figcaption><\/figure>\n<p>localStorage to pami\u0119\u0107 przegl\u0105darki, kt\u00f3r\u0105 witryna mo\u017ce odczytywa\u0107 i zapisywa\u0107 przez JavaScript. Platforma zarz\u0105dzania zgodami (CMP) przechowuje decyzje dotycz\u0105ce zgody. W Niemczech marketingowy zapis atrybucji w localStorage co do zasady wymaga zgody na podstawie \u00a7 25 TDDDG. localStorage nie stanowi wyj\u0105tku od ochrony informacji na urz\u0105dzeniu ko\u0144cowym. Dost\u0119p pozostaje zablokowany do potwierdzenia zgody. Po wycofaniu zgody integracja CMP musi zatrzyma\u0107 dalsze wykorzystanie, usun\u0105\u0107 zapis i wyczy\u015bci\u0107 uzupe\u0142nione wcze\u015bniej pola atrybucji w formularzach.<\/p>\n<p>Modu\u0142 ES korzysta wy\u0142\u0105cznie z localStorage. Przyk\u0142adowy okres 30 dni biegnie oddzielnie od rejestracji ka\u017cdego kontaktu lub identyfikatora klikni\u0119cia; nie jest og\u00f3lnym zaleceniem retencji. Wygas\u0142e warto\u015bci nie trafiaj\u0105 do wyniku, a fizyczne porz\u0105dkowanie nast\u0119puje przy kolejnym wywo\u0142aniu capture. Usuni\u0119cie danych przez przegl\u0105dark\u0119, ochrona przed \u015bledzeniem i b\u0142\u0119dy pami\u0119ci mog\u0105 skr\u00f3ci\u0107 dost\u0119pno\u015b\u0107. Origin to po\u0142\u0105czenie protoko\u0142u, nazwy hosta i portu adresu internetowego. Zapis dotyczy tego samego originu: inne subdomeny i przegl\u0105darki nie wsp\u00f3\u0142dziel\u0105 tej pami\u0119ci.<\/p>\n<pre class=\"wp-block-code\"><code>export function attributionStore({ consent, storage, now = Date.now }) {\n  const key = 'b2b_attribution_v2';\n  const ttl = 30 * 86400000;\n  const utm = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];\n  const ids = ['gclid', 'li_fat_id'];\n  const valid = value =&gt; typeof value === 'string' &amp;&amp; value.trim().length &gt; 0\n    &amp;&amp; value.length &lt;= 500 &amp;&amp; !\/[\\u0000-\\u001f\\u007f]\/.test(value);\n  function permitted() { try { return consent() === true; } catch { return false; } }\n  function fresh(record, time) {\n    return record &amp;&amp; Number.isFinite(record.at) &amp;&amp; record.at &lt;= time\n      &amp;&amp; time - record.at &lt; ttl &amp;&amp; record.values &amp;&amp; typeof record.values === 'object';\n  }\n  function read(time) {\n    const data = JSON.parse(storage().getItem(key) || '{}');\n    const result = { first: null, last: null, ids: {} };\n    for (const name of ['first', 'last']) {\n      if (fresh(data?.[name], time)) {\n        const values = Object.fromEntries([...utm, ...ids]\n          .filter(k =&gt; valid(data[name].values[k]))\n          .map(k =&gt; [k, data[name].values[k]]));\n        if (Object.keys(values).length) result[name] = { at: data[name].at, values };\n      }\n    }\n    for (const name of ids) {\n      const item = data?.ids?.[name];\n      if (fresh(item, time) &amp;&amp; valid(item.values[name])) result.ids[name] = item;\n    }\n    return result;\n  }\n  return {\n    capture(search) {\n      if (!permitted()) return false;\n      try {\n        const time = now();\n        let data;\n        try { data = read(time); } catch { data = { first: null, last: null, ids: {} }; }\n        const params = new URLSearchParams(search);\n        const values = Object.fromEntries([...utm, ...ids]\n          .filter(k =&gt; params.getAll(k).length === 1 &amp;&amp; valid(params.get(k)))\n          .map(k =&gt; [k, params.get(k).trim()]));\n        if (Object.keys(values).length) {\n          const touch = { at: time, values };\n          data.first ||= touch;\n          data.last = touch;\n          for (const name of ids) if (values[name]) {\n            data.ids[name] = { at: time, values: { [name]: values[name] } };\n          }\n        }\n        storage().setItem(key, JSON.stringify(data));\n        return true;\n      } catch { return false; }\n    },\n    fields() {\n      if (!permitted()) return {};\n      try {\n        const data = read(now());\n        const fields = {};\n        for (const side of ['first', 'last']) {\n          for (const name of utm) fields[side + '_' + name] = data[side]?.values[name] || '';\n          fields[side + '_captured_at'] = data[side] ? new Date(data[side].at).toISOString() : '';\n        }\n        for (const name of ids) {\n          fields[name] = data.ids[name]?.values[name] || '';\n          fields[name + '_captured_at'] = data.ids[name] ? new Date(data.ids[name].at).toISOString() : '';\n        }\n        return fields;\n      } catch { return {}; }\n    },\n    clear() { try { storage().removeItem(key); } catch {} }\n  };\n}\n<\/code><\/pre>\n<p>Modu\u0142 mo\u017ce by\u0107 udost\u0119pniany jako \/assets\/utm-store.mjs. Niezmieniony tag Custom HTML nie wykona export\/import jako klasycznego skryptu JavaScript. Adapter CMP musi zwraca\u0107 rzeczywisty, aktualny stan zgody. Bezpieczna konfiguracja pocz\u0105tkowa poni\u017cej celowo nie zezwala na zapis.<\/p>\n<pre class=\"wp-block-code\"><code>import { attributionStore } from '\/assets\/utm-store.mjs';\nconst attribution = attributionStore({\n  consent: () =&gt; false, \/\/ Replace with the verified CMP adapter.\n  storage: () =&gt; window.localStorage\n});\n\/\/ After consent is confirmed, and on relevant SPA navigation:\nattribution.capture(window.location.search);\n\/\/ In the CMP withdrawal handler:\n\/\/ attribution.clear();\n<\/code><\/pre>\n<p>capture wymaga ponownego wywo\u0142ania po zgodzie, gdy parametry kampanii s\u0105 jeszcze dost\u0119pne. Pojedyncze wywo\u0142anie przed zgod\u0105 nie rejestruje wizyty wstecznie. Aplikacje SPA zmieniaj\u0105 wy\u015bwietlan\u0105 tre\u015b\u0107 bez wczytywania ca\u0142ego nowego dokumentu. Wymagaj\u0105 wywo\u0142ania przy odpowiednich zmianach adresu URL podczas nawigacji. Odczyt parametr\u00f3w URL nie potrzebuje zdarzenia DOMContentLoaded. Duplikaty, puste lub zbyt d\u0142ugie warto\u015bci oraz znaki steruj\u0105ce s\u0105 odrzucane. Powt\u00f3rzenie wywo\u0142ania dla tego samego oznaczonego adresu stanowi kolejn\u0105 obserwacj\u0119; czas rejestracji nie jest zweryfikowanym czasem klikni\u0119cia reklamy.<\/p>\n<h2>3. Jawne mapowanie p\u00f3l formularza<\/h2>\n<p>fields() zwraca nazwane pola bez zagnie\u017cd\u017conych obiekt\u00f3w, takie jak first_utm_source, last_utm_campaign, gclid i gclid_captured_at. Brakuj\u0105ce warto\u015bci pozostaj\u0105 puste. Puste pole nie dowodzi wej\u015bcia bezpo\u015bredniego. Sama obecno\u015b\u0107 gclid r\u00f3wnie\u017c nie uzupe\u0142nia automatycznie p\u00f3l UTM. Wnioskowana klasyfikacja kana\u0142u wymaga opisanej regu\u0142y, oddzielonej od surowych warto\u015bci.<\/p>\n<p>Pole ukryte jest wysy\u0142ane wraz z formularzem, ale nie jest widoczne jako pole do wpisywania. We w\u0142asnym formularzu HTML ka\u017cde przygotowane pole ukryte mo\u017ce otrzyma\u0107 data-attribution-key. Funkcja aktualizuje tylko oznaczone pola i usuwa wcze\u015bniejsze warto\u015bci, gdy zgoda nie jest ju\u017c dost\u0119pna. Obs\u0142uga wys\u0142ania formularza musi wywo\u0142a\u0107 funkcj\u0119 przed utworzeniem danych \u017c\u0105dania; biblioteki asynchroniczne wymagaj\u0105 odpowiedniego, udokumentowanego mechanizmu integracji.<\/p>\n<pre class=\"wp-block-code\"><code>function fillAttribution(form) {\n  const values = attribution.fields();\n  for (const field of form.querySelectorAll('input[type=hidden][data-attribution-key]')) {\n    field.value = values[field.dataset.attributionKey] || '';\n  }\n}\n\/\/ Example field in a custom form:\n\/\/ &lt;input type=\"hidden\" name=\"campaign_source\" data-attribution-key=\"first_utm_source\"&gt;\n<\/code><\/pre>\n<p>Gravity Forms od wersji 2.9 udost\u0119pnia natywne zdarzenie gform\/post_render. Starsze gform_post_render jest zdarzeniem jQuery; wpisanie tej nazwy do document.addEventListener nie zapewnia r\u00f3wnowa\u017cnej obs\u0142ugi. Zdarzenia i mapowanie p\u00f3l musz\u0105 odpowiada\u0107 zainstalowanej wersji. Nazwa w\u0142a\u015bciwo\u015bci CRM nie staje si\u0119 automatycznie nazw\u0105 pola HTML Gravity Forms. Aktualne formularze HubSpot udost\u0119pniaj\u0105 instancje formularzy i setFieldValue. Iframe osadza inn\u0105 stron\u0119 wewn\u0105trz bie\u017c\u0105cej strony. Og\u00f3lne wyszukiwanie w drzewie HTML g\u0142\u00f3wnego dokumentu nie dociera do iframe z innego originu. Contact Form 7 r\u00f3wnie\u017c wymaga skonfigurowanych p\u00f3l i poprawnego przekazania warto\u015bci.<\/p>\n<h2>4. CRM i konwersje offline<\/h2>\n<p>Backend ponownie sprawdza otrzymane warto\u015bci: pola ukryte i parametry URL mo\u017cna modyfikowa\u0107. Imiona, adresy e-mail i inne dane osobowe nie powinny trafia\u0107 do UTM. W\u0142a\u015bciwo\u015bci CRM, pola formularza i pola API wymagaj\u0105 jawnego mapowania; zgodne etykiety nie tworz\u0105 po\u0142\u0105czenia mi\u0119dzy systemami.<\/p>\n<p>Dla istniej\u0105cych kontakt\u00f3w potrzebne s\u0105 regu\u0142y zachowania najwcze\u015bniejszego znanego kontaktu, zapisu p\u00f3\u017aniejszych kampanii i \u0142\u0105czenia rekord\u00f3w. Powi\u0105zanie kontaktu z transakcj\u0105 wymaga jawnej konfiguracji. Grupa kana\u0142\u00f3w Paid Social (p\u0142atne reklamy w mediach spo\u0142eczno\u015bciowych) opisuje pochodzenie. Lead, Opportunity i Closed-Won to etapy sprzeda\u017cy: potencjalny kontakt, konkretna szansa sprzeda\u017cy i zako\u0144czona sprzeda\u017c. To odr\u0119bne wymiary.<\/p>\n<p>Konwersja offline to wynik zarejestrowany poza witryn\u0105, np. sprzeda\u017c potwierdzona w CRM. Obs\u0142uga duplikat\u00f3w zapobiega wielokrotnemu policzeniu tego samego wyniku. Konwersje offline wymagaj\u0105 oddzielnej integracji z akcj\u0105 konwersji, rzeczywistym czasem konwersji, odpowiednim identyfikatorem, wymagan\u0105 zgod\u0105 i obs\u0142ug\u0105 duplikat\u00f3w. Sam zapis ID w CRM nie uruchamia wysy\u0142ki. Google podaje maksymalnie 90 dni od powi\u0105zanego klikni\u0119cia dla klasycznego importu offline oraz 63 dni dla konwersji rozszerzonych dotycz\u0105cych potencjalnych klient\u00f3w; obowi\u0105zuje r\u00f3wnie\u017c ustawione okno konwersji. Okre\u015bla ono, jak d\u0142ugo po interakcji z reklam\u0105 mo\u017cna jeszcze przypisa\u0107 do niej wynik. Okres zapisu w przegl\u0105darce jest niezale\u017cny. Wcze\u015bniejsze kwalifikowane etapy sprzeda\u017cy mog\u0105 stanowi\u0107 osobne akcje konwersji, je\u015bli definicje i warto\u015bci odpowiadaj\u0105 celowi optymalizacji.<\/p>\n<p>W LinkedIn parametr li_fat_id w adresie strony docelowej wymaga w\u0142\u0105czenia Enhanced conversion tracking dla Insight Tag w Campaign Managerze. Conversions API przyjmuje identyfikator jako LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID. Dost\u0119pno\u015b\u0107 identyfikatora dopasowania nie dowodzi jeszcze konwersji w oknie atrybucji.<\/p>\n<h2>5. Sprawdzenie przed wdro\u017ceniem<\/h2>\n<p>\u015acie\u017cka testowa prowadzi od kampanii Google przez nieoznaczon\u0105 podstron\u0119 i p\u00f3\u017aniejsz\u0105 kampani\u0119 e-mail do formularza. First Touch pozostaje Google, Last Touch zmienia si\u0119 na e-mail, a niewygas\u0142y gclid pozostaje zapisany oddzielnie. Kolejne pr\u00f3by obejmuj\u0105 odmow\u0119 i wycofanie zgody, wygas\u0142e i uszkodzone dane, zablokowan\u0105 pami\u0119\u0107, formularze AJAX i rzeczywiste pola CRM. Dziesi\u0119\u0107 izolowanych test\u00f3w JavaScript sprawdza logik\u0119 zapisu; testy nie obejmuj\u0105 produkcyjnej integracji CMP, formularza ani CRM.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy Safari zachowa dane przez 30 dni?<\/h3>\n<p>Taki okres nie jest gwarantowany. WebKit mo\u017ce usun\u0105\u0107 pami\u0119\u0107 zapisywaln\u0105 przez skrypty po siedmiu dniach korzystania z przegl\u0105darki bez interakcji z witryn\u0105. Ciasteczka ustawiane przez serwer nie s\u0105 uniwersalnym obej\u015bciem: ograniczenia mog\u0105 obejmowa\u0107 r\u00f3wnie\u017c \u015bledzenie wykorzystuj\u0105ce CNAME lub adresy IP. Zgodnie z prawem przekazana kopia w CRM nie zale\u017cy ju\u017c od pami\u0119ci przegl\u0105darki, lecz nadal wymaga w\u0142asnych zasad retencji i usuwania.<\/p>\n<h3>Czy First Touch i Last Touch oznaczaj\u0105 pe\u0142n\u0105 atrybucj\u0119?<\/h3>\n<p>Dwa punkty styku nie tworz\u0105 pe\u0142nej sekwencji zdarze\u0144. Przyk\u0142ad zachowuje ponadto tylko ostatni zaobserwowany obs\u0142ugiwany identyfikator klikni\u0119cia danej platformy. Wiele klikni\u0119\u0107, zmiany urz\u0105dze\u0144 i \u0142\u0105czenie kontakt\u00f3w wymagaj\u0105 rozbudowanego modelu z odpowiedni\u0105 ochron\u0105 danych. Wynik opisuje zaobserwowane sygna\u0142y kampanii, a nie udowodniony wp\u0142yw na przych\u00f3d.<\/p>\n<\/div>\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<p><a href=\"https:\/\/support.google.com\/tagmanager\" rel=\"noopener noreferrer\" target=\"_blank\">Tag Manager: pomoc<\/a> \u00b7 <a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\/reference\/events\" rel=\"noopener noreferrer\" target=\"_blank\">Google Analytics 4: wykaz zdarze\u0144<\/a><\/p>\n<ul>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/11080067?hl=en\">GA4: zakresy \u017ar\u00f3de\u0142 ruchu<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Window\/localStorage\">localStorage<\/a><\/li>\n<li><a href=\"https:\/\/docs.gravityforms.com\/gform-post_render\/\">Gravity Forms: gform\/post_render<\/a><\/li>\n<li><a href=\"https:\/\/developers.hubspot.com\/docs\/api-reference\/latest\/marketing\/forms\/global-form-events\">HubSpot: zdarzenia i pola formularzy<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/linkedin\/marketing\/conversions\/enabling-first-party-cookies\">LinkedIn: identyfikatory klikni\u0119\u0107<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/15081888?hl=en\">Limity przesy\u0142ania konwersji offline<\/a><\/li>\n<li><a href=\"https:\/\/webkit.org\/tracking-prevention\/\">WebKit: ochrona przed \u015bledzeniem<\/a><\/li>\n<li><a href=\"https:\/\/www.gesetze-im-internet.de\/ttdsg\/__25.html\">\u00a7 25 TDDDG<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Zapis pierwszego i ostatniego kontaktu z kampani\u0105 oraz identyfikator\u00f3w klikni\u0119\u0107 dla formularzy B2B i CRM, z kontrol\u0105 zgody, terminem wa\u017cno\u015bci i mapowaniem p\u00f3l.<\/p>\n","protected":false},"author":1,"featured_media":30589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[92361,92035,92038,92133,92044,92238],"class_list":["post-479","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-digital-marketing-pl","tag-attribution-pl","tag-conversion-tracking-pl","tag-marketing-cyfrowy-pl-pl","tag-google-tag-manager-pl","tag-tracking-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.\" \/>\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\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-18T15:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:08:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.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=\"9 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\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM\",\"datePublished\":\"2026-09-18T15:30:00+00:00\",\"dateModified\":\"2026-10-26T12:08:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/\"},\"wordCount\":1373,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-479.png\",\"keywords\":[\"Attribution\",\"Conversion Tracking\",\"Digital Marketing\",\"Google Tag Manager\",\"Tracking\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/\",\"name\":\"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-479.png\",\"datePublished\":\"2026-09-18T15:30:00+00:00\",\"dateModified\":\"2026-10-26T12:08:32+00:00\",\"description\":\"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-479.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-479.png\",\"width\":1200,\"height\":630,\"caption\":\"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM\"}]},{\"@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":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik","description":"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.","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\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/","og_locale":"en_US","og_type":"article","og_title":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik","og_description":"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-18T15:30:00+00:00","article_modified_time":"2026-10-26T12:08:32+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM","datePublished":"2026-09-18T15:30:00+00:00","dateModified":"2026-10-26T12:08:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/"},"wordCount":1373,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.png","keywords":["Attribution","Conversion Tracking","Digital Marketing","Google Tag Manager","Tracking","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/","name":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.png","datePublished":"2026-09-18T15:30:00+00:00","dateModified":"2026-10-26T12:08:32+00:00","description":"Zachowanie UTM w lejku B2B: zapis w JavaScript, pola formularza i atrybucja CRM oraz ograniczenia cookies i zgody.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-479.png","width":1200,"height":630,"caption":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/sledzenie-kampanii-do-zapytania-klienta-zapisywanie-danych-utm-w-crm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u015aledzenie kampanii do zapytania klienta: zapisywanie danych UTM w CRM"}]},{"@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\/479","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=479"}],"version-history":[{"count":10,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/479\/revisions"}],"predecessor-version":[{"id":27188,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/479\/revisions\/27188"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30589"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}