Программа

0%

0/8 уроков

Все курсы

Ручная настройка электронной коммерции

Если ваш сайт не работает на популярных CMS, таких как WordPress, Tilda, 1С‑Битрикс или OpenCart, можно ознакомиться со сторонними решениями из каталога интеграций Метрики или подключить электронную коммерцию вручную. Это актуально для самописных сайтов, решений на фреймворках или редких платформ, для которых пока нет официальных интеграций с Яндекс Метрикой.

Если у вас уже есть разметка для Google Analytics

Если на сайте уже настроена передача данных электронной коммерции для Google Analytics, данные в Метрику начнут поступать автоматически. Для этого в настройках счётчика нужно активировать опцию «Электронная коммерция».

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

  • Enhanced Ecommerce (улучшенная электронная торговля для Universal Analytics), включая отправку через Global Site Tag (gtag.js)
  • GA4 Ecommerce — Метрика также распознаёт события электронной торговли, отправленные в формате GA4 (Google Analytics 4)

Обратите внимание: корректная работа возможна только в том случае, если данные передаются в стандартизированном формате, который совместим с Enhanced Ecommerce или GA4. Если передача событий реализована кастомно, потребуется ручная адаптация под структуру Метрики . О ней расскажем ниже.

Благодаря этому материалу вы научитесь:

  • Включать электронную коммерцию на счётчике Метрики
  • Готовить структуру данных
  • Отправлять события через dataLayer

Если же вы используете одну из популярных CMS, переходите к соответствующему лонгриду.

Как это работает

После подключения электронной коммерции данные о заказах и действиях покупателей начнут поступать в Яндекс Метрику.

Если передача событий выполнена корректно:

  • При первой настройке статистика появится в разделе «Отчёты → Электронная коммерция» через несколько часов после первой передачи данных
  • В дальнейшем новые события будут обрабатываться быстрее — в течение 15–30 минут

Это значит, что после запуска нужно немного подождать и не пугаться, если в отчёте нет данных. Чтобы убедиться, что события передаются, можно воспользоваться панелью отладки или консолью браузера (расскажем об этом подробнее далее).

В отчётах электронной коммерции можно увидеть:

  • Какие товары пользователи просматривают, но не добавляют в корзину
  • С какой рекламы приходят клиенты, которые действительно совершают покупки
  • Какие товары, категории и бренды наиболее популярны
  • Какие товары чаще всего покупают вместе
  • Какой доход по источникам трафика и какова эффективность промоматериалов

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

Подключение электронной коммерции вручную

  1. Откройте Яндекс Метрику и выберите нужный счётчик.
  2. В настройках счётчика включите опцию «Электронная коммерция». После этого в код будет добавлена строка, которая укажет Метрике, откуда получать информацию.
image
1/3
  1. Убедитесь, что в коде счётчика появилась строка ecommerce: dataLayer. Скопируйте обновлённый код и вставьте его на все страницы сайта, где нужно отслеживать действия пользователей.
image
1/3

Код счётчика Метрики с включённой электронной коммерцией. Строка ecommerce: "dataLayer" обязательна для сбора событий

Передача данных о действиях пользователей

Чтобы в Метрике стала появляться статистика по взаимодействию пользователей с товарами, нужно отправлять специальные события. Это можно сделать с помощью JavaScript — достаточно указать в коде сайта, какое действие произошло и в каком виде передавать данные.

Пример

Пользователь добавляет товар в корзину. В этот момент срабатывает скрипт и отправляет в Метрику объект с данными о товаре.

image
1/3

Для каждого действия — например, просмотр товара, добавление в корзину, оформление заказа — формируется объект ecommerce. Этот объект передаётся в контейнер данных dataLayer. Метрика получает события именно из этого контейнера.

Вы можете передавать как весь набор событий, так и только самые важные — например, только покупки. Это зависит от ваших задач.

Что такое контейнер данных и зачем он нужен

Контейнер данных — это обычный JavaScript-массив window.dataLayer, в который передаются события о действиях пользователей. Счётчик Метрики отслеживает содержимое этого массива и получает из него данные, которые нужны для формирования отчётов.

Имя контейнера данных и структура вкладываемых в него ecommerce-объектов соответствуют аналогичным сущностям в Google Analytics Enhanced Ecommerce. Обратите внимание: если для Google Analytics Enhanced Ecommerce вы использовали имя, отличное от datalayer, его же надо использовать и для Метрики.

Важно

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

События передаются с помощью конструкции:


window.dataLayer.push({ “ecommerce”: { ... } });

