16 мин чтения100CTR
Электронная коммерция в Яндекс Метрике: настройка для интернет-магазина
Как Метрика собирает данные о товарах, корзинах и заказах: включение опции, контейнер dataLayer, формат событий с примерами кода, плагины CMS, проверка, отчёты и использование дохода в Директе.

Электронная коммерция в Яндекс Метрике — режим счётчика, в котором сайт передаёт не только факт заказа, но и его содержимое: какие товары смотрели, клали в корзину, удаляли и покупали, по какой цене и с каким промокодом. Чтобы его подключить, включите опцию «Электронная коммерция» в настройках счётчика, обновите код на сайте и настройте отправку событий в контейнер dataLayer — плагином CMS, встроенной интеграцией конструктора или разработчиком. Через несколько часов после первой передачи данных заполнятся отчёты в разделе «Отчёты» → «Электронная коммерция», а у счётчика появятся цели с доходом, на которые можно настроить стратегию Директа.
Чем электронная коммерция отличается от обычных целей
Цель отвечает на вопрос «сколько раз оформили заказ». Электронная коммерция отвечает на вопросы «что именно купили, на какую сумму и откуда пришли покупатели». Интернет-магазину нужны оба инструмента, но для анализа ассортимента и окупаемости рекламы целей недостаточно.
| Цель «Заказ оформлен» | Электронная коммерция | |
|---|---|---|
| Что фиксирует | Факт действия: посещение страницы «Спасибо», клик, JavaScript-событие | Действия с товарами: просмотр, корзина, удаление, покупка, клики по спискам и промоблокам |
| Состав заказа | Нет | Товары, количество, цены, категории, бренды, варианты |
| Доход | Только если задать ценность цели вручную или передать её в коде | Сумма заказа из данных сайта |
| Отчёты | «Конверсии», конверсия в любом отчёте | Отдельная группа из девяти отчётов по товарам, заказам и промокодам |
| Что нужно для настройки | Цель в интерфейсе Метрики | Включённая опция и разметка событий на сайте |
У магазина есть и обычные цели — «Автосбор: Покупка», «Автосбор: Заказ оформлен», «Начало оформления заказа». Электронная коммерция с ними не конфликтует и дополняет их.
Сама функция бесплатна, как и вся Метрика. Партнёры Яндекс Маркета со страницей магазина получают данные о взаимодействии с товарами без дополнительной настройки.
Как это работает: контейнер dataLayer
Когда опция включена, в код счётчика добавляется параметр ecommerce: "dataLayer". Он сообщает счётчику, что данные о товарах нужно читать из глобального JavaScript-массива window.dataLayer. Сайт кладёт туда объекты методом push в момент действия посетителя, а счётчик забирает их и отправляет в Метрику.
Имя dataLayer используется по умолчанию. Его можно сменить в поле «Имя контейнера данных», если массив с таким именем уже занят другой системой и формат данных не совпадает. Имя в настройках счётчика и в коде сайта должно совпадать посимвольно, иначе Метрика ничего не получит.
Опция электронной коммерции и имя контейнера в настройках счётчика
Скриншоты — из официальной справки Яндекс Метрики: «Как подключить электронную коммерцию вручную» и соседнего раздела о проверке настройки.
Каждый объект состоит из трёх частей:
currencyCode— код валюты по ISO 4217, напримерRUB;- тип действия —
detail,add,purchaseи другие; products— массив товаров (для внутренней рекламы вместо него передаютpromotions).
Какие события передавать
| Действие | Когда отправлять | Что даёт |
|---|---|---|
impressions |
Посетитель видит список товаров: каталог, поиск, блок рекомендаций | Эффективность списков и подборок |
click |
Клик по товару в списке | Какие позиции в списке привлекают внимание |
detail |
Открытие карточки товара | Популярные товары, переход из просмотра в корзину |
add |
Добавление в корзину | Отчёт «Товары в корзине», цель «Ecommerce: добавление в корзину» |
remove |
Удаление из корзины | Какие товары передумывают покупать |
purchase |
Подтверждение заказа | Заказы, доход, состав заказов, цель «Ecommerce: покупка» |
promoView |
Показ внутреннего баннера или промоблока | Отчёт «Промокампании» |
promoClick |
Клик по внутреннему баннеру | Отчёт «Промокампании» |
Передавать всё не обязательно. Минимальный рабочий набор для магазина — detail, add, remove и purchase: его же отправляют официальные плагины Метрики. Списки и промоблоки размечают, когда нужно оценить каталог, поиск по сайту или внутренние акции.
Поля товара и заказа
| Поле | Где | Что передавать |
|---|---|---|
id или name |
Товар | Обязательно хотя бы одно. Лучше оба: артикул и понятное название |
price |
Товар | Цена за единицу, которую посетитель реально платит, с учётом скидки |
quantity |
Товар | Количество, целое число |
brand |
Товар | Бренд — нужен для отчёта по брендам |
category |
Товар | Иерархия до 5 уровней через /: Обувь/Мужская обувь/Кроссовки |
variant |
Товар | Вариант: размер, цвет |
list |
Товар | Название списка, из которого пришли к товару: «Выдача категории», «Результаты поиска» |
position |
Товар | Позиция товара в списке |
discount |
Товар | Размер скидки. Метрика ничего не пересчитывает, она только сохраняет значение |
coupon |
Товар или заказ | Промокод |
id |
actionField покупки |
Обязательный уникальный номер заказа |
revenue |
actionField покупки |
Доход по заказу. Если не указан, Метрика считает его по ценам товаров |
Как подключить электронную коммерцию
Первый шаг одинаков для всех способов: в Метрике откройте «Настройка» → вкладку «Счетчик», включите опцию «Электронная коммерция», сохраните и замените код счётчика на сайте обновлённым. Проверьте, что в коде на страницах товаров и заказов есть ecommerce:"dataLayer". Если код вставлен давно и в нём нет этого параметра, данные не придут, даже если опция включена.
После включения опции в коде счётчика появляется параметр контейнера — его и нужно перенести на сайт
Дальше путь зависит от платформы магазина.
| Способ | Кому подходит | Кто делает | Что передаётся |
|---|---|---|---|
| Официальный плагин Метрики | WordPress с WooCommerce, 1С-Битрикс, OpenCart | Администратор сайта | Просмотр карточки, добавление и удаление из корзины, покупка |
| Встроенная интеграция платформы | Tilda, коробочные и облачные платформы магазинов | Администратор сайта | Зависит от платформы, обычно заказы и корзина |
| Существующая разметка Google Analytics | Сайты с настроенной электронной торговлей GA4 или Enhanced Ecommerce | Ничего делать не нужно | То, что уже размечено для Google Analytics |
| Ручная разметка | Самописные сайты, сложная логика корзины, SPA | Разработчик | Любые события из таблицы выше |
Другие готовые решения, в том числе от сторонних разработчиков, Метрика собирает в разделе «Интеграции» → «CMS».
WordPress с WooCommerce
Официальный плагин «Яндекс Метрика» работает на WordPress 5.2.9 и выше. Данные электронной коммерции он передаёт, только если магазин построен на WooCommerce.
- Включите в счётчике «Электронную коммерцию» и проверьте адрес сайта в настройках.
- Деактивируйте другие плагины, которые ставят код Метрики, иначе счётчик загрузится дважды.
- Установите плагин «Яндекс Метрика» через «Плагины» → «Добавить новый» и активируйте его.
- В настройках плагина укажите номер счётчика (только цифры).
- Выберите «Тип бренда»: «Термин» с таксономией бренда или «Произвольное поле» с его названием. Без этого отчёт по брендам останется пустым.
- Сохраните изменения.
Если не приходят просмотры товаров, проверьте тему: плагину нужен хук woocommerce_before_single_product, а в некоторых темах его нет. Подробнее об установке плагина — в статье как установить Яндекс Метрику на WordPress.
1С-Битрикс
Модуль «Яндекс Метрика» работает с версии 18.0 во всех редакциях «1С-Битрикс: Управление сайтом».
- Включите в счётчике «Электронную коммерцию» и удалите другие модули Метрики, если они есть.
- Установите модуль из Marketplace или через «Marketplace» → «Установленные решения».
- Откройте «Настройки» → «Настройки продукта» → «Настройки модулей» → «Яндекс Метрика», выберите сайт и укажите номер счётчика.
- Для отчётов по брендам укажите свойство бренда для каждого активного каталога.
- Сохраните настройки.
Добавление в корзину, удаление и покупка передаются сразу. Для события просмотра карточки нужно поправить шаблон: в файл element.php шаблона компонента bitrix:catalog после вызова bitrix:catalog.element добавляют подключение yandex.metrika:detail. Это работа для разработчика: путь к файлу на разных сайтах отличается. Пошаговая установка модуля — в статье как установить Яндекс Метрику на 1С-Битрикс.
OpenCart
Модуль Метрики работает на OpenCart 2.3 и выше. Архив загружают через «Расширения» → «Установщик», затем обновляют модификации в «Расширения» → «Модификации» и добавляют модуль «Яндекс Метрика» в разделе расширений с фильтром «Аналитика». В настройках модуля указывают номер счётчика; электронная коммерция, Вебвизор и карта кликов включены по умолчанию.
Tilda и другие платформы
На Тильде заказы уходят в Метрику автоматически после включения опции в счётчике и переопубликации страниц, а добавления в корзину включают галочкой в настройках блока корзины. Условия и нюансы — в статье как подключить Яндекс Метрику к Тильде.
У других платформ интеграция обычно находится в модуле или разделе настроек «Яндекс Метрика». Перед включением уточните в справке платформы, какой способ передачи заказов она использует: некоторые умеют отправлять заказ и как событие электронной коммерции, и как обычную цель. Отчёты и цели «Ecommerce: …» появятся только в первом случае.
Если на сайте уже есть разметка для Google Analytics
Формат данных Метрики совместим с Google Analytics. Если сайт уже отправляет электронную торговлю в GA4 или Enhanced Ecommerce, в том числе через Google Tag Manager или Global Site Tag, достаточно включить опцию в счётчике и обновить код: Метрика начнёт читать тот же dataLayer без доработок.
Проверьте только имя массива. GTM тоже использует dataLayer, и если в нём лежат данные в формате, который Метрике не подходит, разработчики иногда заводят для Метрики отдельный контейнер. Тогда новое имя указывают и в поле «Имя контейнера данных», и в коде сайта.
Ручная разметка
Разработчик объявляет контейнер до кода счётчика и отправляет объект в момент действия. Пример для открытия карточки товара:
window.dataLayer = window.dataLayer || [];
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"detail": {
"products": [{
"id": "SKU-1021",
"name": "Кроссовки беговые",
"brand": "Runline",
"category": "Обувь/Мужская обувь/Кроссовки",
"variant": "42",
"price": 5390
}]
}
}
});
Добавление в корзину отличается только типом действия и количеством:
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"add": {
"products": [{
"id": "SKU-1021",
"name": "Кроссовки беговые",
"price": 5390,
"quantity": 1,
"list": "Выдача категории",
"position": 2
}]
}
}
});
Удаление из корзины передают так же, с действием remove. Покупку отправляют на странице подтверждения заказа, когда номер заказа уже известен:
dataLayer.push({
"ecommerce": {
"currencyCode": "RUB",
"purchase": {
"actionField": {
"id": "ORD-10452",
"revenue": 10180,
"coupon": "AUTUMN10"
},
"products": [
{ "id": "SKU-1021", "name": "Кроссовки беговые", "price": 4790, "discount": 600, "quantity": 2 },
{ "id": "SKU-3307", "name": "Носки спортивные", "price": 300, "quantity": 2 }
]
}
}
});
Если события нужно не только передавать в ecommerce, но и отправлять как отдельные цели (например, «быстрый заказ» без корзины), используйте метод reachGoal.
Правила разметки, которые чаще всего нарушают
- Отправка в момент перехода. Не отправляйте событие по клику на ссылку или кнопку, которая сразу уводит на другую страницу, например «Оформить заказ». Новая страница может загрузиться раньше, чем счётчик передаст данные. Покупку отправляйте на странице «Спасибо» или после ответа сервера об успешном заказе.
- Неуникальный номер заказа.
idвactionFieldобязателен и должен быть уникальным. Внутри одного визита заказ с одинаковымidучитывается один раз, а для повторов в разных визитах, например при возврате на страницу «Спасибо» через несколько часов, включите в дополнительных настройках счётчика «Удалять дубли событий „еком-покупка“ в разных визитах». Дубль определяется по пользователю, сумме и номеру покупки. - Слишком большой контейнер. Один объект — не больше 8192 символов. Большой заказ делят на части с подномерами:
order1-1,order1-2. Чтобы при этом правильно считать число заказов, ставят отдельную JavaScript-цель на сам заказ. - Цена до скидки. В
priceпередают цену, которую посетитель заплатил, а скидку — отдельно вdiscount. Если передать цену до скидки, доход в отчётах окажется завышенным. - Не та валюта. Указывайте в
currencyCodeту валюту, в которой работает магазин и которая выбрана в настройках счётчика. Иначе суммы в отчётах будут некорректными. - Строки вместо чисел.
priceиquantityпередают числами, без пробелов и знака рубля.quantity— целое число. - Разные имена контейнера. Имя в поле «Имя контейнера данных» и в коде сайта должно совпадать.
Отдельный случай — оплата на стороне платёжного сервиса. Если после оплаты посетитель не возвращается в магазин, событие покупки на странице «Спасибо» не отправится. Такие магазины отправляют purchase при подтверждении заказа, до перехода к оплате, а фактически оплаченные заказы сверяют с CRM.
Как проверить передачу данных
- Убедитесь, что в счётчике включена «Электронная коммерция», а в коде на сайте есть
ecommerce:"dataLayer"или ваше имя контейнера. - Откройте страницу товара с параметром
?_ym_debug=2в адресе. - Добавьте товар в корзину, удалите его, затем верните и оформите тестовый заказ.
- Откройте панель отладки по значку внизу страницы и перейдите на вкладку Ecommerce. Там должны появиться события
detail,add,removeиpurchaseс товарами и суммами. Чтобы журнал не очищался при переходе между страницами корзины и оформления, включите в меню панели Preserve log. - Если панели нет, введите в консоли браузера
JSON.stringify(dataLayer)и сверьте содержимое массива с форматом из справки.
Так в режиме _ym_debug=2 выглядит переданный просмотр карточки товара
Ошибка dataLayer is not defined значит, что на странице нет строки window.dataLayer = window.dataLayer || [];. Пустой массив [] — что контейнер объявлен, но для этого действия сайт ничего не отправляет. Остальные приёмы отладки — в статье как проверить, работает ли Яндекс Метрика.
В отчётах данные электронной коммерции появляются через несколько часов после первой передачи. Тестовые заказы попадут в статистику вместе с настоящими, поэтому делайте их на копеечный товар или помечайте отдельным промокодом, чтобы потом исключить сегментом.
Отчёты электронной коммерции
Отчёты находятся в разделе «Отчёты» → «Электронная коммерция». Показатели и группировки из них можно добавлять и в другие отчёты Метрики, например в «Источники, сводка».
| Отчёт | Что показывает | Пример вопроса |
|---|---|---|
| Популярные товары | Просмотры, добавления в корзину и покупки по каждому товару | Какие товары часто смотрят, но редко покупают? |
| Популярные категории и бренды | Те же показатели по категориям и брендам | Какой бренд приносит больше всего дохода? |
| Списки товаров | Эффективность каталогов, подборок и блоков рекомендаций | Работает ли блок «С этим товаром покупают»? |
| Источники заказов | Заказы и доход по источникам трафика | Какой канал приносит выручку, а не только визиты? |
| Содержимое заказов | Состав каждого заказа | Что покупают вместе? |
| Товары в корзине | Добавления в корзину, покупки и их стоимость по товарам | Какие товары бросают в корзине? |
| Заказанные товары | Только товары, которые в итоге купили | Сколько единиц продано по каждой позиции? |
| Промокоды | Покупки и доход с промокодами | Окупилась ли рассылка с промокодом? |
| Промокампании | Показы и клики по внутренней рекламе | Какой баннер на главной ведёт к покупкам? |
Несколько сценариев, ради которых магазины настраивают ecommerce:
- Брошенные корзины. Сравните в «Товарах в корзине» добавления и покупки. Если товар часто кладут и не покупают, проверьте его цену у конкурентов, условия доставки и наличие размеров, а записи таких визитов посмотрите в Вебвизоре.
- Окупаемость каналов. В «Источниках заказов» видно доход по каждому источнику. Чтобы сравнивать кампании, а не только каналы, размечайте рекламные ссылки UTM-метками — их удобно собирать в генераторе UTM-меток.
- Сегменты покупателей. На основе ecommerce-показателей можно выделить посетителей, которые купили на сумму выше среднего, и сравнить, откуда они приходят.
Действие remove уменьшает количество товара, поэтому в отдельных строках отчётов может появиться отрицательное количество и отрицательная стоимость. Это нормальное поведение при удалениях из корзины.
Электронная коммерция учитывает заказы, оформленные на сайте. Отмены, возвраты и заказы по телефону она не видит. Чтобы сравнивать рекламу с фактически оплаченными продажами, загружают данные CRM — об этом в статье звонки и офлайн-конверсии в Яндекс Метрике.
Электронная коммерция и Яндекс Директ
Автоматические цели с доходом
При первой передаче событий add и purchase Метрика сама создаёт цели «Ecommerce: добавление в корзину» и «Ecommerce: покупка». Включать «Автоматические цели» для этого не нужно. Эти цели передают доход на основе стоимости товаров, не входят в лимит целей счётчика, их нельзя удалить, переименовать или использовать в составных целях.
Стратегии
Когда у счётчика есть цели с доходом, в стратегии «Максимум конверсий» можно ограничивать расход не ценой конверсии, а долей рекламных расходов (ДРР) — процентом от дохода, переданного по цели. При ДРР 15% заказ на 8 000 ₽ обойдётся в рекламе примерно в 1 200 ₽, заказ на 20 000 ₽ — в 3 000 ₽. Можно платить за клики или только за конверсии.
Выбирайте одну цель на одно действие. Если сделать ключевыми и «Ecommerce: покупка», и «Автосбор: Покупка», одна продажа будет учтена дважды, и стратегия переоценит результат.
Доход в статистике Директа
Директ показывает доход только по целям, отмеченным в разделе «Конверсии» → «Настройка метрики „Доход“». По умолчанию он подбирает их сам, например «Ecommerce: покупка». Если доход в Директе не совпадает с Метрикой, сначала проверьте этот список.
Ретаргетинг и аудитории
На цели электронной коммерции можно настроить ретаргетинг: например, показывать товарные объявления тем, кто за 14 дней добавил товар в корзину, но не купил. Покупателей используют и как основу для похожих аудиторий в Яндекс Аудиториях.
Частые проблемы
| Симптом | Причина | Что сделать |
|---|---|---|
| Отчёты пустые, на вкладке Ecommerce отладчика ничего нет | Опция включена, но на сайте старый код без ecommerce:"dataLayer" |
Скопировать обновлённый код счётчика и заменить на всех страницах |
Отладчик видит add, но нет purchase |
Покупка отправляется при переходе на другую страницу или без actionField |
Отправлять покупку на странице подтверждения, заполнить actionField.id |
| Заказов в Метрике больше, чем в CRM | Повторная отправка при обновлении страницы «Спасибо», тестовые заказы | Уникальный id, опция удаления дублей, исключение тестовых заказов |
| Заказов меньше, чем в CRM | Оплата на стороне без возврата на сайт, блокировщики, заказы по телефону | Отправлять покупку при подтверждении заказа, загружать офлайн-конверсии |
| Доход завышен | Цена передаётся до скидки | Передавать в price фактическую цену, скидку — в discount |
| Большие заказы не доходят | Объект больше 8192 символов | Разбить заказ на части с подномерами |
| Нет просмотров товаров на WordPress | В теме нет хука woocommerce_before_single_product |
Добавить хук в шаблон карточки товара |
| Нет просмотров товаров на 1С-Битрикс | Не подключён yandex.metrika:detail в шаблоне каталога |
Добавить подключение в element.php шаблона bitrix:catalog |
| Данные дублируются или конфликтуют | Код Метрики ставят два плагина или плагин и ручная вставка | Оставить один способ установки |
Частые вопросы
Можно ли включить электронную коммерцию без разработчика?
Да, если магазин работает на WordPress с WooCommerce, 1С-Битрикс, OpenCart, Tilda или платформе со встроенной интеграцией. На самописном сайте или при нестандартной корзине события размечает разработчик.
Появятся ли данные за прошлые периоды?
Нет. Метрика собирает данные электронной коммерции с момента, когда сайт начал их передавать. Поэтому опцию лучше включить сразу при создании счётчика магазина.
Учитываются ли возвраты и отменённые заказы?
Нет, в формате нет действия для возврата: remove означает удаление из корзины до покупки. Отмены и возвраты учитывают через загрузку данных CRM.
Можно ли передавать покупку без списка товаров?
Для покупки обязателен номер заказа в actionField, а у товаров — хотя бы id или name. Если состав заказа неважен, проще поставить обычную цель с ценностью, но тогда не будет отчётов по товарам.
Нужна ли электронная коммерция, если в Директе уже есть цель «Автосбор: Покупка»?
Для стратегии с ДРР достаточно любой цели с доходом. Электронная коммерция нужна, чтобы видеть, какие товары и категории приносят выручку, и чтобы строить аудитории по корзине и покупкам.
Видны ли данные электронной коммерции по публичной ссылке на статистику?
Нет. При публичном доступе к счётчику отчёты электронной коммерции скрыты. Чтобы показать их подрядчику, выдайте ему индивидуальный доступ к счётчику.
Подходит ли этот способ для мобильного приложения магазина?
Нет, счётчик Метрики работает на сайтах. Покупки в приложении собирает AppMetrica, у неё своя реализация электронной коммерции.