<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Kacper Duras]]></title><description><![CDATA[AdTech & Analytics consultant]]></description><link>https://kacperduras.pl/</link><image><url>https://kacperduras.pl/favicon.png</url><title>Kacper Duras</title><link>https://kacperduras.pl/</link></image><generator>Ghost 5.75</generator><lastBuildDate>Sat, 02 May 2026 12:46:06 GMT</lastBuildDate><atom:link href="https://kacperduras.pl/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Prognozowanie danych w Google Analytics 4]]></title><description><![CDATA[Zbieranie jakościowych informacji pozwala na szersze zastosowanie danych wykraczające poza standardowy paradygmat myślenia o tym, w jaki sposób można analizować rzeczywistość, a co za tym idzie, między innymi cyfrowy biznes. ]]></description><link>https://kacperduras.pl/prognozowanie-danych-w-google-analytics-4/</link><guid isPermaLink="false">662ed4c6ba002505999333df</guid><category><![CDATA[Google]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sun, 28 Apr 2024 22:01:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1611328573001-13cf452dd8a9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGVzdGltYXRlfGVufDB8fHx8MTcxNDM1NjUyNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1611328573001-13cf452dd8a9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGVzdGltYXRlfGVufDB8fHx8MTcxNDM1NjUyNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Prognozowanie danych w Google Analytics 4"><p>Zbieranie jako&#x15B;ciowych informacji pozwala na szersze zastosowanie danych wykraczaj&#x105;ce poza standardowy paradygmat my&#x15B;lenia o tym, w jaki spos&#xF3;b mo&#x17C;na analizowa&#x107; rzeczywisto&#x15B;&#x107;, a co za tym idzie, mi&#x119;dzy innymi cyfrowy biznes. Jedn&#x105; z mo&#x17C;liwo&#x15B;ci jest prognozowanie wynik&#xF3;w, technika umo&#x17C;liwiaj&#x105;ca przewidywanie przysz&#x142;o&#x15B;ci w stosownym horyzoncie przy zachowaniu odpowiednio wcze&#x15B;nie ustalonych regu&#x142;. W jaki spos&#xF3;b to mo&#x17C;na wdro&#x17C;y&#x107; dla e-commerce przy u&#x17C;yciu Google Analytics 4?</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z tego artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Co to jest prognozowanie, dlaczego jest to wa&#x17C;ne dla firm i jakie techniki s&#x105; najcz&#x119;&#x15B;ciej u&#x17C;ywane do prognozowania w biznesie, takie jak metody statystyczne, sonda&#x17C;e rynkowe, prognozowanie oparte na modelach przyczynowych, analiza szereg&#xF3;w czasowych czy metody oparte na sztucznej inteligencji</span></li><li value="2"><span style="white-space: pre-wrap;">Dowiesz si&#x119; o specyfice prognozowania w kontek&#x15B;cie marketingu i biznesu, jak te dwa obszary si&#x119; przenikaj&#x105; i szczeg&#xF3;&#x142;owo o wyzwaniach zwi&#x105;zanych z prognozowaniem wynik&#xF3;w w marketingu</span></li><li value="3"><span style="white-space: pre-wrap;">Zrozumiesz, w jaki spos&#xF3;b dzia&#x142;a prognozowanie w narz&#x119;dziu Google Analytics 4, jakie metryki predykcyjne s&#x105; tam dost&#x119;pne i jakie warunki musz&#x105; by&#x107; spe&#x142;nione, aby skutecznie trenowa&#x107; modele prognozuj&#x105;ce</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#co-to-jest-prognozowanie-dlaczego-jest-wa%C5%BCne-jak-to-firmy-robi%C4%85" rel="noreferrer"><span style="white-space: pre-wrap;">Dlaczego musz&#x119; wdro&#x17C;y&#x107; Consent Management Platform?</span></a></li><li value="2"><a href="#jak-prognozowa%C4%87-dane-w-marketingu-i-%C5%82%C4%85czy%C4%87-to-z-biznesem-najwa%C5%BCniejsze-wyzwania" rel="noreferrer"><span style="white-space: pre-wrap;">Jak prognozowa&#x107; dane w marketingu i &#x142;&#x105;czy&#x107; to z biznesem? Najwa&#x17C;niejsze wyzwania</span></a></li><li value="3"><a href="#jak-dzia%C5%82a-prognozowanie-w-google-analytics-4" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a prognozowanie w Google Analytics 4?</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Artyku&#x142; rozwija temat prognozowania, procesu opartego na analizie danych w celu przewidywania przysz&#x142;ych zdarze&#x144;, kt&#xF3;re jest kluczowym elementem strategicznego zarz&#x105;dzania firm&#x105;. Wyja&#x15B;nione s&#x105; r&#xF3;&#x17C;ne techniki prognozowania, od prostych metod statystycznych, poprzez badania rynkowe, do zaawansowanych technik opartych na sztucznej inteligencji. Na ko&#x144;cu artyku&#x142; skupia si&#x119; na specyfice prognozowania w kontek&#x15B;cie marketingu i biznesu, z naciskiem na wyzwania i mo&#x17C;liwo&#x15B;ci zwi&#x105;zane z prognozowaniem wynik&#xF3;w, oraz wykorzystaniu Google Analytics 4 do prognozowania.</div></div><h1 id="co-to-jest-prognozowanie-dlaczego-jest-wa%C5%BCne-jak-to-firmy-robi%C4%85">Co to jest prognozowanie? Dlaczego jest wa&#x17C;ne? Jak to firmy robi&#x105;?</h1><p>Prognozowanie to termin, kt&#xF3;ry opisuje proces u&#x17C;ywania danych do przeniesienia wzorc&#xF3;w i trend&#xF3;w w przysz&#x142;o&#x15B;&#x107;. Jest to umiej&#x119;tno&#x15B;&#x107; przewidywania przysz&#x142;ych zdarze&#x144;, potrzeb lub zachowa&#x144; na podstawie informacji, kt&#xF3;re ju&#x17C; posiadamy. W kontek&#x15B;cie biznesu, prognozowanie pozwala na tworzenie modeli i scenariuszy, kt&#xF3;re pomagaj&#x105; firmom przewidzie&#x107; przysz&#x142;e wyniki, a tak&#x17C;e zidentyfikowa&#x107; potencjalne mo&#x17C;liwo&#x15B;ci lub zagro&#x17C;enia. stanowi fundamentalne narz&#x119;dzie dla strategicznego zarz&#x105;dzania firm&#x105;. Umo&#x17C;liwia identyfikacj&#x119; trend&#xF3;w, kt&#xF3;re mog&#x105; mie&#x107; wp&#x142;ywa na jej funkcjonowanie w przysz&#x142;o&#x15B;ci. Przewidywanie przysz&#x142;ych wynik&#xF3;w, czy to sprzeda&#x17C;y, popytu czy sytuacji na rynku, pozwala firmie przewidywa&#x107; swoje potrzeby, planowa&#x107; strategie i podj&#x105;&#x107; decyzje, kt&#xF3;re pomog&#x105; jej osi&#x105;gn&#x105;&#x107; cele w przysz&#x142;o&#x15B;ci.</p><p>Prognozowanie jest tak szerokim poj&#x119;ciem, &#x17C;e obejmuje wiele technik, ale skupmy si&#x119; na kilku najbardziej popularnych, kt&#xF3;re opieraj&#x105; si&#x119; na matematyce, statystyce i socjologii:</p><ul><li><strong>Proste metody statystyczne:</strong> Prosta metoda statystyczna, jak linia trendu, polega na dopasowaniu linii do historycznych danych w celu wyznaczenia przysz&#x142;ych kierunk&#xF3;w trend&#xF3;w. Inn&#x105; prost&#x105; metod&#x105; jest &#x15B;rednia ruchoma, kt&#xF3;ra polega na obliczeniu &#x15B;redniej z okre&#x15B;lonej liczby ostatnich obserwacji. Te metody s&#x105; &#x142;atwe do zrozumienia i implementacji, ale mog&#x105; nie by&#x107; wystarczaj&#x105;co skuteczne, kiedy dane s&#x105; zmiennym i maj&#x105; skomplikowane wzorce sezonowe.</li><li><strong>Sonda&#x17C;e i badania rynku:</strong> Czasami firmy stosuj&#x105; techniki prognozowania oparte na badaniach rynku, takie jak ankiety, wywiady czy grupy dyskusyjne, aby przewidzie&#x107; popyt na nowy produkt lub us&#x142;ug&#x119;. Metoda ta polega na bezpo&#x15B;rednim zapytaniu klient&#xF3;w o ich plany i przyzwyczajenia zakupowe.</li><li><strong>Prognozowanie oparte na modelach przyczynowych:</strong> Inne techniki prognozowania polegaj&#x105; na u&#x17C;yciu modeli przyczynowych, kt&#xF3;re zak&#x142;adaj&#x105; istnienie zale&#x17C;no&#x15B;ci mi&#x119;dzy danymi, kt&#xF3;re chcemy przewidzie&#x107;, a innymi danymi. Przyk&#x142;adem jest regresja. Mo&#x17C;na stwierdzi&#x107;, &#x17C;e sprzeda&#x17C; lod&#xF3;w w upalny dzie&#x144; jest zale&#x17C;na od temperatury. Poprzez regulacj&#x119; r&#xF3;&#x17C;nych zmiennych, takich jak temperatura, mo&#x17C;emy przewidywa&#x107; przysz&#x142;&#x105; sprzeda&#x17C; lod&#xF3;w.</li><li><strong>Analyza szereg&#xF3;w czasowych:</strong> Techniki te analizuj&#x105; dane historyczne, aby znale&#x17A;&#x107; ukryte wzorce i trendy, kt&#xF3;re mo&#x17C;na nast&#x119;pnie wykorzysta&#x107; do prognozowania przysz&#x142;o&#x15B;ci. Przyk&#x142;adowo, popularny model ARIMA (ang. AutoRegressive Integrated Moving Average) jest cz&#x119;sto stosowany do analizy szereg&#xF3;w czasowych.</li><li><strong>Metody oparte na sztucznej inteligencji:</strong> Algorytmy uczenia maszynowego, takie jak sieci neuronowe, lasy losowe i algorytmy boostingu gradientowego, staj&#x105; si&#x119; coraz cz&#x119;&#x15B;ciej stosowane w prognozowaniu biznesowym. S&#x105; w stanie przetwarz&#x107; ogromne ilo&#x15B;ci danych i identyfikowa&#x107; skomplikowane wzorce, kt&#xF3;re mog&#x105; umkn&#x105;&#x107; prostszym technikom prognozowania.</li></ul><p>Ostatecznie, efektywno&#x15B;&#x107; prognozowania jest zale&#x17C;na od kontekstu i specyfiki danej firmy. Najistotniejsze w prognozowaniu jest zrozumienie, kt&#xF3;re metody s&#x105; najskuteczniejsze w danym kontek&#x15B;cie i dostosowanie techniki do specyfiki sektora, w kt&#xF3;rym firma dzia&#x142;a.</p><h1 id="jak-prognozowa%C4%87-dane-w-marketingu-i-%C5%82%C4%85czy%C4%87-to-z-biznesem-najwa%C5%BCniejsze-wyzwania">Jak prognozowa&#x107; dane w marketingu i &#x142;&#x105;czy&#x107; to z biznesem? Najwa&#x17C;niejsze wyzwania</h1><p>Istotne w tym momencie jest zrozumienie perspektyw jakimi rz&#x105;dzi si&#x119; zarz&#x105;dzanie biznesem i zarz&#x105;dzanie marketingiem:</p><ul><li><strong>Marketing</strong> z za&#x142;o&#x17C;enia to dzia&#x142;ania, kt&#xF3;re podejmuje si&#x119;, by promowa&#x107; produkty lub us&#x142;ugi. Jednocze&#x15B;nie jest on w stanie bardzo cz&#x119;sto dostarcza&#x107; informacj&#x119; zwrotn&#x105; na temat tego, w jaki spos&#xF3;b funkcjonuje nasz produkt lub us&#x142;uga, jak prezentuje si&#x119; cena, czy jest ca&#x142;o&#x15B;&#x107; dopasowana do potrzeb ko&#x144;cowego klienta itd., co za tym idzie, funkcjonuje on w spos&#xF3;b nieliniowy. Trudno&#x15B;&#x107; w tym wszystkim zwi&#x119;ksza to, &#x17C;e jest wzgl&#x119;dnie niska &#x15B;wiadomo&#x15B;&#x107; os&#xF3;b decyzyjnych na temat technik badawczych, statystycznych i zagadnie&#x144; technicznych, przez co wiele decyzji jest podejmowanych m.in:<ul><li>w spos&#xF3;b nieprzemy&#x15B;lany pod k&#x105;tem potencjalnego ich mierzenia: niew&#x142;a&#x15B;ciwy dob&#xF3;r kryteri&#xF3;w i metryk, sprowadzanie marketingu wy&#x142;&#x105;cznie do procesu reklamowania, a w zasadzie zakupu medi&#xF3;w (kt&#xF3;ry te&#x17C; z powodu mnogo&#x15B;ci platform reklamowych, zr&#xF3;&#x17C;nicowanych definicji i ich zr&#xF3;&#x17C;nicowanych konstrukcji jest mocno wzgl&#x119;dny)</li><li>&#x17C;yczeniowo: bardzo cz&#x119;sto estymacje to de facto lista pobo&#x17C;nych celi na potrzeby kreowania rzeczywisto&#x15B;ci, kt&#xF3;r&#x105; </li><li>zbyt dok&#x142;adnie: poprzez doszukiwanie si&#x119; korelacji w miejscach, gdzie ich nie ma</li></ul></li><li><strong>Biznes</strong> z kolei obejmuje nie tylko marketing, ale wi&#x119;cej obszar&#xF3;w (np. logistyk&#x119;, produkcj&#x119;), gdzie jest cz&#x119;sto mo&#x17C;liwy dok&#x142;adny pomiar niekt&#xF3;rych proces&#xF3;w (np. produkcyjnych) i ich optymalizacja, co cz&#x119;sto skutkuje mocno linowym spojrzeniem na chocia&#x17C;by planowanie finansowe (gdzie marketing nie musi wykazywa&#x107; korelacji mi&#x119;dzy np. zasi&#x119;gami, a poziomem sprzeda&#x17C;y).</li></ul><p>W istocie tworzy si&#x119; naturalna symbioza, w ramach kt&#xF3;rej biznes od marketingu dostaje dane nie tylko ilo&#x15B;ciowe (ilo&#x15B;&#x107; u&#x17C;ytkownik&#xF3;w, ilo&#x15B;&#x107; doda&#x144; do koszyka, zakupy, poziom retencji), ale tak&#x17C;e jako&#x15B;ciowe (jak chocia&#x17C;by wywiady od u&#x17C;ytkownik&#xF3;w, satysfakcja z u&#x17C;ywania produktu, badania spo&#x142;eczne) u&#x17C;ywane na potrzeby nie tylko planowania, ale tak&#x17C;e procesu odkrywania produktu i tworzenia szerszej strategii rozwoju biznesu. </p><p>Marketing z kolei gros danych pozyskuje reklamowania si&#x119;, czyli konkretnych produkt&#xF3;w reklamowych i system&#xF3;w analizuj&#x105;cych zachowania w czasie rzeczywistym lub historycznie. Biznes z kolei pozyskuje dane chocia&#x17C;by z produkcji, by np. oszacowa&#x107;, ile b&#x119;dzie kosztowa&#x107; potencjalny pokrycie poda&#x17C;y w odpowiedzi na popyt, o kt&#xF3;rym poinformowa&#x142; marketing.</p><p>Reklamy jako jedno z krytycznych &#x17A;r&#xF3;de&#x142; (wbrew przeciwstawnej, obiegowej opinii, kt&#xF3;ra jest w moim mniemaniu b&#x142;&#x119;dna) informacji rz&#x105;dz&#x105; si&#x119; swoimi prawami, w ramach kt&#xF3;rych m.in.:</p><ul><li>dostawcy powierzchni reklamowej konkuruj&#x105; ze sob&#x105;, co nie sprzyja wymianie informacji mi&#x119;dzy systemami w celu np. atrybuowania &#x15B;cie&#x17C;ki u&#x17C;ytkownika;</li><li>potrafi&#x105; by&#x107; rozbie&#x17C;ne poj&#x119;cia, np. w zakresie tego, co jest konwersj&#x105; lub wy&#x15B;wietleniem (a mo&#x17C;e by&#x107; b&#x142;&#x119;dnym sygna&#x142;em co do okre&#x15B;lania chocia&#x17C;by potencjalnego momentum sprzeda&#x17C;owego na podstawie danych historycznych);</li><li>nie s&#x105; udost&#x119;pniane niekt&#xF3;re informacji, czego przyczyny s&#x105; r&#xF3;&#x17C;ne &#x2014; od tego, &#x17C;e informacje te mog&#x105; by&#x107; faktycznie niepotrzebne, poprzez indywidualne ustalenia, ko&#x144;cz&#x105;c na tym, &#x17C;e dany produkt z przyczyn bli&#x17C;ej nieokre&#x15B;lonych konkretnych metryk nie udost&#x119;pnia;</li></ul><p>Istotnym elementem jest to, &#x17C;e niekt&#xF3;rych zachowa&#x144; nie mo&#x17C;na pomierzy&#x107;, <a href="https://kacperduras.pl/google-tag-manager-server-side/" rel="noreferrer">na co wp&#x142;yw maj&#x105; regulacje prawne i zmiany technologiczne, kt&#xF3;re chocia&#x17C;by blokuj&#x105; przesy&#x142;anie niezb&#x119;dnych danych przez u&#x17C;ytkownik&#xF3;w</a>.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-text">Mo&#x17C;esz wysun&#x105;&#x107; zatem z tego wszystkiego prawid&#x142;owy wniosek, &#x17C;e<b><strong style="white-space: pre-wrap;"> ka&#x17C;da predykcja powinna by&#x107; rozpatrywana wy&#x142;&#x105;cznie w charakterze prawdopodobie&#x144;stwa</strong></b>. Prognozowanie wynik&#xF3;w mediowych, efektywno&#x15B;ciowych itd. jako czego&#x15B; pewnego jest zbytnim wyp&#x142;aszczeniem, kt&#xF3;re faktycznie jest wyznaczeniem celu lub perswazj&#x105; podyktowan&#x105; ch&#x119;ci&#x105; zaprezentowania pewnej okre&#x15B;lonej z g&#xF3;ry wizji.</div></div><p>Znaj&#x105;c ju&#x17C; podstawy tego, w jaki spos&#xF3;b mo&#x17C;na okre&#x15B;la&#x107; prognozy oraz ryzyka z nich wynikaj&#x105;cych, mo&#x17C;na przej&#x15B;&#x107; do tego, w jaki spos&#xF3;b nowoczesne narz&#x119;dzia marketingowe, w tym Google Analytics 4, przewiduj&#x105; rezultaty.</p><h1 id="jak-dzia%C5%82a-prognozowanie-w-google-analytics-4">Jak dzia&#x142;a prognozowanie w Google Analytics 4?</h1><p>Google w narz&#x119;dziu Google Analytics 4 dokona&#x142; implementacji metryk predykcyjnych, kt&#xF3;re na podstawie danych z sesji u&#x17C;ytkownik&#xF3;w i (co jest warte zaznaczenia i zapami&#x119;tania) <strong>zamkni&#x119;tego </strong>modelu od Google prognozuje:</p><ul><li><strong>Prawdopodobie&#x144;stwo zakupu: </strong>Prawdopodobie&#x144;stwo, &#x17C;e u&#x17C;ytkownik, kt&#xF3;ry by&#x142; aktywny w ci&#x105;gu ostatnich 28 dni, wywo&#x142;a w ci&#x105;gu najbli&#x17C;szych 7 dni zarejestrowanie okre&#x15B;lonego zdarzenia konwersji.</li><li><strong>Prawdopodobie&#x144;stwo rezygnacji: </strong>Prawdopodobie&#x144;stwo, &#x17C;e u&#x17C;ytkownik, kt&#xF3;ry w ci&#x105;gu ostatnich 7 dni by&#x142; aktywny w witrynie lub aplikacji, nie b&#x119;dzie aktywny w ci&#x105;gu najbli&#x17C;szych 7 dni.</li><li><strong>Prognozowane przychody: </strong>Przychody oczekiwane w ci&#x105;gu najbli&#x17C;szych 28 dni ze wszystkich konwersji polegaj&#x105;cych na zakupie, kt&#xF3;re przypuszczalnie wykona u&#x17C;ytkownik aktywny w ostatnich 28 dniach.</li></ul><p>Dzi&#x119;ki temu mo&#x17C;na stworzy&#x107; dedykowan&#x105; grup&#x119; odbiorc&#xF3;w, kt&#xF3;rzy np. w danym przedziale czasu maj&#x105; najwi&#x119;ksze prawdopodobie&#x144;stwo na zakup, przez co mo&#x17C;na skierowa&#x107; na ni&#x105; specjalny komunikat marketingowy poprzez Google Ads.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kacperduras.pl/content/images/2024/04/e0ZO6CS76578Pc0FqNU2EMaQbQIFLVETuPuP.png" class="kg-image" alt="Prognozowanie danych w Google Analytics 4" loading="lazy" width="1698" height="1034" srcset="https://kacperduras.pl/content/images/size/w600/2024/04/e0ZO6CS76578Pc0FqNU2EMaQbQIFLVETuPuP.png 600w, https://kacperduras.pl/content/images/size/w1000/2024/04/e0ZO6CS76578Pc0FqNU2EMaQbQIFLVETuPuP.png 1000w, https://kacperduras.pl/content/images/size/w1600/2024/04/e0ZO6CS76578Pc0FqNU2EMaQbQIFLVETuPuP.png 1600w, https://kacperduras.pl/content/images/2024/04/e0ZO6CS76578Pc0FqNU2EMaQbQIFLVETuPuP.png 1698w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Domy&#x15B;lna konfiguracja prognozowania dla prawdopodobie&#x144;stwa odej&#x15B;cia klienta, ustawiona na uwzgl&#x119;dnienie od 80. do 100. percentyla u&#x17C;ytkownik&#xF3;w (najlepszych 20% u&#x17C;ytkownik&#xF3;w). &#x179;r&#xF3;d&#x142;o: </span><a href="https://support.google.com/analytics/answer/9805833?sjid=9286915953570376706-EU&amp;ref=kacperduras.pl"><span style="white-space: pre-wrap;">https://support.google.com/analytics/answer/9805833?sjid=9286915953570376706-EU</span></a></figcaption></figure><p>Aby skutecznie trenowa&#x107; modele prognozuj&#x105;ce, Google Analytics wymaga spe&#x142;nienia tych kryteri&#xF3;w:</p><ol><li><strong>Minimalnej liczby pozytywnych i&#xA0;negatywnych przyk&#x142;ad&#xF3;w u&#x17C;ytkownik&#xF3;w sk&#x142;onnych do zakup&#xF3;w lub rezygnacji</strong>. Wymagane jest, aby przez 7&#xA0;kolejnych dni przypadaj&#x105;cych w&#xA0;ci&#x105;gu ostatnich 28&#xA0;dni co najmniej 1000&#xA0;powracaj&#x105;cych u&#x17C;ytkownik&#xF3;w spe&#x142;ni&#x142;o odpowiedni warunek prognostyczny (zakup lub rezygnacja) i&#xA0;co najmniej 1000&#xA0;powracaj&#x105;cych u&#x17C;ytkownik&#xF3;w nie spe&#x142;ni&#x142;o tego warunku.</li><li>Utrzymywania przez pewien czas odpowiedniej jako&#x15B;ci modeli prognostycznych</li><li>Aby kwalifikowa&#x107; si&#x119; do korzystania z danych dotycz&#x105;cych prawdopodobie&#x144;stwa zakupu i prognozowanych przychod&#xF3;w, us&#x142;uga musi wysy&#x142;a&#x107; zdarzenia&#xA0;zakupu</li></ol><p>Dane prognozowane w przypadku ka&#x17C;dego kwalifikuj&#x105;cego si&#x119; modelu b&#x119;d&#x105; generowane raz dziennie dla ka&#x17C;dego aktywnego u&#x17C;ytkownika. Je&#x15B;li jako&#x15B;&#x107; modelu w us&#x142;udze spadnie poni&#x17C;ej minimalnego progu, Google Analytics przestanie aktualizowa&#x107; odpowiednie prognozy i mog&#x105; si&#x119; one sta&#x107; niedost&#x119;pne. Niezb&#x119;dne jest w takiej sytuacji w&#x142;&#x105;czenie funkcji <em>Modeling contributions &amp; business insights </em>z sekcji<em> Data sharing</em>.</p><p>Warto pami&#x119;ta&#x107; o <a href="https://support.google.com/analytics/answer/11161109?hl=en&amp;ref=kacperduras.pl" rel="noreferrer">modelowaniu behawioralnym</a>, kt&#xF3;re jest mocno powi&#x105;zanym mechanizmem s&#x142;u&#x17C;&#x105;cym do minimalizowania niedogodno&#x15B;ci zwi&#x105;zanych ze zmianami protoko&#x142;&#xF3;w prywatno&#x15B;ci (czyli estymowania tego, ile np. u&#x17C;ytkownik&#xF3;w odwiedza nasz serwis), a nast&#x119;pnie prognozowania: w ko&#x144;cu w taki spos&#xF3;b dostajemy informacje, na podstawie kt&#xF3;rych trenujemy modele, warto wi&#x119;c by by&#x142;y jak najbardziej dok&#x142;adne (czyli by&#x142;y tak bardzo prawdopodobne jak to mo&#x17C;liwe). <a href="https://kacperduras.pl/wdrozenie-google-tag-manager-server-side-za-pomoca-dockera/" rel="noreferrer">Opr&#xF3;cz samego wdro&#x17C;enia Google Tag Manager Server-Side</a> rekomenduj&#x119; (co jest r&#xF3;wnie&#x17C; wymagane na terenie EOG) sprawdzi&#x107;, czy consent mode za pomoc&#x105; Consent Management Platform jest prawid&#x142;owo wdro&#x17C;ony.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/consent-management-platform-za-darmo/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Darmowe wdro&#x17C;enie consent mode</div><div class="kg-bookmark-description">Artyku&#x142; omawia znaczenie i korzy&#x15B;ci zastosowania Consent Management Platform (CMP) dla zgodno&#x15B;ci ze standardami prywatno&#x15B;ci. Por&#xF3;wnywane s&#x105; wady i zalety darmowych oraz p&#x142;atnych narz&#x119;dzi CMP.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Prognozowanie danych w Google Analytics 4"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1590080874088-eec64895b423?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGNvb2tpZXMlMjBmaWxlfGVufDB8fHx8MTcwMjIxNjMwN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Prognozowanie danych w Google Analytics 4"></div></a></figure><p><br></p><p></p><h1 id></h1>]]></content:encoded></item><item><title><![CDATA[Jak wdrożyć Consent Management Platform za darmo?]]></title><description><![CDATA[Artykuł omawia znaczenie i korzyści zastosowania Consent Management Platform (CMP) dla zgodności ze standardami prywatności. Porównywane są wady i zalety darmowych oraz płatnych narzędzi CMP.]]></description><link>https://kacperduras.pl/consent-management-platform-za-darmo/</link><guid isPermaLink="false">6575c264db86470565e58a8a</guid><category><![CDATA[Google Tag Manager]]></category><category><![CDATA[Google]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Mon, 22 Apr 2024 22:01:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1590080874088-eec64895b423?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGNvb2tpZXMlMjBmaWxlfGVufDB8fHx8MTcwMjIxNjMwN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1590080874088-eec64895b423?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGNvb2tpZXMlMjBmaWxlfGVufDB8fHx8MTcwMjIxNjMwN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Jak wdro&#x17C;y&#x107; Consent Management Platform za darmo?"><p>Zmiany w przepisach dotycz&#x105;ce prywatno&#x15B;ci, respektowania zg&#xF3;d przetwarzania danych osobowych i pokrewnych informacji narzucaj&#x105; jako jeden z wymog&#xF3;w respektowanie prawid&#x142;owej zgody na pliki cookies. Ciasteczka to wysy&#x142;ane przez serwis internetowy, kt&#xF3;ry odwiedzamy &#x142;adunki informacji, zapisywane na urz&#x105;dzeniu ko&#x144;cowym (komputerze, laptopie, smartfonie), z kt&#xF3;rego korzystamy podczas przegl&#x105;dania stron internetowych. </p><p>Do zarz&#x105;dzania mechanizmami zgody (w tym consent mod&#x119;), a co za tym idzie, nie tylko zgod&#x105; na zapisywanie ciasteczek (ale r&#xF3;wnie&#x17C; uruchomienie innych narz&#x119;dzi i realizacj&#x119; stosownych akcji, kt&#xF3;re spe&#x142;niaj&#x105; stosown&#x105; kwalifikacj&#x119; prawn&#x105;), s&#x142;u&#x17C;y narz&#x119;dzie nazywane zbiorczo Consent Management Platform. Najpopularniejsze tego us&#x142;ugi potrafi&#x105; by&#x107; nieproporcjonalnie drogie wzgl&#x119;dem tego, co one faktycznie oferuj&#x105;. Jakie s&#x105; alternatywy?</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z tego artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Dlaczego Consent Management Platform jest niezb&#x119;dnym elementem witryny internetowej</span></li><li value="2"><span style="white-space: pre-wrap;">Dlaczego wdro&#x17C;enie narz&#x119;dzia jest szybkie i tanie</span></li><li value="3"><span style="white-space: pre-wrap;">W jaki spos&#xF3;b bez posiadania szczeg&#xF3;lnej wiedzy technicznej zrealizowa&#x107; implementacj&#x119;</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#dlaczego-musz%C4%99-wdro%C5%BCy%C4%87-consent-management-platform" rel="noreferrer"><span style="white-space: pre-wrap;">Dlaczego musz&#x119; wdro&#x17C;y&#x107; Consent Management Platform?</span></a></li><li value="2"><a href="#darmowe-rozwi%C4%85zania-vs-p%C5%82atne-narz%C4%99dziaplusy-i-minusy" rel="noreferrer"><span style="white-space: pre-wrap;">Darmowe rozwi&#x105;zania vs p&#x142;atne narz&#x119;dzia - plusy i minusy</span></a></li><li value="3"><a href="#jak-wdro%C5%BCy%C4%87-consent-management-platform-za-darmo" rel="noreferrer"><span style="white-space: pre-wrap;">Jak wdro&#x17C;y&#x107; Consent Management Platform za darmo?</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Artyku&#x142; omawia znaczenie implementacji Consent Management Platform (CMP) w kontek&#x15B;cie zgodno&#x15B;ci z obowi&#x105;zuj&#x105;cymi regulacjami prawo ochrony danych i wymaganiami platform reklamowych. Por&#xF3;wnuje zalety i wady darmowych i p&#x142;atnych narz&#x119;dzi, zauwa&#x17C;aj&#x105;c, &#x17C;e chocia&#x17C; darmowe wersje mog&#x105; wydawa&#x107; si&#x119; atrakcyjne, cz&#x119;sto brakuje im wsparcia technicznego i personalizacji, kt&#xF3;re dostarczaj&#x105; p&#x142;atne platformy.&#xA0;</div></div><h1 id="dlaczego-musz%C4%99-wdro%C5%BCy%C4%87-consent-management-platform">Dlaczego musz&#x119; wdro&#x17C;y&#x107; Consent Management Platform?</h1><p>Wdro&#x17C;enie Consent Management Platform (CMP) jest istotne z wielu powod&#xF3;w:</p><ol><li><strong>Dostosowanie do przepis&#xF3;w</strong>: Przepisy o ochronie danych, takie jak RODO w Unii Europejskiej, nak&#x142;adaj&#x105; na firmy obowi&#x105;zek uzyskania wyra&#x17A;nej zgody od u&#x17C;ytkownik&#xF3;w na gromadzenie i przetwarzanie ich danych osobowych. CMP pomaga firmom spe&#x142;ni&#x107; te wymagania.</li><li><strong>Zgodno&#x15B;&#x107; z wymogami platform reklamowych</strong>: Wiele platform reklamowych (w tym najwi&#x119;ksi gracze jak Google) wymaga, aby firmy korzystaj&#x105;ce z ich us&#x142;ug, przestrzega&#x142;y okre&#x15B;lonych zasad dotycz&#x105;cych zbierania i przetwarzania danych u&#x17C;ytkownik&#xF3;w. CMP umo&#x17C;liwia firmom spe&#x142;nienie tych wymaga&#x144;.</li><li><strong>Transparentno&#x15B;&#x107;</strong>: Dzi&#x119;ki CMP, u&#x17C;ytkownicy mog&#x105; lepiej zrozumie&#x107;, na co dok&#x142;adnie wyra&#x17C;aj&#x105; zgod&#x119;, je&#x15B;li chodzi o gromadzenie i wykorzystywanie ich danych.</li><li><strong>Personalizacja</strong>: Kiedy u&#x17C;ytkownicy wyra&#x17C;aj&#x105; zgod&#x119; na przetwarzanie ich danych, firmy s&#x105; w stanie co do zasady lepiej dostosowa&#x107; swoje reklamy i oferty do indywidualnych preferencji u&#x17C;ytkownik&#xF3;w (consent mod&#x119;). <a href="https://kacperduras.pl/google-tag-manager-server-side/" rel="noreferrer">Mo&#x17C;na to uzyska&#x107; np. za pomoc&#x105; wdro&#x17C;enia Google Tag Manager Server-Side</a>.</li><li><strong>Zmniejszenie ryzyka</strong>: CMP pomaga zminimalizowa&#x107; ryzyko naruszenia ochrony danych, poniewa&#x17C; firmy maj&#x105; jasne wytyczne dotycz&#x105;ce tego, jakie informacje mog&#x105; zbiera&#x107; i w jaki spos&#xF3;b je wykorzystywa&#x107;.</li><li><strong>Efektywno&#x15B;&#x107;</strong>: U&#x17C;ycie CMP pozwala sprawniej zarz&#x105;dza&#x107; zgodami u&#x17C;ytkownik&#xF3;w, co przek&#x142;ada si&#x119; na oszcz&#x119;dno&#x15B;&#x107; czasu i zasob&#xF3;w, zar&#xF3;wno dla strony, jak i dla u&#x17C;ytkownik&#xF3;w.</li></ol><p>Konieczno&#x15B;&#x107; posiadania CMPka jest korzystna dla wi&#x119;kszo&#x15B;ci stron. Najbardziej cierpi&#x105; na tym reklamodawcy, kt&#xF3;rzy nie maj&#x105; mo&#x17C;liwo&#x15B;ci dok&#x142;adnego pomiaru danych <a href="https://kacperduras.pl/google-tag-manager-server-side/" rel="noreferrer">tak, jak to si&#x119; dzia&#x142;o dotychczas</a>. Istotny jednak niezale&#x17C;nie od wyznawanego pogl&#x105;du jest aspekt kosztowy wdro&#x17C;enia rozwi&#x105;zania.</p><h1 id="darmowe-rozwi%C4%85zania-vs-p%C5%82atne-narz%C4%99dziaplusy-i-minusy">Darmowe rozwi&#x105;zania vs p&#x142;atne narz&#x119;dzia - plusy i minusy</h1><p>W wi&#x119;kszo&#x15B;ci sytuacji jestem zwolennikiem u&#x17C;ywania p&#x142;atnych CMPk&#xF3;w ze wzgl&#x119;du na dbanie o zgodno&#x15B;&#x107; z aktualnym i prostot&#x119; wdro&#x17C;enia, acz rozumiem te&#x17C; osoby, kt&#xF3;re za wszelk&#x105; cen&#x119; chc&#x105; zwalcza&#x107; zb&#x119;dne koszty. Przygotowa&#x142;em poni&#x17C;ej por&#xF3;wnanie pomocne we wyborze &#x15B;cie&#x17C;ki decyzyjnej.</p><h3 id="darmowe-cmp"><strong>Darmowe CMP</strong></h3><p>Plusy:</p><ul><li><strong>Bez finansowanych koszt&#xF3;w pocz&#x105;tkowych</strong>: Brak op&#x142;at zwi&#x105;zanych z wdro&#x17C;eniem i utrzymaniem.</li><li><strong>Dost&#x119;pno&#x15B;&#x107;</strong>: Zazwyczaj &#x142;atwo dost&#x119;pne dla wszystkich, niezale&#x17C;nie od wielko&#x15B;ci firmy czy bud&#x17C;etu.</li><li><strong>Prostota</strong>: Darmowe opcje mog&#x105; by&#x107; &#x142;atwiejsze do implementacji, z co stanowi korzy&#x15B;&#x107; dla mniejszych firm lub tych, kt&#xF3;re dopiero zaczynaj&#x105; swoj&#x105; przygod&#x119; z zarz&#x105;dzaniem zgodami.</li></ul><p>Minusy:</p><ul><li><strong>Brak wsparcia technicznego</strong>: Ten rodzaj narz&#x119;dzi cz&#x119;sto nie zapewnia wsparcia technicznego lub oferuje go w ograniczonym zakresie. Darmowy CMPek wymusz&#x105; najcz&#x119;&#x15B;ciej napisanie wi&#x119;kszo&#x15B;ci funkcjonalno&#x15B;ci samodzielnie (w tym implementacji z mechanizmem zg&#xF3;d). To, w jaki spos&#xF3;b b&#x119;dzie on zoptymalizowany i skonstruowany zale&#x17C;y g&#x142;&#xF3;wnie od programisty.</li></ul><h3 id="p%C5%82atne-cmp"><strong>P&#x142;atne CMP</strong></h3><p>Plusy:</p><ul><li><strong>Zaawansowane funkcje</strong>: P&#x142;atne narz&#x119;dzia cz&#x119;sto oferuj&#x105; szereg zaawansowanych funkcji, kt&#xF3;re mog&#x105; pom&#xF3;c firmom lepiej wykorzysta&#x107; swoje dane.</li><li><strong>Wsparcie i edukacja</strong>: P&#x142;atne platformy zazwyczaj oferuj&#x105; wsparcie techniczne, a czasem nawet szkolenia i materia&#x142;y edukacyjne.</li><li><strong>Aktualizacje i rozw&#xF3;j</strong>: Obecno&#x15B;&#x107; regularnych aktualizacji i dodatkowym komponent&#xF3;w gwarantuje, &#x17C;e platforma b&#x119;dzie na bie&#x17C;&#x105;co z przepisami prawnymi i najnowszymi trendami.</li><li><strong>Wi&#x119;ksza kontrola i bezpiecze&#x144;stwo</strong>: Firmy mog&#x105; skorzysta&#x107; z pe&#x142;nej kontroli nad danymi i zgodami, a tak&#x17C;e lepsz&#x105; ochron&#x119; danych dzi&#x119;ki zaawansowanym zabezpieczeniom.</li></ul><p><strong>Minusy:</strong></p><ul><li><strong>Koszt</strong>: G&#x142;&#xF3;wn&#x105; wad&#x105; jest konieczno&#x15B;&#x107; ponoszenia miesi&#x119;cznych lub rocznych op&#x142;at za narz&#x119;dzie.</li><li><strong>D&#x142;ugoterminowe zobowi&#x105;zanie</strong>: Niekt&#xF3;re p&#x142;atne platformy wymagaj&#x105; d&#x142;ugoterminowych um&#xF3;w, kt&#xF3;re mog&#x105; by&#x107; trudne do zerwania.</li></ul><p>Je&#x15B;li wiesz jak faktycznie wdro&#x17C;y&#x107; CMP i masz mo&#x17C;liwo&#x15B;&#x107; realizowania konsultacji prawnych w zakresie przetwarzania danych (gdzie nie mam tutaj na my&#x15B;li kupowania wzor&#xF3;w najwa&#x17C;niejszych dokument&#xF3;w), to wdro&#x17C;enie w&#x142;asnego CMPka ma sens. Jest to mniejszo&#x15B;&#x107; scenariuszy przeze mnie zalecanych i jak wspomnia&#x142;em we wst&#x119;pie, je&#x15B;li masz mo&#x17C;liwo&#x15B;&#x107;, to skorzystaj z gotowego produktu. </p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Polecan&#x105; przeze mnie platform&#x105; CMP jest CookieYes: </strong></b><a href="https://www.cookieyes.com/welcome/?ref=odc1njf" rel="noreferrer"><b><strong style="white-space: pre-wrap;">tutaj mo&#x17C;esz skorzysta&#x107; z mojego linku afiliacyjnego</strong></b></a>, zarejestrowa&#x107; si&#x119; i przej&#x15B;&#x107; przez ca&#x142;y proces implementacji, kt&#xF3;ry jest wzgl&#x119;dnie prosty. Do 25 000 wizyt miesi&#x119;cznie mo&#x17C;esz korzysta&#x107; z rozwi&#x105;zania za darmo.</div></div><p>Alternatywnie mo&#x17C;esz skorzysta&#x107; ze system&#xF3;w do zarz&#x105;dzania kodami &#x15B;ledz&#x105;cymi jak np. Cloudflare Zaraz, gdzie CMP ze stosownym widgetem jest wbudowany w narz&#x119;dzie:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/integracja-narzedzi-analitycznych-przy-pomocy-cloudflare-zaraz/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz</div><div class="kg-bookmark-description">Z post&#x119;puj&#x105;cym rozwojem technologicznym w sektorze reklamy pojawiaj&#x105; si&#x119; innowacyjne metody umo&#x17C;liwiaj&#x105;ce efektywniejsze ocenianie wynik&#xF3;w dzia&#x142;a&#x144; marketingowych, jednocze&#x15B;nie respektuj&#x105;ce wymagane przepisy. Podobn&#x105; funkcj&#x119; pe&#x142;ni Cloudflare Zaraz.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Jak wdro&#x17C;y&#x107; Consent Management Platform za darmo?"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://kacperduras.pl/content/images/2023/11/code-block----0ACloudflare-Image-1.png" alt="Jak wdro&#x17C;y&#x107; Consent Management Platform za darmo?"></div></a></figure><h1 id="jak-wdro%C5%BCy%C4%87-consent-management-platform-za-darmo">Jak wdro&#x17C;y&#x107; Consent Management Platform za darmo?</h1><p>Je&#x15B;li decydujesz si&#x119; na darmowe wdro&#x17C;enie i masz wiedz&#x119; programistyczn&#x105; lub zasoby do wdro&#x17C;enia to mo&#x17C;esz skorzysta&#x107; z jednego z gotowych framework&#xF3;w - najprostszym do implementacji jaki znalaz&#x142;em jest <a href="https://github.com/klaro-org/klaro-js?ref=kacperduras.pl" rel="noreferrer">Klaro</a>.</p><p>Instrukcja jest bardzo prosta i sk&#x142;ada si&#x119; z nast&#x119;puj&#x105;cych element&#xF3;w:</p><ul><li>za&#x142;&#x105;czenie skrypt&#xF3;w GTM, nast&#x119;pnie iniekcja skrypt&#xF3;w od Klaro</li><li>przygotowanie dedykowanej konfiguracji - tutaj przyk&#x142;ad uwzgl&#x119;dniaj&#x105;cy zmiany zwi&#x105;zane z CMP v2 od Google</li></ul><figure class="kg-card kg-code-card"><pre><code class="language-json">var klarConfig = {
    acceptAll: true,
    services: [
        {
            name: &apos;google-tag-manager&apos;,
            required: true,
            purposes: [&apos;marketing&apos;],
            onAccept: `
                for (let k of Object.keys(opts.consents)) {
                    if (opts.consents[k]){
                        let eventName = &apos;klaro-&apos;+k+&apos;-accepted&apos;
                        dataLayer.push({&apos;event&apos;: eventName});
                    }
                }
            `,
            onInit: `
                window.dataLayer = window.dataLayer || [];
                window.gtag = function() {
                  dataLayer.push(arguments)
                }
                
                gtag(&apos;consent&apos;, &apos;default&apos;, {
                  &apos;ad_storage&apos;: &apos;denied&apos;, 
                  &apos;analytics_storage&apos;: &apos;denied&apos;, 
                  &apos;ad_user_data&apos;: &apos;denied&apos;, 
                  &apos;ad_personalization&apos;: &apos;denied&apos;
                })
                gtag(&apos;set&apos;, &apos;ads_data_redaction&apos;, true)
            `,
        },
        {
            name: &apos;google-analytics&apos;,
            cookies: [
                /^_ga(_.*)?/
            ],
            purposes: [&apos;marketing&apos;],
            onAccept: `
                gtag(&apos;consent&apos;, &apos;update&apos;, {
                    &apos;analytics_storage&apos;: &apos;granted&apos;,
                })
            `,
            onDecline: `
                gtag(&apos;consent&apos;, &apos;update&apos;, {
                    &apos;analytics_storage&apos;: &apos;denied&apos;,
                });
            `,
        },
        {
            name: &apos;google-ads&apos;,
            cookies: [],
            onAccept: `
                gtag(&apos;consent&apos;, &apos;update&apos;, {
                    &apos;ad_storage&apos;: &apos;granted&apos;,
                    &apos;ad_user_data&apos;: &apos;granted&apos;,
                    &apos;ad_personalization&apos;: &apos;granted&apos;
                });
            `,
            onDecline: `
                gtag(&apos;consent&apos;, &apos;update&apos;, {
                    &apos;ad_storage&apos;: &apos;denied&apos;,
                    &apos;ad_user_data&apos;: &apos;denied&apos;,
                    &apos;ad_personalization&apos;: &apos;denied&apos;
                });
            `,
            purposes: [&apos;marketing&apos;],
        }
    ]
};</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowa konfiguracja na bazie oficjalnej dokumentacji Klaro</span></p></figcaption></figure><ul><li>wytestowanie implementacji za pomoc&#x105; podgl&#x105;du w Google Tag Manager (oraz obs&#x142;uga zdarzenia zmiany)</li></ul><p>Podsumowuj&#x105;c, rola Consent Management Platform (CMP) w dzisiejszym cyfrowym &#x15B;wiecie zas&#x142;uguje na szczeg&#xF3;ln&#x105; uwag&#x119;. Narz&#x119;dzie to jest nie tylko kluczem do zgodno&#x15B;ci z przepisami prawnymi, ale r&#xF3;wnie&#x17C; do budowania zrozumienia i zaufania w&#x15B;r&#xF3;d u&#x17C;ytkownik&#xF3;w. Optymalna decyzja o tym, czy warto zainwestowa&#x107; w p&#x142;atne narz&#x119;dzie CMP, czy skorzysta&#x107; z darmowego, zale&#x17C;y od konkretnej sytuacji i potrzeb firmy, a w szczeg&#xF3;lno&#x15B;ci od jej wielko&#x15B;ci, bud&#x17C;etu i poziomu z&#x142;o&#x17C;ono&#x15B;ci dzia&#x142;a&#x144; marketingowych.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Automatyczne rabatowanie w Google Ads]]></title><description><![CDATA[Automatyczne rabaty w Google Ads to narzędzie dla e-commerce umożliwiające dynamiczne zarządzanie cenami. Działa na podstawie danych Google, ułatwia personalizację rabatu i zarządzanie marżą.]]></description><link>https://kacperduras.pl/automatyczny-rabat-w-google-ads/</link><guid isPermaLink="false">661c6a1bf2825b05ac1f467d</guid><category><![CDATA[Google]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sun, 14 Apr 2024 22:01:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1592096304832-62463bfdc822?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDM0fHxnb29nbGUlMjBhZHN8ZW58MHx8fHwxNzEzMTQxNTk5fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1592096304832-62463bfdc822?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDM0fHxnb29nbGUlMjBhZHN8ZW58MHx8fHwxNzEzMTQxNTk5fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Automatyczne rabatowanie w Google Ads"><p>Zamknij oczy i wyobra&#x17A; sobie, &#x17C;e jeste&#x15B; na wielkim, g&#x142;o&#x15B;nym bazarze. Kupcy z ca&#x142;ego &#x15B;wiata oferuj&#x105; swoje towary, a ty jeste&#x15B; w centrum tego handlowego wiru, szukaj&#x105;c okazji, kt&#xF3;re przyci&#x105;gn&#x105; twoj&#x105; uwag&#x119;. Teraz wyobra&#x17A; sobie, &#x17C;e masz przy sobie osobistego asystenta, kt&#xF3;ry zna twoje preferencje i potrafi negocjowa&#x107; za ciebie, gwarantuj&#x105;c najlepsze mo&#x17C;liwe oferty. Brzmi wyj&#x105;tkowo, prawda? W &#x15B;wiecie cyfrowym, t&#x119; rol&#x119; asystenta przejmuje coraz cz&#x119;&#x15B;ciej technologia - a konkretnie - automatyczne rabaty w Google Ads.</p><p>To, co mog&#x142;o wydawa&#x107; si&#x119; niemo&#x17C;liwe, dzi&#x15B; staje si&#x119; rzeczywisto&#x15B;ci&#x105; dzi&#x119;ki ci&#x105;g&#x142;emu post&#x119;powi technologicznemu. Ale, jak to wszystko dzia&#x142;a? Jakie s&#x105; tajemnice zawarte za tymi intryguj&#x105;cymi narz&#x119;dziami, kt&#xF3;re zdaj&#x105; si&#x119; zmienia&#x107; zasady gry w e-commerce?</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z tego artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Jak dzia&#x142;aj&#x105; automatyczne rabaty w Google Ads</span></li><li value="2"><span style="white-space: pre-wrap;">Jak wdro&#x17C;y&#x107; automatyczne rabaty</span></li><li value="3"><span style="white-space: pre-wrap;">Jak dostosowa&#x107; si&#x119; do dyrektywy Omnibus</span></li><li value="4"><span style="white-space: pre-wrap;">Jak wykorzysta&#x107; automatyczne rabaty do poprawy efektywno&#x15B;ci sprzeda&#x17C;y</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#czym-s%C4%85-automatyczne-rabaty-w-google-ads-i-jak-dzia%C5%82aj%C4%85" rel="noreferrer"><span style="white-space: pre-wrap;">Czym s&#x105; automatyczne rabaty w Google Ads i jak dzia&#x142;aj&#x105;?</span></a></li><li value="2"><a href="#jakie-s%C4%85-wymagania-do-wdro%C5%BCenia-automatycznego-rabatowania-w-google-ads" rel="noreferrer"><span style="white-space: pre-wrap;">Jakie s&#x105; wymagania do wdro&#x17C;enia automatycznego rabatowania w Google Ads?</span></a></li><li value="3"><a href="#jakie-s%C4%85-wymagania-do-wdro%C5%BCenia-automatycznego-rabatowania-w-google-ads" rel="noreferrer"><span style="white-space: pre-wrap;">Wdra&#x17C;anie automatycznego rabatowania w Google Ads</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Ten artyku&#x142; to kompleksowy przewodnik, kt&#xF3;ry wyja&#x15B;nia, jak dzia&#x142;aj&#x105; automatyczne rabaty w Google Ads - innowacyjne narz&#x119;dzie dla e-commerce. Zawiera konkretne kroki dotycz&#x105;ce wdro&#x17C;enia i zarz&#x105;dzania tym mechanizmem, rozpatruj&#x105;c techniczne aspekty procesu i wymagania legislacyjne, takie jak dyrektywa Omnibus. Wreszcie, tekst zwraca uwag&#x119; na mo&#x17C;liwo&#x15B;ci, jakie automatyczne rabaty oferuj&#x105; dla sklep&#xF3;w internetowych, podkre&#x15B;laj&#x105;c potencja&#x142; tych innowacji dla personalizacji ofert handlowych i zwi&#x119;kszania efektywno&#x15B;ci sprzeda&#x17C;y.</div></div><h1 id="czym-s%C4%85-automatyczne-rabaty-w-google-ads-i-jak-dzia%C5%82aj%C4%85">Czym s&#x105; automatyczne rabaty w Google Ads i jak dzia&#x142;aj&#x105;?</h1><p>Automatyczne rabaty s&#x105; funkcjonalno&#x15B;ci&#x105; produktu Google Ads, kt&#xF3;ra umo&#x17C;liwia elastyczne zarz&#x105;dzanie polityk&#x105; cenow&#x105; dla produkt&#xF3;w oferowanych w e-commerce przez kampanie reklamowe. Dzi&#x119;ki temu Google na podstawie swoich danych i w zale&#x17C;no&#x15B;ci od mi&#x119;dzy innymi popytu, konkurencji i celu konkretnej kampanii, jest w stanie wyr&#xF3;&#x17C;ni&#x107; konkretn&#x105; ofert&#x119; proponuj&#x105;c stosowny rabat dla ko&#x144;cowego u&#x17C;ytkownika i sk&#x142;oni&#x107; go do zakupu w danych sklepie internetowym w ograniczonym przedziale czasu (domy&#x15B;lnie: 1 godzina).</p><p>Jest to ciekaw&#x105; alternatyw&#x105; dla standardowego systemu rabatowego, i&#x17C;:</p><ul><li>personalizuje wra&#x17C;enie zakupowe dla u&#x17C;ytkownika: sklep nie musi proponowa&#x107; rabatu jako sta&#x142;ego cennika (bardzo cz&#x119;sto sklepy stosuj&#x105; strategi&#x119; trwaj&#x105;cych ci&#x105;gle promocji, co mo&#x17C;e wygl&#x105;da&#x107; &#x17A;le wizerunkowo i uczy&#x107; konsumenta niekorzystnych biznesowo nawyk&#xF3;w)</li><li>pozwala elastyczniej zarz&#x105;dza&#x107; mar&#x17C;&#x105;: dzi&#x119;ki temu rozwi&#x105;zaniu mo&#x17C;na personalizowa&#x107; rabaty per konkretny produkt, a nie na ca&#x142;&#x105; sekcj&#x119; i w dodatku ogranicza&#x107; jego wysoko&#x15B;&#x107; nie tylko do maksymalnego, ustalonego wymiaru, ale do jak najbardziej kosztowo efektywnego wzgl&#x119;dem po&#x17C;&#x105;danego rezultatu</li><li>czasowe okno udzielanego rabatu mo&#x17C;e zwi&#x119;ksza&#x107; prawdopodobie&#x144;stwo zrealizowania konwersji poprzez kompulsywny zakup i wykorzystanie zjawiska FoMO (ang. Fear of Missing Out)</li><li>umo&#x17C;liwia kontrolowa&#x107; maksymalne progi rabatowe, dzi&#x119;ki czemu nie narusza to w &#x17C;aden spos&#xF3;b ustalonej polityki cenowej i utrzymuje mar&#x17C;owo&#x15B;&#x107; na oczekiwanym poziomie</li><li>natywnie integruje si&#x119; z formatami reklamowymi od Google, co wp&#x142;ywa na: a) spos&#xF3;b prezentowania ceny; b) ustalanie rabat&#xF3;w na podstawie realnych cen konkurent&#xF3;w w czasie rzeczywistym; c) bardziej przejrzysty spos&#xF3;b liczenia zwrotu w reklamach; d) w za&#x142;o&#x17C;eniu: finalny wzrost konwersji</li></ul><p>Przyk&#x142;ad z dokumentacji technicznej nt. sposobu prezentacji przyk&#x142;adowego rabatu za&#x142;&#x105;czam poni&#x17C;ej:</p><figure class="kg-card kg-image-card"><img src="https://kacperduras.pl/content/images/2024/04/google-ads-product-green-discount-price-1629645854.png" class="kg-image" alt="Automatyczne rabatowanie w Google Ads" loading="lazy" width="864" height="516" srcset="https://kacperduras.pl/content/images/size/w600/2024/04/google-ads-product-green-discount-price-1629645854.png 600w, https://kacperduras.pl/content/images/2024/04/google-ads-product-green-discount-price-1629645854.png 864w" sizes="(min-width: 720px) 720px"></figure><h1 id="jakie-s%C4%85-wymagania-do-wdro%C5%BCenia-automatycznego-rabatowania-w-google-ads">Jakie s&#x105; wymagania do wdro&#x17C;enia automatycznego rabatowania w Google Ads?</h1><p>Wymagania s&#x105; nast&#x119;puj&#x105;ce:</p><ul><li>prawid&#x142;owy pomiar konwersji (z do&#x15B;wiadczenia wiem, &#x17C;e najlepiej wdro&#x17C;y&#x107; jednocze&#x15B;nie konwersje rozszerzone i <a href="https://kacperduras.pl/google-tag-manager-server-side/" rel="noreferrer">asynchroniczn&#x105; obs&#x142;ug&#x119; status&#xF3;w p&#x142;atno&#x15B;ci przez Google Tag Manager Server-Side</a>)</li><li>dodatkowe dane w feedzie produktowym dla konkretnych produkt&#xF3;w:<ul><li>parametr <a href="https://support.google.com/merchants/answer/10071801?sjid=15673321649111238159-EU&amp;ref=kacperduras.pl" rel="noreferrer">auto_pricing_min_price</a> okre&#x15B;laj&#x105;cy minimaln&#x105; cen&#x119; po jakiej produkt ma by&#x107; ofertowany</li><li>parametr <a href="https://support.google.com/merchants/answer/9017895?sjid=15673321649111238159-EU&amp;ref=kacperduras.pl" rel="noreferrer">cost_of_goods_sold</a> na temat kosztu sprzeda&#x17C;y brutto oferowanego produktu (czyli inaczej: ile nas kosztuje produkt)</li></ul></li><li>konto Google Merchant Center na poziomie przynajmniej 1000 klikni&#x119;&#x107; produkt&#xF3;w tygodnia</li><li>zaimplementowanie systemu odbioru informacji od Google bazuj&#x105;cego na tokenach JWT (ang. JSON Web Tokens) i informacjach zaszyfrowanych wraz z &#x142;adunkiem danych, a nast&#x119;pnie wdro&#x17C;enie obs&#x142;ugi systemu rabat&#xF3;w</li></ul><p>Dodatkowo bardzo wa&#x17C;n&#x105; kwesti&#x105; jest dostosowanie si&#x119; do przepis&#xF3;w prawa, w tym dyrektywy Omnibus.</p><p>Dyrektywa Omnibus ma na celu zapobieganie praktykom sztucznego podwy&#x17C;szania cen, by nast&#x119;pnie sugerowa&#x107; fa&#x142;szywe obni&#x17C;ki. Nowe regulacje zobowi&#x105;zuj&#x105; sprzedawc&#xF3;w do informowania klient&#xF3;w o najni&#x17C;szej cenie produktu lub us&#x142;ugi w ci&#x105;gu ostatnich 30 dni przed wprowadzeniem zni&#x17C;ki. Cena i informacja o obni&#x17C;ce musz&#x105; by&#x107; &#x142;atwo dost&#x119;pne, mog&#x105; zosta&#x107; umieszczone na produkcie, obok niego lub w jego pobli&#x17C;u.</p><p>Cho&#x107; sprzedawca mo&#x17C;e poda&#x107; wi&#x119;cej cen odniesienia, informacje te powinny by&#x107; jasne dla konsumenta. Na przyk&#x142;ad przyk&#x142;ad, obni&#x17C;ka mo&#x17C;e by&#x107; przedstawiona jako: Cena promocyjna: 50 z&#x142;, Najni&#x17C;sza cena z ostatnich 30 dni: 75 z&#x142; (-33%), Cena regularna: 100 z&#x142; (-50%).</p><p>Ustawa uwzgl&#x119;dnia pewne wyj&#x105;tki, nie dotycz&#x105; one <a href="http://m.in/?ref=kacperduras.pl"><u>m.in</u></a>.: produkt&#xF3;w szybko psuj&#x105;cych si&#x119;, nieog&#x142;aszanych zmian cen, og&#xF3;lnych o&#x15B;wiadcze&#x144; marketingowych, ofert dostosowanych czy program&#xF3;w lojalno&#x15B;ciowych.</p><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Istotne jest w tym, &#x17C;eby spos&#xF3;b implementacji zweryfikowa&#x107; ze stosown&#x105; kancelari&#x105; prawn&#x105;, kt&#xF3;ra ma do&#x15B;wiadczenie w przepis&#xF3;w dot. wy&#x17C;ej wspomnianej dyrektywy. Potencjalne kary (10% rocznego obrotu lub 10 mln euro) nie s&#x105; zdecydowanie warte oszcz&#x119;dno&#x15B;ci na profesjonaln&#x105; porad&#x119; prawn&#x105;.</strong></b></div></div><h1 id="wdra%C5%BCanie-automatycznego-rabatowania-w-google-ads">Wdra&#x17C;anie automatycznego rabatowania w Google Ads</h1><p>Upewnij si&#x119; na pocz&#x105;tku, &#x17C;e masz prawid&#x142;owo wdro&#x17C;one konwersje. Upewnij si&#x119;, &#x17C;e opr&#xF3;cz niezb&#x119;dnych parametr&#xF3;w <a href="https://support.google.com/google-ads/answer/9028614?sjid=15673321649111238159-EU&amp;ref=kacperduras.pl" rel="noreferrer">przesy&#x142;asz warto&#x15B;ci opcjonalne</a>, takie jak:</p><ul><li>identyfikator Google Merchant Center</li><li>poziom zni&#x17C;ki</li></ul><p>Je&#x15B;li tak, to <a href="https://support.google.com/merchants/answer/10295759?hl=en&amp;ref=kacperduras.pl#eligibility_and_requirements&amp;zippy=%2Cstep-of-opt-in-products-via-feeds%2Cstep-of-complete-url-integration%2Cstep-of-select-program-and-your-preferred-currency%2Cstep-of-set-up-conversion-reporting-with-cart-data%2Cstep-of-google-review" rel="noreferrer">wype&#x142;nij w Google Merchant Center dedykowany formularz, kt&#xF3;ry umo&#x17C;liwia Ci akces do funkcjonalno&#x15B;ci automatycznego rabatowania</a>. Dodatkowo sprawd&#x17A;, czy Tw&#xF3;j feed produktowy ma przyk&#x142;adow&#x105; struktur&#x119; jak w za&#x142;&#x105;czeniu:</p><figure class="kg-card kg-code-card"><pre><code class="language-xml">&lt;item&gt;
  &lt;g:id&gt;sku1234&lt;/g:id&gt;
  &lt;g:title&gt;Koszula m&#x119;ska&lt;/g:title&gt;
  &lt;g:description&gt;Stylowa koszula m&#x119;ska w kolorze niebieskim&lt;/g:description&gt;
  &lt;g:link&gt;http://www.przykladowysklep.com/item1.html&lt;/g:link&gt;
  &lt;g:image_link&gt;http://www.przykladowysklep.com/img/item1.jpg&lt;/g:image_link&gt;
  &lt;g:brand&gt;MarkaX&lt;/g:brand&gt;
  &lt;g:google_product_category&gt;Odzie&#x17C; &amp;amp; Obuwie &gt; Odzie&#x17C; m&#x119;ska&lt;/g:google_product_category&gt;
  &lt;g:product_type&gt;Koszule m&#x119;skie&lt;/g:product_type&gt;
  &lt;g:condition&gt;nowy&lt;/g:condition&gt;
  &lt;g:availability&gt;in stock&lt;/g:availability&gt;
  &lt;g:price&gt;150 PLN&lt;/g:price&gt;
  &lt;g:auto_pricing_min_price&gt;90 PLN&lt;/g:minimum_price&gt;
  &lt;g:cost_of_goods_sold&gt;50 PLN&lt;/g:cost_of_goods&gt;
  &lt;g:gtin&gt;00012345678903&lt;/g:gtin&gt;
  &lt;g:mpn&gt;123456789&lt;/g:mpn&gt;