Внутри объекта ecommerce описывается:

  • Действие, которое совершил пользователь (например, просмотр или покупка)
  • Товары, с которыми связано это действие
  • Дополнительная информация — например, номер заказа или сумма

Пример действий:

  • detail — пользователь открыл карточку товара
  • add — добавил товар в корзину
  • purchase — оформил заказ

Как начать передавать события в Метрику

Вам нужно настроить отправку событий через dataLayer.push().

Когда пользователь выполняет действие, например оформляет заказ, сайт отправляет информацию в контейнер данных.

На каждом ключевом этапе пользовательского пути — например, при просмотре товара, добавлении в корзину или оформлении заказа — необходимо вызвать dataLayer.push(...) и передать соответствующие данные. После этого они поступают в счётчик Метрики и становятся доступны в отчётах.

Вот пример такого кода:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    add: {
      products: [
        {
          id: "43521",
          name: "Сумка Яндекс",
          price: 654.32,
          brand: "Яндекс",
          category: "Аксессуары / Сумки",
          quantity: 1
        }
      ]
    }
  }
});

Что означает каждая строка в этом коде:

  • window.dataLayer.push({ … }) — отправка данных в контейнер dataLayer. Метрика будет обрабатывать всё, что передаётся внутри.
  • ecommerce: { … } — начало блока с данными об электронной коммерции.
  • currencyCode: "RUB" — валюта, в которой отображаются суммы. В данном примере указан российский рубль.
  • add: { … } — тип события. В этом случае — добавление товара в корзину.
  • products: [ … ] — массив с информацией о добавленных товарах:
  • id — уникальный идентификатор товара
  • name — название товара
  • price — цена за единицу товара
  • brand — бренд или производитель
  • category — категория товара (можно передавать с вложенностью)
  • quantity — количество единиц, добавленных в корзину

Такие скрипты нужно размещать в коде сайта — в тех местах, где происходят нужные действия. Например, при загрузке страницы карточки товара или после нажатия кнопки «Купить».

Что передавать: параметры и значения

Каждое взаимодействие с товаром на сайте — просмотр карточки, добавление в корзину, покупка — отправляется как отдельное событие. Но само по себе событие — это только «триггер». Чтобы Метрика могла построить отчёт, нужно передать детальную информацию о товаре: название, ID, цену, количество, бренд и так далее.

Эти данные указываются в объекте products. Его структура может немного отличаться в зависимости от типа события. Например, add — добавление в корзину, purchase — покупка.

Какие действия можно отслеживать

Вот список действий, которые можно передавать. Они соответствуют разным этапам взаимодействия пользователя с товарами и элементами сайта.

ДействиеОписание
impressionsПросмотр списка товаров
clickКлик по товару в списке
detailПросмотр карточки товара
addДобавление товара в корзину
removeУдаление товара из корзины
purchaseПокупка (оформление заказа)
promoViewПросмотр рекламного баннера
promoClickКлик по рекламе

Какие данные можно передавать вместе с действием

Каждое ecommerce-действие сопровождается дополнительными данными. В зависимости от типа действия это могут быть:

  • Данные о товарах — для событий add, remove, detail, checkout, purchase и других.
  • Данные о действии — например, информация о номере заказа и выручке для события purchase.
  • Данные о промоакциях — для событий promoView и promoClick. Вместо товаров передаются сведения о рекламных кампаниях (например, ID кампании, название и позиция баннера). Эти данные не подпадают под определение интернет-рекламы, поэтому маркировка не требуется.

Связка данных:

  • Для действия purchase передаются и данные о товарах, и данные о действии (например, номер заказа и сумма).
  • Для действий promoView и promoClick передаются только данные о промоакции — блок promotions.
  • Для всех остальных событий передаются только данные о товарах — блок products.

Данные о товарах передаются в виде объектов в массиве products. Каждый объект описывает отдельный товар: его ID, название, цену, категорию, бренд и другие параметры.

Вот основные поля, которые можно указать:

ПолеОписание
idИдентификатор товара. Например, SKU.Необходимо обязательно указать или id, или name
nameНазвание товара. Например, «Футболка».Необходимо обязательно указать или name, или id
brandБренд, торговая марка, ассоциированная с товаром. Например, «Яндекс / Yandex»
categoryКатегория, к которой относится товар.Поддерживается иерархия категорий до пяти уровней вложенности. Разделителем уровней является символ /. Например, «Одежда/Мужская одежда/Футболки»
couponПромокод, ассоциированный с товаром. Например, "PARTNER_SITE_15"
discountРазмер скидки на товар (указывается как число)
listСписок, к которому относится товар.Чтобы оценивать эффективность списка на разных этапах взаимодействия пользователя с товаром, рекомендуем указывать список товара во всех событиях, которые были после просмотра списка
positionПозиция товара в списке. Например, 2
priceЦена единицы товара
quantityКоличество единиц товара
variantРазновидность товара. Например, «красный цвет»

