Реализация динамического ремаркетинга на сайте
Динамический ремаркетинг отличается от обычного тем, что в рекламных объявлениях показываются конкретные товары, которые пользователь просматривал на сайте. Человек смотрел ноутбук за 89 000 рублей — в баннере появляется именно этот ноутбук с ценой и фотографией. Это требует технической связки между сайтом, продуктовым фидом и рекламной платформой.
Продуктовый фид
Основа динамического ремаркетинга — фид с данными о товарах. Рекламные платформы подтягивают из него информацию для генерации объявлений.
Формат фида для Google Merchant Center:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Каталог товаров</title>
<link>https://example.com</link>
<item>
<g:id>PRODUCT_123</g:id>
<g:title>MacBook Pro 14 M3 Pro</g:title>
<g:description>Ноутбук Apple с чипом M3 Pro, 18 ГБ памяти, SSD 512 ГБ</g:description>
<g:link>https://example.com/catalog/laptops/macbook-pro-14</g:link>
<g:image_link>https://example.com/images/products/mbp14.jpg</g:image_link>
<g:price>89900 RUB</g:price>
<g:sale_price>79900 RUB</g:sale_price>
<g:availability>in stock</g:availability>
<g:condition>new</g:condition>
<g:brand>Apple</g:brand>
<g:google_product_category>Electronics > Computers > Laptops</g:google_product_category>
<g:custom_label_0>bestseller</g:custom_label_0>
</item>
</channel>
</rss>
Генерация фида на Laravel:
// FeedController.php
class FeedController extends Controller
{
public function googleMerchant(): Response
{
$products = Product::where('is_active', true)
->where('stock', '>', 0)
->with('category', 'images')
->get();
return response()
->view('feeds.google-merchant', compact('products'))
->header('Content-Type', 'application/xml; charset=UTF-8');
}
}
// routes/web.php
Route::get('/feeds/google-merchant.xml', [FeedController::class, 'googleMerchant'])
->middleware('cache.headers:public;max_age=3600');
Фид обновляется автоматически — цены и остатки актуальны.
Разметка событий для Google Ads
Динамический ремаркетинг Google требует передачи ecomm_prodid (ID товара) и ecomm_pagetype (тип страницы):
// На странице каталога
gtag('event', 'view_item_list', {
items: products.map(p => ({
item_id: p.id,
item_name: p.title,
item_category: p.category,
price: p.price,
})),
});
// На странице товара — ключевое событие для динамического ремаркетинга
gtag('event', 'view_item', {
items: [{
item_id: 'PRODUCT_123',
item_name: 'MacBook Pro 14 M3 Pro',
item_category: 'Ноутбуки',
price: 89900,
currency: 'RUB',
}],
});
// На странице корзины
gtag('event', 'view_cart', {
value: 89900,
currency: 'RUB',
items: cartItems.map(item => ({
item_id: item.product_id,
item_name: item.product_name,
price: item.price,
quantity: item.quantity,
})),
});
Разметка для Meta Dynamic Product Ads
Meta требует content_ids и content_type: 'product':
// Просмотр товара
fbq('track', 'ViewContent', {
content_ids: ['PRODUCT_123'],
content_type: 'product',
value: 89900,
currency: 'RUB',
});
// Корзина
fbq('track', 'AddToCart', {
content_ids: ['PRODUCT_123', 'PRODUCT_456'],
content_type: 'product',
value: 94800,
currency: 'RUB',
num_items: 2,
});
// Начало оформления
fbq('track', 'InitiateCheckout', {
content_ids: ['PRODUCT_123', 'PRODUCT_456'],
content_type: 'product',
value: 94800,
currency: 'RUB',
num_items: 2,
});
VK Dynamic Retargeting
VK передаёт события через пиксель с product events:
// Просмотр товара
VK.Retargeting.ProductEvent('view_product', {
id: 'PRODUCT_123',
price: 89900,
currency: 'RUB',
});
// Добавление в корзину
VK.Retargeting.ProductEvent('add_to_cart', {
id: 'PRODUCT_123',
price: 89900,
currency: 'RUB',
});
// Покупка
VK.Retargeting.ProductEvent('purchase', {
id: 'PRODUCT_123',
price: 89900,
currency: 'RUB',
order_id: 'ORDER_789',
});
Фид для ВКонтакте отправляется в формате YML или CSV через кабинет рекламы → «Каталог товаров».
Интеграция через dataLayer + GTM
Чтобы не дублировать код для каждой платформы — передавайте события в dataLayer, а GTM-теги транслируют их в нужный формат:
// Единое событие — GTM сам раскладывает по платформам
window.dataLayer.push({
event: 'product_view',
product: {
id: 'PRODUCT_123',
name: 'MacBook Pro 14 M3 Pro',
category: 'Ноутбуки',
price: 89900,
currency: 'RUB',
brand: 'Apple',
stock: 'in_stock',
},
});
В GTM создаётся по одному тегу для Google Ads, Meta и VK. Все три тега используют переменные из dataLayer — меняете структуру в одном месте.
Проверка связки фид ↔ пиксель
Критичный момент: ID товаров в пикселе (content_ids, item_id) должны точно совпадать с полем id в фиде. Несовпадение — самая частая проблема при настройке динамического ремаркетинга.
// Проверка — выводим в консоль что передаётся в пиксель
console.log('Product IDs in pixel:', cartItems.map(i => i.product_id));
console.log('Expected format in feed: e.g. "PRODUCT_123"');
В Meta Events Manager раздел «Test Events» показывает данные в реальном времени — можно проверить совпадение ID.
Сроки
Генерация фида + разметка событий для одной платформы: 1 день. Настройка для всех трёх (Google + Meta + VK) через GTM: 2–3 дня. Server-Side события для обхода блокировщиков: ещё 1–2 дня.







