Перейти к содержанию

04Отслеживание

Свои события

Как отправлять свои события в Gauss через gauss('event', …) — правила имён, лимиты параметров, рекомендованные имена GA4, примеры для кнопки, формы и React.

Автоматических событий хватает для просмотров, форм и контактов. Заявку после успешной отправки, регистрацию, клик по важной кнопке или покупку размечает сайт — одной строкой JavaScript.

Вызов

js
gauss('event', 'callback_request', { placement: 'header', plan: 'pro' });
  • первый аргумент — всегда 'event', другие команды трекер пока не понимает;
  • второй — имя события;
  • третий — необязательный объект параметров.

Событие уходит сразу, вместе с адресом текущей страницы.

Заглушка для ранних вызовов

Сниппет загружается с defer, поэтому gauss появляется не сразу. Чтобы вызовы до загрузки скрипта не терялись, добавьте в <head> перед сниппетом заглушку:

html
<script>
  window.gauss = window.gauss || function () { (window.gauss.q = window.gauss.q || []).push(arguments); };
</script>
<script defer data-site="YOUR_SITE_ID" src="https://collect.gausslab.io/js/gauss.js"></script>

Заглушка складывает вызовы в очередь, а трекер после загрузки отправляет их по порядку, сразу после page_view. С заглушкой gauss(...) можно вызывать в любом месте страницы, не проверяя, загрузился ли скрипт. Без неё вызов до загрузки скрипта завершится ошибкой ReferenceError. Если на сайте есть Content Security Policy, встроенному скрипту нужен nonce или хеш — см. Установка.

Правила имён

Имя события и ключи параметров:

  • только строчные латинские буквы a–z, цифры 0–9 и _;
  • начинаются с буквы;
  • не длиннее 40 символов.

Имя события не может начинаться с gauss_, ga_, google_ или firebase_ — эти префиксы зарезервированы.

ИмяРезультат
callback_requestпринято
CallbackRequestотброшено: заглавные буквы
2nd_stepотброшено: начинается с цифры
ga_leadотброшено: зарезервированный префикс

Событие с неверным именем не отправляется, в консоли появляется предупреждение [gauss] dropped <имя>.

Параметры и лимиты

ЧтоЛимит
Число параметровдо 25
Тип значениястрока, число или true/false
Длина строкидо 100 символов, длиннее — обрезается
items (товары)массив, до 50 позиций

Что происходит с лишним:

  • параметры сверх 25, ключи с неверным именем, значения-объекты, массивы и NaN отбрасываются, в консоли — [gauss] dropped <ключ>;
  • пустые строки, null и undefined пропускаются молча;
  • в items остаются первые 50 позиций, остальные отбрасываются с предупреждением;
  • остальная часть события отправляется. Ошибка в разметке не ломает страницу: трекер не выбрасывает исключений в код сайта.

Не передавайте в параметрах email, телефон, имя и другие данные о человеке. Как Gauss очищает такие значения на сервере — в разделе Какие данные собираются.

Рекомендованные имена

Для типовых действий используйте имена из словаря GA4. Если сайт уже размечен под GA4, имена событий и параметров менять не нужно — подробнее в разделе Совместимость с GA4.

СобытиеКогдаПараметры
generate_leadзаявка успешно отправленаlead_id (необязательно), value, currency
sign_upрегистрация—
loginвход— (без идентификатора пользователя)
view_itemпросмотр товараitems
add_to_cartдобавление в корзинуitems, value, currency
begin_checkoutначало оформленияitems, value, currency
purchaseпокупкаtransaction_id, value, currency, items
refundвозвратtransaction_id, value, currency

Как размечать покупки, товары и ценность конверсии — в разделе Конверсии и электронная торговля.

Примеры

Клик по кнопке:

html
<button type="button" onclick="gauss('event', 'pricing_click', { placement: 'hero' })">Узнать цену</button>

Форма, которая отправляется через fetch: form_submit придёт автоматически, а generate_lead — только после успешного ответа сервера.

js
const form = document.querySelector('#callback');
form.addEventListener('submit', async (event) => {
  event.preventDefault();
  const response = await fetch('/api/lead', { method: 'POST', body: new FormData(form) });
  if (response.ok) {
    gauss('event', 'generate_lead', { form_id: 'callback', value: 3000, currency: 'RUB' });
  }
});

React (с заглушкой в <head> функция window.gauss есть всегда):

jsx
export function DemoButton() {
  return (
    <button onClick={() => window.gauss?.('event', 'demo_request', { placement: 'pricing' })}>
      Запросить демо
    </button>
  );
}

Для TypeScript объявите тип один раз:

ts
declare global {
  interface Window {
    gauss?: (command: 'event', name: string, params?: Record<string, unknown>) => void;
  }
}
export {};

Проверить, что событие уходит и ничего не отброшено, можно в режиме отладки.

Заявка в бету

Бета закрытая, на 20–30 сайтов. Мы рассматриваем каждую заявку и отвечаем по email: присылаем цену и условия.

Без https:// и пути.