Блог Яндекс.Метрики

Пора обновляться: устаревший ecommerce-код скоро прекратит работу

27 февраля, 15:46

Мы прекращаем поддержку устаревшего способа передачи ecommerce-данных, в котором использовался предопределённый набор параметров визитов. Если вы используете этот способ и хотите, чтобы статистика продолжила поступать в отчёты, вам нужно до 27 марта обновить код для передачи ecommerce-данных. 
 

Обратите внимание: 13 и 20 марта запланировано профилактическое отключение устаревшего метода передачи данных — в эти дни устаревший код не будет передавать данные в отчёты — а с 27 марта он полностью прекратит работу.

В этой статье мы постарались ответить на все возможные вопросы о переходе на актуальный код для передачи ecommerce-данных. Если что-то останется непонятным, смело спрашивайте в комментариях или в нашем чате в Телеграме.



В чём преимущества актуального кода?

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

Помимо этого, можно отслеживать не только добавление товара в корзину, но и удаление из корзины, а ещё — просмотры карточек: это поможет лучше понимать, как покупатели взаимодействуют с товарными предложениями.  C помощью актуального способа передачи данных можно учитывать и использование промо-кода. Подробный список данных, которые позволяет передавать в отчёты актуальный ecommerce-код, есть в Помощи.



Меня устраивает устаревший код. Зачем что-то менять?

Пока мы поддерживаем сразу два способа передачи ecommerce-данных — устаревший и актуальный — мы не можем задействовать максимум ресурсов на развитие новых возможностей Метрики.



Как понять, какая версия кода для передачи ecommerce-данных используется на моём счётчике?

Самый простой способ — зайдите в отчёты по электронной коммерции и проверьте, показывается ли в них уведомление о необходимости перейти на актуальный способ передачи данных. Если вы работаете только с кодом сайта, а доступа к интерфейсу Метрики у вас нет, сравните ваш текущий код для передачи ecommerce-данных с примером актуального кода ниже.



Как перейти с устаревшего кода на актуальный?

1. В настройках счётчика отметьте пункт «Отправка в Метрику данных электронной коммерции».

2. Добавьте на все страницы вашего сайта следующий код:

<script type="text/javascript">
  window.dataLayer = window.dataLayer || [];
</script>

3. Выберите одно или несколько событий, данные по которым вы хотели бы передавать в отчёты.

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

Чтобы было проще разобраться, как это сделать, сравним устаревший и актуальный код для отправки события «формирование заказа». Вот так это событие могло передаваться с помощью устаревшего кода:

var yaParams = {
  order_id: "12345",
  order_price: 123.45,
  currency: "RUB",
  exchange_rate: 1,
  goods: [
    {
      id: "25341",
      name: "Толстовка Яндекс мужская",
      price: 1345.26
    }
  ]
};

А отправка заказа — вот таким:

yaCounterXXXXXX.reachGoal('TARGET_NAME', yaParams);

Теперь формирование и отправка заказа будут выглядеть так:

dataLayer.push({
  "ecommerce": {
    "purchase": {
      "actionField": {
        "id": "12345",
        "revenue": 123.45
      },
      "products": [
        {
          "id": "25341",
          "name": "Толстовка Яндекс мужская",
          "price": 1345.26
        },
      ]
    }
  }
});


Сам по себе метод reachGoal продолжит работать как и раньше — через него нельзя будет передавать именно eсommerce-данные.

5. Обновите код счётчика на всех страницах сайта.

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

Мы отдельно предупредим пользователей, которые не успеют обновить код за две недели до 27 марта. В интерфейсе отчётов по электронной коммерции появится специальное уведомление, а на почту, связанную с вашим аккаунтом на Яндексе, придёт напоминание.

Чтобы узнать больше о возможностях Метрики для интернет-магазинов, посмотрите видео на нашем Youtube-канале:

— Настройка Яндекс.Метрики для электронной коммерции: используйте данные Метрики для рекламы 
— Яндекс.Метрика для электронной коммерции: работа с клиентами
— Яндекс.Метрика: как понять, что дела идут в гору

Обновлено. Сам по себе метод reachGoal продолжит работать как и раньше — через него нельзя будет передавать именно eсommerce-данные.

