TopoMetrika · документация SDK
Диагностика: нет событий или намерений
Проверка загрузки счётчика, точного origin и разрешённых действий; как различить CORS, сетевой обрыв, лимит и недостаток наблюдений.
Обновлено
Когда это нужно: после установки вы не видите ожидаемые наблюдения или намерения. Результат: команда находит, на каком шаге прервалось подключение, не списывая любую ошибку на отсутствие активности.
Сначала — короткая проверка для продакта
- Откройте нужное пространство и выберите продукт, для которого устанавливался SDK.
- Проверьте период в UTC и обновите отчёт. Если настраивали другой продукт или тестировали за пределами периода, эти действия здесь не появятся.
- Спросите разработчика: «Код установлен на нужный домен? Сайт допустил загрузку аналитики, а тестовый сценарий дал принятый сервером запрос? Не закончился ли ресурс проекта?»
- Если запрос принят, но группы нет, уточните, накопилось ли достаточно подходящих наблюдений. Один тестовый клик не обязан сразу создать намерение.
Не нужно самостоятельно читать векторы или менять настройки приватности. Передайте разработчику сценарий, время теста и этот раздел. Техническая проверка ниже поможет ему отделить причину от предположений.
Проверяйте интеграцию по цепочке: загрузка SDK → запуск клиента → подходящее взаимодействие → отправка → принятие сервером → группировка → выбранный период отчёта. Пустой TopoPrint не указывает автоматически на одну конкретную неисправность.
1. Клиент создан и активен?
Убедитесь, что установлен один короткий тег из «Установка на сайт» выбранного счётчика, без постоянного ключа, ручных замен и второго вызова создания клиента. В Console проверьте загрузку глобального TopoMetrika и отсутствие ошибок загрузки или конфигурации. Ошибка конфигурации возникает до событий.
Проверьте, что владелец сайта допускает загрузку блока: если она зависит от вашей CMP или менеджера тегов, выясните их текущее решение и условия запуска. SDK не показывает своё окно и не сохраняет выбор посетителя. После загрузки, если приём включён и браузер не ограничивает сбор, должны появиться install-v1.js, запрос /api/topometrika/v1/config и основной tm.js. Временный токен не запрашивается. Если ранее передавали техническое событие остановки, клиент на этой странице не возобновится до перезагрузки, которую снова разрешает владелец сайта.
Готовый блок не создаёт глобальную переменную tm. Только для программной интеграции с собственным экземпляром tm.getStatus() помогает отличить неактивный клиент от очереди; active не подтверждает доставку.
GPC/DNT продолжают запрещать сбор. В дополнительных интеграциях проверьте sampleRate: при 0 сбора не будет, при значении меньше 1 конкретный запуск может не попасть в выборку. Не обходите privacy-настройки пользователей: тестируйте на согласованном стенде.
Если настройки изменились, перезагрузите целевую страницу: установщик получает актуальную политику при запуске. Перевставлять код после изменения списков не нужно. При смене счётчика тег заменить необходимо. При миграции со старого режима согласия проверьте загрузку и отзыв на стороне сайта.
2. Взаимодействие поддерживается?
- Используется видимый доступный button, ссылка или submit формы, а не только canvas или iframe.
- Триггер не находится в data-tm-ignore, hidden или aria-hidden поддереве.
- Фактический метод и путь соответствуют allowlist; запрос относится к тому же origin, что и анализируемая страница.
- Действие начинается в окне корреляции 250 мс. Для другого сценария рассмотрите явный capture и проверьте отсутствие дублей.
- Снимок укладывается в бюджеты DOM и пакета. Слишком большой контекст пропускается, а не обрезается до якобы полного.
Пустой список labels не отключает все события. Пустой или неподходящий список actions обычно не даёт записать нужное действие; запасной UI_TRIGGER_ACTION не создаёт подтверждённое намерение. См. настройки проекта.
3. Что видно в Network?
Фильтруйте /api/topometrika/v1/, а не /api/v1/topometrika/: первый namespace принимает телеметрию, второй обслуживает кабинет. Endpoint должен быть корнем origin пространства, без добавленного API-пути.
| Ответ или сообщение | Что проверить |
|---|---|
| 202 + X-TM-Need-Skeleton | Нормальный запрос неизвестной структуры. Далее ожидаются skeleton и повтор того же pulse. |
| 204 | Пакет принят или идемпотентно повторён; JSON-тела нет. Это не подтверждение покупки. |
| 401 | Корректный браузерный Origin и отсутствие устаревших заголовков ключа/токена. Публичный сборщик не требует временного разрешения. Не подставляйте сессионные cookies пространства. |
| 403 | Совпадение публичного счётчика и точного origin; включён ли приём. Старый тег с постоянным ключом замените новым из настроек. |
| 409 | Поле code в ответе: конфликт события/версии, исчерпанная ёмкость или replay-ограничение. Причины различаются. |
| 413 / 415 / 422 | Размер, JSON Content-Type, допустимая структура, target, state и политика проекта. |
| 429 | Лимит запросов. Соблюдайте Retry-After, не запускайте бесконечные повторы. |
| 503 | Временная недоступность серверной обработки. Сохраните безопасные сведения об ошибке для поддержки. |
| CORS / Failed to fetch / ERR_CONNECTION_CLOSED | Сетевой и браузерный уровень: preflight, точный origin, CSP, TLS, прокси, расширения и доступность домена. Это не само по себе ошибка данных или email. |
Некоторые отказы до подтверждения origin не дают браузеру CORS-доступ к телу. Сопоставляйте Network с серверной диагностикой, не выдавайте любой Failed to fetch за определённый HTTP-код.
Если продукт использует CSP, разрешите загрузку внешних скриптов и соединение с вашим конкретным workspace origin. Короткий тег не содержит inline-конфигурации. При nonce-only политике используйте nonce сайта и для внешнего тега. Не отключайте CSP целиком и не добавляйте wildcard ради интеграции.
4. Доставка есть, но намерений нет?
При неизвестной структуре событие может ожидать skeleton. Недопустимая структура или несогласованные target/state не становятся валидной фичей. Для нового кластера текущей версии нужно не менее 20 различных допустимых близких наблюдений; просто 20 любых кликов не гарантируют намерение. Разные шаблоны действий не склеиваются автоматически.
После появления группы команда проверяет смысл, называет намерение и связывает его с существующей фичей либо создаёт черновик. Это не автоматическая публикация каталога.
5. Проверьте отчёт
Выберите правильный продукт, даты UTC и обновите данные. Срок хранения, история пространства, права просмотра и предел анализа ограничивают видимый набор. Сессии не равны людям. Отсутствующие Dwell/Rage — отсутствие измерений: текущий Web SDK автоматически их не снимает.
Что передать поддержке
Адрес пространства и страницы без личных параметров, время с часовым поясом, версию SDK/конфигурации, путь запроса, HTTP-статус или browser error и код отказа. Не отправляйте публично cookies, серверные ключи, полный HAR с учётными данными, введённые значения или персональные подписи. Проверить лимиты · Повторить установку по шагам
Загрузка и восстановление
Настройки и SDK загружаются параллельно. Сбор начинается только после проверки конфигурации и готовности DOM. При сетевых сбоях или временной ошибке сервера предусмотрено до трёх попыток с задержкой. Ответ Retry-After учитывается; ожидание более минуты завершает установку без досрочного запроса. Команда владельца topometrika:stop отменяет ожидающие повторы. После исчерпания попыток устраните причину и перезагрузите страницу.
Поддерживаются параметры версионирования ?v=1, ?ver=1.2, ?version=release-1 и fragment; произвольные параметры, включая ключи, не поддерживаются. Сохраняйте тег и атрибут data-tm-counter. Если загрузчик не может однозначно определить тег среди нескольких счётчиков, он прекращает запуск с техническим статусом ambiguous-tag. Не оборачивайте установщик в eval.