websitelytics

Menu

Подключение отчетов по контенту в Яндекс Метрике с помощью GTM

Опубликовано: 08 окт 2019

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

В Метрике "из коробки" отчеты по контенту не доступны , для их полноценного подключения необходимо затратить немало усилий — необходимо провести корректную разметку всего контента на вашем сайте. Однако если вы хотите быстро посмотреть на то, как работает отчет и насколько он в принципе может быть вам полезен, есть способ подключить Отчеты по контенту в течение нескольких минут, если вы используете Google Tag Manager для загрузки ваших тегов, включая тег инициализации Яндекс Метрики.

Disclaimer:

Если вы все таки хотите протестировать такое хэкинг-решение, то вот шаги по его внедрению.

Разметка и коды тега в GTM

Яндекс Метрика предлагает размечать контент, как непосредственно в HTML (Microdata), так и с помощью JSON-LD. Второй вариант мы как раз и будем использовать, поскольку сниппеты разметки в таком случае мы можем добавлять на страницу с помощью GTM.

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

Если ключ text не найден, в качестве текста будет взято:

Здесь есть для нас интересный момент — в зависимости от того, указан или нет реальный url в параметрах JSON-LD метрика будет оценивать текст материала возможно немного по разному. Вместо реального url, чтобы параметр не пустовал, можно указать, например, только значимую часть по которой можно идентифицировать url страницы.

Если коды инициализации метрики загружаются через GTM, нам нужно добавить сниппет JSON-LD перед кодом метрики, чтобы, когда она инициализировалась, данные JSON-LD уже были доступны на странице. Естественно вы можете подключить сниппет JSON-LD только для определенных страниц. В случае моего сайта, я подключил его для всех страниц, поскольку не вижу причин почему бы этого не сделать.

Если вы подгружаете код метрики через тег Custom HTML, то весь код (JSON-LD плюс Метрика) вашего тега может выглядеть так:

<script type="application/ld+json">
{  
  "@context": "http://schema.org",
  "@type": "Article",
  "@id": "{{pagePathName}}",
  "headline": "{{pageTitle}}",
  "author": [
      {"@type":"Person", "name":"Yuri S"}
   ],
   "url": "{{pagePathName}}"
}
</script>

<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
                           m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],
                           k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");

  ym(XXXXXX, "init", {
    id:XXXXXXX,
    clickmap:true,
    trackLinks:true,
    accurateTrackBounce:true,
    webvisor:true,
    triggerEvent: true
  });
window.google_tag_manager[{{Container ID}}].onHtmlSuccess({{HTML ID}});
</script>

Если же вы используете шаблон (template) из галереи шаблонов GTM, то вам нужно использовать опцию Tag Sequencing для загрузки JSON-LD раньше кодов Метрики.

Соответствующие переменные в GTM могут быть такими:

Код переменной {{pageTitle}}:

function() {
    return document.title.replace(/"|&/g,'');
}

Здесь я убираю из заголовка символы двойной ковычки " и &, поскольку иначе данные не отправлялись.

Код переменной {{pagePathName}}, которая определяет ключ url, как я и говорил выше может быть в двух вариантах: 1.непосредственно канонический url страницы материала и 2.некий псевдо-url, уникальная часть канонического url:

1.канонический URL старницы:

function() {  
    return encodeURIComponent({{Page URL}}.split('?')[0])
}

2.псевдо-url (это пример, конкретный код может варьироваться):

function() {  
    return document.location.pathname =='/' ? 'homepage' : document.location.pathname.match(/([A-Za-z0-9_-]+)\/?$/)[1];
}

На данном сайте я использую второй вариант.

Далее вам нужно подождать немного времени, пока статистика накопится. Согласно документации: "По размеченным материалам начнет собираться статистика. Отчеты появятся в разделе Контент через несколько часов."

yandex metrika content reports via google tag manager

Отладка

Убедиться в том, что данные для отчетов по контенту отправляются в метрику можно в режиме отладки, запустив его с помощью параметра _ym_debug=1, добавленного к вашему URL.

В консоли должны присутствовать строчки:

Если раскрыть соответствующий объект, то можно убедиться, что вложенные ключи отправляются не пустыми:

console

Как видно, в данном случае отправились данные об авторе, заголовок и url (псевдо значение). Данные же параметров rubric и topics отсутствуют и соответственно не попадут в отчет.

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

Поясню на примере. Предположим, что человек открыл материал, и на его большом мониторе поместилось 2/3 текста всей статьи. Больше он ничего не делал на странице, почитал 5 минут и закрыл ее. Какие цифры пойдут в Доскролы и в Дочтения в таком случае? Проскролил 0, 2/3, или что-то еше?

Вы видите из этого простого примера, что без возможности фильтрации экранов по размеру, и не зная принцип формирования цифр, трудно оценить правильность отчетов для некоторых сценариев. Я, кстати, задавал этот вопрос на официальном канале поддержки Метрики, но не получил ответа... И да, возможности фильтрации и сегментации в отчетах по контенту пока ограничены, хотя со временем наверняка будут расширяться. Ну и если у вас SPA, то все как всегда еще более не тривиально.