Сквозная аналитика формы продаж
Если на вашем лендинге установлен счётчик аналитики (Calltouch, Яндекс.Метрика, Roistat), вы можете отслеживать действия покупателей внутри формы продаж: выбор билета, заполнение данных, оплату.
Форма продаж встраивается на лендинг через <iframe>. Чтобы события попадали в ваш счётчик, вставьте специальный код на страницу лендинга — он слушает события из формы и передаёт их в ваш счётчик.
Шаг 1. Получите код в настройках события
Перейдите в настройки события → Регистрация и билеты → Сквозная аналитика.

- Включите нужный счётчик (Calltouch, Яндекс.Метрика и/или Roistat)
- Для Calltouch введите MOD ID и, если нужна передача контактов как заявок, — Site ID; для Яндекс.Метрики — номер счётчика; Roistat ID не требует
- При необходимости скорректируйте набор событий — по умолчанию выбраны самые полезные
- Скопируйте сгенерированный код

События по умолчанию:
| Группа | События |
| Контакты | Email покупателя, Телефон покупателя |
| Воронка | Форма открылась, Выбран билет, Переход к оплате, Заказ оплачен |
Группа Дополнительно (переходы по шагам, заполнение полей, ошибки оплаты) по умолчанию выключена — включите её, если нужна детальная аналитика поведения.
Шаг 2. Вставьте код на лендинг
Важно: код рассчитан на то, что библиотека выбранного счётчика уже установлена на лендинге. Если счётчик не установлен, события не будут передаваться. Как установить библиотеку — смотрите в документации вашего сервиса аналитики.
Вставьте скопированный код на страницу лендинга — в любое место рядом с кодом формы продаж.
Шаг 3. Создайте цели в счётчике
Calltouch
Перейдите в личный кабинет Calltouch: Настройки → Цели → Добавить цель → JavaScript-событие.
Создайте цели для каждого выбранного события:
Контакты
| Идентификатор цели | Что означает | Что дополнительно передаётся |
|---|---|---|
nh_email_filled |
Email покупателя заполнен | email → атрибуты визита; при указании Site ID — заявка в кабинет |
nh_phone_filled |
Телефон покупателя заполнен | телефон → атрибуты визита; при указании Site ID — заявка в кабинет |
Передача контактов как заявок (Site ID)
Если в настройках указан Site ID (числовой ID сайта в Calltouch, находится в Настройки → Сайты), то при заполнении email или телефона дополнительно отправляется POST-запрос к Calltouch Requests API — в кабинете появляется заявка с контактными данными покупателя.
Запрос привязывается к текущей сессии через window.call_value (значение устанавливается счётчиком Calltouch автоматически). Если email и телефон заполняются по отдельности, Calltouch объединяет их по sessionId в одну заявку.
Воронка
| Идентификатор цели | Что означает | Что дополнительно передаётся |
|---|---|---|
nh_form_view |
Форма открылась | — |
nh_ticket_selected |
Выбран билет | сумма → атрибуты визита |
nh_payment_started |
Переход к оплате | номер заказа, сумма → атрибуты визита |
nh_order_completed |
Заказ оплачен | состав заказа → отчёт «Электронная торговля» |
Дополнительно
| Идентификатор цели | Что означает | Что дополнительно передаётся |
|---|---|---|
nh_step_changed |
Переход на шаг | название шага → атрибуты визита |
nh_field_filled |
Заполнено поле с данными | — |
nh_order_failed |
Оплата не прошла | номер заказа → атрибуты визита |
nh_order_abandoned |
Покупатель ушёл, не завершив заказ | шаг, номер заказа, сумма → атрибуты визита |
Создавайте только те цели, события для которых выбраны в настройках.
Для
nh_order_completedданные попадают в отчёт Электронная торговля — там будет видна выручка и состав заказа по билетам. Чтобы отчёт был доступен, включите модуль в личном кабинете: Настройки → Сбор данных → Статистика → Электронная торговля. Атрибуты визита доступны через API выгрузки Calltouch и вебхуки.
Яндекс.Метрика
Перейдите в личный кабинет Метрики: Настройки счётчика → Цели → Добавить цель → JavaScript-событие.

Метрика отслеживает только события Воронки и Дополнительно — контакты (email, телефон) в Метрику не передаются.
Создайте цели для каждого выбранного события:
Воронка
| Идентификатор цели | Что означает |
|---|---|
nh_form_view |
Форма открылась |
nh_ticket_selected |
Выбран билет |
nh_payment_started |
Переход к оплате |
nh_order_completed |
Заказ оплачен |
Дополнительно
| Идентификатор цели | Что означает |
|---|---|
nh_step_changed |
Переход на шаг |
nh_order_failed |
Оплата не прошла |
nh_order_abandoned |
Покупатель ушёл, не завершив заказ |
К целям с суммой (
nh_payment_started,nh_order_completed,nh_order_abandoned) дополнительно передаётся сумма заказа — это позволяет считать доход в отчётах Метрики.
Roistat
1. Установите счётчик на лендинг
В личном кабинете Roistat перейдите в Настройки → Код счётчика, скопируйте скрипт и вставьте его на страницу лендинга — до закрывающего тега </body>. Это нужно сделать один раз; в дальнейшем JS-вызовы не требуют указывать ID проекта.
2. Создайте JS-события
Перейдите в раздел События → Настройка → Добавить событие.
В форме создания:
- Название — произвольное, отображается только в интерфейсе Roistat
- Условие срабатывания — выберите «Передаётся через JavaScript»
- ID — введите точный идентификатор из таблицы ниже (например,
nh_form_view)
Нажмите «Добавить». Создайте отдельное событие для каждого идентификатора, который выбран в настройках.