&lt;/item&gt;</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy produkt we formacie XML</span></p></figcaption></figure><p>Je&#x15B;li wszystko zgadza si&#x119;, mo&#x17C;na przej&#x15B;&#x107; do nast&#x119;pnego kroku - przetwarzania danych o rabacie promowanych przez Google.</p><p>Google na potrzeby tego rozwi&#x105;zania przesy&#x142;a dane poprzez dedykowany parametr linku URL we formacie Json Web Tokens (JWT). Przyk&#x142;adowy &#x142;adunek danych (payload) wygl&#x105;da wed&#x142;ug dokumentacji nast&#x119;puj&#x105;co:</p><figure class="kg-card kg-code-card"><pre><code>http://my.site.com/blacktee?pv2=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoiVVNEIiwiZXhwIjoxNTcxNjczNjAwLCJtIjoiMTQwMzAxNjQ2IiwibyI6InRkZHkxMjN1ayIsInAiOjIxLjk5fQ.Qlyr1dQ0vLUJx-iQKwkYE2uLHfYCLVEVGZkAq4fwGTSpMDQCbtzDJr5uGHG8dNKaKV5OlYDxLpW40tQVVe2gkQ</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy link z &#x142;adunkiem danych</span></p></figcaption></figure><p>Taki payload jest zakodowany we formacie <a href="https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm?ref=kacperduras.pl" rel="noreferrer">ES256</a>, kt&#xF3;ry mo&#x17C;na odkodowa&#x107; dzi&#x119;ki <a href="https://support.google.com/merchants/answer/10295759?hl=en&amp;ref=kacperduras.pl#zippy=" rel="noreferrer">kluczowi publicznemu od Google</a>. Tre&#x15B;&#x107; po odkodowaniu wygl&#x105;da nast&#x119;puj&#x105;co:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  &quot;exp&quot;: 1571673600,
  &quot;o&quot;: &quot;tddy123uk&quot;,
  &quot;m&quot;: &quot;140301646&quot;,
  &quot;p&quot;: 21.99,
  &quot;c&quot;: &quot;USD&quot;
}</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy obiekt z &#x142;adunkiem danych</span></p></figcaption></figure><p>Payload zawiera nast&#x119;puj&#x105;ce pola:</p><ul><li>exp - czas wyga&#x15B;ni&#x119;cia jako czas Unix. Je&#x17C;eli token wygas&#x142;, musi zosta&#x107; odrzucony</li><li>o - ID oferty, kt&#xF3;re mo&#x17C;e by&#x107; u&#x17C;yte do sprawdzenia, czy strona docelowa (landing page) pasuje do produktu. Je&#x17C;eli wyst&#x105;pi niezgodno&#x15B;&#x107;, token musi zosta&#x107; odrzucony</li><li>m - ID sprzedawcy (merchant ID). Je&#x17C;eli ID sprzedawcy nie pasuje, token musi zosta&#x107; odrzucony</li><li>p - cena po obni&#x17C;ce</li><li>c - waluta, zapisana du&#x17C;ymi literami</li></ul><p>Opr&#xF3;cz tego s&#x105; za&#x142;&#x105;czane informacje o samym sposobie szyfrowania:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  &quot;alg&quot;: &quot;ES256&quot;,
  &quot;typ&quot;: &quot;JWT&quot;
}</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy obiekt z &#x142;adunkiem danych</span></p></figcaption></figure><p>Je&#x15B;li wszystko zgadza si&#x119;, to istotne jest by po stronie sklepu zaimplementowa&#x107; mechanizm obs&#x142;uguj&#x105;cy dane od Google i nak&#x142;adaj&#x105;cy stosowny rabat. Na koniec pozostaje proces akceptacji sklepu i testy mechanizmu.</p><p>Automatyczne rabaty Google Ads oferuj&#x105; unikaln&#x105; i osobist&#x105; strategi&#x119; cenow&#x105; dla reklam internetowych e-commerce. Ale jak ka&#x17C;da innowacyjna funkcjonalno&#x15B;&#x107;, wymaga zar&#xF3;wno technicznego przygotowania, jak i zrozumienia zasad jej dzia&#x142;ania. Kluczowe etapy obejmuj&#x105; prawid&#x142;owe wdro&#x17C;enie konwersji, posiadanie odpowiednio skonfigurowanego konta Google Merchant Center, dodanie specyficznych parametr&#xF3;w produktowych do feedu oraz wdor&#x17C;enie systemu odbioru informacji od Google na bazie token&#xF3;w JWT.</p><p>Co wi&#x119;cej, we wszystkich tych procesach niezwykle wa&#x17C;ne jest przestrzeganie dyrektywy Omnibus, kt&#xF3;ra ma na celu unikni&#x119;cie fa&#x142;szywych obni&#x17C;ek i zagwarantowanie przejrzysto&#x15B;ci dla konsument&#xF3;w. W wyniku tych dzia&#x142;a&#x144;, dzi&#x119;ki technologii Google Ads, sklepy internetowe mog&#x105; oferowa&#x107; automatyczne, dynamiczne rabaty, kt&#xF3;re przyci&#x105;gaj&#x105; klient&#xF3;w i osi&#x105;gaj&#x105; lepsze rezultaty w sprzeda&#x17C;y.</p>]]></content:encoded></item><item><title><![CDATA[Integracja narzędzi analitycznych przy pomocy Cloudflare Zaraz]]></title><description><![CDATA[Z postępującym rozwojem technologicznym w sektorze reklamy pojawiają się innowacyjne metody umożliwiające efektywniejsze ocenianie wyników działań marketingowych, jednocześnie respektujące wymagane przepisy. Podobną funkcję pełni Cloudflare Zaraz.]]></description><link>https://kacperduras.pl/integracja-narzedzi-analitycznych-przy-pomocy-cloudflare-zaraz/</link><guid isPermaLink="false">65580db15236f2ee66d06106</guid><category><![CDATA[Cloudflare]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Fri, 17 Nov 2023 23:00:00 GMT</pubDate><media:content url="https://kacperduras.pl/content/images/2023/11/code-block----0ACloudflare-Image-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://kacperduras.pl/content/images/2023/11/code-block----0ACloudflare-Image-1.png" alt="Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz"><p>Z post&#x119;puj&#x105;cym rozwojem technologicznym w sektorze reklamy pojawiaj&#x105; si&#x119; innowacyjne metody umo&#x17C;liwiaj&#x105;ce efektywniejsze ocenianie wynik&#xF3;w dzia&#x142;a&#x144; marketingowych, jednocze&#x15B;nie respektuj&#x105;ce wymagane przepisy. Podobn&#x105; funkcj&#x119; pe&#x142;ni Cloudflare Zaraz, b&#x119;d&#x105;cy odpowiednikiem popularnego Google Tag Manager Server-Side, oferuj&#x105;cym zaawansowane mo&#x17C;liwo&#x15B;ci w zakresie zarz&#x105;dzania i optymalizacji tag&#xF3;w reklamowych.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z tego artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Czym jest Cloudflare Zaraz</span></li><li value="2"><span style="white-space: pre-wrap;">Dlaczego wdro&#x17C;enie narz&#x119;dzia jest szybkie i tanie</span></li><li value="3"><span style="white-space: pre-wrap;">W jaki spos&#xF3;b bez posiadania szczeg&#xF3;lnej wiedzy technicznej zrealizowa&#x107; implementacj&#x119;</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#co-to-jest-cloudflare-zaraz-i-ile-kosztuje" rel="noreferrer"><span style="white-space: pre-wrap;">Co to jest Cloudflare Zaraz i ile kosztuje?</span></a></li><li value="2"><a href="#jak-dzia%C5%82a-cloudflare-zaraz" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a Cloudflare Zaraz?</span></a></li><li value="3"><a href="#w-jaki-spos%C3%B3b-integrowa%C4%87-us%C5%82ugi-z-cloudflare-zaraz" rel="noreferrer"><span style="white-space: pre-wrap;">Ile kosztuje wdro&#x17C;enie Google Tag Manager Server-Side?</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Artyku&#x142; obja&#x15B;nia w jaki spos&#xF3;b zintegrowa&#x107; zewn&#x119;trzne narz&#x119;dzia analityczne z aplikacj&#x105; Cloudflare Zaraz.</div></div><h2 id="co-to-jest-cloudflare-zaraz-i-ile-kosztuje">Co to jest Cloudflare Zaraz i ile kosztuje?</h2><p>Cloudflare Zaraz to narz&#x119;dzie od firmy Cloudflare (kupione przez nich w 2021 roku) stworzone do optymalizacji wydajno&#x15B;ci, bezpiecze&#x144;stwa i prywatno&#x15B;ci stron internetowych poprzez zarz&#x105;dzanie narz&#x119;dziami zewn&#x119;trznych integrator&#xF3;w. <br>Oto skr&#xF3;towy opis jego kluczowych funkcji i zastosowa&#x144;:</p><ol><li><strong>Zarz&#x105;dzanie narz&#x119;dziami firm trzecich</strong>: Zaraz s&#x142;u&#x17C;y jako platforma do zarz&#x105;dzania r&#xF3;&#x17C;nymi narz&#x119;dziami zewn&#x119;trznymi na stronie internetowej, takimi jak narz&#x119;dzia analityczne, piksele reklamowe, chatboty i narz&#x119;dzia automatyzacji marketingu. Na przyk&#x142;ad, w przypadku narz&#x119;dzi analitycznych, takich jak Google Analytics, Zaraz umo&#x17C;liwia ich &#x142;adowanie w chmurze, co mo&#x17C;e pom&#xF3;c w zmniejszeniu obci&#x105;&#x17C;enia przegl&#x105;darki u&#x17C;ytkownika i przyspieszy&#x107; dzia&#x142;anie strony.</li><li><strong>Optymalizacja szybko&#x15B;ci, prywatno&#x15B;ci i bezpiecze&#x144;stwa</strong>: Zaraz jest zaprojektowany z my&#x15B;l&#x105; o minimalizowaniu wp&#x142;ywu narz&#x119;dzi zewn&#x119;trznych na wydajno&#x15B;&#x107; strony. &#x141;aduj&#x105;c narz&#x119;dzia w chmurze, redukuje to obci&#x105;&#x17C;enie przegl&#x105;darki u&#x17C;ytkownika, co mo&#x17C;e przyczyni&#x107; si&#x119; do szybszej pracy strony.</li><li><strong>Zarz&#x105;dzanie tagami</strong>: Narz&#x119;dzie pozwala na zarz&#x105;dzanie tagami strony internetowej, co obejmuje sekwencjonowanie, monitorowanie i grupowanie tag&#xF3;w. Dla przyk&#x142;adu, sklep internetowy mo&#x17C;e u&#x17C;ywa&#x107; Zaraz do zarz&#x105;dzania tagami &#x15B;ledz&#x105;cymi konwersje, co pomaga w efektywniejszym &#x15B;ledzeniu dzia&#x142;a&#x144; marketingowych i optymalizacji reklam. Dodatkowo wspiera zarz&#x105;dzanie zgodami na uruchomienie konkretnych tag&#xF3;w i przechowuje dane zgodnie z wymogami GDPR.</li><li><strong>Scentralizowany pulpit nawigacyjny</strong>: Zaraz oferuje jedno miejsce do zarz&#x105;dzania wszystkimi narz&#x119;dziami stron trzecich. Ta centralizacja mo&#x17C;e u&#x142;atwi&#x107; monitorowanie i kontrolowanie wsp&#xF3;&#x142;pracy mi&#x119;dzy narz&#x119;dziami oraz ich wp&#x142;ywu na wydajno&#x15B;&#x107; strony.</li></ol><p><a href="https://www.cloudflare.com/application-services/products/zaraz/?ref=kacperduras.pl" rel="noreferrer">Ogromnym plusem tego narz&#x119;dzia jest wzgl&#x119;dnie niska cena: do 100 000 zapyta&#x144; na stronie internetowej miesi&#x119;cznie Cloudflare Zaraz jest za darmo. Nast&#x119;pny pakiet zaczyna si&#x119; od 5 USD netto miesi&#x119;cznie za 200 000 zapyta&#x144;, gdzie ka&#x17C;de kolejne 1000 zapyta&#x144; kosztuje 0,50 USD netto. </a></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.cloudflare.com/content/images/2023/07/image-4.png" class="kg-image" alt="Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz" loading="lazy"><figcaption><span style="white-space: pre-wrap;">&#x179;r&#xF3;d&#x142;o: </span><a href="https://blog.cloudflare.com/cloudflare-zaraz-steps-up-general-availability-and-new-pricing/?ref=kacperduras.pl"><span style="white-space: pre-wrap;">https://blog.cloudflare.com/cloudflare-zaraz-steps-up-general-availability-and-new-pricing/</span></a></figcaption></figure><p></p><p><a href="https://www.cloudflare.com/application-services/products/zaraz/?ref=kacperduras.pl" rel="noreferrer">Warto r&#xF3;wnie&#x17C; zaznaczy&#x107;, &#x17C;e funkcjonalno&#x15B;&#x107; przeznaczona do odczytywania danych ze struktur danych za&#x142;&#x105;czonych na stronie internetowej wymaga p&#x142;atnego pakietu. Zestawiaj&#x105;c to jednak z innymi kosztami wdro&#x17C;e&#x144; rozwi&#x105;za&#x144; typu server-side, prezentuje to si&#x119; bardzo korzystnie:</a></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/google-tag-manager-server-side/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?</div><div class="kg-bookmark-description">Zmiany technologiczne na rynku reklamowym i id&#x105;cy za tym post&#x119;p dostarcza nowe rozwi&#x105;zania s&#x142;u&#x17C;&#x105;ce lepszemu pomiarowi skuteczno&#x15B;ci kampanii reklamowych. Jednym z tych rozwi&#x105;za&#x144; jest rozszerzenie znanego powszechnie narz&#x119;dzia Google Tag Manager &#x2014; Google Tag Manager Server-Side.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1529612700005-e35377bf1415?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE0fHxnb29nbGUlMjB0YWclMjBtYW5hZ2VyfGVufDB8fHx8MTY5OTEyMjU3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz"></div></a></figure><h2 id="jak-dzia%C5%82a-cloudflare-zaraz">Jak dzia&#x142;a Cloudflare Zaraz?</h2><p>Cloudflare Zaraz dzia&#x142;a w ramach infrastruktury firmy Cloudflare - jednego z najwi&#x119;kszych dostawc&#xF3;w us&#x142;ug chmurowych na &#x15B;wiecie. Jej kluczowe us&#x142;ugi obejmuj&#x105;:</p><ol><li><strong>CDN (Content Delivery Network)</strong>: Cloudflare posiada globaln&#x105; sie&#x107; serwer&#xF3;w, kt&#xF3;re pomagaj&#x105; przyspieszy&#x107; &#x142;adowanie stron internetowych poprzez przechowywanie kopii tre&#x15B;ci stron w lokalizacjach bli&#x17C;szych u&#x17C;ytkownikom.</li><li><strong>Ochrona DDoS</strong>: Oferuje zaawansowan&#x105; ochron&#x119; przed atakami typu Distributed Denial of Service (DDoS), chroni&#x105;c strony internetowe przed nadmiernym ruchem, kt&#xF3;ry mo&#x17C;e je unieruchomi&#x107;.</li><li><strong>Ochrona przed botami i bezpiecze&#x144;stwo aplikacji internetowych</strong>: Zapewnia narz&#x119;dzia do blokowania szkodliwych bot&#xF3;w i automatycznych atak&#xF3;w, a tak&#x17C;e zabezpiecza aplikacje internetowe przed r&#xF3;&#x17C;nymi zagro&#x17C;eniami.</li><li><strong>Firewall aplikacji internetowej (WAF)</strong>: Cloudflare oferuje WAF, kt&#xF3;ry pomaga filtrowa&#x107;, monitorowa&#x107; i blokowa&#x107; szkodliwy ruch do aplikacji internetowych.</li><li><strong>SSL/TLS</strong>: Us&#x142;ugi Cloudflare obejmuj&#x105; szyfrowanie SSL/TLS, co zwi&#x119;ksza bezpiecze&#x144;stwo danych przesy&#x142;anych mi&#x119;dzy serwerami a klientami.</li><li><strong>DNS (Domain Name System)</strong>: Oferuje szybkie i bezpieczne us&#x142;ugi DNS, kt&#xF3;re pomagaj&#x105; w przekszta&#x142;caniu nazw domen na adresy IP.</li><li><strong>Optymalizacja wydajno&#x15B;ci</strong>: Cloudflare oferuje r&#xF3;&#x17C;ne narz&#x119;dzia do optymalizacji wydajno&#x15B;ci stron internetowych, w tym kompresj&#x119;, minifikacj&#x119; i inne.</li><li><strong>Obs&#x142;uga protoko&#x142;u HTTP/3</strong>: Cloudflare wspiera najnowsze wersje protoko&#x142;&#xF3;w internetowych, w tym HTTP/3, co przyczynia si&#x119; do szybszego &#x142;adowania stron.</li></ol><p>Te us&#x142;ugi s&#x105; szczeg&#xF3;lnie wa&#x17C;ne dla firm i organizacji, kt&#xF3;re chc&#x105; zabezpieczy&#x107; swoj&#x105; obecno&#x15B;&#x107; online oraz poprawi&#x107; wydajno&#x15B;&#x107; i dost&#x119;pno&#x15B;&#x107; swoich stron internetowych. Cloudflare jest znane z &#x142;atwo&#x15B;ci wdro&#x17C;enia i szerokiego zakresu us&#x142;ug, co czyni je popularnym wyborem w&#x15B;r&#xF3;d wielu firm na ca&#x142;ym &#x15B;wiecie. </p><p>Dzi&#x119;ki efektowi synergii us&#x142;ug, korzystanie ze Zaraz wi&#x105;&#x17C;e si&#x119; g&#x142;&#xF3;wnie ze standardowym procesem instalacji produktu firmy Cloudflare. Nast&#x119;pnie, kody &#x15B;ledz&#x105;ce Cloudflare Zaraz za&#x142;&#x105;czaj&#x105; si&#x119; w ramach chronionej strony internetowej i s&#x105; gotowe do dzia&#x142;ania, oczywi&#x15B;cie uprzednio wybieraj&#x105;c plan us&#x142;ugi Zaraz.</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Interesuj&#x105; Ci&#x119; tego typu tre&#x15B;ci?</span></h2>
                    <p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">Zapisz si&#x119; do mojego newslettera i b&#x105;d&#x17A; na bie&#x17C;&#x105;co.</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">Bez spamu, zawsze konkretnie i na temat. </span><br><span style="white-space: pre-wrap;">Mo&#x17C;esz wypisa&#x107; si&#x119; w ka&#x17C;dym momencie.</span></p>
                </div>
            </div>
        </div><p></p><h2 id="w-jaki-spos%C3%B3b-integrowa%C4%87-us%C5%82ugi-z-cloudflare-zaraz">W jaki spos&#xF3;b integrowa&#x107; us&#x142;ugi z Cloudflare Zaraz?</h2><p>Na samym starcie Cloudflare proponuj&#x119; kilkana&#x15B;cie gotowych ju&#x17C; konfiguracji, dzi&#x119;ki kt&#xF3;rym mo&#x17C;esz zintegrowa&#x107; si&#x119; od r&#x119;ki z wi&#x119;kszo&#x15B;ci&#x105; komercyjnych narz&#x119;dzi na rynku:</p><figure class="kg-card kg-image-card"><img src="https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-18-at-20.32.06.png" class="kg-image" alt="Integracja narz&#x119;dzi analitycznych przy pomocy Cloudflare Zaraz" loading="lazy" width="2000" height="1768" srcset="https://kacperduras.pl/content/images/size/w600/2023/11/Screenshot-2023-11-18-at-20.32.06.png 600w, https://kacperduras.pl/content/images/size/w1000/2023/11/Screenshot-2023-11-18-at-20.32.06.png 1000w, https://kacperduras.pl/content/images/size/w1600/2023/11/Screenshot-2023-11-18-at-20.32.06.png 1600w, https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-18-at-20.32.06.png 2050w" sizes="(min-width: 720px) 720px"></figure><p>Opr&#xF3;cz tego istnieje mo&#x17C;liwo&#x15B;&#x107; wpi&#x119;cia w&#x142;asnych kod&#xF3;w, zapyta&#x144; HTTP, <a href="https://github.com/managed-components/create-managed-component?ref=kacperduras.pl" rel="noreferrer">a ponadto producent umo&#x17C;liwia r&#xF3;wnie&#x17C; stworzenie w&#x142;asnej integracji, tj. komponentu</a> w j&#x119;zyku TypeScript, dzi&#x119;ki czemu integracja z narz&#x119;dziem trzecim mo&#x17C;e by&#x107; znacznie prostsza.</p><p>Nast&#x119;pnie, nale&#x17C;y pod&#x105;&#x17C;a&#x107; za instrukcj&#x105; konkretnego rozwi&#x105;zania, a nast&#x119;pnie wdro&#x17C;y&#x107; kody &#x15B;ledz&#x105;ce. Istotn&#x105; spraw&#x105; jest to, &#x17C;e strona na kt&#xF3;rej funkcjonuje Zaraz <strong>musi</strong> dzia&#x142;a&#x107; za proxy Cloudflare, czyli bazow&#x105; us&#x142;ug&#x105; firmy. <a href="https://developers.cloudflare.com/zaraz/advanced/domains-not-proxied/?ref=kacperduras.pl" rel="noreferrer">Inaczej trzeba zrealizowa&#x107; dodatkowy krok, polegaj&#x105;cy na dodaniu subdomeny i odwo&#x142;ania do pliku JavaScript, kt&#xF3;ry odpowiada za &#x142;adowanie skrypt&#xF3;w</a>.</p><p><a href="https://developers.cloudflare.com/zaraz/web-api/track/?ref=kacperduras.pl" rel="noreferrer">Dalej, trzeba wdro&#x17C;y&#x107; struktur&#x119; danych podobn&#x105; jak w Google Tag Manager</a> oraz <a href="https://developers.cloudflare.com/zaraz/consent-management/?ref=kacperduras.pl" rel="noreferrer">zaimplementowa&#x107; system zarz&#x105;dzania zgodami plik&#xF3;w cookies</a>. Po tym kroku mo&#x17C;na zaobserwowa&#x107;, jak narz&#x119;dzia analityczne zbieraj&#x105; dane zgodnie ze wszystkimi zasadami i specyfikacjami technicznymi.</p>]]></content:encoded></item><item><title><![CDATA[Wdrożenie Google Tag Manager Server-Side za pomocą Dockera]]></title><description><![CDATA[Google Tag Manager jest istotnym, a czasem wręcz jednym z niezbędnych narzędzi do implementacji właściwego pomiaru zachowań użytkowników podczas uruchamiania i zarządzania kampaniami reklamowymi. ]]></description><link>https://kacperduras.pl/wdrozenie-google-tag-manager-server-side-za-pomoca-dockera/</link><guid isPermaLink="false">6549530d69e4b3e975137ecb</guid><category><![CDATA[Google]]></category><category><![CDATA[Google Tag Manager]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sun, 05 Nov 2023 23:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1577071835592-d5d55ffef660?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDl8fGdvb2dsZXxlbnwwfHx8fDE2OTkzMDcyMzN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1577071835592-d5d55ffef660?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDl8fGdvb2dsZXxlbnwwfHx8fDE2OTkzMDcyMzN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera"><p>Google Tag Manager jest istotnym, a czasem wr&#x119;cz jednym z niezb&#x119;dnych narz&#x119;dzi do implementacji w&#x142;a&#x15B;ciwego pomiaru zachowa&#x144; u&#x17C;ytkownik&#xF3;w podczas uruchamiania i zarz&#x105;dzania kampaniami reklamowymi. Wersja rozwi&#x105;zania typu server-side zapewnia dodatkowe mo&#x17C;liwo&#x15B;ci w zakresie wdro&#x17C;e&#x144; integracji, ale nie jest wolna od problem&#xF3;w &#x2014; jednym z kluczowych zagadnie&#x144; jest to, ile aplikacja kosztuje i w jaki spos&#xF3;b mo&#x17C;na ograniczy&#x107; koszty.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Jakie s&#x105; mo&#x17C;liwo&#x15B;ci instalacji Google Tag Manager Server-Side w us&#x142;udze Google Cloud Platform</span></li><li value="2"><span style="white-space: pre-wrap;">Czym jest Docker oraz jego charakterystyka</span></li><li value="3"><span style="white-space: pre-wrap;">Jak przeprowadzi&#x107; prawid&#x142;ow&#x105; instalacj&#x119; &#x2014; od instalacji podstawowych pakiet&#xF3;w, po wydajn&#x105; konfiguracj&#x119; serwera HTTP</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="jak-mo%C5%BCna-zainstalowa%C4%87-google-tag-manager-server-side" rel="noreferrer"><span style="white-space: pre-wrap;">Jak mo&#x17C;na zainstalowa&#x107; Google Tag Manager Server-Side?</span></a></li><li value="2"><a href="#czym-jest-docker" rel="noreferrer"><span style="white-space: pre-wrap;">Czym jest Docker?</span></a></li><li value="3"><a href="#proces-instalacji" rel="noreferrer"><span style="white-space: pre-wrap;">Proces instalacji</span></a></li><li value="4"><a href="#najpopularniejsze-problemy-i-rozwi%C4%85zania" rel="noreferrer"><span style="white-space: pre-wrap;">Najpopularniejsze problemy i rozwi&#x105;zania</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Artyku&#x142; szczeg&#xF3;&#x142;owo opisuje spos&#xF3;b instalacji Dockera, serwera HTTP, uruchomienia w&#x142;a&#x15B;ciwej aplikacji oraz instalacji certyfikatu SSL. To wszystko integruje si&#x119; z konfiguracj&#x105; Google Tag Manager i uruchamia na &#x15B;rodowisku produkcyjnym.</div></div><h2 id="jak-mo%C5%BCna-zainstalowa%C4%87-google-tag-manager-server-side">Jak mo&#x17C;na zainstalowa&#x107; Google Tag Manager Server-Side?</h2><p>Wi&#x119;cej o zagadnieniu Google Tag Manager Server-Side napisa&#x142;em w niniejszym wpisie:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/google-tag-manager-server-side/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?</div><div class="kg-bookmark-description">Zmiany technologiczne na rynku reklamowym i id&#x105;cy za tym post&#x119;p dostarcza nowe rozwi&#x105;zania s&#x142;u&#x17C;&#x105;ce lepszemu pomiarowi skuteczno&#x15B;ci kampanii reklamowych. Jednym z tych rozwi&#x105;za&#x144; jest rozszerzenie znanego powszechnie narz&#x119;dzia Google Tag Manager &#x2014; Google Tag Manager Server-Side.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1529612700005-e35377bf1415?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE0fHxnb29nbGUlMjB0YWclMjBtYW5hZ2VyfGVufDB8fHx8MTY5OTEyMjU3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera"></div></a></figure><p>W bardzo du&#x17C;ym, acz szczeg&#xF3;&#x142;owym, skr&#xF3;cie:</p><ul><li>Google Tag Manager Server-Side jest zaprzeczeniem dotychczasowego, spopularyzowanego podej&#x15B;cia Google do p&#x142;atno&#x15B;ci za ich us&#x142;ugi - o ile dotychczasowy model bazowa&#x142; na u&#x17C;ywaniu danych na potrzeby ekosystemu reklamowego tej&#x17C;e firmy, tak utrzymanie instancji Google Tag Managera Server-Side wymaga stosownych zasob&#xF3;w serwerowych</li><li>domy&#x15B;lnie Google proponuje skorzystanie z Google Cloud Platform i ich instancji Cloud Run lub App Engine. Dost&#x119;pne s&#x105; w bezp&#x142;atnym wariancie pod wymogiem przestrzegania bardzo szczeg&#xF3;&#x142;owych limit&#xF3;w. Jednocze&#x15B;nie, Google w dokumentacji technicznej proponuje przyk&#x142;adow&#x105;, minimaln&#x105; konfiguracj&#x119; ich rozwi&#x105;zania, co ma kosztowa&#x107; ~90 USD netto miesi&#x119;cznie. Ta&#x144;sze rozwi&#x105;zanie App Engine jest dost&#x119;pne, acz preferowane jest korzystanie z dro&#x17C;szego Cloud Run</li><li>nale&#x17C;y pami&#x119;ta&#x107;, i&#x17C; w ramach Google Cloud Platform mo&#x17C;na dokupi&#x107; us&#x142;ugi dodatkowe, kt&#xF3;re nie s&#x105; obj&#x119;te powy&#x17C;sz&#x105; estymacj&#x105; (np. autoskalowanie zasob&#xF3;w) &#x2014; s&#x105; dodatkowo p&#x142;atne, gdzie co prawda trudno przy pod&#x105;&#x17C;aniu za instrukcj&#x105; krok po kroku pope&#x142;ni&#x107; b&#x142;&#x105;d (i np. pomin&#x105;&#x107; notyfikacj&#x119; o przekroczeniu odpowiedniego progu finansowego), ale przy pr&#xF3;bie wyj&#x15B;cia poza standardowy schemat, mo&#x17C;e by&#x107; to bolesny finansowo b&#x142;&#x105;d</li></ul><p>Istnieje r&#xF3;wnie&#x17C; trzeci spos&#xF3;b &#x2014; samodzielna instalacja na w&#x142;asnym serwerze. Ka&#x17C;dy spos&#xF3;b opisano w dokumentacji technicznej Google, lecz w mojej opinii przyk&#x142;ad z implementacj&#x105; na w&#x142;asnej infrastrukturze za pomoc&#x105; Dockera wykonano lakonicznie, st&#x105;d skupi&#x119; si&#x119; na nim w tym wpisie.</p><p><em>Jednocze&#x15B;nie niezmiennie zalecam u&#x17C;ywanie Google Cloud Platform dla firm, kt&#xF3;re nie posiadaj&#x105; w swoich szeregach ludzi, kt&#xF3;rzy potrafi&#x105; zarz&#x105;dza&#x107; samodzielnie serwerami VPS lub dedykowanymi. Google Cloud Platform co prawda jest dla osoby nietechnicznej skomplikowane, jednak znacznie mniej ni&#x17C; samodzielna instalacja. Istotne jest realne rozpoznanie potrzeb, zaproponowanie rozwi&#x105;zania i wdro&#x17C;enie &#x2014; pami&#x119;taj, &#x17C;e ryzykujesz niedost&#x119;pno&#x15B;ci&#x105; us&#x142;ugi, a co za tym idziesz, mo&#x17C;esz straci&#x107; pieni&#x105;dze.</em></p><h2 id="czym-jest-docker">Czym jest Docker?</h2><p>Docker to otwarte oprogramowanie umo&#x17C;liwiaj&#x105;ce automatyzacj&#x119; wdra&#x17C;ania, skalowania i zarz&#x105;dzania aplikacjami w kontenerach. Kontenery dockerowe s&#x105; lekkie i przeno&#x15B;ne, umo&#x17C;liwiaj&#x105;ce paczkowanie aplikacji wraz z wszystkimi ich zale&#x17C;no&#x15B;ciami do standardowego formatu, kt&#xF3;ry mo&#x17C;e by&#x107; uruchomiony zar&#xF3;wno na lokalnym komputerze, jak i na zdalnych serwerach. Docker pozwala na oszcz&#x119;dno&#x15B;&#x107; zasob&#xF3;w, poniewa&#x17C; r&#xF3;&#x17C;ne kontenery na tym samym systemie hosta wsp&#xF3;&#x142;dziel&#x105; j&#x105;dro systemu operacyjnego i u&#x17C;ywaj&#x105; program&#xF3;w ju&#x17C; zainstalowanych na systemie hosta.<br><br>Architektura Docker sk&#x142;ada si&#x119; z Docker Engine, ekosytemu aplikacji i narz&#x119;dzi oraz obraz&#xF3;w, kontener&#xF3;w i plik&#xF3;w Dockerfile. Docker Engine to serwer, kt&#xF3;ry jest odpowiedzialny za tworzenie i zarz&#x105;dzanie kontenerami. Dockerfile to skrypt w j&#x119;zyku Docker zawieraj&#x105;cy instrukcje, kt&#xF3;re pozwalaj&#x105; Docker Engine na budowanie obraz&#xF3;w kontener&#xF3;w. Obrazy Docker to statyczne instantki plik&#xF3;w, a kontenery Docker to te obrazy uruchomione w runtime.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-06-at-22.52.50.png" class="kg-image" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera" loading="lazy" width="2000" height="836" srcset="https://kacperduras.pl/content/images/size/w600/2023/11/Screenshot-2023-11-06-at-22.52.50.png 600w, https://kacperduras.pl/content/images/size/w1000/2023/11/Screenshot-2023-11-06-at-22.52.50.png 1000w, https://kacperduras.pl/content/images/size/w1600/2023/11/Screenshot-2023-11-06-at-22.52.50.png 1600w, https://kacperduras.pl/content/images/size/w2400/2023/11/Screenshot-2023-11-06-at-22.52.50.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Por&#xF3;wnanie Docker vs wirtualne maszyny. &#x179;r&#xF3;d&#x142;o: </span><a href="https://www.docker.com/resources/what-container/?ref=kacperduras.pl"><span style="white-space: pre-wrap;">https://www.docker.com/resources/what-container/</span></a></figcaption></figure><p>Korzystanie z Dockera znacznie upraszcza procesy zwi&#x105;zane z rozwojem oprogramowania. Dzi&#x119;ki umiej&#x119;tno&#x15B;ci tworzenia izolowanych &#x15B;rodowisk dla aplikacji, Docker eliminuje problem pt. <em>u mnie dzia&#x142;a.</em> To oznacza, &#x17C;e je&#x17C;eli aplikacja dzia&#x142;a w kontenerze na jednym komputerze, powinna bez problemu dzia&#x142;a&#x107; na ka&#x17C;dym innym komputerze, na kt&#xF3;rym jest uruchomiony Docker.<br><br>Docker ma wiele zalet w por&#xF3;wnaniu do tradycyjnych maszyn wirtualnych (VM). Typowo, VM obs&#x142;ugiwaliby ca&#x142;e systemy operacyjne, kt&#xF3;re generowa&#x142;yby du&#x17C;e obci&#x105;&#x17C;enia dla zasob&#xF3;w sprz&#x119;towych. Kontenery Docker na razie dziel&#x105; j&#x105;dro systemu operacyjnego hosta i uruchamiaj&#x105; tylko procesy potrzebne do obs&#x142;u&#x17C;enia konkretnej aplikacji, co zasadniczo zmniejsza u&#x17C;ycie zasob&#xF3;w.<br><br>Wreszcie, Docker sta&#x142; si&#x119; standardem w konteneryzacji i jest nieod&#x142;&#x105;cznym elementem zarz&#x105;dzania architektur&#x105; serwerow&#x105;. Docker integruje si&#x119; z wieloma narz&#x119;dziami do automatyzacji CI/CD (ang. <em>continuous integration/continuous development</em>), takimi jak Jenkins, GitLab i wiele innych. Jego rosn&#x105;ca popularno&#x15B;&#x107; i akceptacja wynika z mo&#x17C;liwo&#x15B;ci usprawnienia proces&#xF3;w wytwarzania oprogramowania, poprawy bezpiecze&#x144;stwa i u&#x142;atwienia wdro&#x17C;e&#x144;. Bez wzgl&#x119;du na to, czy jest to ma&#x142;y projekt start-upu, czy du&#x17C;a korporacja, Docker pomaga organizacjom szybciej dostarcza&#x107; oprogramowanie bez kompromis&#xF3;w co do jako&#x15B;ci.</p><h2 id="proces-instalacji">Proces instalacji</h2><p>Na pocz&#x105;tku musisz wyposa&#x17C;y&#x107; si&#x119; w serwer wirtualny. Blog kt&#xF3;ry czytasz jest utrzymywany na <a href="https://cyberfolks.pl/serwery-vps/?ref=kacperduras.pl" rel="noreferrer">serwerach firmy cyberFolks</a> &#x2014; korzystam z ich us&#x142;ug ze wzgl&#x119;du na sensown&#x105; jako&#x15B;&#x107; i bardzo dobre wsparcie. <a href="https://cyberfolks.pl/serwery-vps/?ref=kacperduras.pl" rel="noreferrer">Zdecydowanie na potrzeby samego Google Tag Managera wystarczy pakiet vps_UP!</a> (w mojej opinii do wi&#x119;kszo&#x15B;ci stron jak np. ten blog, czy mniejsze sklepy internetowe, jest to wystarczaj&#x105;ca pojemno&#x15B;&#x107; do instalacji aplikacji i cena ~50 PLN netto vs 90 USD netto prezentuje si&#x119; znacznie korzystniej). Dla przyk&#x142;adu przeprowadz&#x119; proces na obrazie serwera <a href="https://releases.ubuntu.com/jammy/?ref=kacperduras.pl" rel="noreferrer">Ubuntu 22.04.03 LTS (Jammy Selfish)</a>.</p><p>Wyznacz mysubdomen&#x119;, kt&#xF3;ra b&#x119;dzie odnosi&#x142;a si&#x119; do Google Tag Manager Server-Side. Pod&#x142;&#x105;czmy pod ni&#x105; rekord A, kt&#xF3;ry b&#x119;dzie wskazywa&#x142; na otrzymany adres IP.</p><p>Potem po&#x142;&#x105;czmy si&#x119; ze serwerem za pomoc&#x105; SSH. Po zalogowaniu wywo&#x142;ajmy dwa standardowe polecenia:</p><pre><code class="language-shell">$ user@example-vps: apt-get update