70 комментариев
Я не использую устаревший метод, но мне всё равно пришло письмо и есть уведомление в интерфейсе. Что делать?
Наталья
Сотрудник Яндекса27 февраля, 20:49
andreyskripin,
Проверьте, пожалуйста, старый отчёт — «Параметры интернет-магазинов». Если в него продолжают поступать данные, значит, новый метод используется параллельно со старым. Если же в старом отчёте данных нет, напишите в службу поддержки.
Наталья,
Не поступают. Я вижу, что у многих такая проблема, поэтому скорее всего ошибка с уведомлением. Но этого ничего страшного, со всеми бывает.
Наталья
Сотрудник Яндекса28 февраля, 15:58
andreyskripin,
Вы правы, действительно зацепили уведомлением часть пользователей нового метода. Простите, что зря потревожили.  Сейчас уведомление должно пропасть.
Наталья,
приходило уведомление, нам нужно вносить изменения 38550550? 
Также не использую устаревший метод. Письмо пришло и уведомление в метрике есть.
Наталья,
У меня в отчете «Параметры интернет-магазинов». За год данных нет.
Наталья
Сотрудник Яндекса28 февраля, 15:59
yur61275809,
Действительно, это мы ошиблись — простите за напрасное беспокойство. Ненужное уведомление сняли.
Аналогично. На всех сайтах формирование и отправка ecommerce выполняется через "dataLayer.push" изначально, а уведомление "Вы используете устаревший способ передачи ecommerce-данных, который перестанет поддерживаться 27.03.2018" присутствует в Метрике. Что-то у Вас неправильно работает, как обычно...
В отчете «Параметры интернет-магазинов» пусто.
Обновлено 27 февраля, 20:54
Кстати и reachGoal на сайтах тоже используется. Но не для ecommerce, а для отработки целей не относящихся к электронной коммерции. Или Вы совсем хотите отказаться от reachGoal? А как тогда будут отрабатываться javascript-цели?
Наталья
Сотрудник Яндекса27 февраля, 21:08
mail@testnk.ru,
reachGoal будет работать как и раньше — через него нельзя будет передавать только eсommerce-данные.
Андрей Березин
27 февраля, 21:08
mail@testnk.ru,
Кстати, да. reachGoal тоже использую. Для разных отслеживания разных целей - кликов, страниц, в том числе связанных с ecommerce. Но данные ecommerce через них не передаются.
Обновлено 27 февраля, 21:08
Наталья,
Спасибо.
Наталья
Сотрудник Яндекса27 февраля, 21:02
mail@testnk.ru,
Всё возможно, но вероятнее всего, одновременно используется и старый метод. А вот если в «старый» отчёт «Параметры интернет-магазинов» данные уже не поступают, тогда, действительно, побеспокоили зря и приносим извинения. В этом случае можно написать в службу поддержки — чтобы не приходили ненужные напоминания.
Наталья,
Напоминание само по себе не мешает, главное чтобы javascript-события (цели) можно было получать в метрике по старому.
Андрей Березин
27 февраля, 21:10
Наталья,
Отчёты Параметры интернет-магазинов пустые на всех счётчиках. А сообщение о старом методе есть.
Наталья
Сотрудник Яндекса28 февраля, 15:53
Андрей Березин,
Действительно, была ошибка — простите, что зря побеспокоили. Сейчас уведомление должно исчезнуть. Если вдруг осталось, пожалуйста, дайте знать.
Андрей Березин
27 февраля, 20:54
Аналогично. На всех счётчиках используется dataLayer. Получил кучу писем про устаревший код. И уведомление в Метрике в ecommerce отчётах есть.
Наталья
Сотрудник Яндекса28 февраля, 15:52
Андрей Березин,
Перепроверили — действительно, тут вышла ошибка. Некорректные уведомления отключили, простите за беспокойство. Если вдруг уведомление осталось, пожалуйста, дайте знать. 
а есть какая-нибудь инструкция, какие поля на какие заменить, чтоб передавать те же данные, что и раньше.
Наталья
Сотрудник Яндекса28 февраля, 11:55
sergerod,
Универсальной инструкции тут, к сожалению, не составишь. Всё зависит от конкретного набора данных, которые вы передавали. В посте постарались привести пример, сравнив передачу отправки заказа «по-старому» и «по-новому».
Здравствуйте! Подскажите, как обновить данные и где скопировать новый код счетчика?
Наталья
Сотрудник Яндекса28 февраля, 18:40
garin.eduard,
Инструкция в общем виде есть в посте выше, в разделе "Как перейти с устаревшего кода на актуальный".  А с тем, как её применить именно к вашему сайту и набору передаваемых данных, поможет разработчик.  
Для 1С-Битрикс есть готовое решение http://marketplace.1c-bitrix.ru/solutions/intervolga.conversionpro/
Здравствуйте, старый метод не используем, в отчете «Параметры интернет-магазинов». За год данных нет. Прошу снять уведомление.
Наталья
Сотрудник Яндекса1 марта, 13:43
dklogin,
Подскажите, пожалуйста, а уведомление вот прямо сейчас показывается? Если да, тогда нам понадобится номер счётчика — всё перепроверим.
Если используется другое название объекта, то где это поменять?
В блоке ecommerce или нет?


