nikolayv Posted November 23, 2018 Report Share Posted November 23, 2018 Меня работа на заказ не интересует, но готов подсказать в конкретных моментах, если будет сложность — там их хватает.А, ну тогда, если можно, в общих чертах саму схему? Фактически в решении данного топика описана отправка только финального события ecommerce: проталкивание продаж и конкретных товаров. Интересует несколько вещей:1) Product Impressions: я так понимаю, что на странице product.html происходит datalayer.push?2) Product Click - страница с каталогом и событие onclick по ссылке названия продукта?3) Adding product to shopping cart - тут самое сложное место, отправка привязана к событию onclick "добавить в корзину"?4) Checkout - просмотр страницы cart.html ?5) Purchases - по сути, единственное, что сейчас из данного топика готово Quote Link to post Share on other sites
bananovsv Posted November 23, 2018 Report Share Posted November 23, 2018 (edited) А, ну тогда, если можно, в общих чертах саму схему? Фактически в решении данного топика описана отправка только финального события ecommerce: проталкивание продаж и конкретных товаров. Интересует несколько вещей:1) Product Impressions: я так понимаю, что на странице product.html происходит datalayer.push?2) Product Click - страница с каталогом и событие onclick по ссылке названия продукта?3) Adding product to shopping cart - тут самое сложное место, отправка привязана к событию onclick "добавить в корзину"?4) Checkout - просмотр страницы cart.html ?5) Purchases - по сути, единственное, что сейчас из данного топика готово 1. Impressions — это показы товаров в списках, а не один товар. На главной, в каталоге, во всяких рекомендуемых и просмотренных товарах, в корзине. Везде, где есть ссылка на товар. 2. Click — это то же самое, только клики, а не показы. 3. Add — добавление в корзину. Но это не сложнее, чем предыдущий пункт — реализация аналогична. Просто при клике на кнопку добавления в корзину отправляете событие. 4. Сheckout — да, страница корзины. 5. Purchase — страница заказа. В вашем списке не хватает самого главного: Detail. Это как раз посещение страницы товара. Еще можно сделать Remove — удаление из корзины. Но будет нелегко, если у вас в селектах меняется количество — придется при каждом изменении пересчитывать разницу и отправлять новое событие. Я обычно это не делаю — никакой пользы в отчетах Гугл-аналитики от этого нет. Ограничиваюсь только полным удалением товара из корзины. Но в Симпле это тоже не даст верной картины, поскольку корзина к сессии привязана и сбрасывается быстро. В общем, Remove —по желанию, главное чтобы Add был — он в основных отчетах участвует. Edited November 23, 2018 by bananovsv Quote Link to post Share on other sites
nikolayv Posted November 23, 2018 Report Share Posted November 23, 2018 О, спасибо, а можете подсказать в какой момент отправляете события? 1. Impressions - в такой постановке ощущение, что должно быть что-то вида pagescroll страниц, на которых есть товары2. Click - видимо привязано к событию onclick ссылки по товару на сайте3. Detail - просмотр карточки, на странице product.tpl?----4. Add - разобрались.5. Checkout - разобрались6. Purchase - готово. ---- По Remove понял, этим можно пренебречь. Quote Link to post Share on other sites
bananovsv Posted November 23, 2018 Report Share Posted November 23, 2018 (edited) А, ну тогда, если можно, в общих чертах саму схему? Фактически в решении данного топика описана отправка только финального события ecommerce: проталкивание продаж и конкретных товаров. Интересует несколько вещей:1) Product Impressions: я так понимаю, что на странице product.html происходит datalayer.push?2) Product Click - страница с каталогом и событие onclick по ссылке названия продукта?3) Adding product to shopping cart - тут самое сложное место, отправка привязана к событию onclick "добавить в корзину"?4) Checkout - просмотр страницы cart.html ?5) Purchases - по сути, единственное, что сейчас из данного топика готово Укажу на слабые места. Очень часто бывает проблема с отправкой показов. Если товаров на странице хотя бы штук 20-30, то они не пройдут скорее всего из-за ограничения объема. Т. е. вообще ничего не отправится. Это обычно никто не замечает и получают неверные данные в Аналитике — конверсия кликов выше, чем на самом деле. Потому что клик отправится, а показ нет. Вариантов решений два:1. Вообще не отправлять названия товаров, а только айди. Как раз названия товаров и категорий занимают много места. Особенно на русском языке. Но это не очень удобно потом в отчетах Аналитики.2. Слать всё пачками по 10-20 штук. Для этого в цикле выводить код показов. Реализация зависит от конкретного сайта. Тут нужно не налажать с параметром position — чтобы он не заново начинался, а продолжался. Еще нужно иметь в виду, что не все нужные данные по умолчанию есть в нужных шаблонах. Их выборку нужно дописывать. Например, категории товара на странице корзины и заказа. Цены и категории у просмотренных товаров. На странице заказа нужно только один показывать событие, чтобы транзакции не задублировались. Автор темы приводит вариант реализации. Я его еще дополнил временем заказа. Показываю событие только если переход со страницы корзины и заказ был сделан меньше минуты назад: {if $module == 'OrderView' && $smarty.server.HTTP_REFERER|strpos:'/cart' && ($order->date|date_format:'%D %T' > '-1 minute'|date_format:'%D %T')} // Тут код события purchase {/if} А то если в истории браузера назад-вперед походить, то покажется еще раз. Все повторы в рамках сессии в 30 минут Гугл-аналитика сама склеит, а после 30 минут будет дубль, если это условие не делать. Edited November 23, 2018 by bananovsv Quote Link to post Share on other sites
bananovsv Posted November 23, 2018 Report Share Posted November 23, 2018 (edited) О, спасибо, а можете подсказать в какой момент отправляете события? 1. Impressions - в такой постановке ощущение, что должно быть что-то вида pagescroll страниц, на которых есть товары2. Click - видимо привязано к событию onclick ссылки по товару на сайте3. Detail - просмотр карточки, на странице product.tpl?----4. Add - разобрались.5. Checkout - разобрались6. Purchase - готово. ---- По Remove понял, этим можно пренебречь. Всё, кроме кликов и добавления в корзину нужно отправлять сразу с загрузкой страницы. Detail — да, product.tpl. Про Impressions не понял вопроса. В зависимости от версии скрипта реализация может быть разной. Например, в analytics.js я ставлю код показов товара прямо в цикл вывода товаров и после него отправляю всё событием с параметром non-interaction (это важно, иначе будут дублироваться просмотры страниц). В случае с gtag.js так уже не получится, потому что перечень товаров и отправка там в одном блоке кода. Для него мне приходится дублировать цикл вывода товаров. Я в обычном цикле вывода товаров собираю в массив все айдишники товаров, которые выводятся на странице, а потом прогоняю их в той же последовательности специально для скрипта отправки показов. Вариант с gtag.js хоть и выглядит более заморочно, но факту удобнее, потому что не нужно к каждому товару лепить код — просто в конце страницы всё пачкой. Ну и он более новый, Гугл рекомендует пользоваться им. Старый скорее всего скоро отключат, как когда-то заменили ec.js на analytics.js. Edited November 23, 2018 by bananovsv Quote Link to post Share on other sites
byrzyi Posted October 13, 2023 Report Share Posted October 13, 2023 Итак, многое изменилось. С отвалом старой аналитики и переходом на GA4 - данное решение уже не работает. Пока что разобрался на основании этой темы только с тем, как отправлять завершенный заказ (условно оплаченный) в Менеджер Тегов: {if $order && $smarty.server.HTTP_REFERER|strpos:"/cart/"} <!-- Данные о заказанных товарах для GA --> <script> dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ event: "purchase", ecommerce: { transaction_id: '{$order->id}', affiliation: 'ТВОЙСАЙТ', value: '{$order->total_price|string_format:"%.2f"}', tax: '0.00', shipping: '0.00', currency: 'USD', coupon: '0.00', items: [ {foreach $purchases as $purchase} { item_name: '{$purchase->product->name|escape}', item_id: '{if $purchase->variant->sku}{$purchase->variant->sku}{else}id-{$purchase->variant->id}{/if}', price: '{($purchase->variant->price)|string_format:"%.2f"}', item_brand: '{if $purchase->product->brand}{$purchase->product->brand|escape}{/if}', item_category: '{$purchase->product->category->name|escape}', item_variant: '{if $purchase->variant->name}{$purchase->variant->name|escape}{/if}', quantity: '{$purchase->amount}' }{if not $purchase@last},{/if}{/foreach}] } }); </script> <!-- End Данные о заказанных товарах для GA --> {/if} У кого какие успехи с остальным? Остаются, которые требуют правки в php: add_to_cart Пользователь добавляет товар в корзину. begin_checkout Пользователь начинает оформление покупки. remove_from_cart Пользователь удаляет товары из корзины. select_item Пользователь выбирает товар из списка или предложения. view_cart Пользователь просматривает корзину. view_item Пользователь просматривает информацию о товаре. view_item_list Пользователь просматривает список элементов или предложений. Основные, для коректной работы рекламы в Google по ROAS и не только, это просмотр products.tpl, product.tpl, cart.tpl, добавление в корзину товара Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.