$ user@example-vps: apt-get upgrade</code></pre><p>Po aktualizacji zale&#x17C;no&#x15B;ci czas na zainstalowanie trzech aplikacji &#x2014; Dockera, Nginxa i UFW:</p><pre><code class="language-shell">$ user@example-vps: apt-get docker.io nginx ufw</code></pre><p>NGINX to popularne oprogramowanie, kt&#xF3;re jest u&#x17C;ywany jako serwer HTTP (czyli do utrzymywania stron www), serwer proxy, serwer poczty i serwer proxy dla protoko&#x142;&#xF3;w e-mail takich jak IMAP, POP3 i SMTP. Pierwszy raz zosta&#x142; wydany w 2004 roku i od tego czasu zdoby&#x142; ogromn&#x105; popularno&#x15B;&#x107; ze wzgl&#x119;du na swoj&#x105; wydajno&#x15B;&#x107;, stabilno&#x15B;&#x107;, bogate funkcje, prost&#x105; konfiguracj&#x119; i niskie zu&#x17C;ycie zasob&#xF3;w.<br><br>Dzia&#x142;a na architekturze opartej na zdarzeniach, co oznacza, &#x17C;e zamiast tworzy&#x107; nowy proces lub w&#x105;tek dla ka&#x17C;dego nowego po&#x142;&#x105;czenia (co ma miejsce w tradycyjnych serwerach webowych, takich jak Apache), NGINX korzysta z niewielkiej, sta&#x142;ej liczby proces&#xF3;w lub w&#x105;tk&#xF3;w do obs&#x142;ugi wielu po&#x142;&#x105;cze&#x144; r&#xF3;wnocze&#x15B;nie. Ta architektura pozwala mu skalowa&#x107; si&#x119; bardzo dobrze i zapewnia&#x107; doskona&#x142;&#x105; wydajno&#x15B;&#x107;, nawet przy du&#x17C;ej ilo&#x15B;ci ruchu.<br><br>NGINX mo&#x17C;e by&#x107; u&#x17C;ywany jako serwer proxy. Ta konfiguracja jest u&#x17C;ywana do dystrybucji ruchu do wielu serwer&#xF3;w, do obs&#x142;ugi &#x17C;&#x105;da&#x144; statycznych, dynamicznych, strumieniowych lub realizacji cache dla szybszych odpowiedzi. Dzi&#x119;ki temu mo&#x17C;na &#x142;adowa&#x107; aplikacje webowe bez obci&#x105;&#x17C;ania g&#x142;&#xF3;wnej aplikacji serwera. Daje to mo&#x17C;liwo&#x15B;&#x107; obs&#x142;ugi wi&#x119;kszych ilo&#x15B;ci ruchu i oferowania lepszej wydajno&#x15B;ci.<br><br>W&#x142;a&#x15B;nie NGINX jest potrzebny po to, by skorzysta&#x107; z mo&#x17C;liwo&#x15B;ci skonfigurowania jako serwer proxy. Obraz Dockera kt&#xF3;ry p&#xF3;&#x17A;niej uruchomimy uruchamia sw&#xF3;j serwer HTTP, acz dla bezpiecze&#x144;stwa nie jest wskazane wystawianie aplikacji bezpo&#x15B;rednio w takiej formie.</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading" style="color: #000000;"><span style="white-space: pre-wrap;">Interesuj&#x105; Ci&#x119; tego typu tre&#x15B;ci?</span></h2>
                    <p class="kg-signup-card-subheading" style="color: #000000;"><span style="white-space: pre-wrap;">Zapisz si&#x119; do mojego newslettera i b&#x105;d&#x17A; na bie&#x17C;&#x105;co.</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success" style="color: #000000;">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" style="color: #000000;" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer" style="color: #000000;"><span style="white-space: pre-wrap;">Bez spamu, zawsze konkretnie i na temat. </span><br><span style="white-space: pre-wrap;">Mo&#x17C;esz wypisa&#x107; si&#x119; w ka&#x17C;dym momencie.</span></p>
                </div>
            </div>
        </div><p>Z kolei, UFW (Uncomplicated Firewall) to interfejs u&#x17C;ytkownika dla zarz&#x105;dzania zapor&#x105; sieciow&#x105;, zaprojektowany z my&#x15B;l&#x105; o prostocie i wygodzie u&#x17C;ytkowania. UFW to narz&#x119;dzie linii polece&#x144;, kt&#xF3;re jest prekonfigurowane do potrzeb wi&#x119;kszo&#x15B;ci u&#x17C;ytkownik&#xF3;w, oferuj&#x105;c jednocze&#x15B;nie mo&#x17C;liwo&#x15B;&#x107; zaawansowanej konfiguracji. UFW zosta&#x142; stworzony dla systemu operacyjnego Ubuntu, ale dzia&#x142;a na innych dystrybucjach Linuxa, kt&#xF3;re korzystaj&#x105; z iptables.<br><br>UFW pozwala na &#x142;atwe dodawanie i usuwanie regu&#x142; zapory sieciowej z interaktywnego i prostego w u&#x17C;yciu interfejsu. U&#x17C;ytkownicy mog&#x105; skonfigurowa&#x107;, kt&#xF3;re us&#x142;ugi maj&#x105; by&#x107; dost&#x119;pne dla publicznego ruchu sieciowego, a kt&#xF3;re maj&#x105; by&#x107; zablokowane. Ten uproszczony interfejs u&#x142;atwia zarz&#x105;dzanie zapor&#x105; sieciow&#x105; nawet dla pocz&#x105;tkuj&#x105;cych u&#x17C;ytkownik&#xF3;w, chroni&#x105;c jednocze&#x15B;nie systemy przed nieautoryzowanym dost&#x119;pem.</p><p>Skoro mamy instalacj&#x119; za sob&#x105;, skonfigurujmy zapor&#x119;:</p><pre><code class="language-shell">$ user@example-vps: ufw allow &apos;Nginx Full&apos;
