Wdrożenie Facebooka w PrestaShop to nie jedno kliknięcie, a kilka niezależnych elementów: Pixel, Conversions API, katalog produktów, Facebook Shop, Messenger i logowanie. Każdy z nich ma inną rolę, inny koszt wdrożenia i inny koszt utrzymania. Sensowna kolejność to najpierw pomiar, potem katalog, a dopiero na końcu funkcje społecznościowe. Punktem wyjścia do reszty materiałów o sklepie jest nasz hub: PrestaShop.
W PrestaShop Facebook to sześć niezależnych elementów, nie jeden przełącznik w panelu. Każdy ma inną rolę, inny czas wdrożenia i inny koszt utrzymania. Poniżej mapa decyzyjna dla sklepu MŚP — bez modułów „wszystko w jednym”, które po aktualizacji PrestaShop 1.7 → 8 gubią połowę zdarzeń.
Kolejność ma znaczenie. Najpierw pomiar na wszystkich szablonach, potem katalog, na końcu funkcje społecznościowe. Jeżeli budżet reklamowy to 500–1500 zł miesięcznie, a sklep robi 20–50 zamówień, Pixel z poprawnie wywołanym Purchase zwykle wystarcza. Conversions API wchodzi w grę, gdy różnica między liczbą zamówień w PrestaShop a zdarzeniami Purchase w Events Managerze przekracza 15–20%. Katalog produktów (feed XML) ma sens od razu, jeśli chcesz remarketingu dynamicznego — bez feedu nie zbudujesz reklamy z produktem, który ktoś zostawił w koszyku. Facebook Shop dokładaj dopiero po 2–3 tygodniach stabilnego feedu: zły feed to odrzucone produkty i zmarnowane godziny na korespondencję.
Messenger wdrażaj tylko wtedy, gdy ktoś realnie odpowiada w ciągu godziny w dni robocze. Sam czat na stronie bez obsługi generuje gorsze opinie niż jego brak. Login przez Facebooka w większości sklepów MŚP odpuszczamy: dochodzą zgody, zapis w polityce prywatności i drugi kanał uwierzytelniania do utrzymania, a klienci i tak częściej wybierają zakupy bez konta.
Punktem wyjścia do reszty materiałów o sklepie jest nasz przewodnik po wdrożeniach i integracjach PrestaShop. Jeśli planujesz przy okazji porządki w sklepie, zobacz też cennik wdrożeń i migracji PrestaShop.
| Element | Do czego służy | Orientacyjny czas wdrożenia | Kiedy odpuścić |
|---|---|---|---|
| Pixel (przeglądarka) | PageView, ViewContent, AddToCart, InitiateCheckout, Purchase | 2–6 roboczogodzin | Nigdy, jeśli w ogóle reklamujesz |
| Conversions API | Te same zdarzenia z serwera, niezależnie od blokerów i cookies | 1 dzień (gotowy moduł) lub 3–5 dni (własny kod) | Gdy budżet reklamowy poniżej ok. 1500 zł/mies. |
| Katalog produktów (feed) | Reklamy dynamiczne, remarketing, Advantage+ | 4–8 godzin pracy + czas przetworzenia po stronie Meta | Sklep z mniej niż 50 aktywnymi produktami i bez remarketingu |
| Facebook Shop | Zakupy w aplikacji, dodatkowy kanał sprzedaży | 1–2 dni, głównie na poprawki w feedzie | Gdy katalog bywa niespójny (stany, ceny) |
| Messenger | Pytania o dostawę, status zamówienia | 2–4 godziny | Gdy nikt nie pilnuje skrzynki |
| Login przez Facebooka | Rejestracja bez hasła | 2–4 dni, w tym RODO i polityka prywatności | W większości sklepów MŚP |
Meta nie „widzi” Twojego sklepu. Dostaje dokładnie to, co wyślesz: albo skryptem w przeglądarce (Pixel), albo żądaniem HTTPS z serwera (Conversions API). Reszta to kwestia parametrów i tego, czy umiesz je poprawnie zbudować. Warto pamiętać, że CAPI to zwykłe żądanie POST do Graph API — nagłówki, body i kody odpowiedzi opisuje dokumentacja HTTP w MDN.
| Zdarzenie | Gdzie je wywołać | Wymagane parametry |
|---|---|---|
| ViewContent | Karta produktu | content_ids, content_type=product, value, currency |
| AddToCart | Potwierdzenie dodania do koszyka (AJAX lub hook) | content_ids, contents, value, currency |
| InitiateCheckout | Wejście w proces zamówienia | num_items, value, currency |
| Purchase | Strona potwierdzenia zamówienia | value, currency, content_ids, order_id |
1. Kod bazowy. Nie edytuj plików core. Zrób mały moduł w modules/dd_pixel/ z metodą hookDisplayHeader() i wstrzyknij skrypt z identyfikatorem Piksela przed </head>. Alternatywa bez modułu: themes/<twoj_motyw>/templates/_partials/head.tpl. Jeśli potrzebujesz skryptu przed </body>, użyj hooka displayBeforeBodyClosingTag (dostępnego w nowszych wersjach 1.7 i w 8.x). Strukturę hooków znajdziesz w dokumentacji deweloperskiej PrestaShop.
2. Zdarzenia. ViewContent na karcie produktu (hook displayProductAdditionalInfo lub szablon produktu), AddToCart po dodaniu do koszyka, InitiateCheckout na wejściu w koszyk, Purchase na stronie potwierdzenia zamówienia (displayOrderConfirmation albo override kontrolera potwierdzenia, jeśli motyw ma własny szablon).
3. Weryfikacja domeny. W Events Managerze: Ustawienia marki → Weryfikacja domeny → metatag w head.tpl. Zrób to przed uruchomieniem kampanii — bez weryfikacji konfiguracja zdarzeń agregowanych i priorytetyzacja działają po Twojej niekorzyści.
4. Testy. Meta Pixel Helper pokaże, czy zdarzenie wychodzi i jakie parametry niesie. Events Manager → Test Events z kodem testowym do wklejenia na stronę daje podgląd zdarzeń w czasie realnym. Sprawdź osobno: produkt, dodanie do koszyka, pełne zamówienie w trybie testowym płatności.
Pułapki. Po zmianie szablonu wyczyść cache PrestaShop (Zaawansowane → Wydajność) i cache CDN — inaczej testujesz stary kod. Zabezpiecz Purchase identyfikatorem zamówienia jako event_id, żeby odświeżenie strony nie dublowało konwersji. A przy migracji sklepu PrestaShop koniecznie zdejmij Piksel z kopii testowej — inaczej wyślesz do Meta ruch i zamówienia, które nigdy nie istniały.
| Miejsce w PrestaShop | Co wpiąć | Hook / plik |
|---|---|---|
| Cały sklep | Kod bazowy Piksela | hookDisplayHeader() lub head.tpl |
| Karta produktu | ViewContent | displayProductAdditionalInfo lub szablon produktu |
| Koszyk | InitiateCheckout | displayShoppingCart |
| Potwierdzenie zamówienia | Purchase z event_id = ID zamówienia | displayOrderConfirmation |
| Skrypty przed </body> | Dodatkowe tagi | displayBeforeBodyClosingTag |
Conversions API (CAPI) to wysyłka zdarzeń z serwera sklepu, niezależnie od tego, czy przeglądarka klienta zablokuje skrypt Pixela. W PrestaShop 1.7 i 8 najprościej podpiąć się pod hook actionValidateOrder (zakup) oraz actionCartSave (dodanie do koszyka) i zapisać zdarzenie do własnej tabeli kolejki — np. dd_capi_queue — zamiast wysyłać je w trakcie requestu klienta. Wysyłka w hooku oznacza, że każde opóźnienie API Meta wydłuża składanie zamówienia.
Potrzebujesz trzech elementów:
/{wersja_api}/{Dataset ID}/events z parametrem access_token. Semantykę metod i kodów odpowiedzi HTTP opisuje dokumentacja MDN.Dane osobowe trafiają do Meta wyłącznie jako hash SHA-256, małymi literami, po wcześniejszym oczyszczeniu (trim, lowercase, telefon w formacie E.164 bez znaku „+”). Wartości fbp, fbc, adres IP i user agent wysyłasz bez hashowania — są to identyfikatory techniczne, nie dane osobowe.
Kolejkę opróżnia cron co minutę, paczkami po 50–100 zdarzeń (limit API to 1000 zdarzeń na żądanie). Przy błędzie stosuj ponowienia z odstępem 1 s / 5 s / 30 s / 5 min, maksymalnie 5 prób, a po 24 godzinach przenieś rekord do tabeli „dead letter”. Loguj zawsze kod odpowiedzi, error_subcode i fbtrace_id — bez tego Meta nie pomoże w diagnozie. Najczęstsze kody: 190 (token), 100 (zły parametr), 102 (limit).
Deduplikację z Pixel przeglądarkowym robisz przez event_id: to samo zdarzenie z serwera i z przeglądarki z identycznym event_id w oknie 48 godzin Meta scali w jedno. Ustawiaj go deterministycznie, np. purchase_18452 — nie losowo. Jakość dopasowania (Event Match Quality) sprawdzisz w Events Manager w widoku zdarzeń; ocena liczona jest w skali 0–10 i rośnie, gdy dosyłasz e-mail, telefon, external_id oraz fbp/fbc. Status integracji zobaczysz w źródłach danych przy swoim Datasecie — kolumna pokazuje, czy działa tylko przeglądarka, czy przeglądarka i serwer. Przed startem wykonaj zakup testowy w zakładce Test zdarzeń.
| Pole | Format przed hashem | Hash SHA-256 |
|---|---|---|
| em | małe litery, bez spacji | tak |
| ph | E.164 bez „+”, np. 48601234567 | tak |
| fn / ln | małe litery, bez interpunkcji | tak |
| external_id | ID klienta z PrestaShop | tak |
| fbp / fbc | wartość z cookie _fbp / _fbc | nie |
| client_ip_address, client_user_agent | z requestu HTTP | nie |
Feed to plik, który Meta pobiera z Twojego serwera. Możesz wygenerować go gotowym modułem, ale przy katalogu powyżej 500 produktów lepiej napisać własny kontroler zwracający XML i uruchamiać go cronem co 2–4 godziny. PrestaShop udostępnia do tego obiekty produktów i kombinacji — punkt wyjścia znajdziesz w dokumentacji dla deweloperów PrestaShop. Plik generowany „w locie” przy każdym pobraniu przez Meta obciąża serwer; lepiej zapisać go do pliku i podstawić gotowy.
Podstawowe zasady, które decydują o przyjęciu produktu:
id musi być stabilne i zgodne z content_id wysyłanym w Pixelu. Jeśli w feedzie masz 142-38 (produkt-kombinacja), a w zdarzeniach tylko 142, reklamy dynamiczne nie dopasują produktów.price podajesz jako 29.99 PLN — kropka dziesiętna, spacja, kod ISO waluty. Przecinek i „zł” to najczęstsza przyczyna odrzuceń.link musi prowadzić do dokładnie tego samego produktu i ceny co w feedzie. Rozjazd ceny to odrzucenie bez ostrzeżenia.image_link minimum 500×500 px, praktycznie 1200×1200 px, bez znaków wodnych i napisów zajmujących więcej niż 10% kadru.availability przyjmuje in stock, out of stock, preorder — nie „dostępny”.item_group_id, inaczej katalog pokaże trzy osobne produkty zamiast jednego z rozmiarami.Kategorię mapujesz przez google_product_category — podajesz identyfikator numeryczny z oficjalnej taksonomii Google, nie własną nazwę kategorii ze sklepu. Waluta: jeśli sprzedajesz w PLN i EUR, przygotuj osobny feed na walutę, bo Meta bierze cenę dokładnie taką, jaka jest w pliku, i nie przelicza jej po kursie z dnia.
Diagnostykę prowadzisz w Commerce Manager → Katalog → Dane: filtruj osobno błędy i ostrzeżenia. Najczęstsze problemy to brak GTIN i marki, duplikaty id, za małe zdjęcia i cena inna niż na stronie. Brak gtin nie zawsze blokuje produkt, ale obniża dopasowanie w reklamach dynamicznych — uzupełnij EAN-13, jeśli go masz gdziekolwiek w PIM lub u dostawcy.
| Pole feedu | Wymagane | Typowa pułapka |
|---|---|---|
| id | tak | brak zgodności z content_id w Pixelu |
| title | tak | brak marki i modelu, ucinanie po 150 znakach |
| description | tak | HTML w treści, brak opisu wariantu |
| availability | tak | wartości spoza słownika Meta |
| price | tak | przecinek dziesiętny, brak kodu waluty |
| link | tak | brak https, link do kategorii zamiast produktu |
| image_link | tak | zdjęcie poniżej 500 px, znak wodny |
| brand | warunkowo | pusty przy produktach bez GTIN |
| gtin | zalecane | błędna suma kontrolna EAN-13 |
Te integracje mają sens tylko wtedy, gdy ktoś realnie obsługuje kanał. Czat Messenger warto włączyć, gdy sklep dostaje więcej niż kilkadziesiąt zapytań miesięcznie i odpowiadasz w ciągu godziny w godzinach pracy. Widget dodany „na wszelki wypadek” i ignorowany przez tydzień działa gorzej niż jego brak — klient pisze, nie dostaje odpowiedzi, wychodzi.
Instagram DM ma sens przy produktach wizualnych: odzież, wnętrza, biżuteria, rękodzieło. Wymaga konta IG powiązanego z fanpage’em i obsługi najlepiej z Meta Business Suite, żeby nie skakać między trzema skrzynkami. Messenger i Instagram to dziś ten sam backend Meta, więc wdrożenie obu to jedna decyzja, nie dwie.
Facebook Login ma sens wyłącznie wtedy, gdy naprawdę wykorzystasz dane z profilu — np. do weryfikacji wieku przy alkoholu albo do zapisania konfiguracji produktu na koncie. Jako skrót rejestracji w zwykłym sklepie się nie broni: adres dostawy i tak trzeba podać ręcznie, a Ty dokładasz zależność od zewnętrznego SDK przy każdej sesji logowania.
RODO: dane z Messengera i loginu to dane osobowe. W polityce prywatności musi pojawić się odbiorca danych (Meta Platforms), podstawa prawna, zakres i okres retencji. Jeśli używasz automatycznych odpowiedzi, klient musi wiedzieć, że rozmawia z botem. Zgoda marketingowa na Messenger nie może być zaznaczona domyślnie ani warunkować założenia konta — trzymaj ją osobno od newslettera i od regulaminu.
Największe ryzyko to wydajność. Każdy zewnętrzny skrypt to dodatkowe zapytanie DNS, uzgadnianie TLS i 100–300 kB JavaScriptu. Ładuj widget czatu po pierwszej interakcji użytkownika (scroll lub 3 sekundy), dodaj preconnect do domeny dostawcy i nigdy nie wstawiaj SDK logowania na kartach produktowych ani w koszyku. Sprawdź efekt w PageSpeed Insights przed i po wdrożeniu — jeśli LCP rośnie o więcej niż 0,3 s, rozwiązanie jest do poprawy. Zakres i koszt takich prac opisujemy w cenniku wdrożeń i migracji PrestaShop.
Wracając do kolejności z początku tekstu: pomiar i katalog robisz raz i działają w tle. Czat i logowanie wymagają stałej obsługi — wdrażaj je dopiero, gdy masz na to ludzi.
Większość problemów z Facebookiem w PrestaShop to nie „błędy Meta”, tylko skutek tego, że Pixel, CAPI i feed czytają inne dane niż sklep. Diagnostykę zacznij od trzech miejsc: Events Manager → zestaw danych → Test Events (podgląd zdarzeń na żywo), logi serwera z pełną odpowiedzią API (kod HTTP plus podtyp błędu) oraz Commerce Manager → katalog → Diagnostyka. Dopiero potem zaglądaj do kampanii.
Przy 401 i 403 nie zgaduj — to kody nieautoryzowanego i zabronionego dostępu, więc sprawdź, czy token systemowy należy do właściwego zestawu danych i czy nie wygasł, a nie tylko czy moduł jest włączony. Znaczenie tych kodów opisuje dokumentacja HTTP na MDN.
| Objaw | Najczęstsza przyczyna | Jak wykryć |
|---|---|---|
| Brak zdarzeń w Events Manager | Pixel wklejony w szablon motywu, zminifikowany przez CCC albo blokowany przez moduł zgód | Test Events i sprawdzenie w konsoli, czy istnieje obiekt fbq |
| Podwójny Purchase, zawyżona wartość koszyka | Pixel i CAPI wysyłają to samo zdarzenie bez wspólnego event_id | Porównaj liczbę Purchase w Events Manager z liczbą zamówień w PrestaShop (Zamówienia, filtr daty) |
| Zdarzenie idzie, ale nie łączy się z zamówieniem | event_id generowany z ID koszyka, inny format w Pixelu i CAPI | Szczegóły zdarzenia w Test Events, potem porównanie z ID zamówienia w bazie (tabela orders) |
| 401 lub 403 z CAPI | Wygasły albo osobisty token, token z innego zestawu danych, brak uprawnień użytkownika systemowego | Podtyp błędu w odpowiedzi API i logi serwera |
| Feed odrzucony | Brak wymaganych atrybutów, niedozwolone znaki, nieaktualna polityka zwrotów | Diagnostyka źródła danych w katalogu, potem eksport podejrzanych SKU |
| Niezgodne ceny i brak dostępności | Feed czytany z tabeli product zamiast product_shop i product_attribute, brak reguł cenowych, zaległy cron | Losowe 20 SKU: feed kontra karta produktu, plus data ostatniej synchronizacji |
| Zdarzenia znikają u części użytkowników | Konflikt z CCC, lazy-load, defer JS, modułem cookie i modułami optymalizacji szybkości | Test w trybie incognito: raz ze zgodą, raz bez, i porównanie z użytkownikiem zalogowanym |
| Objaw | Najczęstsza przyczyna | Jak wykryć |
|---|---|---|
| Brak zdarzeń w Events Manager | Pixel wklejony w szablon motywu, zminifikowany przez CCC albo blokowany przez moduł zgód | Test Events i sprawdzenie w konsoli, czy istnieje obiekt fbq |
| Podwójny Purchase, zawyżona wartość koszyka | Pixel i CAPI wysyłają to samo zdarzenie bez wspólnego event_id | Porównanie liczby Purchase w Events Manager z liczbą zamówień w PrestaShop |
| Zdarzenie idzie, ale nie łączy się z zamówieniem | event_id generowany z ID koszyka, inny format w Pixelu i CAPI | Szczegóły zdarzenia w Test Events, porównanie z ID zamówienia w bazie |
| 401 lub 403 z CAPI | Wygasły lub osobisty token, token z innego zestawu danych | Podtyp błędu w odpowiedzi API i logi serwera |
| Feed odrzucony | Brak wymaganych atrybutów, niedozwolone znaki, nieaktualna polityka zwrotów | Diagnostyka źródła danych w katalogu |
| Niezgodne ceny i brak dostępności | Feed czytany z tabeli product zamiast product_shop i product_attribute, zaległy cron | Losowe 20 SKU: feed kontra karta produktu |
| Znikające zdarzenia u części użytkowników | Konflikt z CCC, lazy-load, modułem cookie i optymalizacją szybkości | Test w incognito ze zgodą i bez zgody |
Nie da się podać jednej kwoty, bo „integracja z Facebookiem” to pięć niezależnych zadań, a nie jedno kliknięcie. Realne zakresy robocze dla sklepu na jeden lub dwa języki, bez ERP i z danymi gotowymi do eksportu:
Typowy sklep zamyka się w 40–80 godzinach. Katalog 10 000+ SKU z wariantami i tłumaczeniami to 100+ godzin, bo czasu nie zjada kod, a dane: brakujące atrybuty, duplikaty SKU, opisy ze znacznikami HTML.
Wycena rośnie przez liczbę języków (osobny feed albo pola per język), liczbę walut (przeliczanie i zaokrąglanie cen), liczbę wariantów w product_attribute, źródło stanów w ERP (feed z Subiekta lub Comarchu zamiast z PrestaShop to osobny connector i opóźnienia), słaby serwer (generowanie feedu dla 20 tys. produktów wymaga kolejki i limitu pamięci) oraz multishop z niestandardowymi regułami cenowymi.
W DropDigital piszemy własne moduły pod konkretny sklep, a nie konfigurujemy wtyczki z marketplace. Aktualizacja PrestaShop nie wywraca wtedy integracji, kod zostaje w repozytorium klienta, a po wdrożeniu obowiązuje SLA — na przykład reakcja w 24 h w dni robocze na brak zdarzeń albo 403 z CAPI. Stawki i zakres znajdziesz w naszym cenniku wdrożeń i migracji PrestaShop w Szczecinie.
Checklista istnieje po to, żeby nie odpalać kampanii przed testami. Kolejność ma znaczenie: najpierw pomiar, potem katalog, na końcu funkcje społecznościowe.
Przed startem kampanii:
Testy końcowe: zakup testowy z linkiem zawierającym fbclid, kontrola wartości i waluty zamówienia, powtórka na telefonie i na wolnym łączu.
Monitoring: po 7 dniach porównaj liczbę Purchase w Events Manager z liczbą zamówień w PrestaShop — odchylenie do 5% jest normalne, więcej oznacza problem z deduplikacją lub zgodami. Po 14 dniach sprawdź jakość dopasowania zdarzeń, logi pod kątem 401/403 i to, czy nowe warianty wchodzą do katalogu. Po 30 dniach przejrzyj koszt zakupu, audyt duplikatów oraz atrybuty i polityki po zmianach w sklepie.
| Zadanie | Kto odpowiada | Kiedy |
|---|---|---|
| Dane produktowe, ceny, dostępność | Sklep (osoba od e-commerce) | Na bieżąco |
| Moduł, feed, deduplikacja zdarzeń | Agencja wdrożeniowa | Po wdrożeniu i po każdej aktualizacji PrestaShop |
| Aktualizacje PrestaShop, kopie, staging | Hosting lub dział utrzymania | Przed każdym upgradem |
| Kampanie, budżety, kreacje | Marketing lub klient | Codziennie |
| Zgody i zgodność z RODO | Klient i obsługa prawna | Przy każdej zmianie modułu cookie |
Pixel wklejony w jeden plik motywu bez zdarzeń — zbiera tylko PageView, więc kampanie nie mają czego optymalizować.
Jak wykryć: Meta Pixel Helper na karcie produktu i w koszyku pokazuje wyłącznie PageView; w Events Manager nie pojawiają się AddToCart ani Purchase.
Jak naprawić: Wpiąć zdarzenia w hooki PrestaShop (osobno widok produktu, dodanie do koszyka, rozpoczęcie zamówienia, potwierdzenie zamówienia) albo użyć modułu, który to robi i jest aktualizowany.
Duplikaty zdarzeń, gdy Pixel i Conversions API wysyłają to samo zdarzenie bez wspólnego identyfikatora.
Jak wykryć: W Events Manager liczba zdarzeń jest wyższa niż realna liczba działań w sklepie, a przy zdarzeniach pojawia się ostrzeżenie o braku deduplikacji.
Jak naprawić: Wysyłać ten sam event_name i ten sam event_id z przeglądarki i z serwera. ID musi być generowane raz, przy zdarzeniu, nie losowane osobno w każdym kanale.
Zdarzenie Purchase bez parametrów value i currency — dane są bezużyteczne w raportach i przy optymalizacji budżetu.
Jak wykryć: Test Events pokazuje Purchase bez wartości; w zestawieniu zdarzeń brak sumy przychodu.
Jak naprawić: Przekazywać wartość zamówienia i walutę sklepu, spójne z tym, co widzi klient w podsumowaniu. Przy wielu walutach sprawdzić, czy nie mieszają się w jednym zdarzeniu.
Feed produktowy z cenami i dostępnością, które nie zgadzają się ze sklepem — produkty wypadają z Facebook Shop i reklam dynamicznych.
Jak wykryć: W Commerce Manager widać odrzucone produkty z powodem „niezgodna cena” lub „brak dostępności”; klient zgłasza inną cenę niż w reklamie.
Jak naprawić: Mapować cenę brutto z walutą, pobierać dostępność z realnego stanu magazynowego i ustawić częstą aktualizację feedu. Po zmianach cen ręcznie wymusić odświeżenie.
Wywołanie CAPI synchronicznie w trakcie składania zamówienia — sklep czeka na odpowiedź zewnętrznego serwera.
Jak wykryć: Wydłużony czas potwierdzenia zamówienia, błędy przy słabym łączu, w logach widoczne oczekiwanie na odpowiedź API.
Jak naprawić: Zapisywać zdarzenie do kolejki i wysyłać je cronem, z logowaniem błędów i ponowieniami. Checkout ma zależeć od sklepu, nie od dostępności Mety.
Konflikt z cache i modułami zgód — Pixel odpala się przed zgodą albo cache serwuje ten sam identyfikator zdarzenia dla wielu użytkowników.
Jak wykryć: Po wyczyszczeniu cache zdarzenia wyglądają inaczej niż przed; w konsoli widać skrypt ładowany przed banerem cookies.
Jak naprawić: Wyłączyć cache stron dla koszyka i zamówienia, ładować skrypty marketingowe po uzyskaniu zgody i generować identyfikatory po stronie serwera, nie w cache'owanym HTML.
Facebook w PrestaShop to zestaw kilku niezależnych integracji, a nie jedna wtyczka do włączenia. Zacznij od pomiaru — Pixel, potem CAPI z deduplikacją — bo bez danych nie ocenisz sensu kolejnych kroków. Katalog produktów i feed dokładaj wtedy, gdy sprzedaż z reklam dynamicznych realnie zwraca koszt pracy i utrzymania. Funkcje społecznościowe, czyli Messenger, Instagram i logowanie, wdrażaj na końcu i tylko wtedy, gdy masz kto ma obsługiwać wiadomości.
Pixel wystarczy, gdy prowadzisz proste kampanie i nie zależy Ci na precyzyjnym pomiarze po zmianach w iOS. CAPI wchodzi wtedy, gdy ruch z reklam jest duży, a różnica między zamówieniami w sklepie i w Meta jest widoczna. Najczęściej najlepiej działa oba kanały razem, z deduplikacją po event_id.
Sam Pixel z podstawowymi zdarzeniami to zwykle kilka godzin pracy. CAPI z kolejką, logowaniem i deduplikacją to osobny blok pracy, podobnie jak katalog produktów i feed. Pełny zakres z Messengerem i logowaniem rozkłada się na kilka dni, zwłaszcza gdy sklep ma wiele języków i walut.
Sam Pixel nie jest problemem. Ryzyko pojawia się przy czacie, skryptach osadzanych z zewnętrznych domen i przy synchronicznym wywołaniu CAPI w checkout. Wystarczy ładować skrypty asynchronicznie i przenieść wysyłkę zdarzeń do kolejki, żeby klient nie czekał.
Im więcej poprawnych identyfikatorów, tym lepsze dopasowanie produktów w katalogu i mniej odrzuceń. Jeśli producent nie podaje GTIN, uzupełnij markę i inne dostępne pola, zamiast wpisywać dane przypadkowe. Błędny GTIN jest gorszy niż jego brak.
Nie zawsze. Część zdarzeń da się obsłużyć modułem, bez dotykania plików motywu. Zmiany w motywie bywają potrzebne przy niestandardowym koszyku albo nietypowych krokach zamówienia. Po każdej aktualizacji motywu trzeba powtórzyć testy.
To osobne kategorie danych, więc potrzebujesz jasnej informacji w polityce prywatności i podstawy do przetwarzania. Czat w sklepie nie może zbierać danych osobowych przed uzyskaniem zgody, jeśli nie jest niezbędny do realizacji zamówienia. Warto też ustalić, kto i w jakich godzinach odpowiada na wiadomości.
Głównie od zakresu: liczba języków i walut, obsługa wariantów, integracja z ERP lub magazynem, stan serwera i to, czy piszemy dedykowany moduł, czy rozszerzamy istniejący. Osobno wycenia się audyt istniejącego wdrożenia. Orientacyjne widełki znajdziesz w naszym cenniku: wdrożenia i migracje PrestaShop.
Jeśli chcesz przejść tę listę punkt po punkcie albo nie wiesz, od czego zacząć w swoim sklepie, napisz do nas — powiemy, co ma sens w Twojej sytuacji, a co można odłożyć.