{"id":473,"date":"2026-09-16T18:00:00","date_gmt":"2026-09-16T16:00:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=473"},"modified":"2026-10-26T12:38:56","modified_gmt":"2026-10-26T11:38:56","slug":"przesylanie-wartosci-zakupow-z-bigquery-do-google-ads","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/","title":{"rendered":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads"},"content":{"rendered":"<p>Google Ads mo\u017ce optymalizowa\u0107 stawki na podstawie przekazanych warto\u015bci konwersji. BigQuery mo\u017ce przygotowa\u0107 te warto\u015bci z danych zam\u00f3wie\u0144, na przyk\u0142ad jako mar\u017c\u0119 pokrycia po okre\u015blonych kosztach zmiennych. Przyk\u0142adowo 100 euro przychodu bez podatku minus 60 euro koszt\u00f3w towaru, wysy\u0142ki i p\u0142atno\u015bci daje 40 euro mar\u017cy pokrycia. Koszty sta\u0142e nie zosta\u0142y jeszcze odj\u0119te. Nie oznacza to automatycznie zysku netto, przep\u0142ywu pieni\u0119\u017cnego ani warto\u015bci klienta w ca\u0142ym okresie relacji. Potrzebne s\u0105 udokumentowana definicja warto\u015bci, dozwolone wykorzystanie danych, wiarygodne identyfikatory i oddzielny proces importu.<\/p>\n<p>OCI oznacza Offline Conversion Import: zapisany wynik biznesowy jest przekazywany do Google Ads po wyst\u0105pieniu zdarzenia.<\/p>\n<figure class=\"lw-diagram\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-473-review-20261024.png\" width=\"1120\" height=\"580\" alt=\"Dane zam\u00f3wie\u0144 przechodz\u0105 okre\u015blone kontrole przed importem. Przyj\u0119te wyniki i p\u00f3\u017aniejsze korekty wymagaj\u0105 osobnej obs\u0142ugi.\"><figcaption>Dane zam\u00f3wie\u0144 przechodz\u0105 okre\u015blone kontrole przed importem. Przyj\u0119te wyniki i p\u00f3\u017aniejsze korekty wymagaj\u0105 osobnej obs\u0142ugi.<\/figcaption><\/figure>\n<h2>Zadanie potoku danych<\/h2>\n<p>Poni\u017cszy przyk\u0142ad przygotowuje klasyczne konwersje offline oparte na GCLID. \u0141\u0105czy zam\u00f3wienie z zapisanym klikni\u0119ciem reklamy, ale nie tworzy modelu atrybucji wielopunktowej. GA4 jest w tym uk\u0142adzie opcjonalne. Standardowy eksport zawiera <code>ecommerce.transaction_id<\/code> oraz pole zdarzenia <code>collected_traffic_source.gclid<\/code>, lecz zdarzenie purchase nie musi zawiera\u0107 w\u0142asnego parametru <code>gclid<\/code>.<\/p>\n<p>Zapis identyfikator\u00f3w klikni\u0119\u0107 i przesy\u0142anie danych reklamowych wymagaj\u0105 sprawdzenia odpowiednich zg\u00f3d i zasad. W\u0142asne ciasteczko lub rekord ERP nie omija tych wymaga\u0144. Przyk\u0142ad u\u017cywa wcze\u015bniej zweryfikowanej flagi <code>marketing_upload_allowed<\/code>. To wewn\u0119trzna kontrola, a nie zamiennik dowod\u00f3w zgody ani p\u00f3l zgody w API importu.<\/p>\n<h2>Wymagane pola i ich znaczenie<\/h2>\n<ul>\n<li><code>orders_for_ads<\/code> zawiera jeden aktualny wiersz na <code>order_id<\/code>. Identyfikator jest sta\u0142y i niepusty; duplikaty otrzymuj\u0105 status b\u0142\u0119du zamiast cichego wyboru jednej wersji.<\/li>\n<li><code>gclid<\/code> zawiera pierwotnie zapisany identyfikator. <code>click_time<\/code> i <code>conversion_time<\/code> maj\u0105 typ TIMESTAMP. Czas konwersji opisuje rzeczywiste, niezmienne zdarzenie biznesowe, a nie chwil\u0119 ponownej wysy\u0142ki.<\/li>\n<li><code>net_revenue_ex_tax<\/code>, <code>cogs_amount<\/code>, <code>shipping_cost<\/code> i <code>payment_fee<\/code> to kwoty NUMERIC w tej samej walucie. Przych\u00f3d uwzgl\u0119dnia rabaty i znane zwroty. Znaki kwot oraz rozliczanie zwracanych koszt\u00f3w musz\u0105 by\u0107 sp\u00f3jne.<\/li>\n<li><code>currency_code<\/code> zawiera sprawdzony kod waluty ISO 4217. Zapytanie kontroluje tylko format trzech wielkich liter, nie przynale\u017cno\u015b\u0107 do listy ISO.<\/li>\n<li><code>marketing_upload_allowed<\/code> ma typ BOOL. <code>order_status<\/code> wynika z udokumentowanego cyklu zam\u00f3wienia. <code>ads_upload_log<\/code> zapisuje zaakceptowane importy z numerem zam\u00f3wienia, akcj\u0105 i polem BOOL <code>accepted<\/code>; odrzucone \u017c\u0105dania nie s\u0105 zaakceptowanymi importami.<\/li>\n<\/ul>\n<p>Przyk\u0142ad zak\u0142ada jedno konto konwersji Google Ads i jedno mapowanie akcji. Wiele kont wymaga dodania identyfikatora konta do klucza rejestru import\u00f3w. Kwoty musz\u0105 by\u0107 sko\u0144czonymi warto\u015bciami NUMERIC. R\u00f3wnoleg\u0142e procesy wysy\u0142aj\u0105ce wymagaj\u0105 koordynacji lub idempotentnej wysy\u0142ki, czyli ponowie\u0144 bez podw\u00f3jnego skutku; sprawdzenie rejestru nie jest blokad\u0105.<\/p>\n<h2>Przyk\u0142ad przygotowania danych, nie program wysy\u0142aj\u0105cy<\/h2>\n<p>Poni\u017cszy przyk\u0142ad GoogleSQL zachowuje r\u00f3wnie\u017c starsze oczekuj\u0105ce zam\u00f3wienia. Wysy\u0142ka towaru \u00f3smego dnia nie powoduje utraty zam\u00f3wienia przez siedmiodniowe okno zakup\u00f3w. W produkcji tabele wymagaj\u0105 odpowiedniego podzia\u0142u, na przyk\u0142ad wed\u0142ug daty, aby ka\u017cdy przebieg nie odczytywa\u0142 ca\u0142ej historii. Uzgadnianie przyrostowe przetwarza nowe lub zmienione zam\u00f3wienia, a jednocze\u015bnie \u015bledzi starsze oczekuj\u0105ce pozycje. Okno akcji wynosz\u0105ce 30 dni jest przyk\u0142adowe i musi odpowiada\u0107 ustawieniu akcji konwersji.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>-- GoogleSQL teaching example: replace project\/dataset identifiers.\n-- orders_for_ads: one current row per order; timestamps remain immutable.\n-- ads_upload_log: accepted imports only, keyed by action + order_id.\nDECLARE run_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP();\nDECLARE action_name STRING DEFAULT &#x27;Contribution_Purchase&#x27;;\n-- Example only: match the configured conversion action&#x27;s click window.\nDECLARE click_window_days INT64 DEFAULT 30;\n\nWITH prepared AS (\n  SELECT o.*,\n    COUNT(*) OVER (PARTITION BY order_id) AS rows_per_order,\n    ROUND(net_revenue_ex_tax - cogs_amount - shipping_cost - payment_fee, 2)\n      AS contribution_value,\n    EXISTS (\n      SELECT 1 FROM `project_id.erp_data.ads_upload_log` AS l\n      WHERE l.order_id = o.order_id AND l.conversion_action = action_name\n        AND l.accepted = TRUE\n    ) AS already_imported\n  FROM `project_id.erp_data.orders_for_ads` AS o\n),\nclassified AS (\n  SELECT *,\n    CASE\n      WHEN order_id IS NULL OR TRIM(order_id) = &#x27;&#x27; OR rows_per_order != 1\n        THEN &#x27;INVALID_ORDER_KEY&#x27;\n      WHEN already_imported THEN &#x27;ALREADY_IMPORTED_CHECK_ADJUSTMENTS&#x27;\n      WHEN marketing_upload_allowed IS NOT TRUE THEN &#x27;CONSENT_NOT_CLEARED&#x27;\n      WHEN order_status != &#x27;PAID_AND_SHIPPED&#x27; OR order_status IS NULL\n        THEN &#x27;NOT_READY&#x27;\n      WHEN gclid IS NULL OR TRIM(gclid) = &#x27;&#x27; THEN &#x27;MISSING_GCLID&#x27;\n      WHEN conversion_time IS NULL OR click_time IS NULL\n        OR conversion_time &lt;= click_time OR conversion_time &gt; run_time\n        THEN &#x27;INVALID_TIME&#x27;\n      WHEN click_time &lt; TIMESTAMP_SUB(run_time, INTERVAL 90 DAY)\n        THEN &#x27;IMPORT_TOO_LATE&#x27;\n      WHEN conversion_time &gt; TIMESTAMP_ADD(click_time, INTERVAL click_window_days DAY)\n        THEN &#x27;OUTSIDE_ACTION_WINDOW&#x27;\n      WHEN contribution_value IS NULL THEN &#x27;MISSING_FINANCIALS&#x27;\n      WHEN currency_code IS NULL OR NOT REGEXP_CONTAINS(currency_code, r&#x27;^[A-Z]{3}$&#x27;)\n        THEN &#x27;INVALID_CURRENCY_FORMAT&#x27;\n      ELSE &#x27;READY&#x27;\n    END AS staging_status\n  FROM prepared\n)\nSELECT order_id, gclid, action_name AS conversion_action,\n  FORMAT_TIMESTAMP(&#x27;%Y-%m-%d %H:%M:%S+00:00&#x27;, conversion_time, &#x27;UTC&#x27;)\n    AS conversion_date_time,\n  contribution_value,\n  -- Explicit business policy: losses become zero bidding value, not omitted orders.\n  GREATEST(contribution_value, 0) AS conversion_value,\n  currency_code, staging_status\nFROM classified;\n<\/code><\/pre>\n<p>Przyk\u0142ad zaokr\u0105gla kwoty do dw\u00f3ch miejsc po przecinku, zgodnie z konwencj\u0105 kwot tak\u0105 jak dla EUR lub USD; inna dok\u0142adno\u015b\u0107 waluty wymaga dostosowania.<\/p>\n<p>Tylko wiersze ze statusem <code>staging_status = 'READY'<\/code> s\u0105 kandydatami do wys\u0142ania. Pozosta\u0142e statusy wymagaj\u0105 monitorowania oraz, zale\u017cnie od przyczyny, korekty lub ponowienia p\u00f3\u017aniej. Nawet READY nie potwierdza przyj\u0119cia ani przypisania konwersji przez Google Ads. Brakuj\u0105ce kwoty pozostaj\u0105 b\u0142\u0119dem zamiast cicho zamienia\u0107 si\u0119 w zero.<\/p>\n<p>Przyk\u0142ad \u015bwiadomie ogranicza ujemn\u0105 mar\u017c\u0119 pokrycia do zerowej warto\u015bci dla licytacji, zachowuj\u0105c kwot\u0119 ze znakiem do raportowania. To regu\u0142a biznesowa, a nie twierdzenie o znikaniu strat. Inna polityka warto\u015bci wymaga osobnego projektu. Nie ma arbitralnego mno\u017cnika LTV; prognozy wymagaj\u0105 oddzielnie zweryfikowanego modelu.<\/p>\n<p><!-- lw-flux-illu 471-a3 --><\/p>\n<figure class=\"lw-illu\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/flux-471-a3.webp\" width=\"1120\" height=\"630\" loading=\"lazy\" decoding=\"async\" alt=\"Na w\u00f3zek z dzisiejszym drewnem z pla\u017cy trafia te\u017c starsza ga\u0142\u0105\u017a, le\u017c\u0105ca od wczoraj nad lini\u0105 przyp\u0142ywu. Tak samo starsze, wci\u0105\u017c otwarte zam\u00f3wienia s\u0105 zachowywane do przes\u0142ania, a nie pomijane.\"><figcaption>Na w\u00f3zek z dzisiejszym drewnem z pla\u017cy trafia te\u017c starsza ga\u0142\u0105\u017a, le\u017c\u0105ca od wczoraj nad lini\u0105 przyp\u0142ywu. Tak samo starsze, wci\u0105\u017c otwarte zam\u00f3wienia s\u0105 zachowywane do przes\u0142ania, a nie pomijane.<\/figcaption><\/figure>\n<h2>Po\u0142\u0105czenie i obs\u0142uga importu<\/h2>\n<ol>\n<li><strong>Wyb\u00f3r \u015bcie\u017cki:<\/strong> Google Ads Data Manager obs\u0142uguje bezpo\u015brednie po\u0142\u0105czenie z BigQuery wraz z uprawnieniami i mapowaniem p\u00f3l. Konektor Google Ads w BigQuery Data Transfer Service przenosi dane raportowe w przeciwn\u0105 stron\u0119, do BigQuery. Samo zaplanowane zapytanie nie wysy\u0142a konwersji.<\/li>\n<li><strong>Mapowanie akcji i danych:<\/strong> Ads API wymaga nazwy zasobu aktywnej akcji typu <code>UPLOAD_CLICKS<\/code>. Etykieta akcji z SQL wymaga wi\u0119c mapowania. Numer zam\u00f3wienia, GCLID, czas, warto\u015b\u0107, waluta i w\u0142a\u015bciwe pola zgody musz\u0105 odpowiada\u0107 wybranemu interfejsowi; nazwy p\u00f3l CSV, Data Managera i API nie s\u0105 zamienne.<\/li>\n<li><strong>Zapis wynik\u00f3w:<\/strong> potrzebne s\u0105 identyfikator \u017c\u0105dania, sta\u0142e zam\u00f3wienie, akcja i czas, wynik przyj\u0119cia, b\u0142\u0119dy pojedynczych rekord\u00f3w oraz stan ponowie\u0144. B\u0142\u0119dy cz\u0119\u015bciowe wymagaj\u0105 obs\u0142ugi; poprawna odpowied\u017a HTTP nie potwierdza sukcesu ka\u017cdego wiersza. Okna czasowe trzeba ponownie sprawdzi\u0107 przy faktycznej wysy\u0142ce.<\/li>\n<li><strong>Uzgadnianie zmian:<\/strong> przyj\u0119te zam\u00f3wienia trafiaj\u0105 do oddzielnego procesu korekt po zwrotach lub zmianach warto\u015bci. Ponowny pierwotny import nie aktualizuje warto\u015bci. Rejestr wysy\u0142ek wymaga uzgodnienia z systemem zam\u00f3wie\u0144 i diagnostyk\u0105 Google Ads.<\/li>\n<li><strong>\u015awiadome w\u0142\u0105czenie licytacji:<\/strong> pocz\u0105tkowo dane s\u0142u\u017c\u0105 obserwacji, a cele kampanii wymagaj\u0105 kontroli. Akcje dodatkowe mog\u0105 wp\u0142ywa\u0107 na stawki w celach niestandardowych. Walidacja zale\u017cy od ilo\u015bci danych, uzgodnienia finansowego i op\u00f3\u017anie\u0144 konwersji; czterna\u015bcie dni nie jest uniwersalnym potwierdzeniem gotowo\u015bci. Przych\u00f3d i mar\u017ca tego samego zam\u00f3wienia nie powinny niezamierzenie podw\u00f3jnie zasila\u0107 licytacji.<\/li>\n<\/ol>\n<h2>Okna czasowe i ograniczenia identyfikator\u00f3w<\/h2>\n<p>Google podaje maksymalnie 90 dni od powi\u0105zanego klikni\u0119cia do importu dla klasycznych konwersji offline oraz 63 dni dla konwersji rozszerzonych dotycz\u0105cych potencjalnych klient\u00f3w. Obowi\u0105zuje r\u00f3wnie\u017c w\u0142asne okno akcji konwersji. Nie wynika z tego powszechny obowi\u0105zek op\u00f3\u017aniania ka\u017cdego importu o 24 godziny. Przetwarzanie \u015bwie\u017cego klikni\u0119cia mo\u017ce powodowa\u0107 przej\u015bciowe b\u0142\u0119dy; FAQ zaleca w takim przypadku sze\u015bciogodzinny odst\u0119p przy importach harmonogramowanych. Ponowienia nie zmieniaj\u0105 pierwotnego czasu konwersji.<\/p>\n<p>Przyk\u0142ad celowo obs\u0142uguje wy\u0142\u0105cznie GCLID. GBRAID i WBRAID wymagaj\u0105 w\u0142a\u015bciwych p\u00f3l i obs\u0142ugiwanego procesu, a nie og\u00f3lnego COALESCE do kolumny GCLID. Aktualna dokumentacja Ads API obs\u0142uguje korekty dla GCLID i GBRAID, ale wyklucza korekty WBRAID. Wyb\u00f3r identyfikatora wp\u0142ywa zatem tak\u017ce na obs\u0142ug\u0119 zwrot\u00f3w.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy numer zam\u00f3wienia zapobiega ka\u017cdemu duplikatowi?<\/h3>\n<p>Sta\u0142y numer zam\u00f3wienia na akcj\u0119 pomaga Google Ads usuwa\u0107 duplikaty i wskazywa\u0107 konwersje do korekty. Nadal potrzebne s\u0105 wewn\u0119trzne kontrole unikalno\u015bci i rejestr zaakceptowanych import\u00f3w. Druga akcja konwersji mo\u017ce osobno policzy\u0107 to samo zam\u00f3wienie.<\/p>\n<h3>Jak uwzgl\u0119dniane s\u0105 p\u00f3\u017aniejsze zwroty?<\/h3>\n<p>Obs\u0142ugiwane konwersje mo\u017cna zmieni\u0107 przez <code>RESTATEMENT<\/code> albo wycofa\u0107 przez <code>RETRACTION<\/code>, zgodnie z zasadami i terminami danej metody. Je\u015bli pierwotny import zawiera\u0142 numer zam\u00f3wienia, korekta musi u\u017cywa\u0107 tej samej warto\u015bci. Korekta do zera lub wycofanie mo\u017ce uniemo\u017cliwi\u0107 kolejne zmiany, dlatego proces wymaga \u015bwiadomej obs\u0142ugi.<\/p>\n<h3>Czy licytacja oparta na mar\u017cy gwarantuje lepszy ROAS?<\/h3>\n<p>Nie. Na wynik wp\u0142ywaj\u0105 jako\u015b\u0107 danych, op\u00f3\u017anienia, ustawienia kampanii i model warto\u015bci. Warto\u015b\u0107 konwersji podzielona przez wydatki reklamowe opisuje przes\u0142an\u0105 miar\u0119. Wska\u017anik oparty na mar\u017cy nie jest przychodowym ROAS i nie mierzy ca\u0142kowitego zysku firmy.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Dokumentacja BigQuery<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/get-started\/introduction\" target=\"_blank\" rel=\"noopener noreferrer\">Dokumentacja Google Ads API<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846\" target=\"_blank\" rel=\"noopener noreferrer\">Schemat eksportu GA4<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/13763054\" target=\"_blank\" rel=\"noopener noreferrer\">Po\u0142\u0105czenie BigQuery w Data Managerze<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/google-ads-transfer\" target=\"_blank\" rel=\"noopener noreferrer\">Raporty Google Ads do BigQuery<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/conversions\/upload-offline\" target=\"_blank\" rel=\"noopener noreferrer\">Import konwersji offline<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/15081888\" target=\"_blank\" rel=\"noopener noreferrer\">Terminy importu offline<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/10029210\" target=\"_blank\" rel=\"noopener noreferrer\">Pytania o import offline<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/conversions\/upload-adjustments\" target=\"_blank\" rel=\"noopener noreferrer\">Korekty konwersji i identyfikatory<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/7686447\" target=\"_blank\" rel=\"noopener noreferrer\">Zachowanie korekt<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/11461796\" target=\"_blank\" rel=\"noopener noreferrer\">G\u0142\u00f3wne i dodatkowe akcje<\/a><\/li>\n<li><a href=\"https:\/\/www.google.com\/about\/company\/user-consent-policy-help\/\" target=\"_blank\" rel=\"noopener noreferrer\">Zasady zgody Google<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/13802165\" target=\"_blank\" rel=\"noopener noreferrer\">Dokumentacja Consent Mode<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Przyk\u0142ad BigQuery przygotowuje mar\u017c\u0119 pokrycia do importu konwersji offline z GCLID do Google Ads. Artyku\u0142 opisuje kontrole danych, oddzieln\u0105 wysy\u0142k\u0119, ponowienia i zwroty; zapytanie nie wylicza zysku netto ani warto\u015bci klienta w ca\u0142ym okresie relacji.<\/p>\n","protected":false},"author":1,"featured_media":30583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[92361,92084,92035,92038,92074,92238],"class_list":["post-473","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-digital-marketing-pl","tag-attribution-pl","tag-bigquery-pl","tag-conversion-tracking-pl","tag-marketing-cyfrowy-pl-pl","tag-google-ads-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>Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.\" \/>\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\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-16T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T11:38:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.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=\"8 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\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads\",\"datePublished\":\"2026-09-16T16:00:00+00:00\",\"dateModified\":\"2026-10-26T11:38:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/\"},\"wordCount\":1271,\"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\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-473.png\",\"keywords\":[\"Attribution\",\"BigQuery\",\"Conversion Tracking\",\"Digital Marketing\",\"Google Ads\",\"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\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/\",\"name\":\"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | 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\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-473.png\",\"datePublished\":\"2026-09-16T16:00:00+00:00\",\"dateModified\":\"2026-10-26T11:38:56+00:00\",\"description\":\"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-473.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-473.png\",\"width\":1200,\"height\":630,\"caption\":\"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads\"}]},{\"@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":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | Lukas Wojcik","description":"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.","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\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/","og_locale":"en_US","og_type":"article","og_title":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | Lukas Wojcik","og_description":"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-16T16:00:00+00:00","article_modified_time":"2026-10-26T11:38:56+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads","datePublished":"2026-09-16T16:00:00+00:00","dateModified":"2026-10-26T11:38:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/"},"wordCount":1271,"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\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.png","keywords":["Attribution","BigQuery","Conversion Tracking","Digital Marketing","Google Ads","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\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/","name":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads | 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\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.png","datePublished":"2026-09-16T16:00:00+00:00","dateModified":"2026-10-26T11:38:56+00:00","description":"Dane BigQuery w Google Ads OCI: modele zysku i LTV, przygotowanie SQL, automatyczny upload i obs\u0142uga zwrot\u00f3w zam\u00f3wie\u0144.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-473.png","width":1200,"height":630,"caption":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/przesylanie-wartosci-zakupow-z-bigquery-do-google-ads\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Przesy\u0142anie warto\u015bci zakup\u00f3w z BigQuery do Google Ads"}]},{"@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\/473","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=473"}],"version-history":[{"count":10,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions"}],"predecessor-version":[{"id":26974,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/473\/revisions\/26974"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30583"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}