$ user@example-vps: ufw allow &apos;OpenSSH&apos;</code></pre><p>Dzi&#x119;ki tym regu&#x142;om b&#x119;dzie mo&#x17C;na zalogowa&#x107; si&#x119; do serwera za pomoc&#x105; SSH i otworzy&#x107; witryn&#x119; internetow&#x105;.</p><p>Dalej, czas na uruchomienie Dockera:</p><pre><code class="language-shell">$ user@example-vps: docker run -restart always -p 8080:8080 -e CONTAINER_CONFIG=&apos;&lt;config string&gt;&apos; -e PREVIEW_SERVER_URL=&apos;&lt;HTTPS preview server url&gt;&apos; gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable</code></pre><p>Rozk&#x142;adaj&#x105;c komend&#x119; na czynniki pierwsze:</p><ul><li><code>docker run</code> - wywo&#x142;anie polecenia <code>run</code> z pakietu pakietu <code>docker</code></li><li><code>-restart always</code> - parametr <code>always</code> dla klucza <code>restart</code> powoduje, &#x17C;e instancja b&#x119;dzie automatycznie resetowa&#x142;a si&#x119; wtedy, kiedy napotka b&#x142;&#x105;d lub wy&#x142;&#x105;czy si&#x119;. <a href="https://docs.docker.com/config/containers/start-containers-automatically/?ref=kacperduras.pl" rel="noreferrer">Mo&#x17C;na ustawi&#x107; to oczywi&#x15B;cie w inny tryb</a>, acz w przypadku Google Tag Manager Server-Side zale&#x17C;y nam, &#x17C;eby dzia&#x142;a&#x142; ca&#x142;y czas. Uwa&#x17C;am, &#x17C;e nie ma potrzeby innego ustawienia - dlaczego, wyja&#x15B;ni&#x119; poni&#x17C;ej</li><li><code>-p 8080:8080</code> - ustawienie portu, dla kt&#xF3;rego serwer HTTP naszego kontenera w&#x142;&#x105;czy si&#x119;. Domy&#x15B;lnie ka&#x17C;dy nas&#x142;uch jest realizowany na port 80 - tam dzia&#x142;a ju&#x17C; zainstalowany wcze&#x15B;niej NGINX</li><li><code>gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable</code> - wyb&#xF3;r, kt&#xF3;ry obraz powinien uruchomi&#x107; si&#x119; w kontenerze</li></ul><p>Ostatnie dwa ustawienia om&#xF3;wi&#x119; osobno, poniewa&#x17C; jest to bardzo istotne dla zrozumienia charakteru dzia&#x142;ania aplikacji:</p><ul><li><code>-e CONTAINER_CONFIG=&apos;&lt;config stream&gt;&apos;</code></li><li><code>-e PREVIEW_SERVER_URL=&apos;&lt;HTTPS preview server url&gt;&apos;</code></li></ul><p>Najpro&#x15B;ciej b&#x119;dzie to wyt&#x142;umaczy&#x107; w postaci wizualnej:</p><figure class="kg-card kg-image-card"><img src="https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-06-at-23.41.58.png" class="kg-image" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera" loading="lazy" width="1812" height="808" srcset="https://kacperduras.pl/content/images/size/w600/2023/11/Screenshot-2023-11-06-at-23.41.58.png 600w, https://kacperduras.pl/content/images/size/w1000/2023/11/Screenshot-2023-11-06-at-23.41.58.png 1000w, https://kacperduras.pl/content/images/size/w1600/2023/11/Screenshot-2023-11-06-at-23.41.58.png 1600w, https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-06-at-23.41.58.png 1812w" sizes="(min-width: 720px) 720px"></figure><p>W istocie instalacja Google Tag Manager Server-Side sprowadza si&#x119; do tego, i&#x17C; uruchamiamy serwer po&#x15B;rednicz&#x105;cy zapytania pomi&#x119;dzy klientem, a ko&#x144;cowym us&#x142;ugodawc&#x105;. Nale&#x17C;y zaznaczy&#x107;, &#x17C;e ca&#x142;a konfiguracja le&#x17C;y dalej na serwerach Google. Zmienna <code>CONTAINER_CONFIG</code> s&#x142;u&#x17C;y wprowadzeniu unikalnego klucza konfiguracyjnego, kt&#xF3;ry uzyskujesz przy tworzeniu Google Tag Managera Server-Side w spos&#xF3;b manualny. </p><p><code>PREVIEW_SERVER_URL</code> jest ustawieniem serwera pogl&#x105;dowego. Wpisujesz tutaj subdomen&#x119;, na kt&#xF3;rej Tw&#xF3;j kontener ma by&#x107; aktywny. Na przyk&#x142;ad dla tej strony internetowej to jest <code>analytics.kacperduras.pl</code>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-06-at-23.51.37.png" class="kg-image" alt="Wdro&#x17C;enie Google Tag Manager Server-Side za pomoc&#x105; Dockera" loading="lazy" width="1488" height="664" srcset="https://kacperduras.pl/content/images/size/w600/2023/11/Screenshot-2023-11-06-at-23.51.37.png 600w, https://kacperduras.pl/content/images/size/w1000/2023/11/Screenshot-2023-11-06-at-23.51.37.png 1000w, https://kacperduras.pl/content/images/2023/11/Screenshot-2023-11-06-at-23.51.37.png 1488w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Zrzut ekranu z przyk&#x142;adowym kluczem</span></figcaption></figure><p>Kolejno, skonfigurujemy NGINXa, tworz&#x105;c plik konfiguracyjny w odpowiedniej lokalizacji:</p><pre><code class="language-shell">$ user@example-vps: cd /etc/nginx/sites-available/
$ user@example-vps: touch google-tag-manager.conf
$ user@example-vps: nano google-tag-manager.conf</code></pre><p>Poni&#x17C;ej za&#x142;&#x105;czam przyk&#x142;adow&#x105;, minimaln&#x105; konfiguracj&#x119;, kt&#xF3;ra wystarczy do uruchomienia serwera proxy:</p><pre><code class="language-json">server {
  listen 80;
  listen [::]:80;

  server_name domain.com www.domain.com;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:8080;
  }
}
</code></pre><p>Dzi&#x119;ki temu ka&#x17C;de zapytanie b&#x119;dzie przekierowane do aplikacji na porcie <code>8080</code> - w tym przypadku, naszego kontenera. Pami&#x119;taj, &#x17C;eby w miejscu <code>domain.com</code> wprowadzi&#x107; subdomen&#x119;, na kt&#xF3;rej ma dzia&#x142;a&#x107; kontener.</p><p>Przy okazji skonfigurujmy domy&#x15B;lny serwer HTTP:</p><pre><code class="language-shell">$ user@example-vps: nano default</code></pre><p>Na przyk&#x142;ad w taki spos&#xF3;b:</p><pre><code class="language-json">server {
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name _;

  location / {
    return 403;
  }
}
</code></pre><p>Dzi&#x119;ki temu, przy wpisaniu adresu IP serwera w przegl&#x105;dark&#x119;, wy&#x15B;wietli si&#x119; b&#x142;&#x105;d dotycz&#x105;cy braku dost&#x119;pu do zawarto&#x15B;ci.</p><p>Zrestartujmy i sprawd&#x17A;my, czy konfiguracja za&#x142;&#x105;czy&#x142;a si&#x119; w porz&#x105;dku:</p><pre><code class="language-shell">$ user@example-vps: sudo service nginx restart</code></pre><p>Je&#x15B;li tak i nie pojawi&#x142; si&#x119; &#x17C;aden b&#x142;&#x105;d, pora na skonfigurowanie darmowego certyfikatu SSL od <a href="https://letsencrypt.org/pl/?ref=kacperduras.pl" rel="noreferrer">Let&apos;s Encrypt</a> za pomoc&#x105; aplikacji <code>certbot</code>:</p><pre><code class="language-shell">$ user@example-vps: sudo apt-get install certbot python3-certbot-nginx
$ user@example-vps: sudo certbot --nginx -d example.com -d www.example.com
$ user@example-vps: sudo certbot renew --dry-run</code></pre><p>W miejscu `example.com` wpiszmy domen&#x119;, kolejno wystarczy za&#x142;&#x105;czy&#x107; zapor&#x119;:</p><pre><code class="language-shell">$ user@example-vps: sudo ufw enable</code></pre><p>I wszystko gotowe. Jako test odpytajmy serwer, czy odpowiada. Na potrzeby pogl&#x105;dowe za&#x142;&#x105;czam link do mojego:</p><pre><code>https://analytics.kacperduras.pl/healtz</code></pre><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading" style="color: #000000;"><span style="white-space: pre-wrap;">Interesuj&#x105; Ci&#x119; tego typu tre&#x15B;ci?</span></h2>
                    <p class="kg-signup-card-subheading" style="color: #000000;"><span style="white-space: pre-wrap;">Zapisz si&#x119; do mojego newslettera i b&#x105;d&#x17A; na bie&#x17C;&#x105;co.</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success" style="color: #000000;">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" style="color: #000000;" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer" style="color: #000000;"><span style="white-space: pre-wrap;">Bez spamu, zawsze konkretnie i na temat. </span><br><span style="white-space: pre-wrap;">Mo&#x17C;esz wypisa&#x107; si&#x119; w ka&#x17C;dym momencie.</span></p>
                </div>
            </div>
        </div><h2 id="najpopularniejsze-problemy-i-rozwi%C4%85zania">Najpopularniejsze problemy i rozwi&#x105;zania</h2><p><strong>Pytanie: Dlaczego Google zaleca minimum dwa kontenery, a Ty instalujesz tylko raz?</strong><br>Odpowied&#x17A;: W znacznej ilo&#x15B;ci us&#x142;ug instalacji Google Tag Manager Server-Side kt&#xF3;r&#x105; dotychczas zrealizowa&#x142;em wystarczy&#x142; jeden serwer w standardowej konfiguracji. Google promuje podej&#x15B;cie dywersyfikacji zasob&#xF3;w i rozk&#x142;adania r&#xF3;wnomiernego obci&#x105;&#x17C;enia tak, by minimalizowa&#x107; ryzyko niedost&#x119;pno&#x15B;ci us&#x142;ugi. <a href="https://cloud.google.com/load-balancing/docs/https/setting-up-https-serverless?ref=kacperduras.pl" rel="noreferrer">Nale&#x17C;y pami&#x119;ta&#x107;, &#x17C;e us&#x142;uga load balancingu jest dodatkowo p&#x142;atna wzgl&#x119;dem minimalnych estymacji za&#x142;o&#x17C;onych przez Google</a>, a wraz ze wzrostem ilo&#x15B;ci zapyta&#x144; potrzebnej do obs&#x142;ugi, b&#x119;d&#x105; te&#x17C; potrzebne wi&#x119;ksze instancje o lepszej specyfikacji.</p><p><strong>Pytanie: Skorzystam z Twojej porady, w jaki spos&#xF3;b mam post&#x119;powa&#x107;, gdy wzro&#x15B;nie ruch i co za tym idzie, ilo&#x15B;&#x107; zapyta&#x144;?</strong><br>Odpowied&#x17A;: Na pocz&#x105;tek spr&#xF3;buj zwi&#x119;kszy&#x107; konfiguracj&#x119; serwera, a nast&#x119;pnie uruchomi&#x107; r&#xF3;wnoleg&#x142;y obok i uruchomi&#x107; dodatkowy, kt&#xF3;ry b&#x119;dzie odpowiada&#x142; za po&#x15B;redniczenie w rozdzielaniu ruchu. <a href="https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/?ref=kacperduras.pl" rel="noreferrer">NGINX posiada wbudowan&#x105; funkcj&#x119; load balancingu</a>, polecam sprawdzi&#x107; j&#x105; w praktyce. <a href="https://www.haproxy.org/?ref=kacperduras.pl" rel="noreferrer">Z do&#x15B;wiadczenia polecam r&#xF3;wnie&#x17C; HaProxy</a>. <a href="https://www.cloudflare.com/application-services/products/load-balancing/?ref=kacperduras.pl" rel="noreferrer">W ramach mojego blogu korzystam z us&#x142;ug firmy CloudFlare, kt&#xF3;ra &#x142;&#x105;czy kilkana&#x15B;cie us&#x142;ug w jedn&#x105;, zwart&#x105; ca&#x142;o&#x15B;&#x107;.</a> Pami&#x119;taj, &#x17C;e przy konfiguracji r&#xF3;wnoleg&#x142;ych serwer&#xF3;w zadbaj, by komunikowa&#x142;y si&#x119; w prywatnej sieci lub mia&#x142;y do siebie wy&#x142;&#x105;cznie wzajemny dost&#x119;p, bez otwierania komunikacji na zewn&#x105;trz.</p><p><strong>Pytanie: Jak potem nadzorowa&#x107;, czy wszystko dzia&#x142;a w porz&#x105;dku?</strong><br>Odpowied&#x17A;: Monitoruj aplikacj&#x119;, pomocne b&#x119;dzie tutaj Docker Engine API oraz us&#x142;ugi do monitorowania infrastruktury, np. <a href="https://www.zabbix.com/?ref=kacperduras.pl" rel="noreferrer">Zabbix</a> lub rozwi&#x105;zania SaaS typu <a href="https://uptimerobot.com/?ref=kacperduras.pl" rel="noreferrer">UptimeRobot</a>.</p><p><strong>Pytanie: Czy musz&#x119; to wdra&#x17C;a&#x107;?</strong><br>Odpowied&#x17A;: W mojej opinii tak. Uzasadni&#x142;em to <a href="https://kacperduras.pl/google-tag-manager-server-side/" rel="noreferrer">tutaj</a>.</p><p><strong>Pytanie: Wyskoczy&#x142; mi b&#x142;&#x105;d lub mam dodatkowe pytanie. Pomo&#x17C;esz mi?</strong><br>Odpowied&#x17A;: <a href="https://kacperduras.pl/kontakt/" rel="noreferrer">Jasne, zapraszam do kontaktu.</a></p>]]></content:encoded></item><item><title><![CDATA[Google Tag Manager Server-Side — czym jest, jak działa i ile kosztuje?]]></title><description><![CDATA[Zmiany technologiczne na rynku reklamowym i idący za tym postęp dostarcza nowe rozwiązania służące lepszemu pomiarowi skuteczności kampanii reklamowych. Jednym z tych rozwiązań jest rozszerzenie znanego powszechnie narzędzia Google Tag Manager — Google Tag Manager Server-Side.]]></description><link>https://kacperduras.pl/google-tag-manager-server-side/</link><guid isPermaLink="false">65468d5ebcb368ceb7ee850a</guid><category><![CDATA[Google]]></category><category><![CDATA[Google Tag Manager]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sat, 04 Nov 2023 23:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1529612700005-e35377bf1415?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE0fHxnb29nbGUlMjB0YWclMjBtYW5hZ2VyfGVufDB8fHx8MTY5OTEyMjU3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1529612700005-e35377bf1415?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE0fHxnb29nbGUlMjB0YWclMjBtYW5hZ2VyfGVufDB8fHx8MTY5OTEyMjU3NHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"><p>Zmiany technologiczne na rynku reklamowym i id&#x105;cy za tym post&#x119;p dostarcza nowe rozwi&#x105;zania s&#x142;u&#x17C;&#x105;ce lepszemu pomiarowi skuteczno&#x15B;ci kampanii reklamowych, przy jednoczesnym zachowaniu zgodno&#x15B;ci z niezb&#x119;dnymi regulacjami. Jednym z tych rozwi&#x105;za&#x144; jest rozszerzenie znanego powszechnie narz&#x119;dzia Google Tag Manager &#x2014; Google Tag Manager Server-Side.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Czego nauczysz si&#x119; z tego artyku&#x142;u?</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ul><li value="1"><span style="white-space: pre-wrap;">Czym jest Google Tag Manager Server-Side</span></li><li value="2"><span style="white-space: pre-wrap;">Jaka jest r&#xF3;&#x17C;nica mi&#x119;dzy zwyk&#x142;ym Google Tag Manager i Google Tag Manager Server-Side</span></li><li value="3"><span style="white-space: pre-wrap;">Dowiesz si&#x119; o wymogach otoczenia technologicznego, regulacyjnego i dlaczego jest to wa&#x17C;ne</span></li><li value="4"><span style="white-space: pre-wrap;">Poznasz wszystkie elementy sk&#x142;adaj&#x105;ce si&#x119; na koszty wdro&#x17C;enia oraz dowiesz si&#x119;, jak zaoszcz&#x119;dzi&#x107;</span></li></ul></div>
        </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#co-to-jest-google-tag-manager-server-side" rel="noreferrer"><span style="white-space: pre-wrap;">Co to jest Google Tag Manager Server-Side?</span></a></li><li value="2"><a href="#jak-dzia%C5%82a-google-tag-manager-w-wersji-server-side" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a Google Tag Manager w wersji server-side?</span></a></li><li value="3"><a href="#ile-kosztuje-wdro%C5%BCenie-google-tag-manager-server-side" rel="noreferrer"><span style="white-space: pre-wrap;">Ile kosztuje wdro&#x17C;enie Google Tag Manager Server-Side?</span></a></li></ol></div>
        </div><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Wersja skr&#xF3;cona: </strong></b>Artyku&#x142; obja&#x15B;nia trzy mo&#x17C;liwe sposoby wdro&#x17C;enia Google Tag Manager, t&#x142;umaczy charakterystyk&#x119; koszt&#xF3;w zwi&#x105;zanych z finalnym wdro&#x17C;eniem oraz wyja&#x15B;nia szczeg&#xF3;&#x142;owo r&#xF3;&#x17C;nice pomi&#x119;dzy Google Tag Manager w wersji standardowej, a server-side.</div></div><h2 id="co-to-jest-google-tag-manager-server-side">Co to jest Google Tag Manager Server-Side?</h2><p>Google Tag Manager Server-Side jest rozszerzeniem standardowego narz&#x119;dzia firmy Google, jakim jest Google Tag Manager. Wersja server-side skupia si&#x119; na przenoszeniu procesu przetwarzania tag&#xF3;w (inaczej: kod&#xF3;w &#x15B;ledz&#x105;cych i innych integracji z narz&#x119;dziami) z przegl&#x105;darki u&#x17C;ytkownika na serwer strony internetowej. W swoim za&#x142;o&#x17C;eniu, to rozwi&#x105;zanie ma na celu zwi&#x119;kszenie pr&#x119;dko&#x15B;ci &#x142;adowania strony, lepsz&#x105; kontrol&#x119; danych i popraw&#x119; kompatybilno&#x15B;ci z blokerami reklam.<br><br>Podczas gdy oryginalny Google Tag Manager koncentruje si&#x119; na zarz&#x105;dzaniu tagami po stronie klienta (tj. w przegl&#x105;darce u&#x17C;ytkownika), Google Tag Manager Server-Side przenosi znaczn&#x105; cz&#x119;&#x15B;&#x107; tej pracy na serwer strony www. Przeniesienie przetwarzania tag&#xF3;w na serwer oznacza, &#x17C;e strona internetowa mo&#x17C;e by&#x107; teoretycznie szybsza i mniej obci&#x105;&#x17C;ona dla u&#x17C;ytkownika. W przypadku Google Tag Managera po stronie klienta, ka&#x17C;dy tag dodaje dodatkowy ci&#x119;&#x17C;ar dla ko&#x144;cowego urz&#x105;dzenia u&#x17C;ytkownika.<br><br>Google Tag Manager Server-Side oferuje r&#xF3;wnie&#x17C; lepsz&#x105; kontrol&#x119; nad przesy&#x142;anymi danymi. Oznacza to, &#x17C;e mo&#x17C;na dok&#x142;adnie kontrolowa&#x107;, jakie informacje s&#x105; przesy&#x142;ane do serwis&#xF3;w trzecich, co pozwala na ochron&#x119; prywatno&#x15B;ci u&#x17C;ytkownika i zgodno&#x15B;&#x107; z przepisami o ochronie danych. W przeciwie&#x144;stwie do tego, Google Tag Manager po stronie klienta przesy&#x142;a dane bezpo&#x15B;rednio z przegl&#x105;darki do us&#x142;ug trzecich, co mo&#x17C;e w niekt&#xF3;rych scenariuszach stwarza&#x107; potencjalne ryzyko naruszenia prywatno&#x15B;ci.<br><br>Inna korzy&#x15B;&#x107; Google Tag Manager Server-Side polega na tym, &#x17C;e jest mniej podatna na blokad&#x119; przez technologie anty-&#x15B;ledzenia i blokery reklam. Te narz&#x119;dzia cz&#x119;sto dzia&#x142;aj&#x105;, blokuj&#x105;c skrypty uruchamiane w przegl&#x105;darce, co dotyczy standardowego Google Tag Manager. Wp&#x142;ywa to w szczeg&#xF3;lno&#x15B;ci na prawid&#x142;owo&#x15B;&#x107; pomiaru danych do narz&#x119;dzi s&#x142;u&#x17C;&#x105;cych kompleksowej analizie i ocenie skuteczno&#x15B;ci dzia&#x142;a&#x144; marketingowych. W przypadku wersji server-side, tagi s&#x105; procesowane na serwerze zamiast w przegl&#x105;darce, co zwi&#x119;ksza prawdopodobie&#x144;stwo ich prawid&#x142;owego dzia&#x142;ania.</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading" style="color: #000000;"><span style="white-space: pre-wrap;">Interesuj&#x105; Ci&#x119; tego typu tre&#x15B;ci?</span></h2>
                    <p class="kg-signup-card-subheading" style="color: #000000;"><span style="white-space: pre-wrap;">Zapisz si&#x119; do mojego newslettera i b&#x105;d&#x17A; na bie&#x17C;&#x105;co.</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success" style="color: #000000;">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" style="color: #000000;" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer" style="color: #000000;"><span style="white-space: pre-wrap;">Bez spamu, zawsze konkretnie i na temat. </span><br><span style="white-space: pre-wrap;">Mo&#x17C;esz wypisa&#x107; si&#x119; w ka&#x17C;dym momencie.</span></p>
                </div>
            </div>
        </div><h2 id="jak-dzia%C5%82a-google-tag-manager-w-wersji-server-side">Jak dzia&#x142;a Google Tag Manager w wersji server-side?</h2><p>R&#xF3;&#x17C;nice w dzia&#x142;aniu wersji Google Tag Manager najlepiej pokaza&#x107; we formie wizualnych graf&#xF3;w.</p><p>Podstawow&#x105; r&#xF3;&#x17C;nic&#x105;, jak wskaza&#x142;em we wst&#x119;pie, jest to, i&#x17C; standardowa wersja Google Tag Manager przesy&#x142;a informacje o wykonanych interakcjach na naszej stronie, za pomoc&#x105; urz&#x105;dze&#x144; ko&#x144;cowego klienta bezpo&#x15B;rednio do Google. Charakterystycznym problemem tego typu &#x15B;cie&#x17C;ki jest to, i&#x17C; mo&#x17C;na &#x142;adunek tego typu przechwyci&#x107; i zablokowa&#x107; - taka sytuacja ma miejsce przy narz&#x119;dziach do blokady reklam. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://conversion.pl/wp-content/uploads/2023/02/Tradycyjna-konfiguracja-strony-GTM-Client-Side..png" class="kg-image" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?" loading="lazy"><figcaption><span style="white-space: pre-wrap;">&#x179;r&#xF3;d&#x142;o: </span><a href="https://developers.google.com/tag-platform/tag-manager/server-side?ref=kacperduras.pl"><span style="white-space: pre-wrap;">https://developers.google.com/tag-platform/tag-manager/server-side</span></a></figcaption></figure><p>Rozszerzenie Google Tag Manager umo&#x17C;liwia ukrycie docelowego odbiorcy informacji, wskazuj&#x105;c na nasz&#x105; stron&#x119; internetow&#x105;. Dzi&#x119;ki temu rozwi&#x105;zaniu nie jest mo&#x17C;liwe ca&#x142;kowite wyeliminowanie problemu ogranicze&#x144; &#x15B;ledzenia ko&#x144;cowych u&#x17C;ytkownik&#xF3;w, ale znaczne ograniczenie. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://conversion.pl/wp-content/uploads/2023/02/KKKonfiguracja-strony-przy-uzyciu-GTM-Server-Side-1.png" class="kg-image" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?" loading="lazy"><figcaption><span style="white-space: pre-wrap;">&#x179;r&#xF3;d&#x142;o: </span><a href="https://developers.google.com/tag-platform/tag-manager/server-side?ref=kacperduras.pl"><span style="white-space: pre-wrap;">https://developers.google.com/tag-platform/tag-manager/server-side</span></a></figcaption></figure><p>Cz&#x119;&#x15B;ciowo charakterystyk&#x119; utrudnie&#x144; dotycz&#x105;cych zmian w prywatno&#x15B;ci cyfrowych to&#x17C;samo&#x15B;ci wyt&#x142;umaczy&#x142;em w poni&#x17C;szym artykule:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/jakie-zmiany-przynosi-ios14/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Apple i system AppTrackingTransparency w praktyce</div><div class="kg-bookmark-description">Wraz z aktualizacj&#x105; do iOS 14, wprowadzono system AppTrackingTransparency, zapewniaj&#x105;cy odbiorcom urz&#x105;dze&#x144; wi&#x119;ksz&#x105; kontrol&#x119; nad udost&#x119;pnianiem informacji.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1563203369-26f2e4a5ccf7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhcHBsZSUyMHxlbnwwfHx8fDE2OTkyMTExNjN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"></div></a></figure><h2 id="ile-kosztuje-wdro%C5%BCenie-google-tag-manager-server-side">Ile kosztuje wdro&#x17C;enie Google Tag Manager Server-Side?</h2><p>Koszty wdro&#x17C;enia Google Tag Manager Server-Side potrafi&#x105; by&#x107; zr&#xF3;&#x17C;nicowane, wynika to z trzech element&#xF3;w.</p><p>Pierwsz&#x105; sk&#x142;adow&#x105; jest to, gdzie utrzymywana jest aplikacja. Dotychczasowe, bezp&#x142;atne aplikacje od Google promowa&#x142;y bardzo wyp&#x142;aszczone podej&#x15B;cie zwi&#x105;zane z implementacj&#x105; rozwi&#x105;za&#x144; technologicznych i jednocze&#x15B;nie przenosi&#x142;y szereg obowi&#x105;zk&#xF3;w z ko&#x144;cowych u&#x17C;ytkownik&#xF3;w, takich jak m.in. utrzymywanie infrastruktury technologicznej. Obecnie, Google zach&#x119;ca do skorzystania z ich us&#x142;ug chmurowych pod szyldem Google Cloud Platform, kt&#xF3;ry co prawda <a href="https://cloud.google.com/free/docs/free-cloud-features?ref=kacperduras.pl#free-tier-usage-limits" rel="noreferrer">posiada, pod szczeg&#xF3;&#x142;owymi warunkami, bezp&#x142;atny limit dla u&#x17C;ytkownik&#xF3;w nowych i korzystaj&#x105;cych ze zasob&#xF3;w w ograniczonym stopniu</a>, ale z drugiej strony informuje p&#xF3;&#x17A;niej o realnych kosztach w przypadku ich przekroczenia i prezentuje przyk&#x142;adowe, najta&#x144;sze konfiguracje jako punkt odniesienia:</p><blockquote>In this Cloud Run configuration, each server costs approximately <strong>$45 /month (USD)</strong>. Each server is a Cloud Run instance with&#xA0;<a href="https://cloud.google.com/run/pricing?ref=kacperduras.pl">1 vCPU and 0.5GB memory</a>&#xA0;using the CPU always allocated pricing model.<br><br>We recommend running a minimum of 2 instances to reduce the risk of data loss in case of a server outage. However, you may choose to run fewer (or more) servers. We expect that autoscaling 2-10 servers will handle 35-350 requests per second, though the performance will vary with the number of tags, and what those tags do.<br><br>&#x179;r&#xF3;d&#x142;o: <a href="https://developers.google.com/tag-platform/tag-manager/server-side/cloud-run-setup-guide?provisioning=automatic&amp;ref=kacperduras.pl#cloud_run_cost" rel="noreferrer">klik</a></blockquote><p>Zak&#x142;adaj&#x105;c rekomendacje Google, 90 USD netto miesi&#x119;cznie za sam fakt korzystania z aplikacji, kt&#xF3;ra umo&#x17C;liwia &#x15B;ledzenie zachowa&#x144; odbiorc&#xF3;w w Internecie, mo&#x17C;e by&#x107; dla cz&#x119;&#x15B;ci przedsi&#x119;biorstw zbyt drogie. Opr&#xF3;cz tego, dochodz&#x105; problemy innej natury:</p><ul><li>autoskalowanie zasob&#xF3;w, kt&#xF3;rego du&#x17C;ym plusem jest dostosowywanie potrzebnej mocy obliczeniowej do obci&#x105;&#x17C;enia, w praktyce bez na&#x142;o&#x17C;enia limit&#xF3;w wydatk&#xF3;w na us&#x142;ugi mo&#x17C;e spowodowa&#x107; bardzo wysoki rachunek</li><li>kurs USD, kt&#xF3;ry przy braku stosownego zabezpieczenia potrafi i wahaniach walutowych zwi&#x119;ksza koszty</li><li>dodatkowe us&#x142;ugi, kt&#xF3;re w&#x142;&#x105;czone przypadkiem lub bez odpowiedniego doinformowania si&#x119; potrafi&#x105; powi&#x119;kszy&#x107; saldo o dodatkowe kwoty do uregulowania (np. sprawniejsze &#x142;&#x105;cze internetowe, <a href="https://cloud.google.com/load-balancing/docs/load-balancing-overview?ref=kacperduras.pl" rel="noreferrer">load balancing</a>)</li></ul><p><a href="https://developers.google.com/tag-platform/tag-manager/server-side/app-engine-setup?ref=kacperduras.pl" rel="noreferrer">Mo&#x17C;na skorzysta&#x107; z r&#xF3;wnoleg&#x142;ego, odrobin&#x119; ta&#x144;szego wdro&#x17C;enia dla Google Cloud Platform App Engine</a>, acz rekomendowanym rozwi&#x105;zaniem jest u&#x17C;ycie wy&#x17C;ej wymienionego Cloud Engine. </p><p>Ta&#x144;szym, acz trudniejszym wdro&#x17C;eniem jest zainstalowanie samodzielne instancji Google Tag Manager u siebie na serwerze &#x2014; sama konfiguracja itd. pozostaje niezmiennie na serwerach Google i wymaga sta&#x142;ej komunikacji, ale cz&#x119;&#x15B;&#x107; warstwy aplikacyjnej jest pod kontrol&#x105; na w&#x142;asnych zasobach, co umo&#x17C;liwia sprawniejsze zarz&#x105;dzanie kosztami i bezpiecze&#x144;stwem wdro&#x17C;enia.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/wdrozenie-google-tag-manager-server-side-za-pomoca-dockera/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Jak wdro&#x17C;y&#x107; Google Tag Manager tanim kosztem?</div><div class="kg-bookmark-description">Google Tag Manager jest istotnym, a czasem wr&#x119;cz jednym z niezb&#x119;dnych narz&#x119;dzi do implementacji w&#x142;a&#x15B;ciwego pomiaru zachowa&#x144; u&#x17C;ytkownik&#xF3;w podczas uruchamiania i zarz&#x105;dzania kampaniami reklamowymi.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1577071835592-d5d55ffef660?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDl8fGdvb2dsZXxlbnwwfHx8fDE2OTkzMDcyMzN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"></div></a></figure><p><em>Jednocze&#x15B;nie niezmiennie zalecam u&#x17C;ywanie Google Cloud Platform dla firm, kt&#xF3;re nie posiadaj&#x105; w swoich szeregach ludzi, kt&#xF3;rzy potrafi&#x105; zarz&#x105;dza&#x107; samodzielnie serwerami VPS lub dedykowanymi. Google Cloud Platform co prawda jest dla osoby nietechnicznej skomplikowane, jednak znacznie mniej ni&#x17C; samodzielna instalacja.</em></p><p>Jako alternatyw&#x119; mo&#x17C;na zastosowa&#x107; us&#x142;ugi typu <a href="https://stape.io/?ref=kacperduras.pl" rel="noreferrer">Stape.io</a>, kt&#xF3;re znacznie taniej utrzymuj&#x105; instancje Google Tag Manager i uproszczaj&#x105; proces konfiguracji do minimum i posiadaj&#x105; przyst&#x119;pniejszy cennik, jednak te&#x17C; posiadaj&#x105; swoje ograniczenia funkcyjne oraz pr&#x119;dko&#x15B;&#x107; wsparcia kolejnego, dodatkowego podwykonawcy. Ka&#x17C;de z rozwi&#x105;za&#x144; posiada swoje plusy i minusy, gdzie ca&#x142;o&#x15B;&#x107; rozchodzi si&#x119; g&#x142;&#xF3;wnie o to, jaki sk&#x142;adnik bud&#x17C;etu dopuszczamy na realizacj&#x119; wdro&#x17C;enia i jego utrzymanie &#x2014; dobrze przeprowadzone wdro&#x17C;enie generuje minimalny nak&#x142;ad finansowy w postaci roboczogodzin administratora serwerem, z do&#x15B;wiadczenia wiem, &#x17C;e bywa, i&#x17C; praktycznie zerowy.</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading" style="color: #000000;"><span style="white-space: pre-wrap;">Interesuj&#x105; Ci&#x119; tego typu tre&#x15B;ci?</span></h2>
                    <p class="kg-signup-card-subheading" style="color: #000000;"><span style="white-space: pre-wrap;">Zapisz si&#x119; do mojego newslettera i b&#x105;d&#x17A; na bie&#x17C;&#x105;co.</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success" style="color: #000000;">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" style="color: #000000;" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer" style="color: #000000;"><span style="white-space: pre-wrap;">Bez spamu, zawsze konkretnie i na temat. </span><br><span style="white-space: pre-wrap;">Mo&#x17C;esz wypisa&#x107; si&#x119; w ka&#x17C;dym momencie.</span></p>
                </div>
            </div>
        </div><p>Drugim elementem finalnego kosztu wdro&#x17C;enia jest przeniesienie dotychczasowej konfiguracji kod&#xF3;w &#x15B;ledz&#x105;cych i pokrewnych integracji na server-side. Wymaga to rozpoznania element&#xF3;w, kt&#xF3;re mo&#x17C;na przenie&#x15B;&#x107; i przeprowadzenia ca&#x142;ego procesu. Czas realizacji zale&#x17C;y od tego, jak dotychczasowe rozszerzenia dzia&#x142;aj&#x105; i w jaki spos&#xF3;b s&#x105; skonstruowane - bardzo cz&#x119;sto u&#x17C;ywanie Google Tag Manager, nawet w podstawowym wariancie, k&#x142;&#xF3;ci si&#x119; chocia&#x17C;by z instalacj&#x105; wtyczek na popularnych CMSach typu WordPress. Trzeba wtedy przenie&#x15B;&#x107; wszystkie kody &#x15B;ledz&#x105;ce, a dzi&#x119;ki Google Tag Manager Server-Side jest mo&#x17C;liwa chocia&#x17C;by integracja z API Konwersji od Mety:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/co-to-jest-facebook-conversion-api/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Co to jest Meta (Facebook) Conversions API?</div><div class="kg-bookmark-description">API konwersji Facebooka (ang. Facebook Conversions API) to rozwi&#x105;zanie do mierzenia interakcji u&#x17C;ytkownik&#xF3;w w ramach ekosystemu Facebooka. Dzi&#x119;ki niemu us&#x142;ugodawcy s&#x105; w stanie po&#x142;&#x105;czy&#x107; swoje internetowe us&#x142;ugi z rozwi&#x105;zaniami reklamowymi.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1667586091163-e759ac830a1b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMwfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Google Tag Manager Server-Side &#x2014; czym jest, jak dzia&#x142;a i ile kosztuje?"></div></a></figure><p>Ostatni&#x105; sk&#x142;adow&#x105; jest integracja ze stron&#x105;. Sam Google Tag Manager Server-Side w domy&#x15B;lnym wariancie dzia&#x142;a jako bramka, kt&#xF3;ra w pewnym sensie maskuje miejsce docelowego przesy&#x142;ania danych, jednak wywo&#x142;a&#x107; konkretne tagi mo&#x17C;na za pomoc&#x105; np. API. Kluczowe jest zagnie&#x17C;d&#x17C;enie kod&#xF3;w &#x15B;ledz&#x105;cych lub innych wywo&#x142;a&#x144; w miejscach dla nas istotnych. W wi&#x119;kszo&#x15B;ci znanych, popularnych przypadk&#xF3;w wystarczy g&#x142;&#xF3;wnie integracja <em>maski</em> i kilku zdarze&#x144; (najcz&#x119;&#x15B;ciej jednego) przesy&#x142;anych asynchronicznie, by ca&#x142;o&#x15B;&#x107; dzia&#x142;a&#x142;a poprawnie. Rezultatem jest minimalne obci&#x105;&#x17C;enie zasob&#xF3;w serwera z witryn&#x105; internetow&#x105; lub aplikacj&#x105;.</p><p>Jak widzisz, wdro&#x17C;enie Google Tag Manager Server-Side nie musi by&#x107; skomplikowane, je&#x15B;li pozna si&#x119; wszystkie szczeg&#xF3;&#x142;y oraz metodologi&#x119; liczenia koszt&#xF3;w wraz z mo&#x17C;liwymi optymalizacjami.</p>]]></content:encoded></item><item><title><![CDATA[1,5 mln PLN przychodu z kampanii Facebook]]></title><description><![CDATA[Klientem jest firma tworząca materiały edukacyjne dla osób zainteresowanych zmianą zawodu lub wejściem na rynek pracy jako programiści.]]></description><link>https://kacperduras.pl/1-5-mln-pln-przychodu-z-kampanii-facebook/</link><guid isPermaLink="false">6547f12c1a7c16ab49ec615b</guid><category><![CDATA[Case studies]]></category><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Tue, 20 Sep 2022 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1594670297948-e910d5964979?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGZhY2Vib29rfGVufDB8fHx8MTY5OTIxMDE2Mnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<h1 id="o-kliencie">O kliencie</h1><img src="https://images.unsplash.com/photo-1594670297948-e910d5964979?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fGZhY2Vib29rfGVufDB8fHx8MTY5OTIxMDE2Mnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="1,5 mln PLN przychodu z kampanii Facebook"><p>Klientem jest firma tworz&#x105;ca materia&#x142;y edukacyjne dla os&#xF3;b zainteresowanych zmian&#x105; zawodu lub wej&#x15B;ciem na rynek pracy jako programi&#x15B;ci.</p><h1 id="wyzwanie">Wyzwanie</h1><p>W obliczu niestabilnej sytuacji ekonomicznej i ci&#x119;&#x17C;kiego roku zwi&#x105;zanego z pandemi&#x105; COVID-19, mo&#x17C;liwo&#x15B;ci finansowe konsument&#xF3;w na wydatki wykraczaj&#x105;ce poza niezb&#x119;dne funkcjonowanie s&#x105; znacznie ograniczone. Jednocze&#x15B;nie wiele konsument&#xF3;w chce zachowa&#x107; sw&#xF3;j standard &#x17C;ycia lub go znacznie podnie&#x15B;&#x107;, co wi&#x105;&#x17C;e si&#x119; z ci&#x105;g&#x142;ym rozwojem i ponoszeniem koszt&#xF3;w edukacyjnych, np. zakupu materia&#x142;&#xF3;w lub szkole&#x144;.</p><p>Klient przyszed&#x142; z nast&#x119;puj&#x105;cym problemem:</p><ul><li>brak wiedzy na temat najcz&#x119;stszych powod&#xF3;w rezygnowania z zakupu przez klient&#xF3;w</li><li>du&#x17C;a cena produktu, a co za tym idzie, procent konwersji</li><li>niew&#x142;a&#x15B;ciwe integracje analityczne: firma realizuj&#x105;ca platform&#x119; szkoleniow&#x105; skonfigurowa&#x142;a narz&#x119;dzia do reklam niepoprawnie, przez co pierwsze, samodzielne pr&#xF3;by uruchomienia reklam przez mojego klienta by&#x142;y wed&#x142;ug niego nieskuteczne</li><li>du&#x17C;a konkurencja na rynku szkole&#x144;</li></ul><h1 id="zbadanie-grupy-docelowej">Zbadanie grupy docelowej</h1><p>Na pocz&#x105;tku przeanalizowa&#x142;em uwa&#x17C;nie produkt klienta, jego konstrukcj&#x119;, komunikaty oraz grup&#x119; docelow&#x105;. Nast&#x119;pnie, zrealizowa&#x142;em wywiady pog&#x142;&#x119;bione, by sprawdzi&#x107;:</p><ul><li>obawy odbiorc&#xF3;w dot. produktu (dlaczego nie chc&#x105; kupi&#x107;? do czego nie s&#x105; przekonani?)</li><li>ich oczekiwania wzgl&#x119;dem materia&#x142;&#xF3;w szkoleniowych, mo&#x17C;liwo&#x15B;ci dot. przyswajania tre&#x15B;ci</li><li>mo&#x17C;liwo&#x15B;ci ekonomiczne do zrealizowania transakcji</li></ul><p>Wyniki by&#x142;y m.in. nast&#x119;puj&#x105;ce:</p><ul><li>szkolenie konkuruje w tym samym segmencie, co tzw.&#xA0;<em>bootcampy</em>, czyli szko&#x142;y programowania, kt&#xF3;re maj&#x105; niekoniecznie dobr&#x105; opini&#x119; - pod obietnic&#x105;&#xA0;<em>gwarancji zatrudnienia</em>&#xA0;sprzedaje si&#x119; szkolenie, kt&#xF3;re niekoniecznie ma tyle samo wsp&#xF3;lnego z rzeczywisto&#x15B;ci&#x105;, co teoretycznie</li><li>brak zaufania do marki/trenera - u&#x17C;ytkownicy maj&#x105; ograniczon&#x105; form&#x119; sprawdzenia wiarygodno&#x15B;ci szkoleniowca, a co za tym idzie, nie chc&#x105; przeznacza&#x107; du&#x17C;ych kwot na niesprawdzony program</li><li>wysoko&#x15B;&#x107; jednorazowej p&#x142;atno&#x15B;ci dla wi&#x119;kszo&#x15B;ci badanych os&#xF3;b by&#x142;a za du&#x17C;a</li><li>konieczno&#x15B;&#x107; utrzymania si&#x119; w aktualnej pracy powoduje ograniczony czas na przyswajanie wiedzy</li></ul><h1 id="dostosowanie-produktu">Dostosowanie produktu</h1><p>Po przeprowadzeniu analizy grupy docelowej i u&#x17C;yteczno&#x15B;ci wzgl&#x119;dem niej produktu, wprowadzone zosta&#x142;y nast&#x119;puj&#x105;ce zmiany:</p><ul><li>materia&#x142; podzielono na mniejsze cz&#x119;&#x15B;ci z wi&#x119;ksz&#x105; ilo&#x15B;ci&#x105; mniejszych prac domowych dla kursant&#xF3;w, co pozwoli&#x142;o zwi&#x119;kszy&#x107; przyswajalno&#x15B;&#x107; materia&#x142;&#xF3;w i satysfakcj&#x119; z kursu</li><li>usuni&#x119;cie obietnic&#xA0;<em>gwarancji zatrudnienia</em>, a wi&#x119;ksze wyeksponowanie konkretnych, twardych kompetencji nabytych po realizacji materia&#x142;&#xF3;w</li><li>p&#x142;atno&#x15B;&#x107;: wprowadzono system ratalny z mo&#x17C;liwo&#x15B;ci&#x105; roz&#x142;o&#x17C;enia p&#x142;atno&#x15B;ci na a&#x17C; 60 cz&#x119;&#x15B;ci, dzi&#x119;ki czemu na wydatek finansowy mo&#x17C;e pozwoli&#x107; sobie znacznie wi&#x119;cej os&#xF3;b</li><li>wprowadzenie&#xA0;<em>obietnicy satysfakcji</em>: zwrot pieni&#x119;dzy do 30 dni bez podania powodu</li><li>dodanie modu&#x142;u skupiaj&#x105;cego si&#x119; wy&#x142;&#x105;cznie na poszukiwaniu pracy i dobrego zaprezentowaniu si&#x119; na rozmowach rekrutacyjnych</li><li>wyra&#x17A;niejsze zaprezentowanie opinii dotychczasowych, pozytywnych kursant&#xF3;w i ich historii, kt&#xF3;re zosta&#x142;y odmienione przez produkt</li><li>wprowadzono materia&#x142;y po&#x15B;rednie o znacznie ni&#x17C;szej warto&#x15B;ci, kt&#xF3;re zwraca&#x142;y jednocze&#x15B;nie koszt reklamy</li></ul><h1 id="konfiguracja-analityki-i-%C5%9Bcie%C5%BCek-sprzeda%C5%BCowych">Konfiguracja analityki i &#x15B;cie&#x17C;ek sprzeda&#x17C;owych</h1><p>W ramach analityki zrealizowa&#x142;em integracj&#x119; Google Tag Manger typu&#xA0;<em>server-side&#xA0;</em>(dzi&#x119;ki czemu zwi&#x119;kszy&#x142;em dok&#x142;adno&#x15B;&#x107; &#x15B;ledzenia i omin&#x105;&#x142;em problemy zwi&#x105;zane z tzw. plikami cookies:&#xA0;<a href="https://kacperduras.pl/jakie-zmiany-przynosi-ios14/" rel="noreferrer">kliknij tutaj</a>)<em>&#xA0;</em>i zadba&#x142;em o zgodno&#x15B;&#x107; &#x15B;ledzenia zgodnie z przepisami RODO (konieczno&#x15B;&#x107; egzekwowania zgody na &#x15B;ledzenie reklamowe).</p><p>Nast&#x119;pnie, opr&#xF3;cz konfiguracji filtr&#xF3;w do &#x142;atwiejszej analizy informacji, celi do mierzenia kluczowych interakcji dla klienta i realizacji punkt&#xF3;w na &#x15B;cie&#x17C;ce zakupowej, zadba&#x142;em o:</p><ul><li>prawid&#x142;owe wdro&#x17C;enie mechanizmu User ID, dzi&#x119;ki czemu mo&#x17C;liwe staje si&#x119; p&#xF3;&#x17A;niej analizowanie LTV (ang. long-term value) klienta i poziomu jego lojalizacji (co jest kluczowe przy wieloetapowej &#x15B;cie&#x17C;ce)</li><li>przesy&#x142;anie danych o odbiorcach na bie&#x17C;&#x105;co do rozwi&#x105;za&#x144; reklamowych, dzi&#x119;ki czemu mo&#x17C;emy odr&#xF3;&#x17C;nia&#x107; bezproblemowo u&#x17C;ytkownik&#xF3;w nowych, od powracaj&#x105;cych</li></ul><p>Dalej, wraz z rozbudowaniem oferty produktowej przygotowa&#x142;em &#x15B;cie&#x17C;ki klienta - strony l&#x105;dowania z odpowiedni&#x105; zawarto&#x15B;ci&#x105;, skonfigurowa&#x142;em system do automatyzacji marketingu (w tym komunikacji e-mailowej), dbania o poziom retencji klient&#xF3;w, zbierania i analizowania feedbacku itd.</p><p>Dzi&#x119;ki temu klient dosta&#x142; sprawny zestaw, kt&#xF3;ry po uruchomieniu dostarcza&#x142; konkretne dane biznesowe i nastawiony zosta&#x142; na analiz&#x119; d&#x142;ugotrwa&#x142;ej relacji z ko&#x144;cowym konsumentem. Dodatkowo zosta&#x142;y stworzone powiadomienia na potencjalne, niepokoj&#x105;ce wydarzenia i wdro&#x17C;ono pomiar nieprawid&#x142;owo&#x15B;ci funkcjonowania sklepu po stronie klienta (np. b&#x142;&#x119;dy w kodach JavaScript).</p><h1 id="kampania-facebook">Kampania Facebook</h1><p>Po skonfigurowaniu &#x15B;ledzenia reklamowego, analityki i dostosowaniu produktu, kampania reklamowa obj&#x119;&#x142;a nast&#x119;puj&#x105;c&#x105; konstrukcj&#x119;:</p><ul><li>pierwsza &#x15B;cie&#x17C;ka klienta prowadzi&#x142;a poprzez produkty po&#x15B;rednie do produktu ko&#x144;cowego poprzez e-mail marketing</li><li>druga skupia&#x142;a si&#x119; na promowaniu webinaru, na kt&#xF3;rym sprzedawano finalny produkt</li></ul><p>W ka&#x17C;dym z wariant&#xF3;w zastosowano nast&#x119;puj&#x105;ce rozwi&#x105;zania:</p><ul><li>dedykowane kreacje video z historiami kursant&#xF3;w i pozytywnymi opiniami</li><li>materia&#x142;y odpowiadaj&#x105;ce na najcz&#x119;stsze w&#x105;tpliwo&#x15B;ci grupy docelowej</li><li>przypomnienia o ko&#x144;cz&#x105;cych si&#x119; rabatach/mo&#x17C;liwo&#x15B;ciach zakupu produktu, promowanie systemu ratalnego jako domy&#x15B;lnego w p&#x142;atno&#x15B;ci</li><li>chat i komunikacj&#x119; mejlow&#x105; w celu zadbania o jak najlepsze wra&#x17C;enia klienta przed zakupem produktu</li></ul><h1 id="wyniki">Wyniki</h1><p>Dzi&#x119;ki umiej&#x119;tnie zaplanowanym dzia&#x142;aniom i sprawnej reakcji na otaczaj&#x105;ce zjawiska, uda&#x142;o si&#x119;:</p><ul><li>wygenerowa&#x107; 1,5 mln PLN przychodu przy bud&#x17C;ecie mediowym wynosz&#x105;cym prawie 100 000 PLN</li><li>zwi&#x119;kszenie % konwersji do satysfakcjonuj&#x105;cego poziomu, poprawienie wynik&#xF3;w w postaci wi&#x119;kszego zasi&#x119;gu klient&#xF3;w</li><li>zadba&#x107; o wysoki poziom konwersji w &#x15B;cie&#x17C;ce sprzeda&#x17C;owej (m.in. poprzez wdro&#x17C;enie marketing automation i umiej&#x119;tnym zaprogramowaniu oraz testowaniu scenariuszy)</li><li>w wynikach ankiet: poprawi&#x107; wra&#x17C;enia z wykonania produktu, jego jako&#x15B;ci i przydatno&#x15B;ci w realizacji cel&#xF3;w przez klient&#xF3;w</li></ul>]]></content:encoded></item><item><title><![CDATA[Ponad milion złotych przychodu w e-commerce z kampanii Google Ads]]></title><description><![CDATA[Klientem jest firma zajmująca się sprzedażą asortymentu budowlanego, remontowego i ogrodniczego. Dotychczas firma nie miała dużego doświadczenia w segmencie e-commerce i całą sprzedaż opierała o lokalny punkt sprzedaży i kontrakty B2B.]]></description><link>https://kacperduras.pl/ponad-milion-zlotych-przychodu-w-e-commerce-z-kampanii-google-ads/</link><guid isPermaLink="false">6547ef641a7c16ab49ec6149</guid><category><![CDATA[Case studies]]></category><category><![CDATA[Google]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sat, 18 Jun 2022 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1654277041042-8927699fcfd2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHxnb29nbGUlMjBhZHN8ZW58MHx8fHwxNjk5MjEzMjAzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<h1 id="o-kliencie">O kliencie</h1><img src="https://images.unsplash.com/photo-1654277041042-8927699fcfd2?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHxnb29nbGUlMjBhZHN8ZW58MHx8fHwxNjk5MjEzMjAzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Ponad milion z&#x142;otych przychodu w e-commerce z kampanii Google Ads"><p>Klientem jest firma zajmuj&#x105;ca si&#x119; sprzeda&#x17C;&#x105; asortymentu budowlanego, remontowego i ogrodniczego. Dotychczas firma nie mia&#x142;a du&#x17C;ego do&#x15B;wiadczenia w segmencie e-commerce i ca&#x142;&#x105; sprzeda&#x17C; opiera&#x142;a o lokalny punkt sprzeda&#x17C;y i kontrakty B2B.</p><h1 id="wyzwanie">Wyzwanie</h1><p>Firma chcia&#x142;a uruchomi&#x107; si&#x119; na og&#xF3;lnopolsk&#x105; sprzeda&#x17C; i dostosowa&#x142;a pod to logistyk&#x119; obs&#x142;ugi zam&#xF3;wie&#x144;. Wykona&#x142;a profesjonalny sklep internetowy na platformie Shoper Premium zgodny z najlepszymi praktykami pod k&#x105;tem UI/UX, lecz niestety nie ma do&#x15B;wiadczenia w prowadzeniu p&#x142;atnych dzia&#x142;a&#x144; reklamowych.</p><p>Najwi&#x119;kszymi problemami po przeanalizowaniu ca&#x142;ej sytuacji jest:</p><ul><li>sezonowo&#x15B;&#x107; asortymentu: bran&#x17C;a budowlana jest bardzo podatna na zewn&#x119;trzne czynniki, co rzutuje na cz&#x119;stotliwo&#x15B;&#x107; wydatk&#xF3;w reklamowych niezb&#x119;dnych do realizacji celu</li><li>brak danych: dotychczas firma nie prowadzi&#x142;a dzia&#x142;a&#x144; reklamowych w Internecie</li><li>niew&#x142;a&#x15B;ciwe integracje analityczne: firma realizuj&#x105;ca sklep skonfigurowa&#x142;a narz&#x119;dzia do reklam niepoprawnie, przez co pierwsze, samodzielne pr&#xF3;by uruchomienia reklam przez mojego klienta by&#x142;y nieskuteczne</li><li>du&#x17C;a konkurencja: znaczn&#x105; cz&#x119;&#x15B;&#x107; produkt&#xF3;w indeksowa&#x142;a si&#x119; wraz z bran&#x17C;owym konkurentem, kt&#xF3;ry prowadzi&#x142; w czasie startu agresywne kampanie reklamowe (w tym wizerunkowe)</li><li>nierozpoznawalno&#x15B;&#x107; marki: sklep jest nowy, st&#x105;d brakuje opinii i wiarygodno&#x15B;ci w Internecie o dzia&#x142;alno&#x15B;ci</li></ul><h1 id="konfiguracja-analityki">Konfiguracja analityki</h1><p>Pierwszym krokiem jaki zrealizowa&#x142;em by&#x142;o skonfigurowanie poprawnie &#x15B;ledzenia interakcji u&#x17C;ytkownik&#xF3;w. W tym celu zrealizowa&#x142;em, niezale&#x17C;nie od platformy Shoper, integracj&#x119; Google Tag Manger typu&#xA0;<em>server-side&#xA0;</em>(dzi&#x119;ki czemu zwi&#x119;kszy&#x142;em dok&#x142;adno&#x15B;&#x107; &#x15B;ledzenia i omin&#x105;&#x142;em problemy zwi&#x105;zane z tzw. plikami cookies:&#xA0;<a href="https://kacperduras.pl/post/jakie-zmiany-przynosi-ios14/" rel="noreferrer">kliknij tutaj</a>)<em>&#xA0;</em>i zadba&#x142;em o zgodno&#x15B;&#x107; &#x15B;ledzenia zgodnie z przepisami RODO (konieczno&#x15B;&#x107; egzekwowania zgody na &#x15B;ledzenie reklamowe).</p><p>Nast&#x119;pnie, opr&#xF3;cz konfiguracji filtr&#xF3;w do &#x142;atwiejszej analizy informacji, celi do mierzenia kluczowych interakcji dla klienta i realizacji punkt&#xF3;w na &#x15B;cie&#x17C;ce zakupowej, zadba&#x142;em o:</p><ul><li>prawid&#x142;owe wdro&#x17C;enie mechanizmu User ID, dzi&#x119;ki czemu mo&#x17C;liwe staje si&#x119; p&#xF3;&#x17A;niej analizowanie LTV (ang. long-term value) klienta i poziomu jego lojalizacji</li><li>integracj&#x119; CRMu klienta z Google Analytics do tworzenia zestawie&#x144; poziomu wydatk&#xF3;w do sprzeda&#x17C;y, na podstawie danych o mar&#x17C;ach ze systemu, dzi&#x119;ki czemu skupiali&#x15B;my si&#x119; na produktach, kt&#xF3;ry daj&#x105; realny doch&#xF3;d</li><li>przesy&#x142;anie danych o odbiorcach na bie&#x17C;&#x105;co do rozwi&#x105;za&#x144; reklamowych, dzi&#x119;ki czemu mo&#x17C;emy odr&#xF3;&#x17C;nia&#x107; bezproblemowo u&#x17C;ytkownik&#xF3;w nowych, od powracaj&#x105;cych</li></ul><p>Dzi&#x119;ki temu klient dosta&#x142; sprawny zestaw, kt&#xF3;ry po uruchomieniu dostarcza&#x142; konkretne dane biznesowe i nastawiony zosta&#x142; na analiz&#x119; d&#x142;ugotrwa&#x142;ej relacji z ko&#x144;cowym konsumentem. Dodatkowo zosta&#x142;y stworzone powiadomienia na potencjalne, niepokoj&#x105;ce wydarzenia i wdro&#x17C;ono pomiar nieprawid&#x142;owo&#x15B;ci funkcjonowania sklepu po stronie klienta (np. b&#x142;&#x119;dy w kodach JavaScript).</p><h1 id="kampanie-google-ads">Kampanie Google Ads</h1><p>Po skonfigurowaniu &#x15B;ledzenia reklamowego i narz&#x119;dzi analitycznych uruchomili&#x15B;my kampanie produktowe (a p&#xF3;&#x17A;niej Performance Max). W ramach tej cz&#x119;&#x15B;ci dzia&#x142;a&#x144;:</p><ul><li>zaimplementowa&#x142;em mierzenie Opinii konsumenckich, dzi&#x119;ki czemu sklep po ka&#x17C;dej transakcji zdobywa opinie natychmiastowo widoczne w Google i buduje swoj&#x105; wiarygodno&#x15B;&#x107;</li><li>skorzystali&#x15B;my w tzw. zewn&#x119;trznej por&#xF3;wnywarki cenowej, dzi&#x119;ki czemu prowizja 20% nak&#x142;adana do reklam przez Google sta&#x142;a si&#x119; dla nas neutralna i wi&#x119;cej &#x15B;rodk&#xF3;w przeznaczali&#x15B;my na agresywniejsze dzia&#x142;ania</li><li>zadba&#x142;em o jako&#x15B;ciowe informacje o produktach, uzupe&#x142;niaj&#x105;c wszystkie mo&#x17C;liwe dane o asortymencie i testuj&#x105;c r&#xF3;&#x17C;ne warianty prezentowania danych (m.in. por&#xF3;wnywa&#x142;em tytu&#x142;y, opisy, s&#x142;owa kluczowe i zdj&#x119;cia)</li><li>skonfigurowa&#x142;em wszystkie zasoby wymagane przez kampanie, &#x142;&#x105;cznie z dedykowanymi materia&#x142;ami video dostarczonymi przez klienta</li><li>stworzy&#x142;em podzia&#x142; produkt&#xF3;w w kampaniach wed&#x142;ug dotychczasowego podzia&#x142;u kategorii w sklepie, celem wybadania potencja&#x142;u poszczeg&#xF3;lnych segment&#xF3;w</li></ul><h1 id="realizacja-optymalizacji">Realizacja optymalizacji</h1><p>Kolejnym etapem pozosta&#x142;a realizacja optymalizacji - tutaj zastosowa&#x142;em nast&#x119;puj&#x105;ce rozwi&#x105;zania:</p><ul><li>po zebraniu danych o najlepszych produktach i ocenie na podstawie danych historycznych ze sprzeda&#x17C;y stacjonarnej - z klientem wybrali&#x15B;my asortyment o przeznaczeniu ca&#x142;orocznym, wydzielili&#x15B;my z klientem ofert&#x119; do osobnej kampanii, kt&#xF3;ra zosta&#x142;a skonfigurowana w celu skupiania si&#x119; nad pozyskiwaniem nowego konsumenta</li><li>wykluczyli&#x15B;my z kampanii produktowych produkty o ma&#x142;ym obrocie i niskim poziomie mar&#x17C;y. Stworzy&#x142;em na nie dedykowan&#x105; kampani&#x119; remarketingow&#x105;, skupiaj&#x105;c si&#x119; na tzw. wspomaganiu realizacji konwersji, tj. zakupu</li><li>w celu zr&#xF3;wnowa&#x17C;enia problemu zwi&#x105;zanego z sezonowo&#x15B;ci&#x105; asortymentu,&#xA0;<em>produkty niestabilne&#xA0;</em>(tj. takie, kt&#xF3;rych sprzeda&#x17C; r&#xF3;&#x17C;ni si&#x119; drastycznie od dnia i jest powi&#x105;zana np. z pogod&#x105;) wydzieli&#x142;em do osobnych kampanii i wdro&#x17C;y&#x142;em oznaczenia specjaln&#x105; etykiet&#x105; w celu realizowania pod nie osobnej strategii</li><li>pozosta&#x142;e produkty podzieli&#x142;em na w&#x119;&#x17C;sze kategorie i skonfigurowa&#x142;em pod realizacj&#x119; cel&#xF3;w kwartalnych</li><li>stworzy&#x142;em kampani&#x119; na wyszukiwark&#x119; pod odbiorc&#xF3;w z naszej strony internetowej, dzi&#x119;ki kt&#xF3;rej ratujemy przed realizacj&#x105; transakcji u konkurencji</li></ul><p>Nast&#x119;pnie zacz&#x119;li&#x15B;my dba&#x107; o lojalizowanie klienta, m.in. poprzez cykliczny newsletter, precyzyjne kampanie SMS (dzi&#x119;ki marketing automation), czyli stopniowo zwi&#x119;ksza&#x107; LTV bez udzia&#x142;u p&#x142;atnych kampanii reklamowych.</p><h1 id="wyniki">Wyniki</h1><p>Dzi&#x119;ki umiej&#x119;tnie zaplanowanym dzia&#x142;aniom i sprawnej reakcji na otaczaj&#x105;ce zjawiska, uda&#x142;o si&#x119;:</p><ul><li>po pierwszym miesi&#x105;cu zapewni&#x107; solidny w odczuciu klienta poziom rentowno&#x15B;ci z kampanii reklamowych, generuj&#x105;c &#x142;&#x105;cznie ponad 1 mln PLN obrotu</li><li>obni&#x17C;y&#x107; koszt powracaj&#x105;cego klienta i oddzieli&#x107; rodzaj p&#x142;atnych reklam pod nowych, jak i lojalnych klient&#xF3;w</li><li>zadba&#x107; o wysoki poziom konwersji w &#x15B;cie&#x17C;ce sprzeda&#x17C;owej (m.in. poprzez wdro&#x17C;enie marketing automation i umiej&#x119;tnym zaprogramowaniu oraz testowaniu scenariuszy)</li><li>skupi&#x107; si&#x119; na rentowno&#x15B;ci w momentach spadku sprzeda&#x17C;y, a w okresie nag&#x142;ego wzrostu na maksymalnym wykorzystaniu potencja&#x142;u ruchu i intensywnym zwi&#x119;kszaniu obecno&#x15B;ci w wyszukiwarce Google</li><li>zapewni&#x107; solidne podstawy pod uruchomienie innych rozwi&#x105;za&#x144; reklamowych, m.in. Bing Ads i Meta (Facebook) Ads</li></ul>]]></content:encoded></item><item><title><![CDATA[Jakie zmiany w sieciach reklamowych przynosi Apple?]]></title><description><![CDATA[Wraz z aktualizacją do iOS 14, wprowadzono system AppTrackingTransparency, zapewniający odbiorcom urządzeń większą kontrolę nad udostępnianiem informacji.]]></description><link>https://kacperduras.pl/jakie-zmiany-przynosi-ios14/</link><guid isPermaLink="false">6547e6a41a7c16ab49ec6127</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Wed, 30 Dec 2020 23:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1563203369-26f2e4a5ccf7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhcHBsZSUyMHxlbnwwfHx8fDE2OTkyMTExNjN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1563203369-26f2e4a5ccf7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxhcHBsZSUyMHxlbnwwfHx8fDE2OTkyMTExNjN8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Jakie zmiany w sieciach reklamowych przynosi Apple?"><p>System operacyjny firmy Apple iOS (dawniej: iPhone OS) to dedykowane rozwi&#x105;zanie dla urz&#x105;dze&#x144; produkcji tej samej firmy. Oprogramowanie powsta&#x142;e w 2007 przetrwa&#x142;o do dnia dzisiejszego i doczeka&#x142;o si&#x119; aktualizacji do wersji oznaczonej numerem 14. Aktualizacja wprowadzi&#x142;a now&#x105; rzeczywisto&#x15B;&#x107; dla &#x15B;wiata digital marketingu, w kt&#xF3;rej s&#x142;owa &quot;dane&quot; i &quot;prywatno&#x15B;&#x107;&quot; odmieniane s&#x105; przez wszystkie przypadki, a gdzie rol&#x119; g&#x142;&#xF3;wn&#x105; odgrywa nie tylko iOS, ale tak&#x17C;e ca&#x142;y ekosystem firmy Apple (m.in. iPadOS i tvOS).</p><ol><li><a href="#co-to-jest-apptrackingtransparency" rel="noreferrer">Co to jest AppTrackingTransparency?</a></li><li><a href="#znaczenie-apptrackingtransparency" rel="noreferrer">Znaczenie AppTrackingTransparency</a></li><li><a href="#jak-wdro-y-apptrackingtransparency" rel="noreferrer">Jak wdro&#x17C;y&#x107; AppTrackingTransparency?</a></li><li><a href="#podej-cie-platform-reklamowych" rel="noreferrer">Podej&#x15B;cie platform reklamowych</a></li></ol><h2 id="co-to-jest-apptrackingtransparency">Co to jest AppTrackingTransparency?</h2><p>Wraz z aktualizacj&#x105; oprogramowania do iOS 14, firma Apple wprowadzi&#x142;a nowy&#xA0;<a href="https://developer.apple.com/app-store/user-privacy-and-data-use/?ref=kacperduras.pl" rel="noreferrer">system AppTrackingTransparency</a>, zapewniaj&#x105;cy odbiorcom urz&#x105;dze&#x144; wi&#x119;ksz&#x105; kontrol&#x119; nad udost&#x119;pnianiem informacji. AppTrackingTransparency to standard &#x15B;ledzenia danych dla urz&#x105;dze&#x144; Apple, gwarantuj&#x105;cy nadz&#xF3;r nad udost&#x119;pnianiem szczeg&#xF3;&#x142;&#xF3;w odbiorc&#xF3;w podmiotom trzecim.</p><p>AppTrackingTransparency narzuca dla tw&#xF3;rc&#xF3;w aplikacji pod system Apple tworzenie przejrzystych informacji odno&#x15B;nie zbieranych danych, jak i definiuje spos&#xF3;b przesy&#x142;ania danych dla cel&#xF3;w reklamowych (w&#x142;&#x105;czaj&#x105;c w to funkcj&#x119; statystyczn&#x105;, kreacyjn&#x105; itd.), zmieniaj&#x105;c do&#x15B;wiadczenia odbiorc&#xF3;w z ko&#x144;cowym oprogramowaniem. Przyk&#x142;adem nowego nawyku dla u&#x17C;ytkownik&#xF3;w aplikacji mog&#x105; by&#x107; eksponowane powiadomienia, zwi&#x105;zane z udzieleniem uprawnie&#x144; na &#x15B;ledzenie interakcji.</p><h2 id="znaczenie-apptrackingtransparency">Znaczenie AppTrackingTransparency</h2><p>Wprowadzenie przez Apple standardu AppTrackingTransparency zmienia perspektyw&#x119; postrzegania rozwi&#x105;za&#x144; reklamowych. Dotychczasowe rozwi&#x105;zania bazowa&#x142;y na integracjach firm trzecich (np. Google, Facebook), kt&#xF3;re bezpo&#x15B;rednio zbiera&#x142;y dane i przetwarza&#x142;y na swoje wewn&#x119;trzne potrzeby. Od czasu wprowadzenia, Apple stawia siebie jako po&#x15B;rednika w obrocie informacjami: od niego zale&#x17C;y jakie informacje udost&#x119;pni dalej (i czy w og&#xF3;le to zrobi) i kiedy (albowiem w ramach nowego protoko&#x142;u, wymiar czasowy kolporta&#x17C;u informacji mo&#x17C;e by&#x107; ograniczony).</p><p>Z jednej strony, podej&#x15B;cie Apple jest prokonsumenckie i stanowi element wi&#x119;kszej strategii, kt&#xF3;r&#x105; mo&#x17C;na podsumowa&#x107; has&#x142;em reklamowym&#xA0;<em>Privacy. That&apos;s iPhone.</em> Dzia&#x142;ania cyfrowego giganta od d&#x142;u&#x17C;szego czasu zmierzaj&#x105; ku jeszcze wi&#x119;kszego zamkni&#x119;ciu si&#x119; na zewn&#x119;trzne rozwi&#x105;zania firm konkurencyjnych (np. limituj&#x105;c &#x17C;ywotno&#x15B;&#x107; plik&#xF3;w cookies w przegl&#x105;darce Safari).&#xA0;<a href="https://www.washingtonpost.com/technology/2020/12/16/facebook-apple-idfa-ios14-small-business/?ref=kacperduras.pl" rel="noreferrer">Na szczeg&#xF3;ln&#x105; uwag&#x119; zas&#x142;uguj&#x105; tutaj dzia&#x142;ania lobbingowe Facebooka, maj&#x105;ce na celu powstrzymanie wprowadzanych zmian.</a></p><p>Druga strona medalu pozwala podda&#x107; pod w&#x105;tpliwo&#x15B;&#x107; zasadno&#x15B;&#x107; idei Apple ws. prywatno&#x15B;ci. Najcz&#x119;stsza podnoszona w debacie publicznej argumentacja:</p><ul><li>Apple poprzez ograniczanie personalizacji reklam obni&#x17C;a warto&#x15B;&#x107; danych odbiorc&#xF3;w, a co za tym idzie: ich ko&#x144;cowe do&#x15B;wiadczenia ws. preferencji reklam</li><li>Reklamodawcy w przysz&#x142;o&#x15B;ci b&#x119;d&#x105; mie&#x107; problemy z efektywnym mierzeniem efekt&#xF3;w dzia&#x142;a&#x144;</li><li>Sieci reklamowe przestan&#x105; segmentowa&#x107; odbiorc&#xF3;w do konkretnych podgrup, przez co dzia&#x142;ania na ma&#x142;ych bud&#x17C;etach przestan&#x105; si&#x119; op&#x142;aca&#x107;</li><li>Koszta zwi&#x105;zane z modyfikacj&#x105; obecnych aplikacji i ich bie&#x17C;&#x105;c&#x105; obs&#x142;ug&#x105; stan&#x105; si&#x119; dro&#x17C;sze</li></ul><p>Najwa&#x17C;niejszym jednak punktem sporu jest poziom uprawnie&#x144; Apple, kt&#xF3;ry dalej ma swobodny dost&#x119;p o informacji o swoich u&#x17C;ytkownikach i mo&#x17C;e nimi dysponowa&#x107; w niezmienny wzgl&#x119;dem stanu poprzedniego spos&#xF3;b.</p><h2 id="jak-wdro%C5%BCy%C4%87-apptrackingtransparency">Jak wdro&#x17C;y&#x107; AppTrackingTransparency?</h2><p>Apple na potrzeby implementacji AppTrackingTransparency udost&#x119;pni&#x142;&#xA0;<em>SKAdNetwork</em>, czyli dedykowane API pod dzia&#x142;ania maj&#x105;ce na celu &#x15B;ledzenie informacji o odbiorcach. Ca&#x142;y protok&#xF3;&#x142; mo&#x17C;na podzieli&#x107; na trzy nisze:</p><ul><li>nisza dla w&#x142;a&#x15B;cicieli system&#xF3;w reklamowych</li><li>nisza dla programist&#xF3;w</li><li>nisza dla reklamodawc&#xF3;w</li></ul><p>Schemat dzia&#x142;ania ca&#x142;ego rozwi&#x105;zania jest nast&#x119;puj&#x105;cy:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://docs-assets.developer.apple.com/published/8a6cc91fb2/rendered2x-1666381220.png" class="kg-image" alt="Jakie zmiany w sieciach reklamowych przynosi Apple?" loading="lazy"><figcaption><span style="white-space: pre-wrap;">&#x179;r&#xF3;d&#x142;o: Apple Developers</span></figcaption></figure><h3 id="w%C5%82a%C5%9Bciciele-system%C3%B3w-reklamowych">W&#x142;a&#x15B;ciciele system&#xF3;w reklamowych</h3><p>Tw&#xF3;rcy sieci reklamowych maj&#x105; obowi&#x105;zek by&#x107; zarejestrowani w ramach&#xA0;<a href="https://developer.apple.com/documentation/storekit/skadnetwork/registering_an_ad_network?ref=kacperduras.pl" rel="noreferrer">specjalnego rejestru</a>. Administratorzy rozwi&#x105;za&#x144; marketingowych s&#x105; odpowiedzialni za komunikacj&#x119; z Apple i autoryzowaniem &#x17A;r&#xF3;de&#x142; pochodzenia okre&#x15B;lonych konwersji. Jednocze&#x15B;nie, maj&#x105; za zadanie obs&#x142;ugiwa&#x107; na bie&#x17C;&#x105;co podmioty, chc&#x105;ce skorzysta&#x107; z reklam dla system&#xF3;w Apple w ramach poszczeg&#xF3;lnego systemu. Weryfikacja odbywa si&#x119; poprzez sygnowanie zapyta&#x144; dedykowanymi kluczami.</p><h3 id="programi%C5%9Bci">Programi&#x15B;ci</h3><p>Programi&#x15B;ci przy projektowaniu aplikacji maj&#x105; za zadanie dostosowania &#x15B;cie&#x17C;ek odbiorc&#xF3;w w taki spos&#xF3;b, by program w przewidywalny dla odbiorcy spos&#xF3;b wysy&#x142;a&#x142; informacje o zbieraniu danych. Ponadto, musz&#x105; za&#x142;&#x105;czy&#x107; w kodzie &#x17A;r&#xF3;d&#x142;owym odpowiednie funkcje definiuj&#x105;ce moment za&#x142;&#x105;czenia nas&#x142;uchu informacji (i u&#x17C;ytkownika, kt&#xF3;ry jest przypisany do specjalnego, identyfikacyjnego klucza), jak i chwil&#x119; realizacji konwersji.</p><h3 id="reklamodawcy">Reklamodawcy</h3><p>Reklamodawcy w tym wszystkim maj&#x105; najprostsze zadanie - musz&#x105; sprawdzi&#x107;, czy faktycznie aplikacja zg&#x142;asza wszystkie zdarzenia. Warto tutaj zaznaczy&#x107;, i&#x17C; ca&#x142;y system mo&#x17C;e op&#xF3;&#x17A;nia&#x107; raportowanie zdarze&#x144; (poprzez uruchomienie timera, kt&#xF3;ry sprawdza po pewnym czasie dane), przez co wyniki w kampaniach mog&#x105; by&#x107; zaburzone (w abstrakcyjnych przypadkach: a&#x17C; 3 dni).</p><h2 id="podej%C5%9Bcie-platform-reklamowych">Podej&#x15B;cie platform reklamowych</h2><p>Sieci reklamowe takie jak Facebook, czy Google, udost&#x119;pniaj&#x105; w&#x142;asne integracje, spi&#x119;te z ich ekosystemami reklamowymi. Pomimo jednak wyci&#x105;gni&#x119;cia pomocnej d&#x142;oni dla programist&#xF3;w, ograniczaj&#x105; pole dla reklamodawc&#xF3;w. Przyk&#x142;adem mo&#x17C;e by&#x107; podej&#x15B;cie Facebooka, kt&#xF3;ry:</p><ul><li>narzuca wydzielenie zestaw&#xF3;w reklamowych promuj&#x105;cych aplikacje iOS do osobnych kampanii (i ogranicza ich ilo&#x15B;&#x107;)</li><li>likwiduje model atrybucji maj&#x105;cy 28 dni (<a href="https://www.searchenginejournal.com/facebook-ads-to-remove-28-day-attribution-model/382436/?ref=kacperduras.pl" rel="noreferrer">zmiana wprowadzona ze znacznym wyprzedzeniem</a>) i ogranicza maksymalny czas trwania na 7 dni</li><li>ogranicza ilo&#x15B;&#x107; zdarze&#x144; w Facebook Pixel do 8 rodzaj&#xF3;w (i&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-ustawianie-standardowych-zdarzen/" rel="noreferrer">jednocze&#x15B;nie zaleca stosowanie g&#x142;&#xF3;wnie zdarze&#x144; standardowych</a>)</li><li>usuwa segmentacje dla kampanii iOS wzgl&#x119;dem danych demograficznych (wiek, lokalizacja itd.)</li></ul><p><a href="https://www.adexchanger.com/mobile/googles-quiet-preparations-for-apples-idfa-change-offers-hints-on-the-future-of-its-own-mobile-ad-id/?ref=kacperduras.pl" rel="noreferrer">Z kolei Google postawi&#x142;o na dzia&#x142;ania bardziej spokojne</a>, wprowadzaj&#x105;c swoje modyfikacje, m.in. w ramach us&#x142;ugi&#xA0;<a href="https://developers.google.com/admob/ios/ios14?ref=kacperduras.pl" rel="noreferrer">Google AdMob</a>&#xA0;(emitenta reklam dla aplikacji mobilnych). Nast&#x119;pnie,&#xA0;<a href="https://ads.tiktok.com/help/article?aid=9654&amp;ref=kacperduras.pl" rel="noreferrer">TikTok w ramach swojego systemu zliczania atrybucji z reklam polega na zewn&#x119;trznych partnerach</a>, przez co integracje z ich systemem reklamowym nie zale&#x17C;&#x105; bezpo&#x15B;rednio od nich. Z kolei Pinterest i LinkedIn na chwil&#x119; pisania artyku&#x142;u, nie opublikowali &#x17C;adnych wi&#x119;kszych zmian w tym zakresie.</p><p>AppTrackingTransparency jest rewolucj&#x105; dla bran&#x17C;y digital marketingu: jaki ono wywrze faktyczny wp&#x142;yw na otaczaj&#x105;cy nas &#x15B;wiat, czas zweryfikuj&#x119;. Nie mniej, konieczno&#x15B;&#x107; i czas narzucaj&#x105; dostosowanie si&#x119; do zmian, a na to warto by&#x107; zawsze przygotowanym.</p>]]></content:encoded></item><item><title><![CDATA[O co chodzi z Offline Conversions API?]]></title><description><![CDATA[API konwersji offline to rozwiązanie ułatwiające mierzenie fizycznych interakcji odbiorców i łączenie ze zdarzeniami zrealizowanymi cyfrowo.]]></description><link>https://kacperduras.pl/facebook-offline-conversions-api-co-to-jest/</link><guid isPermaLink="false">6547e0551a7c16ab49ec610f</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Thu, 24 Dec 2020 23:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1633675254053-d96c7668c3b8?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGZhY2Vib29rfGVufDB8fHx8MTY5OTIxMDE2Mnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1633675254053-d96c7668c3b8?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGZhY2Vib29rfGVufDB8fHx8MTY5OTIxMDE2Mnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="O co chodzi z Offline Conversions API?"><p>API konwersji offline (ang. Offline Conversions API) to rozwi&#x105;zanie u&#x142;atwiaj&#x105;ce mierzenie fizycznych interakcji odbiorc&#xF3;w i &#x142;&#x105;czenie ze zdarzeniami zrealizowanymi cyfrowo. Integracja tego typu pozwala przy odpowiednim pokryciu &#x15B;cie&#x17C;ki zakupowej klienta, &#x15B;ledzi&#x107; skuteczno&#x15B;&#x107; dzia&#x142;a&#x144;, kt&#xF3;rych ko&#x144;cowe wska&#x17A;niki efektywno&#x15B;ci mog&#x105; by&#x107; zrealizowane na wiele r&#xF3;&#x17C;nych sposob&#xF3;w. Co wi&#x119;cej, za&#x142;&#x105;czenie Offline Conversions API umo&#x17C;liwia dok&#x142;adniejsze segmentowanie docelowej audiencji i dotarcie do nich ponownie, poprzez sie&#x107; reklamow&#x105; Facebook.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#zastosowania-offline-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Zastosowanie Offline Conversions API</span></a></li><li value="2"><a href="#wady-offline-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Wady Offline Conversions API</span></a></li><li value="3"><a href="#jak-dzia-a-meta-facebook-offline-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a Meta (Facebook) Offline Conversions API?</span></a></li></ol></div>
        </div><h2 id="zastosowania-offline-conversions-api">Zastosowania Offline Conversions API</h2><p>Meta (Facebook) Offline Conversions API jest rozwi&#x105;zaniem serwerowym (ang.&#xA0;<em>server-side</em>), przeznaczonym do przesy&#x142;ania wi&#x119;kszych ilo&#x15B;ci danych o odbiorcach korzystaj&#x105;cych z naszych us&#x142;ug poza standardow&#x105;, internetow&#x105; &#x15B;cie&#x17C;k&#x105;. Jest to narz&#x119;dzie komplementarne do analityki internetowej, jak&#x105; oferuj&#x119; nam&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-co-to-jest/" rel="noreferrer">Meta (Facebook) Pixel</a>&#xA0;i&#xA0;<a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/" rel="noreferrer">Meta (Facebook) Conversions API</a>.</p><p>API konwersji offline idealnie sprawdzi si&#x119; w po&#x142;&#x105;czeniu z mierzeniem takich interakcji jak:</p><ul><li>zakup przy kasie (z u&#x17C;yciem np. karty lojalno&#x15B;ciowej lub innej metody p&#x142;atno&#x15B;ci, kt&#xF3;ra umo&#x17C;liwia identyfikacj&#x119;)</li><li>zam&#xF3;wienia telefoniczne</li><li>inne czynno&#x15B;ci, realizowane poza kana&#x142;em online</li></ul><p>Jest to o tyle szczeg&#xF3;lnie istotne, i&#x17C; zachowania u&#x17C;ytkownik&#xF3;w podlegaj&#x105; ci&#x105;g&#x142;ej ewolucji. Gwarantem zachowania jako&#x15B;ci danych, a co za tym idzie, analiz i podejmowanych na podstawie nich decyzji, jest &#x15B;cis&#x142;a kontrola przep&#x142;ywu informacji, jakie pozostawiaj&#x105; odbiorcy i spos&#xF3;b ich grupowania.</p><h2 id="wady-offline-conversions-api">Wady Offline Conversions API</h2><p>Interfejs programistyczny Mety (Facebooka) pozwala dotrze&#x107; do wielu segment&#xF3;w odbiorc&#xF3;w (w tym kompletnie nowych), jak i jednocze&#x15B;nie dostarcza bardziej szczeg&#xF3;&#x142;owe informacje dot. aktualnej audiencji. Wi&#x105;&#x17C;e si&#x119; to jednak z pewnymi utrudnieniami,&#xA0;<a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/" rel="noreferrer">kt&#xF3;re pokr&#xF3;tce opisa&#x142;em w moim wpisie dotycz&#x105;cego Meta (Facebook) Conversions API</a>, a kt&#xF3;re ponownie przytocz&#x119; poni&#x17C;ej:</p><ul><li><strong>wymagana wiedza programistyczna</strong>: za&#x142;&#x105;czenie tego rozwi&#x105;zania jest niemo&#x17C;liwe bez posiadania specjalistycznej wiedzy. Mimo obecno&#x15B;ci ju&#x17C; gotowych rozwi&#x105;za&#x144; na rynku dochodzi szereg problem&#xF3;w na etapie serwisowania oprogramowania (m.in. elastyczno&#x15B;&#x107; podpi&#x119;cia, aktualizacje itd.). Dzia&#x142;ania tego typu wymagaj&#x105; przeznaczenia odpowiednich zasob&#xF3;w (finansowych i/lub czasowych)</li><li><strong>problem ze skalowaniem</strong>: popularne narz&#x119;dzie Meta (Facebook) Pixel wysy&#x142;a informacje po stronie klienta (ang.&#xA0;<em>client-side</em>) &#x2014; jedynym obowi&#x105;zkiem os&#xF3;b dokonuj&#x105;cych integracji, jest zainstalowanie odpowiedniego skryptu &#x15B;ledz&#x105;cego i oznaczenie miejsc raportowania (<a href="http://web.archive.org/web/20230331060947/https://kacperduras.pl/post/facebook-pixel-co-to-jest/">szczeg&#xF3;&#x142;owo opisa&#x142;em to tutaj</a>). Przy Offline Conversions API, bardzo wa&#x17C;ne jest uwzgl&#x119;dnienie obci&#x105;&#x17C;enia przy zbieraniu i przesy&#x142;aniu informacji do Facebooka, jak i tak samo &#x17A;r&#xF3;d&#x142;a, kt&#xF3;re r&#xF3;&#x17C;ni&#x105; si&#x119; w zale&#x17C;no&#x15B;ci od obranej logiki biznesowej (np. kasowniki, CRMy)</li><li><strong>szczeg&#xF3;&#x142;owa analiza &#x15B;cie&#x17C;ek klienta</strong>: samo wysy&#x142;anie informacji nic nie daje, je&#x15B;li nie wyznaczy si&#x119; obiegu odbiorcy w ramach oferowanej us&#x142;ugi. Wymagan&#x105; potrzeb&#x105; w ramach Meta (Facebook) Offline Conversions API jest identyfikacja u&#x17C;ytkownik&#xF3;w i dopasowywanie interakcji do ich zbiorczego profilu: w tym celu konieczne jest wyznaczenie &#x15B;cie&#x17C;ek klienta, kt&#xF3;re zwi&#x119;ksz&#x105; prawdopodobie&#x144;stwo ujawnienia si&#x119; (np. sklepy Biedronka i podanie numeru telefonu w celu naliczenia punkt&#xF3;w za zakupy, marka Douglas i system kart lojalno&#x15B;ciowych itd.)</li></ul><p>Zapewniam jednak, i&#x17C; warto pokona&#x107; wy&#x17C;ej wymienione trudno&#x15B;ci i zacz&#x105;&#x107; dzia&#x142;a&#x107; ju&#x17C; dzi&#x15B;:&#xA0;<strong>zmiany w zakresie przep&#x142;ywu danych nast&#x119;puj&#x105; szybko</strong>.</p><h2 id="jak-dzia%C5%82a-meta-facebook-offline-conversions-api">Jak dzia&#x142;a Meta (Facebook) Offline Conversions API?</h2><p>Istotnym faktem, zwi&#x105;zanym z projektowaniem integracji w ramach Offline Conversions API, jest czas wysy&#x142;ki konwersji do system&#xF3;w. Wed&#x142;ug dokumentacji wynosi on&#xA0;<strong>90 dni</strong>&#xA0;od pierwszego punktu styku z us&#x142;ug&#x105; i jest liczony od momentu granicy realizacji docelowej interakcji, wy&#x142;&#x105;czaj&#x105;c czas, w kt&#xF3;rym u&#x17C;ytkownik m&#xF3;g&#x142; zrealizowa&#x107; ko&#x144;cow&#x105; akcj&#x119;, w ramach okre&#x15B;lonego modelu atrybucji. Co to znaczy?</p><p>Najpro&#x15B;ciej to b&#x119;dzie opisa&#x107; na przyk&#x142;adzie:</p><ul><li>za&#x142;&#xF3;&#x17C;my, &#x17C;e us&#x142;ug&#x119; X, kt&#xF3;ra sprzedaje produkty Y. Jako czas atrybucji (czyli m&#xF3;wi&#x105;c w uproszczeniu, dopasowania do &#x17A;r&#xF3;d&#x142;a reklamy) okre&#x15B;lamy 7 dni po klikni&#x119;ciu kreacji reklamowej lub 1 dzie&#x144; po jej wy&#x15B;wietleniu (niezale&#x17C;nie od tego, czy j&#x105; pomin&#x105;&#x142;).&#xA0;<a href="https://www.searchenginejournal.com/facebook-ads-to-remove-28-day-attribution-model/382436/?ref=kacperduras.pl" rel="noreferrer">Jest to od 2020 roku maksymalne okno konwersji, jakie reklamodawcy s&#x105; w stanie okre&#x15B;li&#x107;</a>. Jednocze&#x15B;nie, t&#x105; decyzj&#x105; u&#x15B;redniamy granic&#x119; czasow&#x105; &#x15B;cie&#x17C;ki klienta do zdefiniowanych warto&#x15B;ci (i to si&#x119; analogicznie tyczy pozosta&#x142;ych wymiar&#xF3;w czasowych)</li><li>u&#x17C;ytkownik realizuje warunek przypisania do okre&#x15B;lonej atrybucji (klika w reklam&#x119;) i dodaje produkt do koszyka. Z jakiego&#x15B; powodu porzuca koszyk, ale zak&#x142;ada konto w ramach us&#x142;ugi, dzi&#x119;ki czemu jego wyb&#xF3;r zostaje zapami&#x119;tany i staje si&#x119; mo&#x17C;liwy to znalezienia</li><li>konsument udaje si&#x119; do fizycznej plac&#xF3;wki nale&#x17C;&#x105;cej do firmy X i kupuje produkt fizycznie za got&#xF3;wk&#x119;</li></ul><p>Jako i&#x17C; czas na realizacje konwersji w ramach obranych wymiar&#xF3;w wyni&#xF3;s&#x142; 7 dni, od warto&#x15B;ci 90 dni odejmujemy ww. zakres i pozostaje 83 dni: tyle czasu pozostaje na wys&#x142;anie konwersji do Meta (Facebook) Offline Conversions API.<strong>&#xA0;Zalecam jednak, by robi&#x107; to niezw&#x142;ocznie.&#xA0;</strong>Praktyka cz&#x119;sto pokazuje, i&#x17C; warto mie&#x107; aktualne dane przy interpretacji wynik&#xF3;w, gdzie cz&#x119;sto wprowadzane zmiany s&#x105; na &#x17C;ywo, co jest spowodowane m.in. wahaniem si&#x119; stawek aukcji w systemach reklamowych.</p><h3 id="struktura-zapytania">Struktura zapytania</h3><p>Struktura docelowego zapytania sk&#x142;ada si&#x119; z tablicy o nazwie&#xA0;<code>data</code>, kt&#xF3;ra zawiera nast&#x119;puj&#x105;ce obiekty w formacie JSON (kt&#xF3;rych limit na jedno zapytanie wynosi 2000):</p><figure class="kg-card kg-code-card"><pre><code>{ 
  match_keys: {&quot;phone&quot;: [&quot;HASH1&quot;,&quot;HASH2&quot;], &quot;email&quot;: [&quot;HASH3&quot;,&quot;HASH4&quot;]}, 
  currency: &quot;USD&quot;, 
  value: 16,
  event_name: &quot;Purchase&quot;,
  event_time: 1456870902,
  contents: [
    {id: &quot;A&quot;, quantity: 1},
    {id: &quot;B&quot;, quantity: 2},
    {id: &quot;C&quot;, quantity: 1}
  ],
  custom_data: {
    event_source: &quot;in_store&quot;
  },
}</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy objekt JSON. &#x179;r&#xF3;d&#x142;o: dokumentacja techniczna Facebooka</span></p></figcaption></figure><p>Nale&#x17C;y tutaj wyszczeg&#xF3;lni&#x107; nast&#x119;puj&#x105;ce, wymagane informacje:</p><ul><li><code>match_keys</code>, czyli informacje kluczowe, po kt&#xF3;rych mo&#x17C;na dopasowa&#x107; konwersj&#x119; do odbiorcy (<a href="https://developers.facebook.com/docs/marketing-api/audiences/guides/custom-audiences?ref=kacperduras.pl" rel="noreferrer">lista mo&#x17C;liwych kombinacji znajduje si&#x119; tutaj</a>)</li><li><code>event_time</code>, czyli czas, kiedy zosta&#x142;o zrealizowane zdarzenie (co nie musi pokrywa&#x107; si&#x119; z momentem wysy&#x142;ki)</li><li><code>event_name</code>, czyli nazwa zdarzenia</li></ul><p>Z istotniejszych p&#xF3;l wyr&#xF3;&#x17C;ni&#x119;&#xA0;<code>custom_data</code>&#xA0;(miejsce na wysy&#x142;k&#x119; w&#x142;asnych danych, kt&#xF3;re mog&#x105; p&#xF3;&#x17A;niej s&#x142;u&#x17C;y&#x107; jako podstawa do zaawansowanej segmentacji). Pozosta&#x142;e struktury s&#x105; przesy&#x142;ane zgodnie ze specyfikacj&#x105; dla danego zdarzenia (jw. na przyk&#x142;adzie, dla&#xA0;<code>Purchase</code>).&#xA0;<a href="https://developers.facebook.com/docs/facebook-pixel/reference?ref=kacperduras.pl" rel="noreferrer">Lista mo&#x17C;liwych zdarze&#x144; znajduje si&#x119; tutaj</a>,&#xA0;<a href="http://web.archive.org/web/20230331060947/https://developers.facebook.com/docs/marketing-api/offline-conversions/#upload-events">a opis pozosta&#x142;ych p&#xF3;l funkcjonuje pod tym linkiem</a>.</p><h3 id="wysy%C5%82ka-informacji">Wysy&#x142;ka informacji</h3><p>Przesy&#x142;anie danych o konwersjach offline odbywa si&#x119; poprzez wys&#x142;anie zapytania typu&#xA0;<code>POST</code>&#xA0;na nast&#x119;puj&#x105;cy URL:</p><pre><code>https://graph.facebook.com/v9.0/&lt;OFFLINE_EVENT_SET_ID&gt;/events</code></pre><p>Poni&#x17C;ej za&#x142;&#x105;czam przyk&#x142;ad dla pakietu&#xA0;<a href="http://web.archive.org/web/20230331060947/https://en.wikipedia.org/wiki/CURL"><code>curl</code></a>:</p><pre><code>curl -X POST \
  -F &apos;data=[
       { 
         match_keys: {&quot;phone&quot;: [&quot;HASH1&quot;,&quot;HASH2&quot;], &quot;email&quot;: [&quot;HASH3&quot;,&quot;HASH4&quot;]}, 
         currency: &quot;USD&quot;, 
         value: 16,
         event_name: &quot;Purchase&quot;,
         event_time: 1456870902,
         contents: [
           {id: &quot;A&quot;, quantity: 1},
           {id: &quot;B&quot;, quantity: 2},
           {id: &quot;C&quot;, quantity: 1}
         ],
         custom_data: {
           event_source: &quot;in_store&quot;
         },
       }
     ]&apos; \
  -F &apos;access_token=&lt;ACCESS_TOKEN&gt;&apos; \
  -F &apos;upload_tag=&lt;UPLOAD_TAG&gt;&apos; \
  https://graph.facebook.com/v9.0/&lt;PIXEL_ID&gt;/events</code></pre><p>Do ka&#x17C;dego zapytania nale&#x17C;y do&#x142;&#x105;cza&#x107; parametry&#xA0;<code>access_token</code>&#xA0;z kluczem dost&#x119;pu do docelowego kontenera z konwersjami offline i&#xA0;<code>upload_tag</code>, kt&#xF3;ry oznacza rodzaj lub &#x17A;r&#xF3;d&#x142;o przesy&#x142;anych danych.</p><h4 id="token-dost%C4%99pu">Token dost&#x119;pu</h4><p>Uzyskanie tokenu dost&#x119;pu do wysy&#x142;ki zapyta&#x144; wi&#x105;&#x17C;e si&#x119; ze&#xA0;<a href="https://developers.facebook.com/docs/development/create-an-app?ref=kacperduras.pl" rel="noreferrer">stworzeniem specjalnej aplikacji w ramach ekosystemu Mety (Facebooka), kt&#xF3;ra b&#x119;dzie okre&#x15B;la&#x142;a poziom uprawnie&#x144; dla ko&#x144;cowych odbiorc&#xF3;w</a>, kt&#xF3;rzy wysy&#x142;aj&#x105; informacje o konwersjach offline. Aplikacja w ramach protoko&#x142;u OAuth2 potrzebuje dost&#x119;pu do zasob&#xF3;w&#xA0;<code>ads_management</code>.</p><h3 id="obs%C5%82uga-b%C5%82%C4%99d%C3%B3w">Obs&#x142;uga b&#x142;&#x119;d&#xF3;w</h3><p>Po wys&#x142;aniu zapytania do Meta (Facebook) Offline Conversions API, w odpowiedzi zostanie zwr&#xF3;cone pole&#xA0;<code>num_processed_entries</code>&#xA0;z liczb&#x105; prawid&#x142;owo przetworzonych zdarze&#x144;. Je&#x15B;li warto&#x15B;ci nie b&#x119;d&#x105; zgadza&#x142;y si&#x119; z tymi, kt&#xF3;re zosta&#x142;y przes&#x142;ane, zostanie za&#x142;&#x105;czony b&#x142;&#x105;d z dok&#x142;adnym opisem.</p><p>Meta (Facebook) Offline Conversions API to inny standard przesy&#x142;ania danych, jednak jak mo&#x17C;esz zauwa&#x17C;y&#x107; &#x2014; bardzo warto&#x15B;ciowy i nadaj&#x105;cy nowe znaczenie analityce dzia&#x142;a&#x144; z kana&#x142;u dystrybucji tre&#x15B;ci, jakim jest Facebook i kt&#xF3;ry umo&#x17C;liwia docieranie do nowych segment&#xF3;w odbiorc&#xF3;w.</p>]]></content:encoded></item><item><title><![CDATA[Co to jest Meta (Facebook) Conversions API?]]></title><description><![CDATA[API konwersji Facebooka (ang. Facebook Conversions API) to rozwiązanie do mierzenia interakcji użytkowników w ramach ekosystemu Facebooka. Dzięki niemu usługodawcy są w stanie połączyć swoje internetowe usługi z rozwiązaniami reklamowymi.]]></description><link>https://kacperduras.pl/co-to-jest-facebook-conversion-api/</link><guid isPermaLink="false">6547dcfe1a7c16ab49ec60ea</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Thu, 17 Dec 2020 23:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1667586091163-e759ac830a1b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMwfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1667586091163-e759ac830a1b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMwfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Co to jest Meta (Facebook) Conversions API?"><p>API konwersji Mety (Facebooka) (ang.&#xA0;<em>Meta</em>&#xA0;(<em>Facebook) Conversions API</em>) to rozwi&#x105;zanie do mierzenia interakcji u&#x17C;ytkownik&#xF3;w w ramach ekosystemu Mety (Facebooka). Dzi&#x119;ki niemu us&#x142;ugodawcy s&#x105; w stanie po&#x142;&#x105;czy&#x107; swoje&#xA0;<strong>internetowe</strong>&#xA0;us&#x142;ugi z rozwi&#x105;zaniami reklamowymi, niezale&#x17C;nie od ustawie&#x144; prywatno&#x15B;ci urz&#x105;dze&#x144; ko&#x144;cowych odbiorc&#xF3;w i przesy&#x142;a&#x107; bardziej szczeg&#xF3;&#x142;owe dane. Meta (Facebook) Conversions API umo&#x17C;liwia stworzenie jako&#x15B;ciowych podstaw pod szczeg&#xF3;&#x142;ow&#x105; analityk&#x119; konsument&#xF3;w na ca&#x142;ym etapie lejka sprzeda&#x17C;owego.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/#zastosowania-meta-facebook-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Zastosowania Meta (Facebook) Conversions API</span></a></li><li value="2"><a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/#wady-meta-facebook-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Wady Meta (Facebook) Conversions API</span></a></li><li value="3"><a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/#jak-dzia-a-meta-facebook-conversions-api" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a Meta (Facebook) Conversions API?</span></a></li><li value="4"><a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/#wysy-anie-zapytania" rel="noreferrer"><span style="white-space: pre-wrap;">Wysy&#x142;anie zapytania</span></a></li></ol></div>
        </div><h2 id="zastosowania-meta-facebook-conversions-api">Zastosowania Meta (Facebook) Conversions API</h2><p>Meta (Facebook) Conversions API jest rozwi&#x105;zaniem serwerowym (ang.&#xA0;<em>server-side</em>), przeznaczonym do przesy&#x142;ania wi&#x119;kszych ilo&#x15B;ci danych o odbiorcach korzystaj&#x105;cych z naszych us&#x142;ug. W przeciwie&#x144;stwie do innego narz&#x119;dzia nazywaj&#x105;cym si&#x119;&#xA0;<strong>(Meta) Facebook Pixel</strong>, API konwersji Mety (Facebooka) dzia&#x142;a niezale&#x17C;nie od urz&#x105;dze&#x144; odbiorc&#xF3;w. Co to oznacza? Mianowicie:</p><ul><li><strong>mierzenie danych jest ograniczone g&#x142;&#xF3;wnie konstrukcj&#x105; us&#x142;ugi</strong>: klienci nie maj&#x105; &#x15B;wiadomo&#x15B;ci o tym, i&#x17C; s&#x105; obserwowani przez narz&#x119;dzia analityczne</li><li><strong>odbiorcy nie s&#x105; w stanie zablokowa&#x107; integracji</strong>:<strong>&#xA0;</strong>jest to bardzo wa&#x17C;ne w okresie rosn&#x105;cej popularno&#x15B;ci rozwi&#x105;za&#x144; producent&#xF3;w oprogramowania do ochrony prywatno&#x15B;ci. Wszystkie operacje nie dziej&#x105; si&#x119;, tak jak ma to miejsce np. w Facebook Pixel, na urz&#x105;dzeniu konsumenta, tylko po stronie serwera, przez co przegl&#x105;darki i inne programy nie wykrywaj&#x105; integracji tego typu</li><li><strong>informacje s&#x105; bardziej precyzyjne</strong>: obecnie odbiorcy przy minimalnej &#x15B;wiadomo&#x15B;ci programistycznej s&#x105; w stanie manipulowa&#x107; ko&#x144;cowymi danymi, przez co mog&#x105; zaburzy&#x107; dok&#x142;adno&#x15B;&#x107; pomiar&#xF3;w (np. wysy&#x142;aj&#x105;c celowo X razy informacj&#x119; o zakupie Y produkt&#xF3;w za cen&#x119; Z, faktycznie tego nie robi&#x105;c)</li><li><strong>dok&#x142;adniejsza segmentacja audiencji</strong>: Meta (Facebook) Conversions API pozwala (i zaleca) na przesy&#x142;anie wielu szczeg&#xF3;&#x142;owych informacji, takich jak adres e-mail, numer telefonu, wewn&#x119;trzny identyfikator odbiorcy w ramach us&#x142;ugi, kod pocztowy itd. Ta mo&#x17C;liwo&#x15B;&#x107;, w po&#x142;&#x105;czeniu z brakiem mo&#x17C;liwo&#x15B;ci jakiejkolwiek manipulacji po stronie odbiorcy, pozwala na dok&#x142;adniejsze podzielenie odbiorc&#xF3;w w podgrupy, np.: grupa os&#xF3;b, kt&#xF3;ra zrealizowa&#x142;a zakupy, ale wcze&#x15B;niej zrobi&#x142;a szereg innych czynno&#x15B;ci</li></ul><p>Jak wida&#x107;, mo&#x17C;liwo&#x15B;ci jest bardzo du&#x17C;o i niew&#x105;tpliwie, rosn&#x105;ca popularno&#x15B;&#x107; tego rozwi&#x105;zania, przyczyni si&#x119; do dok&#x142;adniejszego spojrzenia na kwestie analityczne obs&#x142;ugiwanych us&#x142;ug.</p><h2 id="wady-meta-facebook-conversions-api">Wady Meta (Facebook) Conversions API</h2><p>Interfejs programistyczny Mety (Facebooka) dostarcza wiele &#x15B;cie&#x17C;ek okre&#x15B;lania profilu naszych odbiorc&#xF3;w, jednak wi&#x105;&#x17C;e si&#x119; ono z pewnymi wadami:</p><ul><li><strong>mierzenie danych jest ograniczone g&#x142;&#xF3;wnie konstrukcj&#x105; us&#x142;ugi</strong>: wada, kt&#xF3;ra jednocze&#x15B;nie jest zalet&#x105;. Jak na pocz&#x105;tku wspomnia&#x142;em, Meta (Facebook) Conversions API jest rozwi&#x105;zaniem serwerowymi (ang.&#xA0;<em>server-side</em>), a nie klienckim (ang.&#xA0;<em>client-side</em>), takim jak np. Meta (Facebook) Pixel. Implementacja tego API wi&#x105;&#x17C;e si&#x119; z modyfikacj&#x105; us&#x142;ugi, co mo&#x17C;e wi&#x105;za&#x107; si&#x119; z utrudnieniami na etapie programistycznym</li><li><strong>wymagana wiedza programistyczna</strong>: za&#x142;&#x105;czenie tego rozwi&#x105;zania jest niemo&#x17C;liwe bez posiadania specjalistycznej wiedzy. Mimo obecno&#x15B;ci ju&#x17C; gotowych rozwi&#x105;za&#x144; na rynku dochodzi szereg problem&#xF3;w na etapie serwisowania oprogramowania (m.in. elastyczno&#x15B;&#x107; podpi&#x119;cia, aktualizacje itd.). Dzia&#x142;ania tego typu wymagaj&#x105; przeznaczenia odpowiednich zasob&#xF3;w (finansowych i/lub czasowych)</li><li><strong>problem ze skalowaniem</strong>: popularne narz&#x119;dzie Meta (Facebook) Pixel wysy&#x142;a informacje po stronie klienta (ang.&#xA0;<em>client-side</em>) &#x2014; jedynym obowi&#x105;zkiem os&#xF3;b dokonuj&#x105;cych integracji, jest zainstalowanie odpowiedniego skryptu &#x15B;ledz&#x105;cego i oznaczenie miejsc raportowania (<a href="http://web.archive.org/web/20230205032826/https://kacperduras.pl/post/facebook-pixel-co-to-jest/">szczeg&#xF3;&#x142;owo opisa&#x142;em to tutaj</a>). Pozosta&#x142;e procesy dziej&#x105; si&#x119; samodzielnie i niezale&#x17C;nie od infrastruktury us&#x142;ugi, dane s&#x105; przesy&#x142;ane do Mety (Facebooka). Przy rozwi&#x105;zaniach serwerowych, trzeba uwzgl&#x119;dni&#x107; nat&#x119;&#x17C;enie ruchu, a co za tym idzie, generowane obci&#x105;&#x17C;enie: im wi&#x119;cej ruchu, tym jest ono wi&#x119;ksze</li><li><strong>szczeg&#xF3;&#x142;owa analiza &#x15B;cie&#x17C;ek klienta</strong>: samo wysy&#x142;anie informacji nic nie daje, je&#x15B;li nie wyznaczy si&#x119; obiegu odbiorcy w ramach oferowanej us&#x142;ugi. Jak b&#x119;dziesz mie&#x107; okazj&#x119; przekona&#x107; si&#x119; poni&#x17C;ej, kluczowe dla przesy&#x142;ania informacji jest to, by m&#xF3;c &quot;&#x142;apa&#x107;&quot; odbiorc&#x119; w momentach, w kt&#xF3;rych ujawni swoj&#x105; to&#x17C;samo&#x15B;&#x107;: poprzez zostawienie adresu e-mail, zarejestrowanie si&#x119; itd. Samo wys&#x142;anie konwersji jest tylko oznaczeniem tego, &#x17C;e dana interakcja zosta&#x142;a wykonana: bez danych identyfikuj&#x105;cych nie b&#x119;dziesz w stanie okre&#x15B;li&#x107;, kto to zrobi&#x142; i dotrze&#x107; do niego w p&#xF3;&#x17A;niejszym czasie (np. poprzez remarketing)</li></ul><p>Zapewniam jednak, i&#x17C; warto pokona&#x107; wy&#x17C;ej wymienione trudno&#x15B;ci i zacz&#x105;&#x107; dzia&#x142;a&#x107; ju&#x17C; dzi&#x15B;:&#xA0;<strong>zmiany w zakresie przep&#x142;ywu danych nast&#x119;puj&#x105; szybko</strong>.</p><h2 id="jak-dzia%C5%82a-meta-facebook-conversions-api">Jak dzia&#x142;a Meta (Facebook) Conversions API?</h2><p>Kluczem do zrozumienia dzia&#x142;ania Meta (Facebook) Conversions API jest ustalenie niezb&#x119;dnych struktur danych, z jakimi zachodzi styczno&#x15B;&#x107; podczas raportowania konwersji oraz sposoby wi&#x105;zania danych z konkretnym odbiorc&#x105;. Niezb&#x119;dna tutaj tak&#x17C;e jest znajomo&#x15B;&#x107; funkcjonowania Meta (Facebook) Pixel,&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-co-to-jest/" rel="noreferrer">kt&#xF3;r&#x105; opisa&#x142;em w tym wpisie</a>. Dodatkowo porusz&#x119; kwesti&#x119; zwi&#x105;zan&#x105; z walidacj&#x105; duplikat&#xF3;w zapyta&#x144;.</p><h3 id="wi%C4%85zanie-danych-z-konkretnym-odbiorc%C4%85">Wi&#x105;zanie danych z konkretnym odbiorc&#x105;</h3><p>Na chwil&#x119; pisania artyku&#x142;u, podstawowym sposobem identyfikacji odbiorc&#xF3;w s&#x105; ciasteczka (ang.&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-co-to-jest/" rel="noreferrer">cookies</a>) &#x2014; specjalnych pakiet&#xF3;w, przechowuj&#x105;cych dane. Facebook, jako podmiot zewn&#x119;trzny dla naszej us&#x142;ugi, korzysta z plik&#xF3;w cookies kategorii trzeciej (ang.&#xA0;<em>third-party cookies</em>), dzi&#x119;ki czemu wi&#x105;&#x17C;e nas ze swoimi bazami danych i &#x15B;ledzi aktywno&#x15B;&#x107; na&#xA0;<strong>ka&#x17C;dej</strong>&#xA0;witrynie, gdzie jest zainstalowany Meta (Facebook) Pixel. Dane, jakie zapisuje, s&#x105; dwa:</p><ul><li>ciastko&#xA0;<code>_fbp</code>: identyfikator naszej przegl&#x105;darki (generowany przez Met&#x119; [Facebooka])</li><li>ciastko&#xA0;<code>_fbc</code>: identyfikator lokalizacji, z kt&#xF3;rej dotarli&#x15B;my na stron&#x119;, np. reklamy (generowany&#xA0;<strong>na podstawie&#xA0;</strong>danych od Mety [Facebooka]<strong>)</strong></li></ul><p>Ponadto, istnieje mo&#x17C;liwo&#x15B;&#x107; (lub przymus, je&#x15B;li nie jest mo&#x17C;liwe dostarczenie dw&#xF3;ch powy&#x17C;szych identyfikator i chcemy dociera&#x107; do naszego odbiorcy)&#xA0;<a href="https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters?ref=kacperduras.pl" rel="noreferrer">uzupe&#x142;nienia stosu danych o naszym konsumencie</a>, w&#x15B;r&#xF3;d kt&#xF3;rych zalicza si&#x119; m.in.:</p><ul><li>adres e-mail</li><li>numer telefonu</li><li>miasto, wojew&#xF3;dztwo, kod pocztowy</li></ul><p><a href="https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters?ref=kacperduras.pl" rel="noreferrer">Lista wszystkich parametr&#xF3;w znajduje si&#x119; tutaj</a>.</p><h4 id="ciasteczko-fbc">Ciasteczko _fbc</h4><p>Ciasteczko&#xA0;<code>_fbc</code><em>&#xA0;</em>r&#xF3;&#x17C;ni si&#x119; od&#xA0;<code>_fbp</code>&#xA0;tym, i&#x17C; jest ono generowane&#xA0;<strong>na podstawie&#xA0;</strong>informacji przes&#x142;anych przez Facebook, a nie przez niego samego. Oznacza to tyle, &#x17C;e nale&#x17C;y je samodzielnie wygenerowa&#x107;. Przydatny mo&#x17C;e by&#x107; poni&#x17C;szy fragment kodu (kt&#xF3;ry napisa&#x142;em na potrzeby tego wpisu w PHP, jednym z najpopularniejszych j&#x119;zyk&#xF3;w programowania na &#x15B;wiecie):</p><pre><code class="language-php">&lt;?php