В зависимости от того, на каком этапе находится пользователь, вы будете передавать разные комбинации этих параметров. Сейчас разберёмся, как это работает на практике.

Как это выглядит в разных сценариях

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

1. Просмотр списка товаров

Пользователь открыл страницу каталога или увидел блок «Популярные товары». В этот момент нужно передать событие impressions и перечислить в нём информацию о просмотренных товарах.

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    impressions: [
      {
        id: "P15432",
        name: "Футболка",
        price: 477.60,
        list: "Поиск",
        position: 1
      }
    ]
  }
});

В этом событии указываются id, name, price, list, position, чтобы потом можно было понять, где и какие товары видел пользователь.

Важно передавать в событии impressions только те товары, которые действительно были видны пользователю. Например, если на странице используется карусель, где сначала отображаются лишь первые четыре товара, событие должно срабатывать именно для этих четырёх позиций. Когда пользователь пролистает дальше и увидит следующие товары, необходимо отправить отдельное событие с информацией уже о новом наборе товаров. Это позволяет точнее отслеживать, какие товары реально попали в поле зрения пользователя.

Кроме того, нужно заранее определить все списки, при просмотре которых будет срабатывать событие. Например, каталог товаров, результаты поиска внутри сайта, блоки «Новинки», «Похожие товары», «Популярные товары».

2. Клик по товару

Пользователь нажал на товар из списка. Это событие click, которое показывает, какой товар заинтересовал пользователя.

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    click: {
      products: [
        {
          id: "39084",
          name: "Термостакан Яндекс",
          position: 1,
          list: "Поиск"
        }
      ]
    }
  }
});

Обратите внимание: здесь тоже передаётся position и list, чтобы понять, где был клик и по какому товару.

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

Пользователь открыл карточку товара. Это событие detail.

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    detail: {
      products: [
        {
          id: "P15432",
          name: "Футболка",
          price: 477.60,
          category: "Одежда / Футболки",
          variant: "Красный",
          list: "Поиск"
        }
      ]
    }
  }
});

На этом этапе важно передать как можно больше информации о товаре — например, указать бренд, категорию, разновидность, список, из которого товар был открыт, и его позицию. Эти параметры помогают точнее анализировать интерес пользователя.

На самом деле подробные данные желательно передавать не только при просмотре карточки, но и при показе списка товаров (impressions). Даже если пользователь видит несколько товаров сразу, в Метрику можно отправить по каждому из них такие параметры, как id, name, price, brand, category, variant, list и position.

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

Это событие add — один из самых важных этапов на пути к совершению конверсии.

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    add: {
      products: [
        {
          id: "43521",
          name: "Сумка",
          price: 654.32,
          quantity: 1
        }
      ]
    }
  }
});

Для корректного сбора данных важно указывать quantity — это параметр, который указывает, сколько единиц товара выбрал пользователь. Например, если человек добавляет в корзину сразу две футболки, то quantity будет 2. Этот параметр помогает Метрике рассчитать количество товаров в заказе.

Важно учесть все сценарии добавления товара в корзину. Например, из категории, результатов поисковой выдачи внутри сайта, на странице корзины, когда пользователь увеличивает количество товаров, нажимая «+».

5. Удаление из корзины

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

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    remove: {
      products: [
        {
          id: "15243",
          name: "Набор салфеток",
          quantity: 1
        }
      ]
    }
  }
});

Важно учесть все сценарии удаления товара из корзины. Это может быть уменьшение количества с помощью кнопки «−» или использование кнопки «Очистить корзину».

Кроме того, важно, чтобы структура события удаления соответствовала структуре события добавления. Например, если при добавлении товара вы не передаёте параметр quantity, а при удалении передаёте, в отчётах могут появиться некорректные значения, вплоть до отрицательных. Чтобы избежать ошибок в аналитике, параметры должны быть согласованы между событиями add и remove.

6. Покупка

Событие purchase отправляется в момент оформления заказа — оно фиксирует факт покупки.

Пример:


window.dataLayer.push({
  ecommerce: {
    currencyCode: "RUB",
    purchase: {
      actionField: {
        id: "TRX987",
        revenue: 2888.88
      },
      products: [
        {
          id: "25341",
          name: "Толстовка",
          price: 1345.26,
          quantity: 1
        }
      ]
    }
  }
});

