Facebook Dynamic Ads + Pixel PRO: kompletny przewodnik
Instalacja, konfiguracja i obsługa eksportu feedu produktów (XML i CSV), Pixela Facebooka oraz API Konwersji w PrestaShop 8 i 9: wiele krajów/języków/walut, wykluczenia, etykiety, bezpieczeństwo i CRON.
Wprowadzenie
Facebook Dynamic Ads + Pixel PRO łączy katalog PrestaShop z Facebookiem i Instagramem. Moduł eksportuje feed produktów wysokiej jakości (XML w formacie Facebook RSS albo CSV), instaluje Pixel Facebooka w sklepie i włącza API Konwersji, aby zapewnić niezawodne śledzenie po stronie serwera. Generuje osobny feed dla każdej kombinacji Kraj / Język / Waluta, daje precyzyjną kontrolę nad eksportowanymi danymi (wykluczenia, niestandardowe etykiety, mapowanie kategorii Google) i jest zaprojektowany dla dużych katalogów, do 200 000 produktów.
Zgodny z PrestaShop 8.0 do 9.x, PHP 7.4 do 8.3, w trybie multisklep i wielojęzycznym. Do API Konwersji wymagany jest cURL. Brak zależności Composer w środowisku produkcyjnym.
Instalacja
- W panelu administracyjnym otwórz Moduły → Menedżer modułów → Zainstaluj moduł.
- Wgraj plik
dffbadspixel.zip. - Moduł instaluje się i automatycznie tworzy swoje tabele (
dffbadspixel_exclusion,dffbadspixel_label,dffbadspixel_capi_queue) oraz zakładkę administracyjną Facebook Dynamic Ads + Pixel.
Przy instalacji generowany jest unikalny token bezpieczeństwa. Zabezpiecza on adresy URL feedu i CRON-a, a jego wartość znajdziesz w zakładce Adresy URL i CRON modułu.
Zakładka Feed produktów
To serce modułu. Wybierasz w niej format i tryb generowania, zakres produktów oraz szczegółowość eksportowanych danych.
Format i generowanie
- Format: XML (Facebook RSS z przestrzenią nazw Google), CSV albo oba jednocześnie.
- Tryb generowania: w locie (strumieniowo przy każdym wywołaniu adresu URL) albo CRON (pliki w cache, zalecane dla dużych katalogów).
- Kompresja gzip, rozmiar partii (chunking) i opcja tylko aktywne kraje pozwalają zoptymalizować wydajność.
Wybór produktów i szczegółowość
- Eksport według kategorii albo marki, z precyzyjnym wyborem (pole filtra ułatwia wyszukiwanie na liście).
- Poziom szczegółowości: produkt albo wariant.
- Budowanie ID feedu: ID z panelu (z opcją języka i/lub wariantu), indeks albo EAN.
- Typ opisu (krótki lub długi), dostępność (według stanu magazynowego albo zawsze dostępny), kolory, rozmiary, dodatkowe zdjęcia albo tylko zdjęcie główne.
Koszty wysyłki, śledzenie i jakość danych
- Rzeczywiste koszty wysyłki wyliczane przez przewoźników PrestaShop (strefa, przedziały wagi i ceny), przewoźnik referencyjny albo najtańszy, z konfigurowalnym progiem darmowej dostawy.
- Parametry UTM i integracja z GA4.
- Limity jakości: maksymalne długości tytułu i opisu używane przez walidator (zakładka Diagnostyka).
Wykluczenia ogólne
Bezpośrednio w zakładce Feed: wyklucz produkty bez stanu magazynowego, bez EAN/MPN albo poniżej ceny minimalnej.
Wykluczenia zaawansowane
W zakładce Wykluczenia dodajesz precyzyjne reguły odrzucające wybrane produkty z feedu. Każda reguła opiera się na typie i wartości:
- Słowo lub wyrażenie: wyklucza, jeśli nazwa albo opis zawiera dany termin.
- Produkt, wariant, dostawca: według ID.
- Wartość cechy albo atrybut: według ID.
Niestandardowe etykiety i tagi odzieżowe
Niestandardowe etykiety (custom_label_0 do custom_label_4) wzbogacają segmentację kampanii: nazwa kategorii, wartość cechy, przedział cenowy albo oznaczenia „nowość” i „bestseller”.
Zakładka Tagi odzieżowe dodaje pola Meta przeznaczone dla mody: age_group, gender, a także pattern (wzór) i material (materiał) mapowane na cechy produktu.
Mapowanie kategorii i walut
W zakładce Mapowanie i waluty przypisujesz kategorie PrestaShop do kategorii Google/Facebook:
- Import CSV w formacie
id_category;google_category(separator;albo,, nagłówek opcjonalny). - Import z innego modułu DataFirefly zainstalowanego w sklepie (wersja standardowa, Google Merchant Center, GMC Pro albo TikTok Ads).
- Automatyczne sugestie według słów kluczowych: uzupełniają puste dopasowania na podstawie nazwy kategorii.
- Edycja ręczna wiersz po wierszu, z filtrem wyszukiwania.
Tabela Waluta / Kraj określa walutę używaną dla każdego kraju przy generowaniu feedów wielokrajowych. Bez przypisania stosowana jest domyślna waluta sklepu.
Zacznij bez mapowania kategorii: Meta akceptuje feed bez pola google_product_category. Dodawaj je stopniowo na głównych kategoriach, aby poprawić zasięg emisji.
Pixel Facebooka
W zakładce Pixel włączasz Pixel i podajesz swój ID Pixela. Moduł wstrzykuje kod bazowy (PageView) oraz zdarzenia kontekstowe: ViewContent, ViewCategory, Search, InitiateCheckout, AddToCart i AddToWishlist.
- Zaawansowane dopasowanie (advanced matching): wysyła dodatkowe dane klienta, zahashowane w SHA-256, aby poprawić jakość grup odbiorców.
- Konfigurowalne selektory HTML dla przycisków „lista życzeń” i „zamów”, przydatne, jeśli Twój szablon zmienił domyślny kod HTML.
- Konfigurowalna kwota Purchase: z podatkiem lub bez, z kosztami wysyłki i/lub opakowania lub bez nich.
API Konwersji (asynchroniczne)
API Konwersji wysyła zdarzenia bezpośrednio z Twojego serwera i odzyskuje konwersje, których sam Pixel nie wykrywa (blokery, cookies). W zakładce API Konwersji:
- Włącz API Konwersji i wklej token dostępu wygenerowany w Business Managerze Meta.
- Pozostaw włączony tryb asynchroniczny (zalecany): zdarzenia trafiają do kolejki, a następnie są wysyłane partiami przez CRON, bez spowalniania sklepu.
- W razie potrzeby dostosuj rozmiar partii i liczbę maksymalnych prób (retry). Testowy kod zdarzenia pozwala zweryfikować integrację w Business Managerze.
Zdarzenia są deduplikowane z Pixelem przeglądarkowym dzięki wspólnemu event_id (na przykład order-1234 dla zakupu). Dane użytkownika są hashowane algorytmem SHA-256 przed wysyłką.
Adresy URL feedu i zadanie CRON
Zakładka Adresy URL i CRON pokazuje bazowy adres feedu, adres CRON-a oraz listę adresów dla każdej kombinacji Kraj / Język / Waluta.
Adres URL feedu
https://twoj-sklep.pl/index.php?fc=module&module=dffbadspixel&controller=feed&token=TWOJ_TOKEN&id_lang=1&id_currency=1&id_country=8&format=xml
Parametry id_lang, id_currency, id_country i format (xml albo csv) wskazują feed do wygenerowania. To ten adres deklarujesz jako źródło feedu w katalogu Meta.
Zadanie CRON
W trybie CRON zaplanuj wywołanie endpointu, aby generować pliki w cache i opróżniać kolejkę API Konwersji:
*/30 * * * * curl -s "https://twoj-sklep.pl/index.php?fc=module&module=dffbadspixel&controller=cron&token=TWOJ_TOKEN" > /dev/null
Opcjonalny parametr job wskazuje konkretne zadanie: feeds (generowanie feedów), capi (wysyłka kolejki API Konwersji) albo all (domyślnie). Odpowiedzią jest tekstowe podsumowanie.
Diagnostyka: podgląd i walidacja
Zakładka Diagnostyka łączy dwa narzędzia:
- Kolejka API Konwersji: liczba zdarzeń oczekujących, nieudanych i wysłanych.
- Podgląd i walidacja feedu: generuje próbkę XML oraz raport jakości wskazujący problematyczne wiersze: brak zdjęcia, nieprawidłowy GTIN (weryfikowany cyfrą kontrolną), zbyt długi tytuł albo opis, niewystarczający identyfikator produktu.
Bezpieczeństwo
W zakładce Bezpieczeństwo:
- Lista dozwolonych IP: ogranicza dostęp do feedu i CRON-a do wybranych adresów albo zakresów CIDR (na przykład serwerów Meta). Pusta lista oznacza brak ograniczeń.
- Rotacja tokenu: generuje nowy token adresów URL. Stary pozostaje akceptowany aż do unieważnienia, co daje czas na aktualizację feedów w Meta.
Po rotacji tokenu pamiętaj o aktualizacji źródeł feedu w Business Managerze, a następnie o unieważnieniu starego tokenu w zakładce Bezpieczeństwo, aby zamknąć okno przejściowe.
Rozwiązywanie problemów
Feed zwraca „Forbidden”
Token jest pusty, nieprawidłowy albo wywołujący adres IP nie znajduje się na liście dozwolonych. Sprawdź token w zakładce Adresy URL i CRON oraz wyczyść listę dozwolonych IP na czas testu.
Feed jest pusty albo niekompletny
Sprawdź wybór kategorii i marek (pusty oznacza cały katalog), reguły wykluczeń oraz stany magazynowe, jeśli aktywne jest wykluczenie produktów niedostępnych. W trybie CRON uruchom najpierw zadanie job=feeds, aby wygenerować cache.
Zdarzenia API Konwersji nie docierają do Meta
Upewnij się, że cURL jest dostępny i token dostępu jest ważny, po czym uruchom zadanie job=capi. Śledź kolejkę w zakładce Diagnostyka; błędy są zapisywane w Parametry zaawansowane → Logi z prefiksem [dffbadspixel].
Pixel nie uruchamia się na przycisku
Jeśli Twój szablon zmienił kod HTML, dostosuj selektory „lista życzeń” i „zamów” w zakładce Pixel.
Dobre praktyki
- Używaj trybu CRON z gzip przy dużych katalogach: generowanie w locie jest możliwe, ale kosztowniejsze przy każdym wywołaniu.
- Włącz Pixel i API Konwersji razem: deduplikacja przez
event_idzapobiega podwójnemu liczeniu, a jednocześnie poprawia pokrycie. - Uzupełnij mapowanie kategorii Google i GTIN, aby zmaksymalizować kwalifikowalność produktów do miejsc docelowych Advantage+ i Shopping.