Коли ID у події пікселя не збігається з ID у фіді каталогу, динамічна реклама показує випадкові або нерелевантні товари, а ремаркетинг не працює. Нижче: як збіг ламається, як це видно в діагностиці та як виглядає правильна передача подій на сайті Хорошоп. Магазин вигаданий, цифри ілюстративні.
Каталог у Meta зіставляє подію пікселя з товаром за значенням content_ids. Збіг має бути точним: символ у символ, з тим самим типом ідентифікатора, що у фіді.
У фіді id = артикул (DM-1042), а піксель шле внутрішній номер товару в базі (5871). Для Meta це два різні товари, збігу немає.
збіг 0%У події немає content_type: 'product', value або currency. Подія приходить, але не зараховується до каталогу.
збіг частковийПіксель встановлено і в шаблоні, і через інтеграцію чи GTM. Кожна покупка рахується двічі, дедуплікація не працює без спільного eventID.
дублі подійВигаданий магазин «Домовик» (товари для дому). Оберіть, що надсилає сайт, і подивіться, скільки подій потрапляє в каталог.
| Товар | ID у фіді | content_ids у події |
|---|
Мінімальний набір для динамічної реклами каталогу. Усі значення беруться з даних сторінки Хорошоп.
| Подія | Де спрацьовує | Обов’язкові параметри |
|---|---|---|
| PageView | Усі сторінки | Без параметрів, одне спрацювання на сторінку |
| ViewContent | Картка товару | content_ids:[sku], content_type:'product', value, currency |
| AddToCart | Кнопка «Купити» або кошик | content_ids:[sku], content_type:'product', value, currency |
| InitiateCheckout | Сторінка оформлення | content_ids:[...], num_items, value, currency |
| Purchase | Сторінка «Дякуємо» | content_ids:[...], content_type:'product', value, currency, eventID |
Шаблон. Назви змінних сторінки на конкретному сайті уточнюються під час аудиту. Код вставляється одним блоком користувацького скрипта, без правок шаблону теми.
// Картка товару: ViewContent з тим самим SKU, що у фіді каталогу document.addEventListener('DOMContentLoaded', () => { const el = document.querySelector('[data-product-sku]'); if (!el || typeof fbq !== 'function') return; const sku = el.dataset.productSku.trim(); // ровно як у фіді const price = parseFloat(el.dataset.productPrice); fbq('track', 'ViewContent', { content_ids: [sku], content_type: 'product', value: price, currency: 'UAH' }); }); // Захист від подвійного підключення піксела if (!window.__fbPixelInit) { window.__fbPixelInit = true; fbq('init', 'PIXEL_ID'); fbq('track', 'PageView'); }
Пароль від особистого акаунта Facebook не потрібен.