w.yaCounterXXXXXX = new Ya.Metrika({
id:XXXXXXX,
accurateTrackBounce:true,
triggerEvent:true,
userParams:{{userYaParams}},
ecommerce:{{digitalData}}
});
} catch(e) { }
});
Наталья
Сотрудник Яндекса2 марта, 11:19
Pakoon,
Да, в параметре ecommerce при инициализации счётчика. Возможные значения параметра ecommerce описаны в Помощи:
https://yandex.ru/support/metrika/code/counter-initialize.html
Наталья,
И метрика будет смотреть только в объект, который указан в ecommerce? Есть подозрение, что метрика продолжает парсить dataLayer, если этого делать не надо.
Наталья
Сотрудник Яндекса5 марта, 13:37
Pakoon,
Все данные должны собираться именно через контейнер данных, указанный в параметре ecommerce. Если кажется, что данные передаются и через {{digitalData}}, и через dataLayer, пришлите, пожалуйста, примеры такой ситуации в службу поддержки.
Добрый день! Вчера обновил код, но уведомление в метрике и сегодня показывается. Новые заказы после обновления кода уже были. Когда оно исчезнет, или я что-то не так обновил?
Наталья
Сотрудник Яндекса2 марта, 10:59
statiami,
Здравствуйте! Уведомление отключается при условии, что за последние два дня не прилетало ни одного события, переданного «по-старому». Так что завтра уведомление должно само исчезнуть. Если вдруг оно останется, пожалуйста, дайте знать — будем разбираться.
1) А вы не забыли добавить строчку
"currencyCode": "RUB"
в текстовом блоке "Теперь формирование и отправка заказа будут выглядеть так"?



2) 
"products": [
{
"id": "25341",
"name": "Толстовка Яндекс мужская",
"price": 1345.26
},
вот эта запятая в конце после } она обязательна? допустим идёт перечисление нескольких товаров с разными id. Понятно, что между товарами запятая после } нужна, а вот после последнего товара она нужна или нет?

3) Дополню. Не совсем понял механизм SKU. Как правильно с ним работать в метрике. Есть в примерах
https://yandex.ru/support/metrika/data/e-commerce.html#e-commerce__product_data
есть "Просмотр полного описания товара". Как правило на одной странице (на странице полного описания товара) выводятся все SKU сразу (например все цвета товара). У каждого SKU свой id и свой variant, тогда правильный код такой, да?


