{"id":10100,"date":"2026-10-25T19:26:00","date_gmt":"2026-10-25T18:26:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10100"},"modified":"2026-10-24T03:23:34","modified_gmt":"2026-10-24T01:23:34","slug":"tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/","title":{"rendered":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio"},"content":{"rendered":"<p>Raport zg\u00f3d z GA4 odpowiada na konkretne pytanie: jaki odsetek wyeksportowanych zdarze\u0144 ma dany stan zgody? Warto\u015b\u0107 70% dla <code>analytics_storage = Yes<\/code> oznacza taki stan w 70 na 100 zarejestrowanych zdarze\u0144. Nie oznacza akceptacji banera przez 70% odwiedzaj\u0105cych.<\/p>\n<p>Ten tutorial przygotowuje dzienny raport stan\u00f3w w BigQuery oraz dane do Looker Studio. Zgoda na przechowywanie danych analitycznych pozostaje oddzielona od zgody na przechowywanie danych reklamowych. Raport zachowuje nieznane stany i pokazuje brakuj\u0105ce tabele dzienne. Zmiany stanowi\u0105 punkt wyj\u015bcia do analizy, a nie dow\u00f3d b\u0142\u0119du banera lub utraconych konwersji.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10100-review-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Dzienne zdarzenia eksportu, oddzielne stany zgody Analytics i Ads oraz wa\u017cone udzia\u0142y w raporcie\"><figcaption>Udzia\u0142y zdarze\u0144 opisuj\u0105 eksport; decyzje w banerze wymagaj\u0105 osobnej miary.<\/figcaption><\/figure>\n<h2>1. Definicja wska\u017anika i wymagania<\/h2>\n<p>Punktem wyj\u015bcia jest istniej\u0105ce po\u0142\u0105czenie GA4 z BigQuery, w\u0142\u0105czony eksport dzienny oraz uprawnienia do odczytu i wykonywania zapyta\u0144. Consent Mode musi prawid\u0142owo przekazywa\u0107 warto\u015bci domy\u015blne oraz aktualizacje. Po\u0142\u0105czenie z BigQuery nie odtwarza wcze\u015bniejszych decyzji w banerze.<\/p>\n<p>Schemat zdarze\u0144 zawiera <code>privacy_info.analytics_storage<\/code> i <code>privacy_info.ads_storage<\/code>. Udokumentowane warto\u015bci to <code>Yes<\/code>, <code>No<\/code> i <code>Unset<\/code>. Zapytanie dodatkowo zbiera warto\u015bci null i nieoczekiwane tre\u015bci w kategorii <code>other<\/code>. Brak ustawionego stanu nie oznacza jednoznacznej odmowy. Te dwa pola nie opisuj\u0105 wszystkich ustawie\u0144 Consent Mode: przechowywanie danych reklamowych r\u00f3\u017cni si\u0119 od zgody na dane u\u017cytkownik\u00f3w do cel\u00f3w reklamowych i na personalizacj\u0119 reklam.<\/p>\n<p>Mianownik obejmuje wszystkie wyeksportowane zdarzenia w wybranych tabelach dziennych. Aktywna wizyta wnosi wi\u0119cej zdarze\u0144 ni\u017c kr\u00f3tka wizyta. Stan domy\u015blny przed decyzj\u0105 w banerze mo\u017ce r\u00f3\u017cni\u0107 si\u0119 od p\u00f3\u017aniejszego stanu. W podstawowym wdro\u017ceniu zablokowany ruch nie trafia do GA4. Wdro\u017cenie zaawansowane mo\u017ce wysy\u0142a\u0107 pingi bez ciasteczek przy odmowie przechowywania. Blokady przegl\u0105darki i b\u0142\u0119dy zbierania tworz\u0105 kolejne luki. Dzielenie dost\u0119pnych wierszy nie odzyskuje brakuj\u0105cych danych.<\/p>\n<h2>2. Trzydzie\u015bci zako\u0144czonych dni kalendarzowych<\/h2>\n<p>Przyk\u0142ad u\u017cywa <code>Europe\/Warsaw<\/code>; w\u0142a\u015bciwa jest strefa czasowa us\u0142ugi GA4. Nazwy projektu i zbioru danych wymagaj\u0105 dopasowania. Wynik zawiera jeden wiersz na dzie\u0144, od dnia sprzed 30 dni do wczoraj w\u0142\u0105cznie. Tabele intraday i bie\u017c\u0105cy dzie\u0144 pozostaj\u0105 wykluczone.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/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-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Standard SQL. Replace project\/dataset and property timezone.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WITH<\/span> days <span class=\"cbb-keyword\">AS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span> day <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(<span class=\"cbb-function\">GENERATE_DATE_ARRAY<\/span>(\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">DATE_SUB<\/span>(<span class=\"cbb-function\">CURRENT_DATE<\/span>(<span class=\"cbb-string\">'Europe\/Warsaw'<\/span>), <span class=\"cbb-keyword\">INTERVAL<\/span> <span class=\"cbb-number\">30<\/span> DAY),\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">DATE_SUB<\/span>(<span class=\"cbb-function\">CURRENT_DATE<\/span>(<span class=\"cbb-string\">'Europe\/Warsaw'<\/span>), <span class=\"cbb-keyword\">INTERVAL<\/span> <span class=\"cbb-number\">1<\/span> DAY))) <span class=\"cbb-keyword\">AS<\/span> day\n<\/span><span class=\"cbb-line\">), available <span class=\"cbb-keyword\">AS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span> table_name <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project.analytics_XXXXXXXXX.INFORMATION_SCHEMA.TABLES`<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> table_type = <span class=\"cbb-string\">'BASE TABLE'<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-function\">REGEXP_CONTAINS<\/span>(table_name, r<span class=\"cbb-string\">'^events_&#91;0-9&#93;{8}$'<\/span>)\n<\/span><span class=\"cbb-line\">), counts <span class=\"cbb-keyword\">AS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-function\">PARSE_DATE<\/span>(<span class=\"cbb-string\">'%Y%m%d'<\/span>, _TABLE_SUFFIX) <span class=\"cbb-keyword\">AS<\/span> day,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> total_events,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.analytics_storage = <span class=\"cbb-string\">'Yes'<\/span>) <span class=\"cbb-keyword\">AS<\/span> analytics_yes,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.analytics_storage = <span class=\"cbb-string\">'No'<\/span>) <span class=\"cbb-keyword\">AS<\/span> analytics_no,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.analytics_storage = <span class=\"cbb-string\">'Unset'<\/span>) <span class=\"cbb-keyword\">AS<\/span> analytics_unset,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(<span class=\"cbb-function\">COALESCE<\/span>(privacy_info.analytics_storage <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-keyword\">IN<\/span> (<span class=\"cbb-string\">'Yes'<\/span>,<span class=\"cbb-string\">'No'<\/span>,<span class=\"cbb-string\">'Unset'<\/span>), <span class=\"cbb-constant\">TRUE<\/span>)) <span class=\"cbb-keyword\">AS<\/span> analytics_other,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.ads_storage = <span class=\"cbb-string\">'Yes'<\/span>) <span class=\"cbb-keyword\">AS<\/span> ads_yes,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.ads_storage = <span class=\"cbb-string\">'No'<\/span>) <span class=\"cbb-keyword\">AS<\/span> ads_no,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(privacy_info.ads_storage = <span class=\"cbb-string\">'Unset'<\/span>) <span class=\"cbb-keyword\">AS<\/span> ads_unset,\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COUNTIF<\/span>(<span class=\"cbb-function\">COALESCE<\/span>(privacy_info.ads_storage <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-keyword\">IN<\/span> (<span class=\"cbb-string\">'Yes'<\/span>,<span class=\"cbb-string\">'No'<\/span>,<span class=\"cbb-string\">'Unset'<\/span>), <span class=\"cbb-constant\">TRUE<\/span>)) <span class=\"cbb-keyword\">AS<\/span> ads_other\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project.analytics_XXXXXXXXX.events_*`<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">WHERE<\/span> _TABLE_SUFFIX <span class=\"cbb-keyword\">BETWEEN<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">FORMAT_DATE<\/span>(<span class=\"cbb-string\">'%Y%m%d'<\/span>, <span class=\"cbb-function\">DATE_SUB<\/span>(<span class=\"cbb-function\">CURRENT_DATE<\/span>(<span class=\"cbb-string\">'Europe\/Warsaw'<\/span>), <span class=\"cbb-keyword\">INTERVAL<\/span> <span class=\"cbb-number\">30<\/span> DAY))\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-function\">FORMAT_DATE<\/span>(<span class=\"cbb-string\">'%Y%m%d'<\/span>, <span class=\"cbb-function\">DATE_SUB<\/span>(<span class=\"cbb-function\">CURRENT_DATE<\/span>(<span class=\"cbb-string\">'Europe\/Warsaw'<\/span>), <span class=\"cbb-keyword\">INTERVAL<\/span> <span class=\"cbb-number\">1<\/span> DAY))\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> day\n<\/span><span class=\"cbb-line\">)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> d.day, a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span> <span class=\"cbb-keyword\">AS<\/span> table_present,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.total_events, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> total_events,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.analytics_yes, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> analytics_yes,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.analytics_no, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> analytics_no,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.analytics_unset, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> analytics_unset,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.analytics_other, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> analytics_other,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.ads_yes, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> ads_yes,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.ads_no, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> ads_no,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.ads_unset, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> ads_unset,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">IF<\/span>(a.table_name <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-constant\">NULL<\/span>, <span class=\"cbb-function\">COALESCE<\/span>(c.ads_other, <span class=\"cbb-number\">0<\/span>)) <span class=\"cbb-keyword\">AS<\/span> ads_other\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> days <span class=\"cbb-keyword\">AS<\/span> d\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">LEFT<\/span> <span class=\"cbb-keyword\">JOIN<\/span> available <span class=\"cbb-keyword\">AS<\/span> a\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">ON<\/span> a.table_name = <span class=\"cbb-function\">CONCAT<\/span>(<span class=\"cbb-string\">'events_'<\/span>, <span class=\"cbb-function\">FORMAT_DATE<\/span>(<span class=\"cbb-string\">'%Y%m%d'<\/span>, d.day))\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">LEFT<\/span> <span class=\"cbb-keyword\">JOIN<\/span> counts <span class=\"cbb-keyword\">AS<\/span> c <span class=\"cbb-keyword\">USING<\/span> (day)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> day;<\/span><\/code><\/pre><\/figure>\n<p><code>table_present = false<\/code> oznacza brak odpowiedniej dziennej tabeli bazowej. Liczniki zachowuj\u0105 wtedy <code>NULL<\/code>. Istniej\u0105ca pusta tabela daje zero zdarze\u0144. Ani obecno\u015b\u0107 tabeli, ani wynik zerowy nie dowodz\u0105 kompletno\u015bci zbierania. Zapytanie wymaga co najmniej jednej pasuj\u0105cej tabeli eksportu i zgodnych schemat\u00f3w. B\u0142\u0119dy dost\u0119pu lub schematu pozostaj\u0105 b\u0142\u0119dami, zamiast zamienia\u0107 si\u0119 w pozorne zera.<\/p>\n<p>Filtr liczbowego sufiksu ogranicza wybrane tabele dzienne. Przed uruchomieniem harmonogramu pr\u00f3bne sprawdzenie BigQuery (dry run) i limit rozliczanych bajt\u00f3w pomagaj\u0105 kontrolowa\u0107 koszt. Tabele dzienne mog\u0105 otrzymywa\u0107 sp\u00f3\u017anione zdarzenia do trzech dni po dacie zdarzenia, dlatego najnowsze wyniki pozostaj\u0105 wst\u0119pne. Tabela raportowa wymaga zast\u0119powania lub operacji upsert dla odpowiednich dat. Codzienne dopisywanie ca\u0142ego wyniku z 30 dni powiela liczniki. Ma\u0142a tabela raportowa ogranicza ponowne skanowanie surowych danych, ale nie gwarantuje sta\u0142ego rachunku.<\/p>\n<h2>3. Dashboard bez myl\u0105cego lejka<\/h2>\n<p>Looker Studio obs\u0142uguje natywne wykresy lejkowe. Uk\u0142ad \u201ewszystkie zdarzenia \u2192 Analytics Yes \u2192 Ads Yes\u201d nadal nie pasuje do tej wizualizacji: ostatnie dwa zbiory nie musz\u0105 zawiera\u0107 si\u0119 jeden w drugim. Oddzielne s\u0142upki lub szeregi czasowe pokazuj\u0105 obie kategorie bez tworzenia fikcyjnej sekwencji.<\/p>\n<p>Tabela raportowa \u0142\u0105czy si\u0119 przez konektor BigQuery. <code>day<\/code> jest wymiarem daty, a pola licznikowe korzystaj\u0105 z agregacji Suma. Dwie karty wynik\u00f3w obliczaj\u0105 udzia\u0142y zdarze\u0144 z sum:<\/p>\n<pre><code>CASE WHEN SUM(total_events) &gt; 0 THEN SUM(analytics_yes) \/ SUM(total_events) ELSE NULL END<\/code><\/pre>\n<p>Pola otrzymuj\u0105 format procentowy, bez dodatkowego mno\u017cenia przez 100. Odpowiednia formu\u0142a reklamowa u\u017cywa <code>ads_yes<\/code>. Zerowy mianownik daje pusty wynik. Dzienny szereg czasowy mo\u017ce stosowa\u0107 to samo obliczenie z grupowaniem wed\u0142ug <code>day<\/code>. Dodatkowa tabela pokazuje liczniki Yes, No, Unset i Other dla ka\u017cdej kategorii, \u0142\u0105czn\u0105 liczb\u0119 zdarze\u0144 i <code>table_present<\/code>. Brakuj\u0105ce dni pozostaj\u0105 widocznymi lukami.<\/p>\n<p>Por\u00f3wnania okres\u00f3w wykorzystuj\u0105 okna tej samej d\u0142ugo\u015bci i pokazuj\u0105 brakuj\u0105ce dni obok wyniku. \u015arednia dziennych procent\u00f3w jednakowo wa\u017cy ma\u0142e i du\u017ce dni: 1 z 1 zdarze\u0144 oraz 0 z 99 zdarze\u0144 daj\u0105 \u015brednio 50%. Prawid\u0142owy \u0142\u0105czny udzia\u0142 wynosi jednak 1%. Brakuj\u0105ce tabele nie mog\u0105 znika\u0107 niezauwa\u017cenie z por\u00f3wnania okres\u00f3w.<\/p>\n<h2>4. Interpretacja i ograniczenia<\/h2>\n<p>Zmiana mo\u017ce wynika\u0107 ze struktury zdarze\u0144, \u017ar\u00f3de\u0142 ruchu, stan\u00f3w domy\u015blnych, konfiguracji banera, kolejno\u015bci tag\u00f3w lub problem\u00f3w eksportu. Kontrolowane sprawdzenie banera i \u017c\u0105da\u0144 tag\u00f3w, historia wdro\u017ce\u0144 oraz kontrola eksportu pomagaj\u0105 rozr\u00f3\u017cni\u0107 te przyczyny. Jednoczesny spadek udzia\u0142u i wolumenu nie dowodzi zwi\u0105zku przyczynowego.<\/p>\n<p>Raport nie wskazuje dost\u0119pno\u015bci ani aktywno\u015bci modelowania behawioralnego GA4. Kryteria Google obejmuj\u0105 bezwzgl\u0119dne liczby zdarze\u0144 i u\u017cytkownik\u00f3w w ci\u0105gu wielu dni, wymagania wdro\u017cenia oraz dodatkowe kontrole jako\u015bci modelu. Sam procent zdarze\u0144 nie sprawdza tych warunk\u00f3w. Modelowanie zachowa\u0144 i modelowanie konwersji odpowiadaj\u0105 ponadto na r\u00f3\u017cne pytania.<\/p>\n<p>Wynik zawiera dzienne agregaty bez identyfikator\u00f3w u\u017cytkownik\u00f3w. Nadal potrzebne s\u0105 ograniczenia dost\u0119pu i ostro\u017cno\u015b\u0107 przy ma\u0142ych grupach; agregacja nie gwarantuje automatycznej anonimowo\u015bci. Wska\u017anik akceptacji oparty na decyzjach wymaga osobno zdefiniowanej miary CMP, z zasadami dotycz\u0105cymi ponownych pyta\u0144, zmienionych decyzji i baner\u00f3w bez odpowiedzi.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy udzia\u0142 bliski 100% dowodzi skuteczno\u015bci banera?<\/h3><p>Nie. Je\u015bli do GA4 trafia tylko ruch ze zgod\u0105, niemal wszystkie zapisane zdarzenia mog\u0105 mie\u0107 stan Yes, mimo wielu nieobecnych wizyt z odmow\u0105. Raport opisuje dost\u0119pne dane o zdarzeniach, a nie wszystkie interakcje z banerem.<\/p>\n<h3>Czy Unset nale\u017cy do kategorii No?<\/h3><p>Nie. Oddzielne kategorie dla Unset oraz brakuj\u0105cych i nieoczekiwanych warto\u015bci ujawniaj\u0105 luki konfiguracji. Wy\u015bwietlany udzia\u0142 Yes nadal u\u017cywa wszystkich zarejestrowanych zdarze\u0144 jako mianownika.<\/p>\n<h3>Czy brak dnia oznacza brak zdarze\u0144?<\/h3><p>Nie. Brak tabeli eksportu jest problemem dost\u0119pno\u015bci danych. Zapytanie zwraca dla takiego dnia NULL; liczba 0 dotyczy istniej\u0105cej pustej tabeli.<\/p><\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics 4 developer guide<\/a><\/li>\n<li><a href=\"https:\/\/cloud.google.com\/looker\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Looker documentation<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">GA4: schemat eksportu BigQuery<\/a><\/li><li><a href=\"https:\/\/cloud.google.com\/looker\/docs\/studio\/funnel-chart-reference\" target=\"_blank\" rel=\"noopener noreferrer\">Looker Studio: natywne wykresy lejkowe<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/11161109?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">GA4: wymagania modelowania behawioralnego<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/tag-platform\/security\/concepts\/consent-mode\" target=\"_blank\" rel=\"noopener noreferrer\">Consent Mode: podstawy i wdro\u017cenia<\/a><\/li><li><a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/querying-wildcard-tables\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery: zapytania do tabel z symbolem wieloznacznym<\/a><\/li><li><a href=\"https:\/\/cloud.google.com\/looker\/docs\/studio\/about-calculated-fields\" target=\"_blank\" rel=\"noopener noreferrer\">Looker Studio: pola obliczeniowe i agregacja<\/a><\/li><\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Praktyczna budowa raportu pokazuj\u0105cego wska\u017aniki opt-in dla poszczeg\u00f3lnych typ\u00f3w zg\u00f3d oraz to, jak odmowa zgody zmniejsza faktycznie zbierane dane \u2014 z wykorzystaniem eksportu GA4 do BigQuery i dashboardu w Looker Studio, bez \u015bledzenia pojedynczych decyzji zgody na poziomie u\u017cytkownika.<\/p>\n","protected":false},"author":1,"featured_media":23379,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[92127,92151,92100,92511,92238],"class_list":["post-10100","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-digital-marketing-pl","tag-consent-management-pl","tag-prywatnosc-danych-pl-pl","tag-google-analytics-4-pl","tag-looker-studio-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>Tutorial: stany zgody GA4 w BigQuery i Looker Studio | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.\" \/>\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\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: stany zgody GA4 w BigQuery i Looker Studio | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-25T18:26:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.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=\"7 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\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: stany zgody GA4 w BigQuery i Looker Studio\",\"datePublished\":\"2026-10-25T18:26:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/\"},\"wordCount\":977,\"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\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-10100-review-20261024-dark.png\",\"keywords\":[\"Consent Management\",\"Data Privacy\",\"Google Analytics 4\",\"Looker Studio\",\"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\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/\",\"name\":\"Tutorial: stany zgody GA4 w BigQuery i Looker Studio | 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\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-10100-review-20261024-dark.png\",\"datePublished\":\"2026-10-25T18:26:00+00:00\",\"description\":\"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-10100-review-20261024-dark.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-10100-review-20261024-dark.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: stany zgody GA4 w BigQuery i Looker Studio\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: stany zgody GA4 w BigQuery i Looker Studio\"}]},{\"@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":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio | Lukas Wojcik","description":"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.","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\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio | Lukas Wojcik","og_description":"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-25T18:26:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio","datePublished":"2026-10-25T18:26:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/"},"wordCount":977,"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\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.png","keywords":["Consent Management","Data Privacy","Google Analytics 4","Looker Studio","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\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/","name":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio | 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\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.png","datePublished":"2026-10-25T18:26:00+00:00","description":"Raport pokazuj\u0105cy wska\u017aniki opt-in dla typ\u00f3w zg\u00f3d i to, jak odmowa zmniejsza zbierane dane \u2013 na eksporcie GA4 do BigQuery i w Looker Studio.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-10100-review-20261024-dark.png","width":1200,"height":630,"caption":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-wizualizacja-lejka-zgod-consent-funnel-w-ga4-i-looker-studio\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: stany zgody GA4 w BigQuery i Looker Studio"}]},{"@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\/10100","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=10100"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10100\/revisions"}],"predecessor-version":[{"id":23381,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10100\/revisions\/23381"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/23379"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}