Счётчик

Один скрипт на все страницы и домены сайта: визиты, источники, цели, формы, заявки и, если включено, записи сессий. Весит несколько килобайт и глушит свои ошибки — сайт не страдает, даже если сервер аналитики недоступен. Ботов и браузеры автотестов (navigator.webdriver: Selenium, Playwright) не считает.

Код установки

Панель → Настройки сайта → «Код установки». Вставьте перед </head> на всех страницах:

<script async src="https://ваш-сервер/t.js?s=ID"></script>

События уходят туда, откуда загружен скрипт. Если на сайте включён CSP, добавьте адрес сервера в script-src и connect-src — готовая строка CSP там же, в «Коде установки». Неизвестный идентификатор — t.js отвечает пустым скриптом /* webvane: unknown site */.

Браузер хранит t.js до часа: изменения настроек сайта (домены проекта, режим согласия, запись) доходят до посетителей в течение часа.

Вызовы wv(...) до загрузки скрипта (он асинхронный) — через заглушку перед кодом установки, вызовы из очереди счётчик выполнит сам:

<script>window.wv=window.wv||function(){(window.wv.q=window.wv.q||[]).push(arguments)}</script>

Цели

Отправка форм (form_submit), клики по ссылкам tel: (tel_click) и mailto: (mailto_click) считаются сами. Свою цель — атрибутом на любом элементе (клик) или на форме (отправка формы считается этой целью вместо form_submit), или из кода:

<button data-wv-goal="callback">Перезвоните мне</button>

wv('goal', 'order', { sum: 4990 });

Названия и правила целей — экран Цели → «+ Цель» (только администратору); галочка «это заявка» делает цель заявкой.

Заявки

Форма с атрибутом data-wv-lead при отправке передаёт в Webvane заявку вместе с источником визита: имя, телефон, почту и комментарий из полей формы (по name, id и подсказке поля: name/имя, phone/tel/телефон, mail, comment/message/сообщ; пароль — никогда). Из кода: wv('lead', { name: 'Иван', phone: '+7…' }). Заявки видны в карточке визита («Заявка отправлена через форму …») и на экране Цели («Заявки по источникам»).

Формы

Формы находятся сами. Название формы — атрибут data-wv-form-title, aria-label или title, иначе заголовок внутри формы, иначе текст кнопки отправки; идентификатор — id, name или data-wv-form. Значения полей не сохраняются — только факт заполнения, время и ошибки (кроме формы заявки, см. выше). В каждую форму счётчик добавляет скрытое поле wv_vid — номер посетителя и визита для бэкенда сайта (События продукта).

Пользователь продукта

Когда человек вошёл или зарегистрировался, сообщите номер его аккаунта — визиты свяжутся с аккаунтом, а реклама — с шагами в продукте (События продукта):

wv('identify', '4512');   // то же - wv('user', '4512')

В режиме согласия (Настройки сайта → Посетитель и согласие → «режим согласия») счётчик до согласия посетителя не ставит cookie, не пишет запись сессии и не берёт номера Метрики и GA. Визиты при этом считаются, но номер посетителя живёт только в открытой вкладке — каждый новый заход выглядит новым посетителем. Согласие передаёт сайт:

wv('consent', 'granted');   // или 'denied'

После granted счётчик ставит cookie и начинает запись (если она включена). Если там же включено «учитывать Do Not Track», посетители с флагом Do Not Track или Global Privacy Control всегда считаются так же, как без согласия.

Метрика и Google Analytics

Настройки сайта → Посетитель и согласие → «опознавать посетителя по cookie Яндекс Метрики и Google Analytics»: новому посетителю номер берётся из cookie Яндекс Метрики (_ym_uid), Google Analytics (_ga) или VK (tmr_lvid); в режиме согласия — только после согласия. Один человек — один номер в Webvane, Метрике и GA: их данные сводятся без догадок (Подключения → Метрика).

Несколько доменов проекта

Сайт и продукт на разных доменах (webvane.ru → pflux.io): впишите домены продукта в Настройки сайта → Посетитель и согласие → Домены проекта. Ссылки на них и на их поддомены понесут номер посетителя (?wv_vid=), и регистрация в продукте свяжется с визитом на сайте и с объявлением, с которого человек пришёл. На втором домене должен стоять тот же счётчик: он запомнит номер и уберёт wv_vid из адреса.

Маскирование в записях

Всё, что вводят в поля, в записи сессии скрыто всегда. Дополнительно скрыть блок — data-wv-mask, не записывать вовсе — data-wv-block (Записи сессий).