Roistat отслеживает все события, включая контакты.
Контакты
| Идентификатор | Название (произвольно) | Что дополнительно передаётся |
|---|---|---|
nh_email_filled |
Email заполнен | email → карточка клиента через authClientByEmail; email также в «Доп. параметрах» события |
nh_phone_filled |
Телефон заполнен | телефон в «Доп. параметрах» события |
Воронка
| Идентификатор | Название (произвольно) | Что дополнительно передаётся |
|---|---|---|
nh_form_view |
Форма открылась | — |
nh_ticket_selected |
Выбран билет | сумма |
nh_payment_started |
Переход к оплате | номер заказа, сумма |
nh_order_completed |
Заказ оплачен | номер заказа, сумма |
Дополнительно
| Идентификатор | Название (произвольно) | Что дополнительно передаётся |
|---|---|---|
nh_step_changed |
Переход на шаг | название шага |
nh_field_filled |
Заполнено поле | название и значение поля |
nh_order_failed |
Оплата не прошла | номер заказа |
nh_order_abandoned |
Заказ брошен | шаг, номер заказа, сумма |
Для
nh_email_filledдополнительно вызываетсяauthClientByEmail— email привязывается к визиту для сквозной атрибуции (объединяет визиты одного покупателя с разных устройств). Для телефона аналогичного метода в Roistat SDK нет — номер передаётся в «Доп. параметрах» события.
Собственный обработчик событий
Сгенерированный код — отправная точка. Если ваш счётчик или сценарий не покрывается готовым кодом, вы можете написать собственный обработчик.
Форма продаж отправляет сообщения через window.postMessage. Каждое сообщение имеет структуру:
{
source: 'nh-form', // всегда это значение — используйте для фильтрации
event: 'order_completed', // идентификатор события (без префикса nh_)
data: { /* поля события — см. таблицу ниже */ }
}
Минимальный шаблон обработчика:
window.addEventListener('message', function (event) {
if (!event.data || event.data.source !== 'nh-form') return;
var e = event.data.event;
var data = event.data.data || {};
// ваш код
console.log('Событие из формы:', e, data);
});
Обработчик можно дополнять любой логикой: отправлять данные в собственную аналитику, вызывать вебхуки, обновлять интерфейс лендинга. Список всех событий и состав полей data — ниже.
Список событий
События разбиты на три группы. Группы Контакты и Воронка включены по умолчанию, Дополнительно — выключена.
Контакты
| Событие | Когда возникает | Данные |
|---|---|---|
email_filled |
Покупатель заполнил поле Email и перешёл к следующему | value |
phone_filled |
Покупатель заполнил поле Телефон и перешёл к следующему | value |
Воронка
| Событие | Когда возникает | Данные |
|---|---|---|
form_view |
Форма загрузилась и показала первый шаг | — |
ticket_selected |
Покупатель выбрал билеты и нажал «Далее» | ticketCount, amount, tickets[] |
payment_started |
Покупатель заполнил данные и перешёл к оплате | orderId, amount, paymentMethod, promocode, tickets[] |
order_completed |
Заказ успешно завершён (оплата прошла или бесплатная регистрация) | orderId, amount, promocode, tickets[] |
Дополнительно
| Событие | Когда возникает | Данные |
|---|---|---|
step_changed |
Покупатель перешёл на новый шаг формы | step |
field_filled |
Покупатель заполнил любое поле с данными | name, value |
order_failed |
Заказ отменён или завершился с ошибкой | orderId, status |
order_abandoned |
Покупатель закрыл страницу, не завершив оплату | step, orderId, amount, promocode, tickets[] |
Возможные значения step:
| Значение | Шаг |
|---|---|
schedules |
Выбор даты / сеанса |
floors_catalog |
Выбор зала из каталога |
floors |
Схема зала, выбор мест |
ticket_member |
Привязка участника к месту |
total_floor |
Итого по залу |
tickets |
Выбор билета |
registration |
Заполнение данных покупателя |
payment |
Экран оплаты |
Каждый элемент tickets[]:
| Поле | Тип | Описание |
|---|---|---|
id |
number |
ID типа билета |
name |
string |
Название билета |
price |
number |
Цена за единицу |
count |
number |
Количество |