Jump to content

Recommended Posts

Меня работа на заказ не интересует, но готов подсказать в конкретных моментах, если будет сложность — там их хватает.

А, ну тогда, если можно, в общих чертах саму схему?

 

Фактически в решении данного топика описана отправка только финального события 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 - по сути, единственное, что сейчас из данного топика готово

Link to post
Share on other sites

А, ну тогда, если можно, в общих чертах саму схему?

 

Фактически в решении данного топика описана отправка только финального события 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 by bananovsv
Link to post
Share on other sites

О, спасибо, а можете подсказать в какой момент отправляете события?

 

1. Impressions  - в такой постановке ощущение, что должно быть что-то вида pagescroll страниц, на которых есть товары

2. Click - видимо привязано к событию onclick ссылки по товару на сайте

3. Detail - просмотр карточки, на странице product.tpl?

----

4. Add - разобрались.

5. Checkout - разобрались

6. Purchase - готово. 

----

 

По Remove понял, этим можно пренебречь. 

Link to post
Share on other sites

А, ну тогда, если можно, в общих чертах саму схему?

 

Фактически в решении данного топика описана отправка только финального события 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 by bananovsv
Link to post
Share on other sites

О, спасибо, а можете подсказать в какой момент отправляете события?

 

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 by bananovsv
Link to post
Share on other sites
  • 4 years later...

Итак, многое изменилось. С отвалом старой аналитики и переходом на 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, добавление в корзину товара

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...