Электронная коммерция для Яндекс.Метрики в Virtuemart

Опубликовано: 9 ноября, 2018
Обновлено: 5 февраля, 2023
Категория: Сервисы

Яндекс Метрика позволяет собирать расширенные данные, относящиеся к электронной торговле. С их помощью можно более детально проанализировать поведение пользователей на сайте.

Фиксируются следующие действия:

  • просмотр карточки товара
  • добавление/удаление товара из корзины
  • покупка товара

Интегрировать электронную коммерцию для Метрики на сайт можно с помощью готовых плагинов. Это быстрый, но платный вариант. Цель статьи - показать как можно самостоятельно добавить отслеживание всех действий (кроме удаления товара из корзины).

Более подробно прочитать о работе технологии можно в документации от Яндекса.

Подключение счетчика Яндекс Метрики

Если Метрика на сайте уже подключена, то проверьте чтобы в коде был параметр

Если его нет, то нужно изменить настройки счетчика и заменить его код на сайте.

Код метрики должен быть подключен на всех страницах сайта. Если шаблон сайте сделан на фреймворке, то почти наверняка код можно добавить в настройках шаблона в админке. Код должен быть добавлен перед закрывающим тегом body.

Просмотр карточки товара

Для фиксации просмотра товара в шаблон /components/com_virtuemart/views/productdetails/tmpl/default.php в самый конец нужно добавить следующий код

Здесь и далее будут указаны стандартные пути до шаблонов. На вашем сайте данные шаблоны могут быть переопределены в папке /templates/имя_шаблона/html/com_virtuemart/. Если файл переопределен, то правки нужно вносить именно в переопределенный файл.

Чтобы правки сохранились после обновления virtuemart, все отредактированные шаблоны нужно переопределить в папке /templates/имя_шаблона/html/com_virtuemart/.

Добавление товара в корзину

Метод ниже подойдет, если при добавлении в корзину показывается всплывающее окно с информацией о товаре.

В конец файла /components/com_virtuemart/views/cart/tmpl/padded.php добавьте

Покупка товара

Для отслеживания покупки в шаблон /components/com_virtuemart/views/cart/tmpl/orderdone.php с благодарностью о заказе нужно добавить код

Просмотр отчета в Метрике

Данные в Метрике появляются не сразу, а в течение 3-5 минут. Просмотреть всю статистику можно в списке всех отчетов.

Сам отчет выглядит следующим образом

Если по прошествии 5 минут данные в Метрике не появились или возникли какие-то другие вопросы, то пишите в комментах, постараюсь со всем помочь.