dataLayer.push({
"ecommerce": {
"detail": {
"products": [
{
"id": "P15432",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Красный цвет"
},
{
"id": "P15433",
"name" : "Футболка",
"price": 477.60,
"brand": "Яндекс / Яndex",
"category": "Одежда/Мужская одежда/Футболки",
"variant" : "Зеленый цвет"
}
]
}
}
});
Наталья
Сотрудник Яндекса12 марта, 14:13
SerRu,
Зависит от того, какая логика вывода характеристик в карточке. Если по умолчанию в карточке товара уже выбран какой-то цвет, можно передавать только его. А если по умолчанию в графе «цвет» стоит «не выбрано», можно передавать так, как вы предлагаете — тогда в отчётах отобразится информация о просмотре трёх товаров в трёх разных цветах. Или же отправлять данные в Метрику уже после того, как покупатель выберет цвет.
Наталья,
То есть при просмотре товара можно вообще не передавать, variant" : "Зеленый цвет", а передать его только во время покупки? А как в отчётах метрики это будет выглядеть. Разве это не будет считаться разными товарами: Товар без цвета и Купленный товар с цветом?
Наталья
Сотрудник Яндекса12 марта, 16:08
SerRu,
Цвет — содержимое строчки variant – выводится группировкой «Вариант товара». Если передавать значение этой переменной, а потом добавить соответствующую группировку в отчёт, то просмотры и продажи каждого товара можно будет посмотреть в разрезе цвета (Сумка чёрная, товаров куплено 1, Сумка белая, товаров куплено 1).


Если variant не передавать, это срез будет пустым — то есть вы будете видеть данные только по названию товара (Сумка, Товаров куплено 2). А если передавать variant для всех цветов в случае, если цвет не выбран, в отчётах будет три просмотра трёх карточек, хотя на самом деле просмотр был один. Выходит, что если по умолчанию цвет не определён, идеального решения тут не будет.
Обновлено 12 марта, 16:08
Наталья,
А вообще насколько нужно делать эти просмотры у товаров. Это важно только, чтобы выявить "полезность" товаров. Сумка черная - просмотрено 1000 куплено 1. Ботинки зелёные - просмотрено 1000 куплено 5. Таким образом определяем, что ботинки в 5 раз более востребованы. Только для этого нужно и всё?!
Наталья
Сотрудник Яндекса13 марта, 11:25
SerRu,
Ну почему же. Если у какого-то товара соотношение просмотров и покупок особенно сильно перекошено в сторону просмотров, возможно, там какие-то проблемы с описанием в карточке. Например, для какого-нибудь предмета мебели не указаны габариты — так что не получится принять решение о покупке. 
Наталья
Сотрудник Яндекса12 марта, 14:14
SerRu,
1) Нет, не забыли — это опциональная строка. При её отсутствии валюта просто подтянется из настроек счётчика.
2) Запятая тоже опциональна ;)
Господа, это получается теперь метод сбора данных полностью аналогичен enhanced ecommerce, за исключением некоторых событий?
 Ну и раз такие новости, появится ли у метрики аналог measurement protocol?
Наталья
Сотрудник Яндекса12 марта, 16:03
grishka0007,
 В целом да — специально делали его совместимым, чтобы пользователи, которые уже передают ecommerce-данные в GA и хотят отправлять их и в Метрику, могли сделать это в один клик (поставив галочку «Отправка в Метрику данных электронной коммерции» в настройках счётчика).


Полный аналог measurement protocol делать не планируем — но думаем над тем, как упростить передачу в Метрику разных данных из офлайна.
Наталья,
 Можно об этом поподробнее? Мы передаем ecommerce данные в GA, достаточно просто поставить галочку и обновить код? Или все же нужно прописать дополнительно события?
