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

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

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


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


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


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

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


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


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