Согласие на сбор данных
Как ActionPulse ведёт себя до решения посетителя, чем отличаются granted, denied и revoked, как связать сбор с баннером согласия и почему решение нужно передавать на каждой загрузке страницы.
На этой странице
Согласие относится только к браузерному сбору. События, которые ваш бэкенд отправляет сам, — это ваша обработка ваших же данных, и трекер к ней отношения не имеет.
Четыре состояния
| Состояние | Что происходит |
|---|---|
pending |
Ожидание решения. Сбор не начат, следов в браузере нет |
granted |
Сбор идёт |
denied |
Сбор не идёт, накопленное удалено |
revoked |
То же, что denied, но после ранее данного согласия |
Прочитать текущее состояние можно вызовом pp.getConsent().
Включение ожидания согласия
Ожидание включается явно — атрибутом тега или полем конфигурации:
<script
src="https://YOUR_ACTIONPULSE_HOST/v1/sdk/browser/0.6.0/tracker.js"
integrity="SRI_FROM_MANIFEST"
crossorigin="anonymous"
data-token="YOUR_BROWSER_TOKEN"
data-consent="required"
></script>
Атрибут принимает значения required, pending, granted и denied.
required и pending означают одно и то же — ждать решения. Неизвестное
значение трактуется как ожидание: поведение по умолчанию безопасное.
Что происходит до решения
Пока состояние pending, трекер полностью пассивен:
- не создаёт ни анонимного, ни сессионного идентификатора;
- не читает и не пишет
localStorageиsessionStorage; - не ставит cookie;
- не запрашивает конфигурацию;
- не отправляет ни одного запроса;
- не подписывается на события страницы.
Связь с баннером согласия
Вызовите нужный метод из колбэка вашего CMP:
function onAnalyticsConsentGranted() {
pp.setConsent('granted');
}
function onAnalyticsConsentDenied() {
pp.setConsent('denied');
}
function onAnalyticsConsentRevoked() {
pp.setConsent('revoked');
}
setConsent() принимает только granted, denied и revoked. Вернуть
состояние обратно в ожидание вызовом нельзя — это делает перезагрузка страницы.
Практическое правило: обработчик, который вызывает setConsent, должен
срабатывать не только на клик по баннеру, но и при инициализации CMP на новой
странице, когда решение восстанавливается из его хранилища.
Что происходит при отказе и отзыве
denied и revoked работают одинаково:
- сбор прекращается, последующие вызовы
track()иidentify()ничего не делают; - запросы, которые были в полёте, прерываются;
- очередь неотправленных событий выбрасывается;
- состояние трекера в браузере удаляется — ключи
pp_anon_id,pp_user_id,pp_buffer_v2,pp_sessionвlocalStorageи данные записи сессий вsessionStorage; - активная запись сессии отбрасывается без досылки: незавершённые фрагменты не уходят на сервер.
Проверка
- Откройте страницу в новом приватном окне, не нажимая ничего в баннере.
- В инструментах разработчика проверьте
localStorage— ключейpp_*быть не должно; во вкладке «Сеть» не должно быть запросов к вашей установке ActionPulse. - Нажмите «Согласен» в баннере.
- Убедитесь, что появился запрос на
/v1/trackс ответом202. - Обновите страницу и убедитесь, что запросы продолжают идти — это подтверждает, что CMP повторно сообщает решение.
Шаг 5 пропускают чаще всего, и именно он ловит самую частую ошибку интеграции.
Do Not Track
Заголовок Do Not Track браузера по умолчанию не учитывается. При подключении через npm-пакет его можно включить отдельным параметром конфигурации; в режиме скрипта такой настройки нет — используйте своё условие показа тега.
Что дальше
- Приватность и безопасность — что обрезается на приёме, как исключить элементы страницы из сбора и что маскируется в записях сессий.
- Решение проблем — раздел «согласие остаётся в ожидании».