Наталья
Сотрудник Яндекса9 апреля, 14:33
Роман,
Всё верно — если в GA уже настроен ecom-модуль, в Метрике достаточно поставить галочку и обновить код счётчика на сайте.
Наталья,
Увы, не сработало. В GA ecom данные прилетают, а в Метрике по нулям.. Не пойму как именно Метрика понимает какие данные мы передаем в GA
Роман,
вот код GA если я правильно понял: http://ibb.co/mCyt47
Как метрику "ткнуть носом" сюда
Наталья,
Сейчас GA предлагает устанавливать Global Site Tag (GST). В GST передача данных по заказу отличается от текущей. Если устанавливать GTS то он будет не совместим с Метрикой и нельзя отправить в один клик в Метрику?
Наталья
Сотрудник Яндекса17 апреля, 13:36
Роман,
Тут стоит написать в поддержку, коллеги будут разбираться, в чём там может быть дело. Пожалуйста, опишите проблему как можно более подробно — со скриншотами и примерами кода.
Наталья
Сотрудник Яндекса10 мая, 14:20
SerRu,
Прошу прощения — ушли перепроверить информацию, а ответить не ответили ;( GST совместим с Метрикой, дублирование ecommerce-данных точно так же включается в один клик в настройках счётчика.
Можно использовать эти функции у счетчика http://joxi.net/a2X37z4u18DK4m  ? Они документированы?
Обновлено 12 марта, 14:55
Наталья
Сотрудник Яндекса12 марта, 17:29
lpncom,
Эти функции не документированы — лучше использовать те, что описаны в Помощи. 
Как узнать имя контейнера программно? Counter._ecommerce всегда содержит имя контейнера ?
Наталья
Сотрудник Яндекса12 марта, 17:30
lpncom,
Counter._ecommerce – тоже недокументированная возможность, но она позволяет узнать, что именно в коде счётчика записано в поле ecommerce. 
Можно ли указывать имя цели, а не  goal_id в actionField?
Обновлено 12 марта, 16:37
Наталья
Сотрудник Яндекса12 марта, 17:30
lpncom,
Нет, там нужен именно id цели.
 Приходило уведомление, нам нужно вносить изменения 38550550? 
Наталья
Сотрудник Яндекса20 марта, 13:36
Марина,
Если сейчас показывается уведомление в интерфейсе Метрики — в  отчётах по ecommerce — значит, за последние два дня с сайта ещё приходили события, переданные устаревшим способом.
Наталья,
в метрике сейчас уведомлений нет
А у меня такой вопрос.
Раньше через reachGoal можно было прямо сейчас "пнуть" счётчик чтобы сделать отправку данных в метрику.
Например, оформили заказ в корзине, произошёл редирект на сайт платежного шлюза, а до этого быстренько сделали reachGoal - данные сохранены.
Сейчас данные попадают в масисв dataLayer, и... и всё. Дальше редирект.
Как счётчик узнает, что dataLayer.push чтото делает? Он умеет подписываться на обновления этого массива?
Наталья
Сотрудник Яндекса20 марта, 21:04
klepid,
Надо просто «пнуть» dataLayer до редиректа. Как именно это сделать, сможет подсказать разработчик сайта.
Наталья,
Я и есть разработчик=) Как показала практика, помогло сделать цель яваскриптовую, и её дергать через reachGoal сразу после dataLayer.push, в цель не передаётся ecommerce данные, она как раз для "пинка".


Подтверждений того, что у dataLayer есть "слушатель" изменений  и как он работает (таймаут, прототип объекта Array) - в документации нет. Если сделать dataLayer.push и подождать N секунд - всё будет норм. Чему равно N и при каких обстоятельствах - непонятно.
Вот здесь был задан вопрос:
https://github.com/yandex-money/yandex-money-cms-opencart2/issues/202 .
Не попросите товарищей ответить))?
Наталья
Сотрудник Яндекса23 марта, 12:55
redm1978,
Коллеги из Кассы уже работают над обновлением, к 27 марта все модули будут поддерживать актуальный способ передачи данных.
Наталья,
Обновление нерабочее

redm1978,
добрый день.


Напишите нам на cms@yamoney.ru с адресом сайта. Сам счетчик и события целей привязываются (через модификатор) к стандартным элементам темы. Мы посмотрим в чем может быть дело.
a.shishkin@pudra.ru
23 марта, 11:46
Сейчас при отправке yaCounterXXXXXX.reachGoal('TARGET_NAME', yaParams); 


TARGET_NAME просто не считается, событие не трекается, если в yaParams есть данные заказа. Так было задумано?
Наталья
Сотрудник Яндекса23 марта, 17:01
a.shishkin@pudra.ru,
Это что-то странное — пожалуйста, напишите в службу поддержки.
Обновление на хостинге вроде делала, а в метрике все равно сообщение что я старые данные использую, где ошибка? как поправить?
Наталья
Сотрудник Яндекса27 июня, 11:39
oboigood,
Сообщение в интерфейсе показывается в том случае, если за последние два дня с сайта ещё приходили события, переданные устаревшим способом. Так что пока можно просто подождать. Но если ситуация не изменится, напишите, пожалуйста, в службу поддержки  (форма обратной связи — в самом низу страницы).