Рассмотрим пример настройки расширенной электронной торговли в Яндекс Метрике на основе данных передаваемых в Google Analytics через уровень данных (dataLayer).
Яндекс Метрика радует нас обновлениями и очередное из них, это возможность использовать единый код описывающий электронную торговлю (товары и действия с ними) как в Google Analytics так и в Яндекс Метрике. Достигается это путем активации возможности передачи данных по электронной торговле в Яндекс Метрику через уровень данных (dataLayer).
Мы имеем возможность фиксировать в Яндекс Метрике следующие действия, связанные с электронной торговлей:
Это конечно все еще уступает возможностям расширенной электронной торговле Google Analytics, но уже лучше, чем просто фиксация информации о транзакции.
Замечание для тех, кто использует вариант электронной торговли Яндекс Метрики, который был настроен по более ранним рекомендациям. Согласно информации из документации такой код будет работать, но для получения дополнительной информации необходимо внести изменения и использовать код описанный ниже в примерах.
Отчеты по электронной торговле расположены в соответствующем меню:
Приступим к настройке. Первым делом необходимо в настройках счетчика Яндекс Метрики активировать возможность отправки данных об электронной торговле. Для этого перейдите в режим настройки счетчика, выберите пункт Код счетчика и отметьте чекбокс как показано на изображении ниже:
После этого, если у вас используется отличное от dataLayer имя уровня данных, укажите его в поле под этим чекбоксом. Если у вас данные передаются через стандартное имя уровня данных, ничего делать не нужно.
Обратите внимание, если вы внедрили отслеживание расширенной электронной торговли в Google Analytics через код отслеживания, то необходимо добавить описание действий с товарами и фиксацию транзакции согласно рекомендациям для Google Tag Manager. Поскольку при использовании Google Tag Manager мы применяем уровень данных через который передаем в него необходимую информацию, при внедрении через код отслеживания Google Analytics все данные передаются напрямую.
На этом настройка счетчика завершена, замените код Яндекс Метрики на страницах сайта, при необходимости разместите код отслеживания действия электронной торговли на страницах сайта. Код Яндекс Метрики с включенным параметром отслеживания электронной торговли выглядит следующим образом:
Предположим у вас не внедрена расширенная электронная торговля Google Analytics, но вы хотите использовать эту возможность в Яндекс Метрике. Для этого вам необходимо:
выполнить код JavaScript, который передаст в Яндекс Метрику сведения об электронной торговле.
Перед тем как мы будем описывать действия с товарами необходимо убедиться в том, что у вас существует объект уровня данных dataLayer. Он должен быть инициализирован ДО кода Яндекс Метрики. За помощью в этом вопросе обратитесь к вашим разработчикам. Не забудьте, что инициализация объекта должна выполняться единожды на странице!
Если вы не используете Google Tag Manager, то перед кодом Яндекс Метрики разместите строку:
1 |
window.dataLayer = window.dataLayer || []; |
Код счетчика будет примерно следующим:
Обратите внимание на строку 17, это инструкция создания объекта уровня данных.
Теперь можно приступать непосредственно к настройкам действий связанным с электронной торговлей. Напомню, ранее мы предположили, что настройку выполняем для сайта на котором не используется уровень данных и расширенная торговля от Google Analytics.
Первое действие – просмотр карточки товара.
Каждый товар/услугу мы можем описать следующими полями:
На странице карточки товара после кода Яндекс Метрики вам необходимо разместить код описывающий товар, выглядеть он может так (размещаем после кода отслеживания Яндекс Метрики):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
dataLayer.push({ 'ecommerce' : { 'detail' : { 'products' : [ { 'name' : 'НАЗВАНИЕ ТОВАРА2', // обязательное 'id' : 'АРТИКУЛ2 или ИДЕНТИФИКАТОР2', // обязательное 'price' : 'Стоимость', 'brand' : 'Производитель или бренд2', 'category' : 'Категория товара2, до 5 позиций', 'variant' : 'Вариант исполнения2' } ] } } }); |
После этого у вас появится информация о просмотрах карточек товаров в отчетах по электронной торговле Яндекс Метрики:
Добавив в описание товара параметр position, вы сможете узнать какая позиция товара в списке товаров наиболее кликабельна:
Пример кода описывающий товар до кода Яндекс Метрики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
dataLayer = [{ 'ecommerce' : { 'detail' : { 'products' : [ { 'name' : 'НАЗВАНИЕ ТОВАРА', // обязательное 'id' : 'АРТИКУЛ2 или ИДЕНТИФИКАТОР', // обязательное 'price' : 'Стоимость', 'brand' : 'Производитель или бренд', 'category' : 'Категория товара, до 5 позиций', 'variant' : 'Вариант исполнения' } ] } } }]; |
Следующие действия – добавление товара в корзину / удаление товара из корзины.
При взаимодействии пользователя с корзиной необходимо выполнить код аналогичный приведенному выше, за исключением того, что действия должны быть заменены с detail на:
Также необходимо указать количество добавляемых/удаляемых товаров, это делается с помощью параметра quantity:
1 |
'quantity': 1 |
Пример кода для добавления товара в корзину:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
dataLayer.push({ 'ecommerce' : { 'add' : { // remove для удаления товара из корзины 'products' : [ { 'name' : 'НАЗВАНИЕ ТОВАРА7', // обязательное 'id' : 'АРТИКУЛ7 или ИДЕНТИФИКАТОР7', // обязательное 'price' : 100, 'brand' : 'Производитель или бренд7', 'category' : 'Категория товара7, до 5 позиций', 'variant' : 'Вариант исполнения', 'quantity': 1 } ] } } }); |
После этого в отчетах по электронной торговле Яндекс Метрики появится соответствующая информация:
Заключительное действие – транзакция.
Необходимо выполнить все тоже самое, что и для фиксации просмотра карточки товара, только код должен быть следующим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
dataLayer.push({ 'ecommerce' : { 'purchase' : { 'actionField' : { 'id' : 'T12345', // обязательное 'affiliation' : 'Online Store', // название магазина 'revenue' : 100, // сумма заказа 'tax' : 10, // налог 'shipping' : 20, //доставка 'coupon' : 'Купон на скидку для транзакции' }, 'products' : [ { 'name' : 'НАЗВАНИЕ ТОВАРА7', // обязательное 'id' : 'АРТИКУЛ7 или ИДЕНТИФИКАТОР7', // обязательное 'price' : 100, 'brand' : 'Производитель или бренд7', 'category' : 'Категория товара7, до 5 позиций', 'variant' : 'Вариант исполнения', 'quantity': 1, 'coupon' : 'Купон на скидку для товара' } ] } } }); |
Вы можете дополнительно указать сведения о промо коде, если такой можно использовать при фиксации транзакции, параметр coupon.
После этой настройки данные будут доступны в отчетах Яндекс Метрики:
На этом настройка электронной торговли для Яндекс Метрики может считаться завершенной.
Настройки, интеграции, примеры реальных задач, пошаговые инструкции
dataLayer.push({
‘ecommerce’ : {
‘add’ : {
……………………..
Как привязать к кнопке “Добавить в корзину” на карточке товара событие, по которому будет передаваться выше указанный dataLayer в метрику?
Заранее большое спасибо!
Дмитрий, через событие onclick()
Спасибо за Ваш ответ!
То есть получается, что вот так?
Button 1
Дмитрий, Вам лучше посоветоваться с разработчиками Вашего сайта, они подскажут правильную реализацию
Эти настройки подходят только для интернет-магазинов или сервису электронной коммерции тоже подойдут?
Татьяна, подобные настройки можно использовать для продажи любых товаров/услуг
Иван, добрый день!
Подскажите как лучше настроить событие на форму регистрации.
Работает примерно так: На есть несколько полей, одни проверяются на корректность заполнения, два поля проверяют значение из базы данных на наличие введенных значений.
Так вот если данное значение находится в базе, то происходит возврат на страницу регистрации и заново вводишь и нажимаешь зарегистрировать.
Цель настроить передачу события в UA по кнопке зарегистрироваться. Сейчас при повторном возврате по факту статистика регистрации искажается. Подскажи как можно сделать ? Можно ли как то отправку сделать в data layer после проверки в БД ?
Максим, попробуйте отправку запроса по факту регистрации через протокол передачи данных
Иван, настраиваю междоменное отслеживание.
1) создал тег UA
2) в поле междоменное отсдеживание прописал домены: sait2, sait3
3) дополнительные поля
allowlinker значение true
Данные client id при переходе в строку браузера подставляются
Но в источниках событий я так же вижу реферал с первого сайта.
В чем не правильная настройка, так же вижу
analytics_debug.js:9 Linker disabled. Ignoring linker parameter
Всем привет! А как сделать чтобы считал доход и показывал его в разделе “Заказы”? Кол-во покупок показывает, а вот в столбике доход нули, хотя сумму заказа указывал в счетчике.
Сергей, не совсем понятен Ваш вопрос, приложите скриншот или напишите мне напочту
Спасибо большое за инструкцию
У меня проблема название товаров и количества передаются, а колонка с “Стоимость добавленных в корзину товаров” одни нули, хотя цену отправляю и в алерте ее показывает. вот мой код
dataLayer.push({
“ecommerce”: {
“currencyCode”: “RUB”,
“add”: {
“products”: [
{
"id": newItem.name,
"name": newItem.nazvanie.replace(//g, ""),
"price": newItem.price,
"quantity": newItem.quantity
}
]
}
}
});
хотя в отчете “Популярные товары” вся стоимость отображается. Это баг метрики я так понимаю?
У меня та же проблема, не передается стоимость. И действительно, в отчете “Популярные товары” метрика “Стоимость” показывает суммы! Но в “Доходы” отчетов суммы не идут!
Что делать??
Может быть проблемы на стороне Метрики. Функционал новый, могут быть накладки
Добрый день, Иван!
Не могли бы вы уточнить: действие “просмотр карточки товара” описывается либо до либо после кода метрики? или и до и после?
Денис, достаточно одного описания в любом месте
Спасибо за статью!
Возможно стоит дописать в примеры передачу валюты
“currencyCode”: “RUB”,
Та же проблема – цену шлю а в отчетах нет данных.
Очень полезная статья, спасибо! Подскажите новичку пож-та – цену и все дополнительные информационные поля нужно руками прописывать? и нужно код в каждую карточку добавлять руками? или можно это ускорить?
Андрей, значения динамически должны изменяться под конкретную транзакцию или любое другое действие расширенной торговли. Вряд ли у Вас существуют фактически карточки товара, скорее всего они динамически формируются при запросе. Обратитесь к Вашим разработчикам, они подскажут как работает Ваш сайт
“Перед тем как мы будем описывать действия с товарами необходимо убедиться в том, что у вас существует объект уровня данных dataLayer. Он должен быть инициализирован ДО кода Яндекс Метрики.” – при использовании GTM как это реализовать?
Сделал всё по инструкции. В метрике данные появляются (конечно через одно место, то корзин нету то ещё чего … вобщем всё что описано выше), а вот в Google Analytics нет …
Что ему не хватает? Коммерция включена.
“а вот в Google Analytics нет …” – нашёл ответ тут – https://prometriki.ru/rasshirennay-torgovly-google-analytics-rekomendacii-po-vnedreniu/ , было не включено в теге сбор “необходимо в тегах типа Universal Analytics дополнительно включить соответствующий переключатель.”
Здравствуйте Иван.
Спасибо за статью.
Подскажите пожалуйста, все эти коды надо оборачивать в теги script /script ?
И где размещать коды добавления и удаления товара, на странице корзины?
Дмитрий, код JavaScript На странице обрамляется тегами
. Где размещать код взаимодействия с корзиной – зависит от Вашего сайта. Общий совет: там где есть такие действия, код должен быть
Спасибо попробую их разместить оба в корзине.
А транзакция это же финал оформления? Т.е. разместить на странице “спасибо за покупку?
Все зависит от логики работы сайта, но в общем случае – да
Товарищи, а как передать в quantity количество товара из “соседнего” поля инпут? )))
Все будет зависеть от того, в какой момент выполняется передача. Можно на jQuery написать небольшой код, задайте этот вопрос разработчикам Вашего сайта
если я настроил электронную коммерцию для аналитикс и добавил код, описывающий товар от гугл. Нужно ли код яндекса аналогичный добавлять?
1. Нужно использовать расширенную торговлю
2. Нужно в ЯМ активировать сбор данных по расширенной торговле
3. Нужно использовать корректный код в правильной последовательности
Если эти условия соблюдены – то не нужно ничего добавлять. Яндекс Метрика теперь использует код для транзакций от Google Analytics
подскажите, пожалуйста, при нажатии на кнопку добавления товара в корзину вызывается функция, в которой конструкция такого типа
dataLayer.push({
‘ecommerce’ : {
‘add’ : {
‘products’ : [
{
'name' : '@productName@',
'id' : @productUid@,
'price' : @productPrice@,
'quantity': 1
}
]
}
}
});
}
здесь нужно использовать dataLayer.push({}) либо dataLayer = [{}] ?
почему -то данные не отображаются в отчетах(
Иван, добрый вечер.
Подскажите, хотим в Метрику передавать еще стоимость доставки и способ. Как их лучше передать?
Михаил, стоимость доставки – параметр
shipping
в описании транзакции, для способа доставки попробуйте настроить параметры визитов1. Нужно использовать расширенную торговлю
2. Нужно в ЯМ активировать сбор данных по расширенной торговле
3. Нужно использовать корректный код в правильной последовательности
Если эти условия соблюдены – то не нужно ничего добавлять. Яндекс Метрика теперь использует код для транзакций от Google Analytics
А можно по подробнее раскрыть этот момент!
Если я настроил – Google Analytics – то там нет ни какого dataLayer
Это только наверное в Google Tag Manager?
Игорь, верно. Для Яндекс Метрики необходимы инструкции расширенной торговли, которые используются для Google Tag Manager
Добрый день.
Мой код:
dataLayer.push({
‘ecommerce’ : {
‘detail’ : {
‘products’ : [
{
'name' : 'product_name', //обязательное
'id' : 'product_sku', //обязательное
'price' : 'product_price',
'category' : 'category_name',
}
]
}
}
});
В отчете Я.Метрика по товарам я вижу только одну строчку:
product_name ______визиты__просмотры __ и т.д.
Так и должно быть? А как же увидеть именно перечень товара?
Елена, какой перечень Вам необходимо увидеть?
Иван, перечень товаров.
товар 1 ____ визиты _промотры
товар 2____ визиты__просмотры.
И тоже самое по категориям.
Наверное в код нужно что-то добавить?
Пример стандартного отчета
Добрый день Иван,
1. Нужно использовать расширенную торговлю
2. Нужно в ЯМ активировать сбор данных по расширенной торговле
3. Нужно использовать корректный код в правильной последовательности
Если эти условия соблюдены – то не нужно ничего добавлять. Яндекс Метрика теперь использует код для транзакций от Google Analytics
Подскажите пожалуйста: настроена электронная коммерция для аналитики с помощью GTM, как можно настроить электронную коммерцию для метрики? В метрике включил “Отправка в Метрику данных электронной коммерции” , код метрики изменил на новый. Но электронная торговля в метрике не работает. Что не так? Склоняюсь к тому что разная реализация параметров в уровне данных.
Артем, причин может быть несколько. Порядок расположения кода, корректность внедрения и т.п. Нужно разбираться конкретно с сайтом
Может есть какой-то вариант готовый вариант внедрения с помощью GTM? Сайт shiny-diski.com.ua
Добрый день! Подскажите пожалуйста, можно ли описывать/использовать только одно событие “Покупка (метод purchase)” на сайте? То есть без detail, добавление/удаление в корзину.
Да, возможно, только для фиксации трнзакций
Не встречали такого, чтобы учитывались не все продажи? То есть, всё работает корректно, но примерно 5% продаж в статистику не попадает. В чём может быть проблема? У вас статистика точная?
Разве е-коммерция в Метрике не только через DataLayer делается? Я не нашёл других способов.
Алексей, Вы правы, только через уровень данных, но причины аналогичные – наличие блокировщиков, не срабатывание нужного кода по причине отмены загрузки пользователем и т.д. Попробуйте сравнить с CRM, какие транзакции не учлись, может быть это позволит выявить проблему
Спасибо за ответ. В том то и дело, что не могу найти закономерностей.
Думал, есть какие-то соображения на этот счёт.
Здравствуйте. Подскажите пожалуйста можно ли реализовать на insales электронную коммерцию? очень надо. Не нахожу инструкций в интернете, видимо никто до этого не делал.
Здравствуйте. Я не занимаюсь работой с кодом сайта при внедрении расширенной торговли, по этой причине ответить Вам не смогу
Здравствуйте! Подскажите пожалуйста как сделать чтобы в purchase передавались все товары? У меня передается только 1 товар. Гугл аналитикс схватывает все позиции через foreach, а метрика только первый. Не пойму куда копать.
Здравствуйте!
Какой ID надо поставит в “actionField”: {“id” : ” ??????? “} ?
Правильно ли поставил в ” goal_id ” номер цели ?
И сделать так что бы отчеты платежей видно было в Электронной коммерция -> Заказы ?
За ранее спасибо .
Антон, в параметре actionField -> id необходимо указать идентификатор транзакции, который присваивается Вашей системой учета заказов. Если Вам необходимо отслеживать цель на совершение покупки, то это возможно настройкой цели на посещение определенной страницы или JavaScript событие
Спасибо большое Иван , но у меня в Яндекс.Метрике не видно и ни чего показывает что может быть проблемой ?
Антон, если у Вас нет информации о расширенной торговле то необходимо:
Для поиска и решения проблемы необходимо изучать сайт, без этого очень сложно найти проблему и ее решение
Мне тоже очень интересен вопрос Антона. В документации не нашел ответа.
В GA можно скармливать dataLayer данные вызвав какое-нибудь событие через dataLayer. Пройдёт ли это с метрикой?
Уточните свой вопрос
Здравствуйте, Иван! Помогите, пожалуйста, разобраться:
Я подключил Электронную Коммерцию Метрики, как у вас это описано. В начале сайта у меня грузится счетчик Метрики со строкой window.dataLayer = window.dataLayer || []; в середине страницы через dataLayer.push отправляются данные о заказе.
Все работает.
Тогда я решил подключить еще и Электронную Торговлю Гугл Аналитикс. Сделал и настроил аккаунт в Тэг Менеджере, В КОНЕЦ СТРАНИЦЫ прописал 3 блока кода Гугл – один от Аналитикса и два – от ТэгМенеджера.
В середине страницы сделано добавление данных о транзакции для Гугл, но через dataLayer = [ ], так как для Гугла описан этот метод в их документации.
Гугл заработал, но в Метрику данные перестали передаваться.
У меня есть подозрение, что это из-за контейнеров Тэг Менеджера – там видимо происходит повторная инициализация объекта window.dataLayer = window.dataLayer || [] и данные Метрики затираются… Удаляю всю часть от Гугл – работает Метрика, добавляю Гугл – он работает, но Метрика перестает.
Помогите, пожалуйста, понять, в какой последовательности располагать код, в какой момент инициализировать window.dataLayer = window.dataLayer || [], чтобы работал и гугл и метрика. Буду бесконечно благодарен!
Методом проб и ошибок я дошел до того, что, насколько я понимаю, это не коды от Метрики и Гугла конфликтуют, получается, что я, подряд вызывая два скрипта по передаче заказов в системы статистики, видимо, затираю данные?
Я сначала пишу данные для Метрики:
dataLayer.push({
‘ecommerce’: {
‘purchase’: {
‘actionField’: {
‘id’ : ‘Metrika001′
},
‘products’: [{...}]
} } });
а потом для Гугл:
dataLayer = [{
‘transactionId’: ‘Googl001′,
…
‘transactionProducts’: [{...}]
}];
Вот это вот и затирает одно другое? Как же сделать, чтобы и Гугл и Яндекс передавались?
Юрий, для Google Analytics и Яндекс Метрики нужно использовать один фрагмент кода. Метрика сама все “подтянет” , а для Google Analytics потребуется дополнительно создать тег в Google Tag Manager. Место размещения – я бы рекомендовал ПОСЛЕ кода контейнера