class FacebookParameterBuilder
{

    private $version = &quot;fb&quot;;
    private $index;
    private $creationTime;
    private $value;

    public function setIndex(int $index)
    {
        $this-&gt;index = $index;
    }

    public function setCreationTime(float $creationTime)
    {
        $this-&gt;creationTime = $creationTime;

        return $this;
    }

    public function setValue(string $value)
    {
        $this-&gt;value = $value;

        return $this;
    }

    public function build()
    {
        if ($this-&gt;index == null || $this-&gt;creationTime == null || $this-&gt;value == null
            || empty($this-&gt;index) || empty($this-&gt;creationTime) || empty($this-&gt;value))
        {
            throw new InvalidArgumentException(&apos;All fields must be filled&apos;);
        }

        return $this-&gt;version . &quot;.&quot; . $this-&gt;index . &quot;.&quot; . $this-&gt;creationTime . &quot;.&quot; . $this-&gt;value;
    }

}</code></pre><p>Ciastko&#xA0;<code>_fbc</code>&#xA0;sk&#x142;ada si&#x119; z czterech element&#xF3;w:</p><ul><li><code>version</code>: jest to prefiks ciastka, zawsze ma warto&#x15B;&#x107;&#xA0;<code>fb</code></li><li><code>subdomainIndex</code>, b&#x105;d&#x17A;&#xA0;<code>index</code>: definiuje lokacj&#x119; stworzenia naszego ciasteczka (je&#x15B;li cookie jest generowany w warstwie serwerowej, powinien by&#x107; zawsze&#xA0;<code>1</code>)</li><li><code>creationTime</code>:&#xA0;<a href="https://en.wikipedia.org/wiki/Unix_time?ref=kacperduras.pl" rel="noreferrer">czas w formacie UNIX</a>, kt&#xF3;ry oznacza chwile stworzenia ciasteczka</li><li><code>value</code>: w&#x142;a&#x15B;ciwa warto&#x15B;&#x107; ciastka, kt&#xF3;ra jest generowana z parametru&#xA0;<code>fbclid</code>&#xA0;zawartego w linku, na kt&#xF3;ry przekierowuje nas Meta (Facebook)</li></ul><p>Ka&#x17C;dy z tych element&#xF3;w jest oddzielony znakiem kropki (<code>.</code>), na przyk&#x142;ad:</p><pre><code>fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890
</code></pre><h3 id="struktura-zdarzenia">Struktura zdarzenia</h3><p>Struktur&#x119; zdarzenia nale&#x17C;y podzieli&#x107; na cz&#x119;&#x15B;&#x107; serwerow&#x105; i zawart&#x105; w niej cz&#x119;&#x15B;&#x107; w&#x142;asn&#x105;.</p><p><a href="https://developers.facebook.com/docs/marketing-api/server-side-api/parameters/server-event?ref=kacperduras.pl" rel="noreferrer">Cz&#x119;&#x15B;&#x107; serwerowa</a>&#xA0;okre&#x15B;la g&#x142;&#xF3;wny fragment struktury zapytania, w niej okre&#x15B;lamy takie podstawowe informacje jak nazwa konwersji, czas jej przes&#x142;ania, czy &#x17A;r&#xF3;d&#x142;o:</p><figure class="kg-card kg-code-card"><pre><code>{
    &quot;event_name&quot;: &quot;Purchase&quot;,
    &quot;event_time&quot;: 0000000000,
    &quot;user_data&quot;: {
        &quot;em&quot;: &quot;7b17fb0bd173f625b58636fb796407c22b3d16fc78302d79f0fd30c2fc2fc068&quot;
    },
    &quot;custom_data&quot;: {
        &quot;currency&quot;: &quot;PLN&quot;,
        &quot;value&quot;: &quot;100&quot;
    }
}</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowe zapytanie warstwy serwerowej</span></p></figcaption></figure><p><a href="https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/custom-data?ref=kacperduras.pl" rel="noreferrer">Cz&#x119;&#x15B;&#x107; w&#x142;asna</a>&#xA0;z kolei definiuje w&#x142;asno&#x15B;ci ka&#x17C;dego ze zdarze&#x144;: opisuje konkretne warto&#x15B;ci i zawiera niestandardowe informacje. Pola tego typu musz&#x105; by&#x107; w obiekcie&#xA0;<code>custom_data</code>.</p><h3 id="duplikaty-zdarze%C5%84">Duplikaty zdarze&#x144;</h3><p>Niesp&#xF3;jno&#x15B;ci w analityce s&#x105; jedn&#x105; z najbardziej niechcianych rzeczy, na szcz&#x119;&#x15B;cie Meta (Facebook) Conversions API posiada mechanizm eliminuj&#x105;cy t&#x119; niedogodno&#x15B;&#x107;. Je&#x15B;li dane s&#x105; przesy&#x142;ane jednocze&#x15B;nie poprzez kod &#x15B;ledz&#x105;cy Meta (Facebook) Pixel i API konwersji,&#xA0;<a href="https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events?ref=kacperduras.pl" rel="noreferrer">wystarczy do cz&#x119;&#x15B;ci serwerowej za&#x142;&#x105;czy&#x107; pole z unikaln&#x105; warto&#x15B;ci&#x105; dla ka&#x17C;dego z wydarze&#x144;</a>:&#xA0;<code>event_id</code>. Dzi&#x119;ki temu, dla wszystkich kombinacji zwi&#x105;zanych z to&#x17C;sam&#x105; konwersj&#x105; i tym samym unikalnym identyfikatorem, wydarzenia nie zostan&#x105; przetworzone.</p><p>Nast&#x119;pnie, nale&#x17C;y oznaczy&#x107; wydarzenia przesy&#x142;ane przez Meta (Facebook) Pixel tym samym zestawem informacji:</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">fbq(&apos;track&apos;, &apos;Purchase&apos;, {currency: &quot;PLN&quot;, value: 50.00}, {eventID: &quot;EVENT_ID&quot;});
</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowa implementacja zdarzenia w Meta (Facebook) Pixel z uwzgl&#x119;dnieniem mechanizmu duplikacji zdarze&#x144;</span></p></figcaption></figure><h2 id="wysy%C5%82anie-zapytania">Wysy&#x142;anie zapytania</h2><p>Po stworzeniu struktury zdarze&#x144; i zadbaniu o wymagane dane nale&#x17C;y opakowa&#x107; nasze wydarzenia w obiekt&#xA0;<code>data</code>:</p><pre><code>{
    &quot;data&quot;: [
        {
           &quot;event_name&quot;: &quot;Purchase&quot;,
           &quot;event_time&quot;: 0000000000,
           &quot;user_data&quot;: {
               &quot;em&quot;: &quot;7b17fb0bd173f625b58636fb796407c22b3d16fc78302d79f0fd30c2fc2fc068&quot;
           },
           &quot;custom_data&quot;: {
               &quot;currency&quot;: &quot;PLN&quot;,
               &quot;value&quot;: &quot;100&quot;
          }
       }
    ]
}</code></pre><p><a href="https://developers.facebook.com/docs/marketing-api/conversions-api/using-the-api?ref=kacperduras.pl#send" rel="noreferrer">Przy tworzeniu ca&#x142;ego cia&#x142;a zapytania warto pami&#x119;ta&#x107;, i&#x17C; limit zdarze&#x144; na jedno zapytanie wynosi 1000.</a></p><p>Nast&#x119;pnie, pozostaje wykonanie zapytania typu&#xA0;<code>POST</code>&#xA0;na okre&#x15B;lony adres URL (na przyk&#x142;adzie pakietu&#xA0;<a href="https://en.wikipedia.org/wiki/CURL?ref=kacperduras.pl" rel="noreferrer"><code>curl</code></a>):</p><figure class="kg-card kg-code-card"><pre><code>curl -X POST \
  -F &apos;data=[
       {
           &quot;event_name&quot;: &quot;Purchase&quot;,
           &quot;event_time&quot;: 0000000000,
           &quot;user_data&quot;: {
               &quot;em&quot;: &quot;7b17fb0bd173f625b58636fb796407c22b3d16fc78302d79f0fd30c2fc2fc068&quot;
           },
           &quot;custom_data&quot;: {
               &quot;currency&quot;: &quot;PLN&quot;,
               &quot;value&quot;: 100
           }
       }
     ]&apos; \
  -F &apos;access_token=&lt;ACCESS_TOKEN&gt;&apos; \
  https://graph.facebook.com/v9.0/&lt;PIXEL_ID&gt;/events</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowe polecenie pakietu curl</span></p></figcaption></figure><h3 id="token-dost%C4%99pu">Token dost&#x119;pu</h3><p>Ka&#x17C;da wys&#x142;ana paczka danych musi by&#x107; podpisana odpowiednim kluczem autoryzacyjnym. Wygenerowa&#x107; mo&#x17C;na go w ustawieniach Piksela, pod&#x142;&#x105;czonego pod konto reklamowe. Nast&#x119;pnie, w parametrze zapytania&#xA0;<code>access_token</code>&#xA0;nale&#x17C;y zamieni&#x107; przyk&#x142;adow&#x105; warto&#x15B;&#x107;&#xA0;<code>&lt;ACCESS_TOKEN&gt;</code>&#xA0;na wygenerowany klucz.</p><p>Tutaj warto tak&#x17C;e wspomnie&#x107; o podsekcji&#xA0;<strong>Konfiguracja za po&#x15B;rednictwem integracji partnerskiej,&#xA0;</strong>gdzie Facebook udost&#x119;pnia ju&#x17C; gotowe rozwi&#x105;zania dla wybranych platform z instrukcj&#x105; krok po kroku.Testowanie zdarze&#x144;</p><p>Jednym z narz&#x119;dzi diagnostycznych do prawid&#x142;owej weryfikacji instalacji &#x15B;ledzenia danych jest&#xA0;<strong>Testowanie zdarze&#x144;</strong>. W ramach niego dostajemy pogrupowane wydarzenia wraz ze szczeg&#xF3;&#x142;ami, kt&#xF3;re s&#x105; przesy&#x142;ane.</p><p>Opr&#xF3;cz mierzenia interakcji z poziomu przegl&#x105;darki Meta (Facebook) umo&#x17C;liwia podpisywanie zapyta&#x144; specjalnym parametrem testowym, kt&#xF3;ry powoduje wyszczeg&#xF3;lnienie zdarze&#x144; w tej sekcji. Wystarczy, i&#x17C; to cia&#x142;a zapytania do&#x142;o&#x17C;ymy parametr&#xA0;<code>test_event_code</code>&#xA0;z wyr&#xF3;&#x17C;nion&#x105; zawarto&#x15B;ci&#x105;.</p><figure class="kg-card kg-code-card"><pre><code>{
    &quot;data&quot;: [
        {
           &quot;event_name&quot;: &quot;Purchase&quot;,
           &quot;event_time&quot;: 0000000000,
           &quot;user_data&quot;: {
               &quot;em&quot;: &quot;7b17fb0bd173f625b58636fb796407c22b3d16fc78302d79f0fd30c2fc2fc068&quot;
           },
           &quot;custom_data&quot;: {
               &quot;currency&quot;: &quot;PLN&quot;,
               &quot;value&quot;: 100
          }
       }
    ],
    &quot;test_event_code&quot;: &quot;TEST00000&quot;
}</code></pre><figcaption><p><span style="white-space: pre-wrap;">Zapytanie warstwy testowej z kodem testowym</span></p></figcaption></figure><h3 id="obs%C5%82uga-b%C5%82%C4%99d%C3%B3w">Obs&#x142;uga b&#x142;&#x119;d&#xF3;w</h3><p>Obs&#x142;uga b&#x142;&#x119;d&#xF3;w jest istotna dla pracy z Meta (Facebook) Conversions API i lokalizowania &#x17A;r&#xF3;de&#x142; nieprawid&#x142;owego funkcjonowania raportowania danych z us&#x142;ugi. Domy&#x15B;lnie zapytanie powinno zwraca&#x107; kod zapytania HTTP&#xA0;<code>2xx</code>, je&#x15B;li wyst&#x105;pi b&#x142;&#x105;d:&#xA0;<code>4xx</code>. W celu uzyskania dok&#x142;adnej informacji o niepowodzeniu nale&#x17C;y zmodyfikowa&#x107; URL zapytania w nast&#x119;puj&#x105;cy spos&#xF3;b:</p><pre><code>https://graph.facebook.com/v9.0/&lt;PIXEL_ID&gt;/events?trace=[1-3]</code></pre><p>W miejsce warto&#x15B;ci parametru&#xA0;<code>trace</code>&#xA0;funkcjonuj&#x105; nast&#x119;puj&#x105;ce warto&#x15B;ci:</p><ul><li><code>1</code>&#xA0;- wy&#x15B;wietlenie szczeg&#xF3;&#x142;&#xF3;w b&#x142;&#x119;du</li><li><code>2</code>&#xA0;- wy&#x15B;wietlenie og&#xF3;lnych informacji</li><li><code>3</code>&#xA0;- wy&#x15B;wietlenie informacji deweloperskich</li></ul><p>Meta (Facebook) Conversions API to inny standard przesy&#x142;ania danych, jednak jak mo&#x17C;esz zauwa&#x17C;y&#x107; &#x2014; bardzo warto&#x15B;ciowy i nadaj&#x105;cy nowe znaczenie analityce dzia&#x142;a&#x144; z kana&#x142;u dystrybucji tre&#x15B;ci, jakim jest Facebook.</p>]]></content:encoded></item><item><title><![CDATA[Niestandardowe zdarzenia w Facebook Pixel]]></title><description><![CDATA[Zdarzenia niestandardowe mają zastosowanie w segmentowaniu odbiorców, którzy wykonali określone, wyróżnione interakcje w obrębie witryny lub aplikacji.]]></description><link>https://kacperduras.pl/niestandardowe-zdarzenia-w-facebook-pixel/</link><guid isPermaLink="false">6547dad11a7c16ab49ec60c7</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Mon, 05 Oct 2020 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1636114673156-052a83459fc1?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fG1ldGF8ZW58MHx8fHwxNjk5MjAwMDE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1636114673156-052a83459fc1?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fG1ldGF8ZW58MHx8fHwxNjk5MjAwMDE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Niestandardowe zdarzenia w Facebook Pixel"><p>Konwersje zdarze&#x144; w ramach narz&#x119;dzia, jakim jest&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-co-to-jest/" rel="noreferrer"><em>Facebook Pixel</em></a>, mo&#x17C;na podzieli&#x107; na standardowe i niestandardowe.</p><p>Zdarzenia standardowe mo&#x17C;na definiowa&#x107; jako te, kt&#xF3;re s&#x105; okre&#x15B;lone w oficjalnej specyfikacji, gdzie jest wym&#xF3;g wysy&#x142;ania odpowiednich informacji dla przes&#x142;ania poszczeg&#xF3;lnego pakietu danych. Zapewniaj&#x105; one sprawniejsz&#x105; obs&#x142;ug&#x119; dzia&#x142;a&#x144; reklamowych w systemie Facebook.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/jak-ustawic-standardowe-zdarzenia-w-meta-facebook-pixel/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Jak ustawi&#x107; standardowe zdarzenia w Meta (Facebook) Pixel?</div><div class="kg-bookmark-description">Standardowe zdarzenia w narz&#x119;dziu Facebook Pixel s&#x142;u&#x17C;&#x105; do definiowania kluczowych zachowa&#x144; na stronie internetowej i p&#xF3;&#x17A;niejszej ich analizy. Poka&#x17C;&#x119;, jak to prawid&#x142;owo zrobi&#x107;.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Niestandardowe zdarzenia w Facebook Pixel"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1665799871677-f1fd17338b43?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIxfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Niestandardowe zdarzenia w Facebook Pixel"></div></a></figure><p>Czasem jednak zachodzi potrzeba zdefiniowania dodatkowych kryteri&#xF3;w, wzgl&#x119;dem kt&#xF3;rych b&#x119;dziemy segmentowa&#x107; odbiorc&#xF3;w na tych, kt&#xF3;rzy faktycznie b&#x119;d&#x105; mieli znacz&#x105;cy kontakt z naszym us&#x142;ugami, a na tych, kt&#xF3;rych prawdopodobie&#x144;stwo spe&#x142;nienia okre&#x15B;lonej interakcji b&#x119;dzie bardzo ma&#x142;e. W odpowiedzi na to wyzwanie przychodz&#x105; zdarzenia niestandardowe.</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="https://kacperduras.pl/post/niestandardowe-zdarzenia-w-facebook-pixel/#czym-s-zdarzenia-niestandardowe" rel="noreferrer"><span style="white-space: pre-wrap;">Czym s&#x105; zdarzenia niestandardowe?</span></a></li><li value="2"><a href="https://kacperduras.pl/post/niestandardowe-zdarzenia-w-facebook-pixel/#z-czego-sk-adaj-si-zdarzenia-niestandardowe" rel="noreferrer"><span style="white-space: pre-wrap;">Z czego sk&#x142;adaj&#x105; si&#x119; zdarzenia niestandardowe?</span></a></li><li value="3"><a href="https://kacperduras.pl/post/niestandardowe-zdarzenia-w-facebook-pixel/#ograniczenia-zdarze-niestandardowych" rel="noreferrer"><span style="white-space: pre-wrap;">Ograniczenia zdarze&#x144; niestandardowych</span></a></li><li value="4"><a href="https://kacperduras.pl/post/niestandardowe-zdarzenia-w-facebook-pixel/#zastosowanie-zdarze-niestandardowych" rel="noreferrer"><span style="white-space: pre-wrap;">Zastosowanie zdarze&#x144; niestandardowych</span></a></li><li value="5"><a href="https://kacperduras.pl/post/niestandardowe-zdarzenia-w-facebook-pixel/#udost-pnianie-danych-ze-zdarze-niestandardowych" rel="noreferrer"><span style="white-space: pre-wrap;">Udost&#x119;pnianie danych ze zdarze&#x144; niestandardowych</span></a></li></ol></div>
        </div><h2 id="czym-s%C4%85-zdarzenia-niestandardowe">Czym s&#x105; zdarzenia niestandardowe?</h2><p>Zdarzenia niestandardowe to specjalne oznaczenia, s&#x142;u&#x17C;&#x105;ce do &#x15B;ledzenia interakcji odbiorc&#xF3;w konkretnej us&#x142;ugi, kt&#xF3;re domy&#x15B;lnie nie s&#x105; zawarte w ramach dokumentacji technicznej sieci reklamowej firmy Facebook. Dzi&#x119;ki za&#x142;&#x105;czaniu dodatkowych informacji poprzez zdarzenia niestandardowe zyskuje si&#x119; mo&#x17C;liwo&#x15B;&#x107; prowadzenia dog&#x142;&#x119;bniejszych dzia&#x142;a&#x144; reklamowych.</p><h2 id="z-czego-sk%C5%82adaj%C4%85-si%C4%99-zdarzenia-niestandardowe">Z czego sk&#x142;adaj&#x105; si&#x119; zdarzenia niestandardowe?</h2><p>Raportowanie zdarze&#x144; niestandardowych jest podobne do s<a href="https://kacperduras.pl/post/facebook-pixel-ustawianie-standardowych-zdarzen/" rel="noreferrer">tandardowych odpowiednik&#xF3;w konwersji</a>. Konstrukcja wygl&#x105;da w nast&#x119;puj&#x105;cy spos&#xF3;b:</p><pre><code>fbq(&apos;trackCustom&apos;, &apos;[event]&apos;, {
  param: &apos;value&apos;
});</code></pre><p>Po prawid&#x142;owej instalacji&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-co-to-jest/" rel="noreferrer">Facebook Pixel</a>, do u&#x17C;ycia w kodzie strony b&#x119;dzie mo&#x17C;liwa funkcja z j&#x119;zyka JavaScript&#xA0;<code>fbq</code>, kt&#xF3;ra wzgl&#x119;dem zdarze&#x144; standardowych r&#xF3;&#x17C;ni si&#x119; nast&#x119;puj&#x105;cymi cechami:</p><ul><li>zamiana polecenia&#xA0;<code>track</code>&#xA0;na&#xA0;<code>trackCustom</code></li><li>limit 50 znak&#xF3;w dla nazwy zdarzenia niestandardowego</li></ul><p>Podobna integracja mo&#x17C;e by&#x107; realizowana w warstwie serwerowej us&#x142;ugi dzi&#x119;ki&#xA0;<a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/" rel="noreferrer">Facebook Conversions API</a>&#xA0;(jest to zalecane rozwi&#x105;zanie do r&#xF3;wnoleg&#x142;ego u&#x17C;ycia z Facebook Pixel).</p><h2 id="ograniczenia-zdarze%C5%84-niestandardowych">Ograniczenia zdarze&#x144; niestandardowych</h2><p>U&#x17C;ywanie zdarze&#x144; niestandardowych podlega licznym ograniczeniom, do kt&#xF3;rych przyczyni&#x142;y si&#x119; m.in.&#xA0;<a href="https://kacperduras.pl/post/jakie-zmiany-przynosi-ios14/" rel="noreferrer">zmiany firmy Apple dotycz&#x105;ce &#x15B;ledzenia interakcji odbiorc&#xF3;w i ograniczania &#x17C;ywotno&#x15B;ci plik&#xF3;w cookies</a>. Z bezpo&#x15B;rednich regulacji mo&#x17C;na wyr&#xF3;&#x17C;ni&#x107;:</p><ul><li>ograniczenie ilo&#x15B;ci rodzaj&#xF3;w zdarze&#x144; do o&#x15B;miu na jeden Facebook Pixel (&#x142;&#x105;cznie ze zdarzeniami standardowymi)</li><li>obowi&#x105;zek konfiguracji zdarze&#x144; webowych i wyznaczenia ich priorytet&#xF3;w</li></ul><h2 id="zastosowanie-zdarze%C5%84-niestandardowych">Zastosowanie zdarze&#x144; niestandardowych</h2><p>Mierzenie konwersji tego typu ma przede wszystkim zastosowanie w segmentowaniu odbiorc&#xF3;w, kt&#xF3;rzy wykonali okre&#x15B;lone interakcje na stronie, kt&#xF3;rych nie mo&#x17C;na zakwalifikowa&#x107; jako standardowe. Na podstawie tych informacji, mo&#x17C;na np. utworzy&#x107; grup&#x119; niestandardowych odbiorc&#xF3;w, okre&#x15B;laj&#x105;c nasze zdarzenie jako warunek konieczny do wyodr&#x119;bnienia</p><h3 id="udost%C4%99pnianie-danych-ze-zdarze%C5%84-niestandardowych">Udost&#x119;pnianie danych ze zdarze&#x144; niestandardowych</h3><p>Warto wspomnie&#x107; tak&#x17C;e o tym, &#x17C;e istnieje&#xA0;<a href="https://www.facebook.com/business/help/213448009585118?id=399393560487908" rel="noreferrer">mo&#x17C;liwo&#x15B;&#x107; udost&#x119;pnienia niestandardowych konwersji podmiotom trzecim</a>, dzi&#x119;ki czemu nie ma potrzeby ujawniania wszystkich danych dot. u&#x17C;ytkownik&#xF3;w: jest to wysoce przydatne przy pracy z podmiotami zewn&#x119;trznymi, kt&#xF3;re niekoniecznie potrzebuj&#x105; a&#x17C; tak wysokich uprawnie&#x144; do przetwarzania informacji. W tym celu nale&#x17C;y udost&#x119;pni&#x107; skonfigurowany Pixel.</p>]]></content:encoded></item><item><title><![CDATA[Jak ustawić standardowe zdarzenia w Meta (Facebook) Pixel?]]></title><description><![CDATA[Standardowe zdarzenia w narzędziu Facebook Pixel służą do definiowania kluczowych zachowań na stronie internetowej i późniejszej ich analizy. Pokażę, jak to prawidłowo zrobić.]]></description><link>https://kacperduras.pl/jak-ustawic-standardowe-zdarzenia-w-meta-facebook-pixel/</link><guid isPermaLink="false">6547c5591a7c16ab49ec60af</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Mon, 31 Aug 2020 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1665799871677-f1fd17338b43?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIxfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1665799871677-f1fd17338b43?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDIxfHxtZXRhfGVufDB8fHx8MTY5OTIwMDAxNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Jak ustawi&#x107; standardowe zdarzenia w Meta (Facebook) Pixel?"><p><em>Meta (Facebook Pixel)</em>&#xA0;to rozwi&#x105;zanie o du&#x17C;ym potencjalne dla ma&#x142;ych, &#x15B;rednich, jak i wielkich reklamodawc&#xF3;w. Udost&#x119;pnione narz&#x119;dzie od Mety (Facebooka) umo&#x17C;liwia m.in. szczeg&#xF3;&#x142;ow&#x105; analiz&#x119; danych, segmentowanie u&#x17C;ytkownik&#xF3;w, czy integracj&#x119; z ca&#x142;ym systemem informacyjnym cyfrowego giganta, dzi&#x119;ki kt&#xF3;remu mo&#x17C;emy dociera&#x107; w licznych formatach reklamowych do po&#x17C;&#x105;danych przez nas odbiorc&#xF3;w. Podstawy om&#xF3;wi&#x142;em w moim poprzednim wpisie:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://kacperduras.pl/co-to-jest-meta-facebook-pixel-i-jak-on-dziala/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Co to jest Meta (Facebook) Pixel i jak on dzia&#x142;a?</div><div class="kg-bookmark-description">Piksel Facebooka (ang. Facebook Pixel) to rozwi&#x105;zanie firmy Facebook do mierzenia aktywno&#x15B;ci odbiorc&#xF3;w na stronie internetowej.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://kacperduras.pl/favicon.ico" alt="Jak ustawi&#x107; standardowe zdarzenia w Meta (Facebook) Pixel?"><span class="kg-bookmark-author">Kacper Duras</span><span class="kg-bookmark-publisher">Kacper Duras</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://images.unsplash.com/photo-1640441281085-9e2000f3d693?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fG1ldGF8ZW58MHx8fHwxNjk5MjAwMDE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Jak ustawi&#x107; standardowe zdarzenia w Meta (Facebook) Pixel?"></div></a></figure><p>Dzi&#x15B; opowiem, jak mierzy&#x107; prawid&#x142;owo dane za pomoc&#x105; standardowych wydarze&#x144; w&#xA0;<em>Meta (Facebook) Pixel</em>.</p><h2 id="zdarzenia-i-ich-rodzaje">Zdarzenia i ich rodzaje</h2><p>W wy&#x17C;ej wymienionym artykule napisa&#x142;em:</p><blockquote>Pixel to jest ma&#x142;y fragment kodu JavaScript, kt&#xF3;ry odpowiada za mierzenie dzia&#x142;a&#x144; na stronie, nazywanych&#xA0;<strong>zdarzeniami</strong>.</blockquote><p>Facebook w swojej dokumentacji odno&#x15B;nie narz&#x119;dzia informuje o dw&#xF3;ch rodzajach zdarze&#x144;:</p><ul><li>standardowe, tj. okre&#x15B;lone w oficjalnej specyfikacji, gdzie jest wym&#xF3;g wysy&#x142;ania odpowiednich informacji dla przes&#x142;ania poszczeg&#xF3;lnego pakietu danych</li><li>niestandardowe, czyli definiowane samodzielnie przez u&#x17C;ytkownik&#xF3;w</li></ul><p>Drugi rodzaj zdarze&#x144; jest o wiele bardziej z&#x142;o&#x17C;ony i ma faktyczne zastosowanie przy mierzeniu niecodziennych interakcji i wska&#x17A;nik&#xF3;w na stronie, kt&#xF3;re mog&#x105; s&#x142;u&#x17C;y&#x107; jako mocno szczeg&#xF3;&#x142;owe kryteria np. do segmentowania odbiorc&#xF3;w w kierowaniu poszczeg&#xF3;lnych reklam. W praktyce ten typ ma zastosowanie g&#x142;&#xF3;wnie w sytuacji posiadania us&#x142;ugi z bardzo du&#x17C;ym ruchem, dlatego w wi&#x119;kszo&#x15B;ci przypadk&#xF3;w sprawdz&#x105; si&#x119;&#xA0;<a href="https://developers.facebook.com/docs/facebook-pixel/reference?ref=kacperduras.pl" rel="noreferrer">standardowe zdarzenia</a>.</p><h2 id="z-czego-sk%C5%82adaj%C4%85-si%C4%99-zdarzenia-standardowe">Z czego sk&#x142;adaj&#x105; si&#x119; zdarzenia standardowe?</h2><p>Konstrukcja wygl&#x105;da w nast&#x119;puj&#x105;cy spos&#xF3;b:</p><pre><code class="language-javascript">fbq(&apos;track&apos;, &apos;[event]&apos;, {
  param: value
});</code></pre><p>Przy za&#x142;&#x105;czeniu kodu &#x15B;ledz&#x105;cego&#xA0;<em>Pixela</em>&#xA0;definiowana jest funkcja&#xA0;<code>fbq</code>, za pomoc&#x105; kt&#xF3;rej mo&#x17C;emy przesy&#x142;a&#x107; informacje w standaryzowanej formie.</p><p>Pierwszym parametrem jest&#xA0;<code>track</code>, czyli informacja o tym, &#x17C;e dany fragment kodu ma s&#x142;u&#x17C;y&#x107; do wysy&#x142;ania informacji o danym zdarzeniu. Nast&#x119;pnie, w kolejnym parametrze nale&#x17C;y dostarczy&#x107; informacje o tym, jaki rodzaj wydarzenia standardowego jest do przes&#x142;ania.&#xA0;<a href="https://developers.facebook.com/docs/facebook-pixel/reference?ref=kacperduras.pl" rel="noreferrer">Pe&#x142;na lista dost&#x119;pnych wariant&#xF3;w znajduje si&#x119; tutaj.</a>&#xA0;Trzecim argumentem jest tzw. obiekt&#xA0;<a href="https://pl.wikipedia.org/wiki/JSON?ref=kacperduras.pl" rel="noreferrer">JSON</a>, czyli specjalny format danych do wymiany informacji pomi&#x119;dzy systemami informatycznymi. W tym elemencie umieszczamy warto&#x15B;ci, potrzebne do prawid&#x142;owego pomiaru danych.&#xA0;<strong>Co wa&#x17C;ne, nie musimy dostarcza&#x107; identyfikatora u&#x17C;ytkownika -&#xA0;<em>Pixel</em>&#xA0;dane przypisze do odbiorc&#xF3;w w spos&#xF3;b automatyczny.</strong></p><h3 id="przyk%C5%82ad-implementacji">Przyk&#x142;ad implementacji</h3><pre><code class="language-html">&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;Przyk&#x142;adowa implementacja Facebook Pixel&lt;/title&gt;
    &lt;script&gt;
      !function(f,b,e,v,n,t,s)
      {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
      n.callMethod.apply(n,arguments):n.queue.push(arguments)};
      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=&apos;2.0&apos;;
      n.queue=[];t=b.createElement(e);t.async=!0;
      t.src=v;s=b.getElementsByTagName(e)[0];
      s.parentNode.insertBefore(t,s)}(window, document,&apos;script&apos;,
      &apos;https://connect.facebook.net/en_US/fbevents.js&apos;);
      fbq(&apos;init&apos;, &apos;[id]&apos;);
      fbq(&apos;track&apos;, &apos;PageView&apos;);
    &lt;/script&gt;
  &lt;/head&gt;
  
  &lt;body&gt;
    &lt;button type=&quot;button&quot; onclick=&quot;fbq(&apos;track&apos;, &apos;Purchase&apos;, {currency: &quot;PLN&quot;, value: 50.00});
&quot;&gt;Wy&#x15B;lij informacje o zakupie&lt;/button&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><p>Powy&#x17C;szy przyk&#x142;ad to przyk&#x142;adowa strona napisana w j&#x119;zyku HTML (i kodu JavaScripta, potrzebnego dla poprawnego dzia&#x142;ania rozszerzenia).</p><p>W sekcji&#xA0;<code>head</code>&#xA0;umieszczony jest oficjalny kod implementacyjny&#xA0;<em>Pixela</em>. Sk&#x142;ada si&#x119; on z trzech element&#xF3;w:</p><ul><li>zdefiniowanie funkcji&#xA0;<code>fbq</code>, dzi&#x119;ki kt&#xF3;rej mo&#x17C;emy przes&#x142;a&#x107; dane</li><li>wys&#x142;anie polecenia&#xA0;<code>init</code>&#xA0;do docelowego Pixela</li><li>raportowanie podstawowego wydarzenia&#xA0;<code>PageView</code>, kt&#xF3;re informuje o za&#x142;adowaniu si&#x119; strony internetowej</li></ul><p>Z kolei w sekcji&#xA0;<code>body</code>&#xA0;na potrzeby demonstracyjne przygotowa&#x142;em przycisk, po kt&#xF3;rego klikni&#x119;ciu wykonuje si&#x119; kod z parametru&#xA0;<code>onclick</code>, kt&#xF3;ry wygl&#x105;da nast&#x119;puj&#x105;co:</p><pre><code class="language-javascript">fbq(&apos;track&apos;, &apos;Purchase&apos;, {currency: &quot;PLN&quot;, value: 50.00});
</code></pre><p>Fragment definiuje to, &#x17C;e wysy&#x142;amy zdarzenie&#xA0;<code>Purchase</code>&#xA0;z dwiema informacjami: o walucie przyk&#x142;adowej transakcji (tj. PLN) i o wolumenie (tj. 50).&#xA0;<a href="https://developers.facebook.com/docs/facebook-pixel/reference?ref=kacperduras.pl" rel="noreferrer">Pe&#x142;na lista parametr&#xF3;w dla ka&#x17C;dego ze zdarze&#x144; znajduje si&#x119; tutaj.</a></p><h2 id="najwa%C5%BCniejsze-zdarzenia-standardowe">Najwa&#x17C;niejsze zdarzenia standardowe</h2><p>Nie wszystkie zdarzenia standardowe nale&#x17C;y implementowa&#x107;, jednak przy analizie konstrukcji strony internetowej szczeg&#xF3;lnie na te warto zwr&#xF3;ci&#x107; uwag&#x119;, gdy&#x17C; bardzo cz&#x119;sto b&#x119;d&#x105; pojawia&#x142;y si&#x119; przy pracy z narz&#x119;dziami Mety (Facebooka):</p><ul><li><code>PageView</code>&#xA0;&#x2014; podstawowe wydarzenie informuj&#x105;ce o za&#x142;adowaniu strony internetowej, dostarczane domy&#x15B;lnie w podstawowym kodzie Pixela</li><li><code>ViewContent</code>&#xA0;&#x2014; wy&#x15B;wietlenie wa&#x17C;nej zawarto&#x15B;ci, np. karty produktu</li><li><code>AddToCart</code>&#xA0;&#x2014; informacja o dodaniu produktu do koszyka (szczeg&#xF3;lnie przydatne w e-commerce)</li><li><code>AddPaymentInfo</code>&#xA0;&#x2014; dodanie danych do dostawy, p&#x142;atno&#x15B;ci etc.</li><li><code>InitiateCheckout</code>&#xA0;&#x2014; rozpocz&#x119;cie procedury p&#x142;atno&#x15B;ci</li><li><code>Purchase</code>&#xA0;&#x2014; ko&#x144;cowy zakup</li><li><code>Search</code>&#xA0;&#x2014; korzystanie z wewn&#x119;trznej wyszukiwarki w domenie</li><li><code>Contact</code>&#xA0;&#x2014; skorzystanie z formularza kontaktowego</li><li><code>Lead</code>&#xA0;&#x2014; informacja o wype&#x142;nieniu formularza (newsletterowego, zg&#x142;oszeniowego etc.)</li></ul><h2 id="weryfikacja-poprawno%C5%9Bci-instalacji">Weryfikacja poprawno&#x15B;ci instalacji</h2><p>Sama instalacja mo&#x17C;e by&#x107; procesem skomplikowanym, dlatego przed wypuszczeniem us&#x142;ugi do dzia&#x142;ania produkcyjnego, warto zweryfikowa&#x107; czy zmiany na stronie za&#x142;&#x105;czy&#x142;y si&#x119; poprawnie. Do pomocy przychodzi wtyczka dla przegl&#x105;darki&#xA0;<a href="https://chrome.google.com/?ref=kacperduras.pl" rel="noreferrer">Google Chrome</a>&#xA0;o nazwie&#xA0;<a href="http://web.archive.org/web/20230205043104/https://chrome.google.com/webstore/detail/facebook-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc">Facebook Pixel Helper</a>, kt&#xF3;ra:</p><ul><li>sprawdza, czy&#xA0;<em>Pixel&#xA0;</em>uruchamia si&#x119; na stronie</li><li>weryfikuje, jakie wydarzenia s&#x105; wysy&#x142;ane</li><li>pokazuje informacje przes&#x142;ane do Mety (Facebooka)</li></ul><p>Rozszerzenie jest dost&#x119;pne za darmo w&#xA0;<a href="https://chrome.google.com/webstore/detail/facebook-pixel-helper/fdgfkebogiimcoedlicjlajpkdmockpc?ref=kacperduras.pl" rel="noreferrer">Chrome Web Store</a>.</p>]]></content:encoded></item><item><title><![CDATA[Co to jest Meta (Facebook) Pixel i jak on działa?]]></title><description><![CDATA[Piksel Facebooka (ang. Facebook Pixel) to rozwiązanie firmy Facebook do mierzenia aktywności odbiorców na stronie internetowej.]]></description><link>https://kacperduras.pl/co-to-jest-meta-facebook-pixel-i-jak-on-dziala/</link><guid isPermaLink="false">6547bdca1a7c16ab49ec608d</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Mon, 24 Aug 2020 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1640441281085-9e2000f3d693?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fG1ldGF8ZW58MHx8fHwxNjk5MjAwMDE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1640441281085-9e2000f3d693?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fG1ldGF8ZW58MHx8fHwxNjk5MjAwMDE2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Co to jest Meta (Facebook) Pixel i jak on dzia&#x142;a?"><p>Piksel Mety [Facebooka] (ang. Meta [Facebook] Pixel) to rozwi&#x105;zanie firmy Meta do mierzenia aktywno&#x15B;ci odbiorc&#xF3;w na stronie internetowej i wi&#x105;zania konkretnych interakcji z dzia&#x142;aniami reklamowymi. Jest to podstawowe narz&#x119;dzie do prowadzenia p&#x142;atnych kampanii w ramach sieci reklamowej Mety (Facebooka).</p><div class="kg-card kg-toggle-card" data-kg-toggle-state="close">
            <div class="kg-toggle-heading">
                <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Spis tre&#x15B;ci</span></h4>
                <button class="kg-toggle-card-icon">
                    <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                        <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"/>
                    </svg>
                </button>
            </div>
            <div class="kg-toggle-content"><ol><li value="1"><a href="#jak-dzia-a-meta-facebook-pixel" rel="noreferrer"><span style="white-space: pre-wrap;">Jak dzia&#x142;a Meta (Facebook) Pixel?</span></a></li><li value="2"><a href="#zastosowania-meta-facebook-pixel" rel="noreferrer"><span style="white-space: pre-wrap;">Zastosowania Meta (Facebook) Pixel</span></a></li><li value="3"><a href="#jak-zainstalowa-meta-facebook-pixel" rel="noreferrer"><span style="white-space: pre-wrap;">Jak zainstalowa&#x107; Meta (Facebook) Pixel?</span></a></li><li value="4"><a href="#jak-oznacza-zdarzenia-przy-pomocy-meta-facebook-pixel" rel="noreferrer"><span style="white-space: pre-wrap;">Jak oznacza&#x107; zdarzenia przy pomocy Meta (Facebook) Pixel?</span></a></li><li value="5"><a href="#wady-meta-facebook-pixel" rel="noreferrer"><span style="white-space: pre-wrap;">Wady Meta (Facebook) Pixel</span></a></li></ol></div>
        </div><h2 id="jak-dzia%C5%82a-meta-facebook-pixel">Jak dzia&#x142;a Meta (Facebook) Pixel?</h2><p>Meta (Facebook) Pixel funkcjonuje jako fragment kodu JavaScript &#x2014; specjalnego j&#x119;zyka skryptowego, przeznaczonego do tworzenia zaawansowanych funkcjonalno&#x15B;ci us&#x142;ug internetowych. Reklamodawcy w ramach prowadzenia dzia&#x142;a&#x144; reklamowych, dostaj&#x105; specjalnie wygenerowan&#x105; tre&#x15B;&#x107;, kt&#xF3;r&#x105; musz&#x105; za&#x142;&#x105;czy&#x107; do witryny internetowej. Nast&#x119;pnie, po prawid&#x142;owej instalacji i oznaczeniu wydarze&#x144;, Meta (Facebook) Pixel wysy&#x142;a wszystkie niezb&#x119;dne informacje do sieci reklamowej, wi&#x105;&#x17C;&#x105;c profile odbiorc&#xF3;w z informacjami udost&#x119;pnionymi w ramach ekosystemu Mety (Facebooka).</p><p>Meta (Facebook) Pixel w swoim funkcjonowaniu stosuje pliki cookies, kt&#xF3;re pozwalaj&#x105; na przechowywanie informacji na urz&#x105;dzeniach odbiorc&#xF3;w. Dzia&#x142;anie to ma na celu dok&#x142;adniejsze segmentowanie audiencji, co pozwala na precyzyjniejsze dobieranie zawarto&#x15B;ci reklamowych.</p><h3 id="pliki-cookies">Pliki cookies</h3><p>Meta (Facebook) Pixel, jak wy&#x17C;ej wspomnia&#x142;em, stosuje pliki cookies okre&#x15B;lone jako pliki trzeciej kategorii &#x2014; oznacza to, i&#x17C; informacje tego typu generowane s&#x105; przez zewn&#x119;trzny podmiot dla naszego serwisu, jakim jest Meta.</p><p>Narz&#x119;dzie to tworzy nast&#x119;puj&#x105;ce ciasteczka:</p><ul><li>ciastko&#xA0;<code>_fbp</code>: identyfikator naszej przegl&#x105;darki (generowany przez Met&#x119;)</li><li>ciastko&#xA0;<code>_fbc</code>: identyfikator lokalizacji, z kt&#xF3;rej dotarli&#x15B;my na stron&#x119;, np. reklamy (generowany&#xA0;<strong>na podstawie&#xA0;</strong>danych od Mety<strong>)</strong></li></ul><p>Ka&#x17C;de z nich ma kompletnie inn&#x105; konstrukcj&#x119;, kt&#xF3;ra r&#xF3;&#x17C;ni si&#x119; w zale&#x17C;no&#x15B;ci od sytuacji.</p><h4 id="ciasteczko-fbp">Ciasteczko _fbp</h4><p>Plik cookie o nazwie&#xA0;<code>_fbp</code>&#xA0;jest identyfikatorem urz&#x105;dzenia, z jakim si&#x119; &#x142;&#x105;czymy: jest to szczeg&#xF3;lnie wa&#x17C;na informacja, poniewa&#x17C; w dzisiejszych czasach odbiorcy dokonuj&#x105; interakcji z r&#xF3;&#x17C;nych urz&#x105;dze&#x144; (np. telefony, tablety, zegarki etc.). Dzi&#x119;ki niemu reklamodawcy maj&#x105; &#x15B;wiadomo&#x15B;&#x107; na temat przekroju aktywno&#x15B;ci urz&#x105;dze&#x144; w ramach witryny, jak i s&#x105; w stanie mierzy&#x107; drog&#x119; klienta od zbudowania uwagi, do docelowej konwersji.</p><p>Wa&#x17C;n&#x105; informacj&#x105; jest to, &#x17C;e ciastko&#xA0;<code>_fbp</code>&#xA0;nie utworzy si&#x119;, je&#x15B;li:</p><ul><li>przegl&#x105;darka lub inne zainstalowane oprogramowanie b&#x119;dzie blokowa&#x142;o ciasta reklamowe podmiot&#xF3;w trzecich</li><li>urz&#x105;dzenie b&#x119;dzie mia&#x142;o wy&#x142;&#x105;czone zapisywanie plik&#xF3;w cookies</li></ul><p>Jest to na tyle spore utrudnienie, i&#x17C; nie pozwala na dotarcie do odbiorc&#xF3;w, kt&#xF3;rzy maj&#x105; kontakt z nasz&#x105; us&#x142;ug&#x105; z ruchu innego, ni&#x17C; Facebook.&#xA0;<a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/" rel="noreferrer">Rozwi&#x105;zaniem, kt&#xF3;re przychodzi na pomoc temu problemowi jest Meta (Facebook) Conversions API.</a></p><h4 id="ciasteczko-fbc">Ciasteczko _fbc</h4><p>Plik cookie o nazwie&#xA0;<code>_fbc</code>&#xA0;jest identyfikatorem, kt&#xF3;ry pozwala na zdefiniowanie rodzaju umiejscowienia na Facebooku, z jakiego przychodz&#x105; odbiorcy do witryny (np. reklama, link w Messengerze). Co wa&#x17C;ne, ciastko to mo&#x17C;e by&#x107; utworzone niezale&#x17C;nie od ustawie&#x144; prywatno&#x15B;ci przegl&#x105;darki &#x2014; spos&#xF3;b tworzenia znajduje si&#x119; w moim&#xA0;<a href="https://kacperduras.pl/post/co-to-jest-facebook-conversion-api/" rel="noreferrer">wpisie nt. Meta (Facebook) Conversions API</a>.</p><h3 id="ko%C5%84cowe-zapytanie">Ko&#x144;cowe zapytanie</h3><p>Meta (Facebook) Pixel w ramach udost&#x119;pnianego kodu JavaScript wykonuje warstwe logiczn&#x105; zwi&#x105;zan&#x105; z zapisywaniem ciasteczek na ko&#x144;cowych urz&#x105;dzeniach u&#x17C;ytkownik&#xF3;w, jak i wysy&#x142;aniem informacji w specjalnym formacie do Facebooka.</p><p>Ostateczne zapytanie, jakie nasze urz&#x105;dzenie skieruje do Facebooka, kierowane jest na niniejszy link:</p><pre><code>https://facebook.com/tr/</code></pre><p>&#x141;&#x105;cze za ka&#x17C;dym razem zwraca prze&#x17A;roczysty obrazek w wymiarze 1px na 1px, niezale&#x17C;nie od tego, jakie informacje prze&#x15B;lemy.&#xA0;<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS?ref=kacperduras.pl" rel="noreferrer">Jest to spos&#xF3;b na rozwi&#x105;zanie problem&#xF3;w z bezpiecze&#x144;stwem, zwi&#x105;zanego z wysy&#x142;aniem informacji do zewn&#x119;trznych podmiot&#xF3;w.</a>&#xA0;Wszystko zale&#x17C;y od tego, jakie informacje zawrzemy w parametrach linku.</p><h2 id="zastosowania-meta-facebook-pixel">Zastosowania Meta (Facebook) Pixel</h2><p>Meta (Facebook) Pixel jest podstawowym narz&#x119;dziem s&#x142;u&#x17C;&#x105;cym do mierzenia interakcji odbiorc&#xF3;w w ramach oferowanej witryny. Tym samym, dzi&#x119;ki niemu mo&#x17C;emy zrealizowa&#x107; takie czynno&#x15B;ci jak:</p><ul><li>docieranie ponowne do odbiorc&#xF3;w (tzw. remarketing)</li><li>segmentowanie audiencji wzgl&#x119;dem okre&#x15B;lonych aktywno&#x15B;ci (np. wype&#x142;nienie specjalnego formularza)</li><li>raportowanie ko&#x144;cowych konwersji na cele statystyczne (np. skuteczno&#x15B;&#x107; reklamy)</li></ul><p>Ponadto, Meta (Facebook) Pixel przy wysy&#x142;aniu okre&#x15B;lonych zdarze&#x144; umo&#x17C;liwia dostarczanie specjalnych parametr&#xF3;w, kt&#xF3;re dostarczaj&#x105; precyzyjniejsze szczeg&#xF3;&#x142;y realizacji interakcji.</p><p>Tyle, i a&#x17C; tyle: jak mo&#x17C;esz zauwa&#x17C;y&#x107;, bez niego skuteczne reklamowanie si&#x119; nie jest mo&#x17C;liwe.</p><h2 id="jak-zainstalowa%C4%87-meta-facebook-pixel">Jak zainstalowa&#x107; Meta (Facebook) Pixel?</h2><p>Instalacja kodu Meta (Facebook) Pixel jest bardzo prosta:</p><ol><li>Przejd&#x17A; do&#xA0;<a href="https://facebook.com/events_manager" rel="noreferrer">Mened&#x17C;era zdarze&#x144;</a>&#xA0;i wybierz kto ma by&#x107; w&#x142;a&#x15B;cicielem Piksela<em>&#xA0;</em>(dla firm posiadaj&#x105;cych Menad&#x17C;era Biznesowego)</li><li>Kliknij&#xA0;<strong>Po&#x142;&#x105;cz &#x17A;r&#xF3;d&#x142;a danych&#xA0;</strong>i wybierz opcj&#x119;<strong>&#xA0;Witryna.</strong></li><li>Wybierz&#xA0;<strong>Piksel Facebooka</strong>&#xA0;i kliknij&#xA0;<strong>Po&#x142;&#x105;cz</strong>.</li><li>Dodaj&#xA0;<strong>nazw&#x119; piksela</strong>.</li><li>Wprowad&#x17A; adres URL witryny, aby sprawdzi&#x107; opcje &#x142;atwej konfiguracji.</li><li>Kliknij&#xA0;<strong>Kontynuuj</strong>.</li></ol><p>Nast&#x119;pnie system zaproponuje dost&#x119;pne mo&#x17C;liwo&#x15B;ci automatycznych integracji. Je&#x15B;li nie b&#x119;dzie to wykonalne, zostanie za&#x142;&#x105;czona instrukcja jak zainstalowa&#x107; kod &#x15B;ledz&#x105;cy manualnie.</p><h3 id="kod-manualny-meta-facebook-pixel">Kod manualny Meta (Facebook) Pixel</h3><p>Instalacja kodu r&#x119;cznie b&#x119;dzie przy prowadzeniu dzia&#x142;a&#x144; reklamowych bardzo cz&#x119;sto spotykana. Ma on nast&#x119;puj&#x105;c&#x105; struktur&#x119;:</p><pre><code class="language-javascript">&lt;!-- Facebook Pixel Code --&gt;
&lt;script&gt;
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=&apos;2.0&apos;;
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window, document,&apos;script&apos;,
  &apos;https://connect.facebook.net/en_US/fbevents.js&apos;);
  fbq(&apos;init&apos;, &apos;[id]&apos;);
  fbq(&apos;track&apos;, &apos;PageView&apos;);
&lt;/script&gt;
&lt;!-- End Facebook Pixel Code --&gt;</code></pre><p>Sk&#x142;ada si&#x119; on z trzech nast&#x119;puj&#x105;cych element&#xF3;w:</p><ul><li>kodu inicjuj&#x105;cy, definiuj&#x105;cego start &#x142;adowania skryptu</li><li>polecenia&#xA0;<code>init</code>, kt&#xF3;ry okre&#x15B;la do jakiego Piksela (czyli miejsca przechowywania informacji) ma przesy&#x142;a&#x107; informacje.&#xA0;<strong>Wa&#x17C;ne</strong>: Piksel to nie jest Facebook Pixel. To pierwsze jest pozycj&#x105; w Mened&#x17C;erze zdarze&#x144;</li><li>polecenia&#xA0;<code>track</code>, kt&#xF3;re wysy&#x142;a zdarzenie&#xA0;<code>PageView</code>, czyli podstawow&#x105; informacj&#x119; o wy&#x15B;wietleniu Twojej witryny</li></ul><h2 id="jak-oznacza%C4%87-zdarzenia-przy-pomocy-meta-facebook-pixel">Jak oznacza&#x107; zdarzenia przy pomocy Meta (Facebook) Pixel?</h2><p>Meta (Facebook) Pixel na etapie inicjacji, stworzy&#x142; w kodzie naszej strony funkcj&#x119;&#xA0;<code>fbq</code>:</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">fbq(&apos;track&apos;, &apos;Purchase&apos;, {currency: &quot;PLN&quot;, value: 50.00});</code></pre><figcaption><p><span style="white-space: pre-wrap;">Przyk&#x142;adowy fragment kodu informuj&#x105;cy o zrealizowanej transakcji</span></p></figcaption></figure><p>Fragment kodu tego typu zawiera takie informacje:</p><ul><li><code>track</code>, czyli rodzaj polecenia, jakie jest wysy&#x142;ane</li><li><code>Purchase</code>, czyli typ za&#x142;&#x105;czonego zdarzenia</li><li><code>currency</code>&#xA0;i&#xA0;<code>value</code>, czyli warto&#x15B;ci charakterystyczne dla ka&#x17C;dego zdarzenia</li></ul><p><a href="https://developers.facebook.com/docs/facebook-pixel/reference?ref=kacperduras.pl" rel="noreferrer">Pe&#x142;na lista zdarze&#x144; i dost&#x119;pnych parametr&#xF3;w znajduje si&#x119; tutaj.</a></p><p>Fragment kodu podobnego typu nale&#x17C;y wykona&#x107; przy wykonaniu interakcji zgodnej z logik&#x105; biznesow&#x105; aplikacji.&#xA0;<a href="https://kacperduras.pl/post/facebook-pixel-ustawianie-standardowych-zdarzen/" rel="noreferrer">Wi&#x119;cej informacji umie&#x15B;ci&#x142;em tutaj.</a></p><h2 id="wady-meta-facebook-pixel">Wady Meta (Facebook) Pixel</h2><p>Meta (Facebook) Pixel jako narz&#x119;dzie stosuj&#x105;ce do swojego dzia&#x142;ania pliki cookies trzeciej kategorii jest stopniowo blokowane przez rozwi&#x105;zania s&#x142;u&#x17C;&#x105;ce do ochrony prywatno&#x15B;ci odbiorc&#xF3;w. Wi&#x119;cej o tym trendzie i o jednej z metod przeciwdzia&#x142;ania, napisa&#x142;em tutaj we wpisie na temat Meta (Facebook) Conversions API:</p><p>Je&#x17C;eli korzystasz z reklam na Facebooku lub dopiero zamierzasz przeznaczy&#x107; sw&#xF3;j bud&#x17C;et na now&#x105; reklam&#x119; w mediach spo&#x142;eczno&#x15B;ciowych, pami&#x119;taj, aby skonfigurowa&#x107; Meta (Facebook) Pixel.</p><p>Pomo&#x17C;e Ci on szybko i skutecznie zoptymalizowa&#x107; Twoj&#x105; reklam&#x119;. Tak, aby trafia&#x107; do jak najlepszej grupy odbiorc&#xF3;w, a przy tym mierzy&#x107; kluczowe konwersje dla Twojej us&#x142;ugi.</p>]]></content:encoded></item><item><title><![CDATA[Optymalizacja budżetu kampanii i praktyczne zastosowania]]></title><description><![CDATA[Jednym z popularniejszych problemów w planowaniu kampanii reklamowej jest ustalenie jej budżetu. Często po analizie możliwości biznesowych reklamodawcy mamy odpowiedzi na pytania, co chcemy uzyskać i za ile, ale nie jak to rozplanować.]]></description><link>https://kacperduras.pl/optymalizacja-budzetu-kampanii-i-praktyczne-zastosowania/</link><guid isPermaLink="false">6547bbf81a7c16ab49ec6076</guid><category><![CDATA[Meta]]></category><dc:creator><![CDATA[Kacper Duras]]></dc:creator><pubDate>Sat, 23 May 2020 22:00:00 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1518458028785-8fbcd101ebb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGJ1ZGdldHxlbnwwfHx8fDE2OTkyMDAwMzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1518458028785-8fbcd101ebb9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGJ1ZGdldHxlbnwwfHx8fDE2OTkyMDAwMzF8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Optymalizacja bud&#x17C;etu kampanii i praktyczne zastosowania"><p>Jednym z popularniejszych problem&#xF3;w w planowaniu kampanii reklamowej jest ustalenie jej bud&#x17C;etu. Cz&#x119;sto po analizie mo&#x17C;liwo&#x15B;ci biznesowych reklamodawcy mamy odpowiedzi na pytania, co chcemy uzyska&#x107; i za ile, ale nie jak to rozplanowa&#x107;. Pomocne w odpowiedzi na to pytanie mo&#x17C;e by&#x107; rozwi&#x105;zanie oferowane przez samego Facebooka.</p><p><strong>Optymalizacja bud&#x17C;etu kampanii</strong>&#xA0;(ang.&#xA0;<em>Campaign Budget Optimisation</em>) to funkcjonalno&#x15B;&#x107; wprowadzona w sierpniu 2019 (wst&#x119;pnie jako obowi&#x105;zkowa dla wszystkich,&#xA0;<a href="https://searchengineland.com/facebook-pulls-back-on-campaign-budget-optimization-mandate-333318?ref=kacperduras.pl" rel="noreferrer">p&#xF3;&#x17A;niej zmieniona jako zalecana, lecz opcjonalna</a>), maj&#x105;ca w za&#x142;o&#x17C;eniu odpowiada&#x107; na problemy reklamodawc&#xF3;w zwi&#x105;zane z zarz&#x105;dzaniem bud&#x17C;etem w ramach zestaw&#xF3;w reklam. Konstrukcja jest na poz&#xF3;r prosta, albowiem wymogiem jest konfiguracja kwoty kampanii nie na etapie tworzenia zestawu reklamowego (jak to by&#x142;o w znanym nam wszystkim, pierwotnym zamy&#x15B;le), a ca&#x142;ej kampanii. Jest to niew&#x105;tpliwie krok w prz&#xF3;d do oddania zarz&#x105;dzania dzia&#x142;aniami reklamowymi algorytmom, jednak warto spojrze&#x107; na dobre i z&#x142;e strony tego rozwi&#x105;zania.</p><h2 id="za%C5%82o%C5%BCenie-modelu">Za&#x142;o&#x17C;enie modelu</h2><p>Optymalizacja bud&#x17C;etu kampanii wykorzystuje bud&#x17C;et kampanii oraz strategi&#x119; sk&#x142;adania ofert (kt&#xF3;ra przy zastosowaniu rozwi&#x105;zania, musi by&#x107; jednolita dla wszystkich zawartych zestaw&#xF3;w reklam), np. najni&#x17C;szy koszt uzyskania dzia&#x142;ania, w celu automatycznego i ci&#x105;g&#x142;ego znajdowania aktywnych okazji do uzyskania oczekiwanych wynik&#xF3;w przez reklamy. Co warto zaznaczy&#x107;,&#xA0;<strong>CBO uwzgl&#x119;dnia harmonogramy zaplanowanych zestaw&#xF3;w</strong>, wi&#x119;c nie powinno by&#x107; problemu przy skalowaniu dzia&#x144; i rozdzielaniu zasob&#xF3;w finansowych przy wi&#x119;kszej ilo&#x15B;ci kolekcji (<a href="https://www.facebook.com/business/help/519856662172206" rel="noreferrer">kt&#xF3;ra wed&#x142;ug oficjalnej dokumentacji Facebooka mo&#x17C;e wynosi&#x107; a&#x17C; 200!</a>), przy jednoczesnej, aktualnej analizie dzia&#x142;a&#x144;, w po&#x142;&#x105;czeniu z obranym celem reklamowym.</p><h2 id="jak-dzia%C5%82a-to-w-praktyce">Jak dzia&#x142;a to w praktyce?</h2><p>Papier przyjmie wszystko, jednak praktyka pokazuje, &#x17C;e rozwi&#x105;zania przedstawiane zazwyczaj jako lepsze, bardzo cz&#x119;sto sprawiaj&#x105; problemy i obni&#x17C;aj&#x105; jako&#x15B;&#x107; przeprowadzanych dzia&#x142;a&#x144; reklamowych.&#xA0;<strong>G&#x142;&#xF3;wnym za&#x142;o&#x17C;eniem CBO jest jak najta&#x144;szy koszt wykonania przez odbiorc&#x119; akcji, jak&#x105; okre&#x15B;la cel reklamowy</strong>. W zwi&#x105;zku z tym, rozdzielaj&#x105;c bud&#x17C;et na najbardziej skuteczne zestawy reklam, wybiera cz&#x119;sto te, w kt&#xF3;rych koszt dotarcia jest najni&#x17C;szy i mocno promuje je do ko&#x144;ca trwania kampanii, co niekoniecznie musi wi&#x105;za&#x107; si&#x119; z tym, &#x17C;e premiuje te zestawy, kt&#xF3;re przynosz&#x105; najbardziej warto&#x15B;ciowe konwersje (np. zakup). Dlatego pomimo zastosowanego CBO,&#xA0;<strong>trzeba dalej ca&#x142;y czas dogl&#x105;da&#x107; reklamy</strong>. Trzeba r&#xF3;wnie&#x17C; zaznaczy&#x107;, &#x17C;e optymalizacja bud&#x17C;etu na poziomie kampanii&#xA0;<strong>nie wy&#x142;&#x105;czy wszystkich zb&#x119;dnych zestaw&#xF3;w reklam</strong>. Facebook pozb&#x119;dzie si&#x119; jedynie warto&#x15B;ci skrajnych, a reszcie reklam b&#x119;dzie rozdziela&#x142; bud&#x17C;et w zale&#x17C;no&#x15B;ci od zapotrzebowania.</p><h3 id="czego-nie-robi%C4%87">Czego nie robi&#x107;?</h3><h4 id="1-nie-testuj-za-pomoc%C4%85-cbo-kreacji">1. Nie testuj za pomoc&#x105; CBO kreacji</h4><p>Po pierwsze, od tego s&#x105; w&#x142;a&#x15B;ciwe testy A/B, kt&#xF3;re optymalizuj&#x105; reklamy pod k&#x105;tem wy&#x142;onienia lepszego wska&#x17A;nika. Po drugie, ta&#x144;szy wynik nie oznacza warto&#x15B;ciowego rezultatu - czasem z&#x142;ot&#xF3;wka za klikni&#x119;cie wi&#x119;cej mo&#x17C;e by&#x107; niczym w naszym bud&#x17C;ecie, a w rezultacie pozwoli dopi&#x105;&#x107; kolejn&#x105; warto&#x15B;ciow&#x105; konwersj&#x119;.</p><h4 id="2-nie-ustawiaj-w-ramach-jednej-kampanii-kilku-skrajnych-grup-docelowych">2. Nie ustawiaj w ramach jednej kampanii kilku skrajnych grup docelowych</h4><p>Grupy oparte na zainteresowaniach, podobne, niestandardowe - brzmi cudownie, a automatyczna optymalizacja powoduje, &#x17C;e &#x15B;wiat staje si&#x119; bajk&#x105;. Niestety tak nie jest, a CBO jak wy&#x17C;ej wspomnia&#x142;em, premiuje zestawy przynosz&#x105;ce najwi&#x119;cej tanich konwersji, a bardzo cz&#x119;sto takimi s&#x105; grupy remarketingowe, wi&#x119;c jak stosujesz CBO - rozdzielaj grupy w kampaniach!</p><h4 id="3-dobierz-odpowiedni-cel-reklamowy">3. Dobierz odpowiedni cel reklamowy</h4><p>Wszystkie cele zawarte w zak&#x142;adce&#xA0;<em>Konwersje</em>&#xA0;wymagaj&#x105; du&#x17C;ej ilo&#x15B;ci danych, wi&#x119;c CBO nie jest panaceum na nag&#x142;y wzrost sprzeda&#x17C;y o np. 300% :) Lepiej zastosowa&#x107; pozosta&#x142;e cele, jak np. te z kategorii&#xA0;<em>Dzia&#x142;ania</em>.</p><h3 id="dobre-praktyki">Dobre praktyki</h3><h4 id="1-stosuj-limit-wydatk%C3%B3w">1. Stosuj limit wydatk&#xF3;w</h4><p>Ka&#x17C;dy zestaw w ramach CBO mo&#x17C;e mie&#x107; skonfigurowany limit wydatk&#xF3;w. Warto z niego skorzysta&#x107; i pomimo powierzenia cz&#x119;&#x15B;ci pola automatowi, ustali&#x107; g&#xF3;rn&#x105; granic&#x119; tak, by kontrolowa&#x107; optymalizacje reklam - w momencie ustabilizowania, mo&#x17C;na wy&#x142;&#x105;czy&#x107; zb&#x119;dne zestawy i poluzowa&#x107; regu&#x142;y wydatkowe.</p><h4 id="2-u%C5%BCyj-tam-gdzie-faktycznie-potrzebujesz-tylko-taniego-ruchu">2. U&#x17C;yj tam, gdzie faktycznie potrzebujesz tylko taniego ruchu</h4><p>U&#x17C;yteczne jest to np. w celu&#xA0;<em>Aktywno&#x15B;&#x107;</em>, kt&#xF3;ry dla ko&#x144;cowego odbiorcy nie jest wymagaj&#x105;cy, a dla reklamodawcy jest bardzo tani, a mo&#x17C;e by&#x107; przy du&#x17C;ej grupie docelowej jeszcze ta&#x144;szy.</p>]]></content:encoded></item></channel></rss>