Установка тега
Код тега и что он делает, установка в Tilda, 1С-Битрикс, WordPress, OpenCart и InSales, директивы CSP, одностраничные приложения и сайт на нескольких доменах.
Код
Вставьте код перед </head> на всех страницах сайта. Код с ключом вашего сайта кабинет показывает после добавления сайта.
<script>
window.dara = window.dara || function () { (dara.q = dara.q || []).push(arguments); };
</script>
<script async src="https://analytics.daratech.ru/t/as_XXXXXXXXXXXXXXXXXXXX.js"></script>
<noscript><img src="https://analytics.daratech.ru/c/p?k=as_XXXXXXXXXXXXXXXXXXXX" width="1" height="1" alt=""></noscript>
- Первый
scriptсоздаёт функциюdaraи очередь: команды, вызванные до загрузки тега, выполнятся, когда он загрузится. - Второй
scriptзагружает тег асинхронно — страница его не ждёт. Вместе с тегом приходят настройки сайта: домены и режим одностраничного приложения. Изменения настроек доходят до страниц за 5 минут, переустанавливать код не нужно. noscript— пиксель для браузеров без JavaScript. Он даёт только просмотр страницы, без источника по UTM-меткам. Адрес страницы пиксель берёт из заголовкаReferer, а браузеры по умолчанию передают в нём стороннему сайту только адрес сайта без пути, поэтому такие просмотры в отчётах обычно выглядят как просмотры главной страницы. Если политика сайта запрещаетRefererсовсем, просмотр по пикселю не учитывается.
Ключ сайта as_… публичный: он виден в коде страницы и только указывает сайт. Неизвестный или заблокированный ключ получает пустой скрипт — страница не увидит ошибку.
Что делает тег
Тег отправляет события пачками — раз в 5 секунд, по 20 событий, при скрытии вкладки и уходе со страницы.
| Событие | Когда | Что передаётся |
|---|---|---|
pageview |
загрузка страницы и переходы в одностраничном приложении | адрес, заголовок, реферер, размер экрана и окна, язык, часовой пояс; один раз за визит на адрес — description, h1, og:type, canonical, lang, хлебные крошки и категория товара из JSON-LD (BreadcrumbList, Product) |
engagement |
уход со страницы, скрытие вкладки и не реже раза в 60 секунд активности | активное время, максимальная прокрутка, время по полосам высоты страницы |
click |
любой клик | селектор элемента, позиция клика, текст элемента до 60 знаков с замаскированными email и телефонами, признак бешеного клика — 3 и больше кликов за секунду в радиусе 30 px |
outbound |
переход по ссылке на чужой домен | адрес ссылки |
download |
ссылка с атрибутом download или на файл: pdf, doc(x), xls(x), ppt(x), csv, txt, rtf, zip, rar, 7z, exe, msi, dmg, apk, mp3, mp4, epub |
адрес файла |
contact |
ссылки tel:, mailto:, viber:, t.me, telegram.me, wa.me, api.whatsapp.com, vk.me, max.ru |
вид контакта и адрес ссылки |
form_start, form_submit, form_abandon |
начало заполнения формы, её отправка, уход со страницы без отправки | только метаданные полей: имя, метка, тип, заполнено ли поле, время в нём и число исправлений. Значения полей не передаются. Форма или поле с атрибутом data-dara-ignore не собирается |
- Активное время — время, когда вкладка видима и посетитель взаимодействовал со страницей в последние 30 секунд.
- Персональные данные в адресах. В адресе страницы, реферере, заголовке и адресах ссылок тег заменяет на
*значения, похожие на email или телефон, и значения параметров с именамиemail,mail,phone,tel,name,fio,password,pass,token. Страница/subscribe?email=user@example.comпопадёт в отчёты как/subscribe?email=*. Телефоном считается номер с+в начале (+7 900 000-00-00) или российский номер, который начинается с 7 или 8 и разделён на группы пробелами, скобками или дефисами (8 (900) 000-00-00). Числа без таких разделителей — номера заказов, id товаров вроде?id=1234567— не заменяются. Сервер повторяет ту же проверку. Адрес ссылки-контакта —tel:,mailto:, ссылки мессенджеров — передаётся без замены: это контакт самого сайта, и без него отчёт «Контакты» бесполезен. - Роботы. Тег передаёт признаки автоматизации браузера, а решение «робот или нет» принимает сервер. По умолчанию роботы в отчёты не попадают.
Тег не ломает страницу: весь его код выполняется внутри try/catch, из глобальных имён он добавляет только dara, не ставит полифилов и не выполняет синхронных задач дольше 50 мс.
Браузеры: версии за последние 2 года Chrome, Яндекс Браузера, Edge, Opera, Firefox и Safari (iOS 15 и новее). В старых браузерах считаются только просмотры.
Установка в CMS
Tilda
- Откройте «Настройки сайта» → «Вставка кода» → «HTML-код для вставки внутрь head».
- Вставьте код и сохраните.
- Переопубликуйте все страницы: без этого код на страницах не появится.
1С-Битрикс
- В административном разделе откройте «Настройки» → «Настройки продукта» → «Сайты» → «Шаблоны сайтов».
- Откройте шаблон, который использует сайт, и на вкладке «Шаблон» вставьте код перед
</head>. Это тот же файлheader.phpв каталоге шаблона —/local/templates/{шаблон}/или/bitrix/templates/{шаблон}/, его можно править и напрямую. - Если у сайта несколько шаблонов — например, отдельный для мобильной версии или посадочных страниц, — вставьте код в каждый.
- Сбросьте кеш: «Настройки» → «Настройки продукта» → «Автокеширование» → «Очистка файлов кеша».
WordPress
Файлы темы перезаписываются при её обновлении, поэтому добавьте код в дочернюю тему или через плагин вставки кода в head. В functions.php дочерней темы:
<?php
add_action('wp_head', function () {
?>
<script>
window.dara = window.dara || function () { (dara.q = dara.q || []).push(arguments); };
</script>
<script async src="https://analytics.daratech.ru/t/as_XXXXXXXXXXXXXXXXXXXX.js"></script>
<noscript><img src="https://analytics.daratech.ru/c/p?k=as_XXXXXXXXXXXXXXXXXXXX" width="1" height="1" alt=""></noscript>
<?php
}, 1);
Если на сайте стоит плагин кеширования страниц, очистите его кеш.
OpenCart
- Откройте шаблон шапки
common/header.twig: в административном разделе — «Дизайн» → «Редактор темы», или файлом на сервере —catalog/view/theme/{тема}/template/common/header.twigв OpenCart 3,catalog/view/template/common/header.twigв OpenCart 4 со стандартной темой. - Вставьте код перед
</head>и сохраните. - Если изменения не видны на сайте, обновите кеш тем в настройках разработчика на главной странице административного раздела.
InSales
- Откройте «Сайт» → «Счетчики и коды».
- Добавьте блок кода для всех страниц сайта с размещением «В раздел head» и вставьте в него код.
- Сохраните изменения.
Другие сайты
Вставьте код в общий шаблон, из которого собирается head всех страниц. Если у сайта несколько шаблонов — например, отдельные для корзины или личного кабинета, — вставьте код в каждый.
CSP сайта
Если сайт отдаёт заголовок Content-Security-Policy, разрешите в нём адрес https://analytics.daratech.ru:
| Директива | Для чего |
|---|---|
script-src |
тег /t/… и скрипты, которые загружает сам тег |
connect-src |
отправка данных на /c/… |
img-src |
пиксель /c/p из noscript |
Пример заголовка:
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-4f9a1c7e' https://analytics.daratech.ru; connect-src 'self' https://analytics.daratech.ru; img-src 'self' https://analytics.daratech.ru
- Если в политике уже есть эти директивы, добавьте адрес к ним. Если директивы нет, для неё действует
default-src— тогда добавьте директиву явно. - Первый
scriptкода — встроенный. Если политика запрещает встроенные скрипты, добавьте ему атрибутnonceс одноразовым значением страницы:<script nonce="…">. - Если в
script-srcесть'strict-dynamic', адреса доменов в этой директиве не действуют: браузер загрузит тег, только если у второгоscriptтоже естьnonce. Скрипты, которые загружает сам тег, после этого разрешаются без отдельных правил. - «Проверка установки» показывает признаки блокировки CSP: если они есть, сверьте заголовок с таблицей.
Код тега с nonce для политики с 'strict-dynamic' — значение nonce сервер сайта создаёт заново для каждой страницы:
<script nonce="4f9a1c7e">
window.dara = window.dara || function () { (dara.q = dara.q || []).push(arguments); };
</script>
<script nonce="4f9a1c7e" async src="https://analytics.daratech.ru/t/as_XXXXXXXXXXXXXXXXXXXX.js"></script>
<noscript><img src="https://analytics.daratech.ru/c/p?k=as_XXXXXXXXXXXXXXXXXXXX" width="1" height="1" alt=""></noscript>
Одностраничные приложения
По умолчанию тег считает просмотром страницы:
- вызовы
history.pushStateиhistory.replaceState; - переход назад и вперёд по истории (
popstate).
Реферер у такого просмотра — предыдущий адрес в приложении.
Смена #фрагмента адреса по умолчанию просмотром не считается. Если приложение построено на хеш-адресах, включите учёт смены #hash в настройках сайта, в разделе «Общие»: тогда фрагмент останется в адресе страницы в отчётах.
Просмотры вручную
Если приложение меняет адрес без смены экрана — например, при выборе фильтра — и такие просмотры не нужны, выключите автоматический учёт в настройках сайта, в разделе «Общие», и отправляйте просмотры командой:
dara('page', {
url: 'https://example.ru/catalog/shoes?page=2',
title: 'Обувь — страница 2',
referrer: 'https://example.ru/catalog/shoes'
});
Все поля необязательны.
Сайт на нескольких доменах
- Домены сайта. Хиты принимаются только с основного и дополнительных доменов из настроек сайта; для каждого домена можно разрешить поддомены. Хиты с других доменов отбрасываются, а «Проверка установки» показывает чужой домен.
- Один код. Поставьте один и тот же код — с одним ключом сайта — на все домены. Тогда отчёты по ним общие.
- Переходы между доменами. К ссылкам на дополнительные домены тег добавляет параметр
_dara={id посетителя}.{unix-время}. На другом домене тег принимает параметр, если ему не больше 120 секунд, и сразу убирает его из адресной строки. Так посетитель остаётся одним и тем же, а не становится новым на каждом домене. - Разные проекты на разных доменах лучше заводить отдельными сайтами: у каждого будут свои отчёты, настройки и доступы.
События
Команда dara('event', name, params?) отправляет произвольное событие — например, запуск видео или открытие калькулятора:
dara('event', 'video_play', { video: 'intro', position: 30 });
name— имя события, до 128 знаков. В отчётах оно видно в измерении «Событие», а число событий — в метрике «События».params— необязательный объект до 2 КБ. Значение параметра видно в измерении «Параметр события».- Значения в
params, похожие на email или телефон, и значения параметров с именамиemail,mail,phone,tel,name,fio,password,pass,tokenтег и сервер заменяют на*.
Команда ready
dara('ready', callback) вызывает функцию после загрузки тега и передаёт в неё id посетителя — значение cookie _dara_a:
dara('ready', function (info) {
var input = document.querySelector('#order-form input[name="visitor_id"]');
if (input) {
input.value = info.visitor_id;
}
});
Так id посетителя можно передать на сервер сайта вместе с формой заявки.