В actionField нужно указать идентификатор покупки (id). Этот параметр обязателен для передачи события покупки (purchase) — без него данные о заказе не будут отображаться в отчётах электронной коммерции.

Дополнительно в actionField можно передать:

  • Итоговую сумму заказа (revenue)
  • Применённый промокод (coupon)
  • Номер цели из Метрики (goal_id)

Эти данные нужны, чтобы Метрика могла фиксировать факт оформления заказа. Всё, что касается самих товаров (название, цена, количество), по-прежнему указывается в массиве products.

Важно, чтобы событие purchase срабатывало только после успешного оформления заказа — например, на странице «Спасибо за покупку», когда заказ действительно завершён.

Не рекомендуется передавать данные в момент перехода на страницу — например, по событию onclick на кнопке «Оформить заказ»: в этом случае следующая страница может загрузиться до того, как счётчик успеет отправить событие, и данные потеряются.

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

7. Просмотр или клик по внутренней рекламе

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

  • promoView — когда пользователь видит баннер
  • promoClick — когда пользователь кликает по нему

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

Данные о рекламе передаются в массиве promotions.

Просмотр баннеров (promoView)


window.dataLayer.push({
  ecommerce: {
    promoView: {
      promotions: [
        {
          id: "BF001",
          name: "Чёрная пятница",
          creative: "Баннер_1",
          position: "Слот1"
        },
        {
          id: "SUMMER002",
          name: "Летние распродажи",
          creative: "Баннер_3",
          position: "Слот2"
        }
      ]
    }
  }
});

Клик по баннеру (promoClick)


window.dataLayer.push({
  ecommerce: {
    promoClick: {
      promotions: [
        {
          id: "BF001",
          name: "Чёрная пятница",
          creative: "Баннер_1",
          position: "Слот1"
        }
      ]
    }
  }
});

В этом массиве данных обязательно нужно указать идентификатор промокампании (id), также можно добавить name и creative (названия кампании и баннера), creative_slot и position (слот и позиция рекламного баннера). Эти параметры помогут Метрике фиксировать эффективность рекламных акций на сайте — вы сможете понять, какие баннеры чаще видят и по каким переходят, а какие приводят к покупкам.

Обратите внимание

  • Метрика может автоматически получать события о действиях пользователей с товарами, если у вас уже настроена Google Analytics Enhanced Ecommerce. В этом случае повторно настраивать разметку не нужно.
  • Код отправки данных электронной коммерции должен вызываться при наступлении ecom-событий: просмотра товара, добавления товара в корзину, покупки и других.
  • Максимальный размер контейнера данных — 8 192 символа. Если заказ большой и структура dataLayer превышает этот лимит, разбейте его на подзаказы, например order1-1, order1-2.  Метрика не объединит подзаказы в один автоматически — каждый из них будет отображаться в отчётах как отдельный заказ. Если вы хотите учитывать их как один заказ в аналитике, задайте JavaScript-цель и отправляйте её с одним из подзаказов. Тогда общее количество заказов можно будет отследить по количеству достигнутых целей.

Выводы

  • Ручная настройка электронной коммерции — это создание языка общения между сайтом и аналитикой, а не просто техническая задача.
  • Действия пользователей превращаются в структурированные данные, которые Метрика преобразует в показатели бизнеса.
  • Главное преимущество — гибкость. Можно отслеживать именно те события, которые важны для вашей уникальной воронки продаж.
  • Вы сможете не только видеть то, что происходит на сайте, но и понимать мотивы поведения клиентов.
  • Такой подход позволяет перейти от наблюдения к управлению бизнес-процессами.
  • Появляется возможность находить скрытые проблемы в пользовательском пути и оценивать эффективность отдельных элементов.
  • Решения принимаются на основе полной картины взаимодействия клиентов с товарами.
  • Качество данных зависит от внимания к деталям: правильным идентификаторам, своевременной отправке событий, полному набору параметров.
  • Настройка требует аккуратности, но результат — это аналитика, которая действительно отражает процессы бизнеса.
  • Если работаете с популярной CMS, можно выбрать более простой способ через готовые модули, о которых мы рассказали в предыдущих материалах.

Закрепите знания 

Пройдите короткий тест, чтобы проверить, запомнили ли вы ключевые идеи этого материала.

Информационные услуги оказываются ООО «Яндекс»
и не являются образовательными

Подпишитесь на новости

Наши соцсети

Пользовательское соглашение

© 2026 Яндекс