73 комментария

    JediG

    Круто! Надо будет попробовать. Думал об этом, но показалось слишком сложным.

      JediG

      Вроде все сделал по согласно описанному выше. Через какое-то время заработало. Товар в Корзину кладут, а вот Заказов в отчетах так и нет. Вероятно, что-то не так с
      /components/com_virtuemart/views/cart/tmpl/orderdone.php
      Но что не так не пойму. Скрипт добавил вот сюда:
      .../mi55.ru/docs/templates/t3_bs3_blank/html/com_virtuemart/views/cart/tmpl/orderdone.php

      Может это не тот orderdone.php?

        JediG

        будто выше обрезало путь
        шаблон mobillife

          admin

          admin

          На странице после покупки не формируется нужный код, поэтому данные не передаются.
          Пришлите архив с отредактированным файлом orderdone.php и попробуйте дополнительно добавить код в файл /components/com_virtuemart/views/cart/tmpl/order_done.php.

            JediG

            Архив отправил. Рекомендованное дополнение эффекта не дало.

            admin

            admin

            На admin@virtuemart.su ничего не пришло. Пожалуйста, продублируйте.

            JediG

            После того как мы с вами заставил работать коммерцию у меня из Метрики пропала цель "Заказ". Я ее как-то привязывал к кнопке "Подтвердить заказ" в Корзине. Только вот заметил сейчас.

            JediG

            В общем в файле /components/com_virtuemart/views/cart/tmpl/order_done.php
            ранее у меня был вот такой скрипт:

            Он четко прописывал цель в метрике. Я попробовал его вернуть на место. Цель не пишется и коммерция похоже с ним тоже дуркует. Хотя может не в этом дело. Надо бы понаблюдать. Может мои похождения Метрика исключает из отчета.

            admin

            admin

            Точно не скажу в чем проблема, нужно потестировать на реальных заказах.

    yrygvay

    В ваших шаблонах уже интегрированно?

      yrygvay

      разобобрался, нет, добавил в шаблон. Спасибо большое Владимир.

      admin

      admin

      В шаблонах этого нет, нужно добавлять.

    Владимир

    Здравствуйте, сделал все как написано, поменял счетчик на сайте, подождал более 15 минут, но отчет так и не появился

      admin

      admin

      Здравствуйте!

      Проблема еще актуальна?

        Владимир

        Больше часа прошло и все стало хорошо, уже пользуюсь, но не работает влкадка заказы

          admin

          admin

          В конце страницы с заказами показывается таблица с количеством покупок?
          В отчете с популярными товарами показывается количество купленных?

            sportmag52-shop

            Здравствуйте, проблема осталась, раньше не так нужно было но теперь это важно,
            Когда открываешь вкладку Заказы то там показывается диаграмма с визитами а ниже источник трафика откуда переходы.
            В отчете с популярными товарами показывается товары количество просмотров добавлений в корзину и тд. вроде норм, только заказы не встали, зашел проверить код перекопировал его заново и получилось так
            https://prnt.sc/qm8y39

            admin

            admin

            Попробуйте найти в исходном коде страницы благодарности за заказ данный код, в него правильно передаются все переменные?

            sportmag52-shop

            Я удалил первую строку <?php
            но все равно не показывает(,

            admin

            admin

            В исходном коде страницы скрипт отрабатывает?
            Оформите заказ и посмотрите исходный код, там должен быть скрипт.

            sportmag52-shop

            оформил заказ, открыл код в поиск ввел, но показывает https://prnt.sc/qocpsj
            или я не то смотрю?

            admin

            admin

            Лучше просмотреть не весь исходный код на новой вкладке, а прямо на странице с помощью клавиши F12.
            На картинке увидел ссылку на googletagmanager, Вы его используете или решение от яндекса?

            sportmag52-shop

            функция в шаблоне была включена и не настроена, сейчас выключил, использую яндекс

            admin

            admin

            Код появился?
            Если нет, то протестируйте правильный ли шаблон редактируется.

            sportmag52-shop

            Здравствуйте, у меня установлен
            VP One Page Checkout, зашел добавил код о покупке товара туда
            вот консоль
            https://prnt.sc/r8byev

            "[{"0":"js","1":"2020-02-27T07:36:12.913Z"},{"0":"config","1":"UA-43170852-1"},{"ecommerce":{"purchase":{"actionField":{"id":"022700194"},"products":[{"id":"257945","name":"Шапочка фэши 3628 женская","price":510,"brand":"","category":"Шапочка для плавания","quantity":1}]}}},{"event":"gtm.dom","gtm.uniqueEventId":2},{"event":"gtm.load","gtm.uniqueEventId":3}]"

            admin

            admin

            Сама ошибка не должна мешать.
            Внутри объекта dataLayer данные о покупки присутствуют (в свойстве purchase).
            Возможно, мешает ошибка в scrollReveal.js
            Если на сайте включено сжатие скриптов, то отключите, чтобы понять в каком файле проблема.

            sportmag52-shop

            выключил оптимизатор
            https://prnt.sc/r8l4uo

      yrygvay

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

    Алексей

    Возможна ситуация, когда заказ будет сделан, но страница благодарности не выведена. Например, оплата через Робокассу (или аналогичные сервисы): заказ отправили, перешли в Робокассу, оплатили, но к нам не вернулись.
    Как думаете, как в таких случаях отследить отправить в Метрику сигнал о заказе?
    Клик по кнопке отправить заказ - пожалуй, не лучший вариант, т.к. могу кликать с невалидными введёнными данными.

      admin

      admin

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

      Я плагином не пользовался, но думаю, что он отслеживает стандартные события virtuemart, полный список можно посмотреть здесь.

        Алексей

        Спасибо за наводку! Обязательно рассмотрю.

    KeshaK

    Подскажите, плиз, правильно ли добавил в карточку товара скрипт в самый конец /.../public_html/templates/..../html/com_virtuemart/productdetails
    Вставил после последнего div, првильно?

    KeshaK

    Извиняюсь, обрезало перед window.dataLayer два закрывающих div-a

      admin

      admin

      В комментариях html код не всегда корректно обрабатывается.
      Если к отчетах информация о товарах появилась, значит код вставлен правильно.
      Также можно протестировать код на ошибки, открыв консоль браузера и выполнив команду

      После этого должен быть показ объект в формате json с товарами.

    KeshaK

    Добавил для отслеживания покупок товара код по инструкции выше в
    .../public_html/templates/..../html/com_virtuemart/cart/order_done.php

    После Подтверждения заказа на странице с Благодарностью за покупку вылетает ошибка
    syntax error, unexpected '<', expecting end of file

    order_done.php выглядит так

    Где тут ошибка? Подскажите, плиз.

    KeshaK

    Извиняюсь, перед window.dataLayer = window.dataLayer
    обрезало код.
    Код в точности как по Вашей инструкции.

      admin

      admin

      При вставке кода в orderdone попробуйте удалить первый открывающий тег

      если не поможет, то пришлите отредактированный файл, который вызывает ошибку.

    KeshaK

    Покупки, в Отчетах электронной коммерции естественно не отслеживаются из-за этой ошибки. Остальное работает.

    Владимир

    Здравствуйте, пользуюсь отчетами с начала этой статьи но уже неделю, перестало корректно работать коммерция, пример 200 заходов 0 просмотров товаров.
    Как можно выявить и исправить ошибку

      admin

      admin

      Здравствуйте!

      Т.е. раньше работало, а теперь перестало?
      Для начала нужно проверить отрабатывает ли правильно скрипт. Для этого на каждой странице (в карточке, во всплывающем окне и на странице подтверждения заказа) в консоли браузера выполните команду

      Должно быть показано содержимое dataLayer

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

    Tobi

    Здравствуйте, планируется такая статья для Google?

      admin

      admin

      Здравствуйте!

      Для google статьи не планировал.
      Насколько я знаю, там код практически идентичен, возможно даже подойдет и код от яндекса.

    JediG

    А не заморачивались ли Вы передачей UserID в Метрику? Это вроде как вопрос не про коммерцию, а про счетчик в целом. В поисковой выдаче всплывает эта тема поэтому сюда и задам вопрос. Нужно каким-то образом после авторизации Посетителя сайта передать данные об ID пользователя Метрике. Что хотят они они пишут, а вот что может Joomla?

    Я так понимаю нужно вместо 12345 вызвать ID пользователя.
    Вопроса два:
    Как?
    И если понятно как, то куда внедрить данный код?

      admin

      admin

      Точно не знаю, но думаю, что добавлять код

      нужно в скрипт подключения метрики после ее инициализации

      В качестве id можно использовать id пользователя joomla.
      Если я все правильно понял, вызывать код нужно только если пользователь зарегистрирован.
      Попробуйте использовать код

      Добавить его нужно в самый конец страницы, например, в файл footer.php шаблона (в Вашем случае в файл /templates/t3_bs3_blank/local/tpls/blocks/mob-footer.php).

        JediG

        Спасибо большое!
        У Метрики есть два варианта: во время инициализации и после инициализации. Я написал вариант после инициализации.
        По логике, именно он нам нужен, так как инициализация Метрики проходит до того как пользователь авторизовался на сайте. Вроде Ваш вариант то что надо.
        Попробую реализовать. Странно, но об этом вообще не нашел ни одной темы. А тема то интересная. Как я понимаю, если мы сможем отправлять UserID, то мы сможем собрать в кучу все визиты пользователя с разных устройств.

          admin

          admin

          Если не трудно, то поделитесь результатами внедрения, интересно, что из этого получится.

            JediG

            Добавил код. Но в Метрике ничего для анализа UserID я не вижу. В Помощи есть о том как добавить передачу UserID, но ничего о том как анализировать загруженные данные и о том где их увидеть. Я предполагал что принцип анализа такой же как и с ClientID, но там где предполагал увидеть данные ничего не появилось. Написал в поддержку.

            admin

            admin

            Возможно, пока слишком мало данных, поэтому ничего не показывается.

            JediG

            Получил ответ:
            "На данный UserID только записываются в базу и привязываются к посетителям. В будущем мы планируем отображение UserID в интерфейсе.

            В данный момент, чтобы видеть UserID в интерфейсе, рекомендуем передавать их дополнительно как параметры посетителей: https://yandex.ru/support/metrica/data/user-params.html"

            Вероятно а забежал вперед лошади, либо надо эту тему дальше развивать. Создавать параметры. Например кроме UserID выгружать как параметр логин, группу пользователей, может еще что-то. Группировка по параметрам доступна. Попробую загрузить параметры пользователей в табличном виде через csv. Такая возможность предусмотрена.

            admin

            admin

            Ясно, спасибо, что поделились.

            JediG

            Владимир, есть продолжение истории. Взял я из базы логины и группы и загрузил в Метрику с помощью их формы загрузки данных о посетителях. Выгрузил вечером, а сегодня данные обработаны. И о чудо, есть контакт. Выгрузил несколько тысяч ID с параметром логин и группа. Сегодня увидел, что десяток зарегистрированных пользователей включая меня, посетили сайт. Так что все работает. Теперь при желании можно по логину посмотреть действия пользователя на сайте. Или например посмотреть что делают пользователи определенной группы. Но главное это возможность создания сегментов для ретаргетинга по группе покупателей. По хорошему надо бы в код кроме выгрузки userid добавить выгрузку логина и группы, т.к. выгружать в ручную несколько геморно. Новые пользователи каждый день появляются.

        JediG

        Удалось привязать лишь 13 пользователей. Ответ Яндекс я до конца не понял. Есть ощущение что Поддержка пока сама не понимает до конца как это работает. Похоже параметры лучше выгружать при каждом посещение, т.к. данные загруженные заранее выходят из периода конверсии.
        Для загрузки параметров у них есть другой код:

        Я сделал вот так:

          admin

          admin

          Спасибо, что поделились.

            JediG

            Поделиться то поделился, но пока не понятно чем 🙂
            Результат какой-то невнятный.

            Код с ошибкой дал. Вот правильный:

            Но пока я не могу утверждать что это работает. Ну и по группам я не то выдаю. Я пытаюсь передать группу Joomla, а надо группу VM. Пока не могу разобраться как это сделать. Для создания сегментов в Метрике нужно группы ВМ, а от групп Джумла толку никакого.

            JediG

            Продолжаю общение с поддержкой Яндекс. Они признали что у меня с кодом все хорошо, но передача параметров не идет. С их стороны тоже нет проблем. Рекомендовали попробовать передачу параметров при инициализации счетчика. Может быть это неплохая идея, но моих познаний для ее реализации недостаточно.

            Это то к чему я пришел и то что выдает параметры:

            Они предлагаю как-то внедрить это в код их счетчика.
            https://yandex.ru/support/metrica/data/user-params_data.html

            Я если честно в принципе не понимаю возможно ли это.

            admin

            admin

            Точно не могу сказать в чем проблема, поскольку не настраивал это раньше.

            JediG

            Кстати, когда который я вставляю в ваши комментарии с помощью тегов php и /php обрезается. Так что то что я ранее писал все на самом деле не так.

    Макс

    Добрый вечер, подскажите пожалуйста, не приходит в метрику покупка, вставил код в orderdone.php, на стр. благодарности не подтягивает инфу, в f12 смотрю все параметры пустые, такое ощущение что не тянет данные с заказа.

      admin

      admin

      Здравствуйте!

      Попробуйте внести правки в orderdone.php в папке с шаблоном /templates/имя_шаблона/html/com_virtuemart/.

        Макс

        Я в шаблоне и вносил правки, дело в том, что скрипт отрабатывает, в f12 на стр. благодарности он присутствует, но с пустыми значениями.

          admin

          admin

          Попробуйте вывести содержимое переменной $this->cart->orderDetails['items'] на странице благодарности.
          Если там нет данных о заказанных товарах, то в dataLayer ничего передаваться не будет

    Макс

    Вот так у меня в orderdone.php

      admin

      admin

      Часть кода не отобразилась в комментарии.
      Пожалуйста, создайте тему на форумефоруме и выложите код там.

    Виктория

    Подскажите, пожалуйста, как установить цель метрики на кнопку "Подтвердить заказ" в корзине VM3? Нигде не найду ответ. Заранее спасибо за ответ.

      admin

      admin

      Можно поставить цель на посещение страницы благодарности за заказ.

    andpuxa

    А как отследить эту страницу, если она сразу редиректится на шлюз оплаты?

      admin

      admin

      Как вариант, можно открывать страницу с оплатой в новом окне, а не в текущем.
      Как технически это реализовать лучше уточнить у разработчика плагина.

    Thanos

    Hello, very usefull article,

    I want to ask you, what code I will use in 'actionField' if I want to track, payment method and revenue

    thank you very much

    Tobi

    Здравствуйте, Владимир.
    Спасибо за статью!
    При добавление кода:
    cart->orderDetails['items'];
    $orderNumber = $this->cart->orderDetails['details']['BT']->order_number;
    ?>
    В консоле выбивает ошибку Uncaught SyntaxError: Invalid or unexpected token
    Можно так и оставить?
    Спасибо!

      admin

      admin

      Здравствуйте!

      Если все работает, то думаю, что эта ошибка ни на что не должна повлиять.

    Tobi

    Корректный код:
    cart->orderDetails['items'];
    $orderNumber = $this->cart->orderDetails['details']['BT']->order_number;
    ?>

    Tobi

    Подскажите, пожалуйста, чтобы отслеживать брошенные корзины и сделать ремаркетинг на эту аудиторию. Куда нужно вставлять код при условии, что используется корзина onepage_generic? Возможно Вы еще подскажете как настроить удаление товара из корзины? Спасибо!

      admin

      admin

      С ходу не готов ответить на этот вопрос, пожалуйста, обратитесь на фриланс.

Комментарии закрыты

С 15-18 июня admin в отпуске.

Ответы на все вопросы и ссылки на товары будут присланы 19 июня.

Спасибо за понимание и хороших выходных.

×