{"id":10106,"date":"2026-10-18T18:47:00","date_gmt":"2026-10-18T16:47:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10106"},"modified":"2026-10-09T23:36:27","modified_gmt":"2026-10-09T21:36:27","slug":"tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/","title":{"rendered":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout"},"content":{"rendered":"<p>Codzienny audyt statystyczny wykrywa zepsute zdarzenie zakupu w ci\u0105gu doby; podczas flash sale&#8217;u albo tu\u017c po wdro\u017ceniu doba to zbyt wolno. Wykrycie spadku zdarze\u0144 add_to_cart lub begin_checkout w trakcie, gdy si\u0119 dzieje, wymaga \u017ar\u00f3d\u0142a danych z op\u00f3\u017anieniem liczonym w minutach \u2014 eksport GA4 do BigQuery dzia\u0142a jako codzienne zadanie wsadowe i nie jest zbudowany pod dashboard od\u015bwie\u017caj\u0105cy si\u0119 co kilka minut. Realtime Reporting API GA4 owszem: zwraca liczby zdarze\u0144 z mniej wi\u0119cej ostatnich 30 minut i jest dost\u0119pne w ka\u017cdej w\u0142a\u015bciwo\u015bci GA4, tak\u017ce w darmowej wersji.<\/p>\n\n<p>Poni\u017cszy przewodnik pokazuje, jak zbudowa\u0107 lekki dashboard operacyjny oparty na tym API: arkusz Google od\u015bwie\u017cany co kilka minut przez Apps Script. Por\u00f3wnuje on bie\u017c\u0105c\u0105 liczb\u0119 zdarze\u0144 add_to_cart i begin_checkout z t\u0105 sam\u0105 por\u0105 dnia tydzie\u0144 wcze\u015bniej. Formatowanie warunkowe (Conditional Formatting) zabarwia odpowiedni\u0105 kom\u00f3rk\u0119 na czerwono w chwili, gdy spadek przekroczy pr\u00f3g.<\/p>\n\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/realtime-anomaly-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Przep\u0142yw od GA4 Realtime API pobieranego co pi\u0119\u0107 minut przez Apps Script, przez por\u00f3wnanie z t\u0105 sam\u0105 por\u0105 tydzie\u0144 wcze\u015bniej, a\u017c po kolumn\u0119 statusu pod\u015bwietlan\u0105 na czerwono formatowaniem warunkowym po przekroczeniu progu spadku\">\n<figcaption>Minuty op&oacute;&#378;nienia zamiast doby, kosztem prostszej warto&#347;ci bazowej.<\/figcaption>\n<\/figure>\n\n<h2>Krok 1: Pobieranie bie\u017c\u0105cych liczb przez Realtime Reporting API<\/h2>\n<p>Metoda <code>runRealtimeReport<\/code> z GA4 Data API przyjmuje <code>eventName<\/code> jako wymiar i <code>eventCount<\/code> jako metryk\u0119, filtrowane do danych czasu rzeczywistego w\u0142a\u015bciwo\u015bci \u2014 \u017caden eksport do BigQuery nie bierze w tym udzia\u0142u. Wbudowana zaawansowana us\u0142uga Analytics Data API w Apps Script mo\u017ce wywo\u0142a\u0107 j\u0105 bezpo\u015brednio ze skryptu powi\u0105zanego z arkuszem dashboardu:<\/p>\n\n\n\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"javascript\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">JavaScript<\/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-javascript\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">function<\/span> <span class=\"cbb-function\">pullRealtimeCounts<\/span>() {\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> propertyId = <span class=\"cbb-string\">'properties\/XXXXXXXXX'<\/span>;\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> request = {\n<\/span><span class=\"cbb-line\">    dimensions: &#91;{ name: <span class=\"cbb-string\">'eventName'<\/span> }&#93;,\n<\/span><span class=\"cbb-line\">    metrics: &#91;{ name: <span class=\"cbb-string\">'eventCount'<\/span> }&#93;,\n<\/span><span class=\"cbb-line\">    dimensionFilter: {\n<\/span><span class=\"cbb-line\">      filter: {\n<\/span><span class=\"cbb-line\">        fieldName: <span class=\"cbb-string\">'eventName'<\/span>,\n<\/span><span class=\"cbb-line\">        inListFilter: { values: &#91;<span class=\"cbb-string\">'add_to_cart'<\/span>, <span class=\"cbb-string\">'begin_checkout'<\/span>&#93; }\n<\/span><span class=\"cbb-line\">      }\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  };\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">const<\/span> response = <span class=\"cbb-type\">AnalyticsData<\/span>.<span class=\"cbb-type\">Properties<\/span>.<span class=\"cbb-function\">runRealtimeReport<\/span>(request, propertyId);\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">return<\/span> response.rows || &#91;&#93;;\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\n\n\n\n<p>Wyzwalacz czasowy uruchamia t\u0119 funkcj\u0119 co pi\u0119\u0107 minut i dopisuje obie liczby wraz ze znacznikiem czasu do zak\u0142adki dziennika \u2014 to surowy materia\u0142, z kt\u00f3rego budowany jest zar\u00f3wno bie\u017c\u0105cy status, jak i por\u00f3wnanie z warto\u015bci\u0105 bazow\u0105.<\/p>\n\n<h2>Krok 2: Warto\u015b\u0107 bazowa wystarczaj\u0105co lekka, by od\u015bwie\u017ca\u0107 si\u0119 co kilka minut<\/h2>\n<p>14-dniowa krocz\u0105ca warto\u015b\u0107 bazowa oparta na Z-score to w\u0142a\u015bciwe narz\u0119dzie do codziennego audytu statystycznego, ale dla dashboardu na \u017cywo, kt\u00f3ry ma szybko odpowiedzie\u0107 na jedno pytanie \u2014 czy bie\u017c\u0105cy wolumen jest mniej wi\u0119cej tam, gdzie powinien by\u0107 teraz \u2014 jest to rozwi\u0105zanie przewymiarowane. Por\u00f3wnanie do tego samego dnia tygodnia i tej samej pory dnia dok\u0142adnie siedem dni wcze\u015bniej jest prostsze do policzenia i \u0142atwiejsze do zrozumienia dla kogo\u015b, kto rzuca okiem na ekran. Umo\u017cliwia je drugi wyzwalacz, uruchamiany raz dziennie, kt\u00f3ry zapisuje dzienne liczby godzina po godzinie. Bie\u017c\u0105cy odczyt zastaje dzi\u0119ki temu zawsze odpowiadaj\u0105c\u0105 mu godzin\u0119 z poprzedniego tygodnia.<\/p>\n\n<h2>Krok 3: Obliczanie odchylenia i statusu<\/h2>\n<p>Kolumna z formu\u0142\u0105 zamienia obie liczby w odchylenie procentowe i etykiet\u0119 statusu:<\/p>\n\n\n\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/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-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">=IF(baseline_count=0, \"n\/a\",\n<\/span><span class=\"cbb-line\">   ROUND((current_count - baseline_count) \/ baseline_count * 100, 1))<\/span><\/code><\/pre><\/figure>\n\n\n\n<p>Poni\u017cej mniej wi\u0119cej dziesi\u0119ciu zdarze\u0144 w warto\u015bci bazowej wynik procentowy traci sens \u2014 pojedyncze brakuj\u0105ce zdarzenie w nocy wygl\u0105da jak 50-procentowy spadek. Minimalny pr\u00f3g warto\u015bci bazowej (na przyk\u0142ad ocenianie statusu dopiero gdy warto\u015b\u0107 bazowa przekracza 20) chroni dashboard przed niepotrzebnym alarmowaniem w najcichszych godzinach.<\/p>\n\n<h2>Krok 4: Uwidocznienie spadk\u00f3w dzi\u0119ki formatowaniu warunkowemu<\/h2>\n<p>Za samo pod\u015bwietlanie odpowiada regu\u0142a formatowania warunkowego z w\u0142asn\u0105 formu\u0142\u0105 na kolumnie statusu: czerwony poni\u017cej <code>-30<\/code>, pomara\u0144czowy mi\u0119dzy <code>-30<\/code> a <code>-15<\/code>, brak wype\u0142nienia powy\u017cej. To ten sam wzorzec wizualny, jaki stosuje dashboard audytu statystycznego, tutaj zastosowany bezpo\u015brednio w Sheets. Widok operacyjny aktualizuje si\u0119 dzi\u0119ki temu w chwili, gdy Apps Script dopisuje nowy wiersz \u2013 bez dodatkowego \u017ar\u00f3d\u0142a danych i bez konektora pomi\u0119dzy.<\/p>\n\n<h2>Krok 5: Umieszczenie tam, gdzie zesp\u00f3\u0142 faktycznie patrzy<\/h2>\n<p>Arkusz dzia\u0142a samodzielnie dla ka\u017cdego z prawem edycji lub podgl\u0105du, ale przypi\u0119cie go do wsp\u00f3lnego ekranu podczas okna startowego kampanii albo pod\u0142\u0105czenie go do Looker Studio jako jednej z kilku kafelk\u00f3w utrzymuje go widocznym bez konieczno\u015bci trzymania arkusza otwartym przez kogokolwiek. Przy pod\u0142\u0105czaniu do Looker Studio trzeba obni\u017cy\u0107 ustawienie cz\u0119stotliwo\u015bci od\u015bwie\u017cania danych konektora Sheets wzgl\u0119dem warto\u015bci domy\u015blnej \u2014 inaczej pi\u0119ciominutowe od\u015bwie\u017canie przez Apps Script znajdzie si\u0119 za znacznie wolniejszym cache&#8217;em i sens budowania tego rozwi\u0105zania zniknie.<\/p>\n\n<h2>Pozostaj\u0105c w granicach<\/h2>\n<p>Ten dashboard to sprawdzenie objaw\u00f3w na \u017cywo, a nie zamiennik audytu statystycznego dzia\u0142aj\u0105cego na zamkni\u0119tych danych ca\u0142ego dnia \u2014 przeoczy powolny, stopniowy spadek, kt\u00f3ry w \u017cadnym pojedynczym pi\u0119ciominutowym oknie nie przekroczy progu, a w\u0142a\u015bnie do tego s\u0142u\u017cy krocz\u0105ca warto\u015b\u0107 bazowa. Czerwona kom\u00f3rka tutaj to sygna\u0142, by sprawdzi\u0107 sytuacj\u0119, a nie sama w sobie potwierdzony incydent: flash sale, kt\u00f3ry legalnie potraja wolumen add_to_cart, albo naprawd\u0119 cicha godzina \u2014 obie sytuacje mog\u0105 wywo\u0142a\u0107 wychylenie poza pr\u00f3g bez niczego zepsutego.<\/p>\n\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n\n<h3>Sk\u0105d pochodzi liczba z poprzedniego tygodnia, skoro Realtime Reporting API si\u0119ga wstecz tylko o oko\u0142o 30 minut?<\/h3>\n<p>Z tego, co dashboard sam zapisa\u0142, albo z raport\u00f3w standardowych. Realtime Reporting API nie zna niczego poza swoim oknem, wi\u0119c liczba sprzed siedmiu dni musi albo znajdowa\u0107 si\u0119 we w\u0142asnej zak\u0142adce dziennika, albo pochodzi\u0107 z metody runReport w GA4 Data API, z przetworzonych danych dziennych, na przyk\u0142ad w podziale na godziny.<\/p>\n<p>Kluczowe jest to, \u017ceby obie liczby obejmowa\u0142y to samo okno czasowe. Warto\u015b\u0107 czasu rzeczywistego obejmuje mniej wi\u0119cej 30 minut, liczba godzinowa 60. Przy r\u00f3wnomiernym ruchu warto\u015b\u0107 czasu rzeczywistego zawiera wi\u0119c tylko oko\u0142o po\u0142owy zdarze\u0144 z godziny sprzed tygodnia, a formu\u0142a pokazuje odchylenie \u221250%, cho\u0107 nic nie jest zepsute. Liczb\u0119 godzinow\u0105 nale\u017cy zatem przed por\u00f3wnaniem podzieli\u0107 na p\u00f3\u0142 albo por\u00f3wnywa\u0107 z wpisem dziennika zapisanym dok\u0142adnie siedem dni wcze\u015bniej o tej samej porze, kt\u00f3ry obejmuje to samo okno.<\/p>\n<p>Druga droga ma skutek uboczny: potrzebuje pe\u0142nego tygodnia dziennika, zanim pierwszy status nabierze sensu.<\/p>\n\n<h3>Dlaczego kom\u00f3rka nie robi si\u0119 czerwona od razu po ca\u0142kowitej awarii?<\/h3>\n<p>Poniewa\u017c ka\u017cdy odczyt liczy mniej wi\u0119cej ostatnie 30 minut, a kolejne odczyty nak\u0142adaj\u0105 si\u0119 na siebie. Je\u015bli zdarzenie w danej chwili ca\u0142kowicie przestaje nap\u0142ywa\u0107, nast\u0119pny odczyt pi\u0119\u0107 minut p\u00f3\u017aniej zawiera jeszcze 25 minut zdrowych danych. Przy r\u00f3wnomiernym ruchu rachunek wygl\u0105da tak:<\/p>\n<ul>\n<li>po 5 minutach oko\u0142o \u221217%, czyli kolor pomara\u0144czowy,<\/li>\n<li>po 10 minutach oko\u0142o \u221233%, czyli czerwony,<\/li>\n<li>po 30 minutach \u2212100%.<\/li>\n<\/ul>\n<p>Ca\u0142kowita awaria staje si\u0119 wi\u0119c widoczna po mniej wi\u0119cej dziesi\u0119ciu minutach, cz\u0119\u015bciowa p\u00f3\u017aniej albo wcale. Je\u015bli odpada tylko po\u0142owa zdarze\u0144, odchylenie osi\u0105ga \u221250% dopiero po pe\u0142nym oknie, a pr\u00f3g \u221230 przekracza najwcze\u015bniej przy odczycie po 20 minutach; strata poni\u017cej 30% nigdy nie zabarwi kom\u00f3rki na czerwono.<\/p>\n\n<h3>Czy dashboard alarmuje tak\u017ce wtedy, gdy psuje si\u0119 tylko pomiar, a sklep dzia\u0142a dalej?<\/h3>\n<p>Tak, i nie potrafi odr\u00f3\u017cni\u0107 jednego od drugiego. Liczy zdarzenia w GA4, a nie koszyki: tag, kt\u00f3ry po wdro\u017ceniu przestaje si\u0119 uruchamia\u0107, albo zmieniony baner zgody, na kt\u00f3ry zgadza si\u0119 mniej odwiedzaj\u0105cych, daje t\u0119 sam\u0105 czerwon\u0105 kom\u00f3rk\u0119 co zepsuty checkout. Kt\u00f3re z nich zasz\u0142o, rozstrzyga wgl\u0105d w zam\u00f3wienia w systemie sklepu.<\/p>\n<\/div>\n\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\/ecommerce\" target=\"_blank\" rel=\"noopener noreferrer\">GA4 ecommerce events<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Budowa lekkiego dashboardu operacyjnego obserwuj\u0105cego add_to_cart i begin_checkout na \u017cywo: Realtime Reporting API GA4 pobierane co kilka minut przez Apps Script, por\u00f3wnywane z t\u0105 sam\u0105 por\u0105 dnia tydzie\u0144 wcze\u015bniej, z formatowaniem warunkowym zabarwiaj\u0105cym kom\u00f3rk\u0119 na czerwono w chwili przekroczenia progu spadku.<\/p>\n","protected":false},"author":1,"featured_media":13823,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[131],"tags":[92061,92113,92100,92064,92238],"class_list":["post-10106","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-digital-marketing-pl","tag-automation-pl","tag-e-commerce-pl","tag-google-analytics-4-pl","tag-monitoring-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: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.\" \/>\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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-18T16:47:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout\",\"datePublished\":\"2026-10-18T16:47:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/\"},\"wordCount\":1166,\"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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png\",\"keywords\":[\"Automation\",\"E-Commerce\",\"Google Analytics 4\",\"Monitoring\",\"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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/\",\"name\":\"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | 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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png\",\"datePublished\":\"2026-10-18T16:47:00+00:00\",\"description\":\"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-marketing-pl\\\/tutorials-pl-digital-marketing-pl\\\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout\"}]},{\"@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: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | Lukas Wojcik","description":"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.","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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | Lukas Wojcik","og_description":"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-18T16:47:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout","datePublished":"2026-10-18T16:47:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/"},"wordCount":1166,"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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png","keywords":["Automation","E-Commerce","Google Analytics 4","Monitoring","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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/","name":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout | 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-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png","datePublished":"2026-10-18T16:47:00+00:00","description":"Dashboard obserwuj\u0105cy add_to_cart i begin_checkout wobec ubieg\u0142ego tygodnia: Realtime API przez Apps Script, czerwona kom\u00f3rka po przekroczeniu progu.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10106-tutorial-monitorowanie-anomalii-e-co-g.png","width":1200,"height":630,"caption":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-marketing-pl\/tutorials-pl-digital-marketing-pl\/tutorial-monitorowanie-anomalii-e-commerce-w-czasie-rzeczywistym-dla-add_to_cart-i-begin_checkout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Monitorowanie anomalii e-commerce w czasie rzeczywistym dla add_to_cart i begin_checkout"}]},{"@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\/10106","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=10106"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10106\/revisions"}],"predecessor-version":[{"id":22726,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10106\/revisions\/22726"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13823"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}