Связывание аккаунтов соединяет идентификацию TRACIO на уровне устройства с вашим собственным представлением о пользователе. Передавая внутренний ID аккаунта как linkedId, вы сообщаете TRACIO, какие visitor ID принадлежат одному и тому же авторизованному человеку — в разных браузерах, на разных устройствах и в разных сессиях.
Каждый посетитель, которого видит TRACIO, получает идентификатор уровня устройства (см. Идентификация). Сам по себе он ничего не знает о ваших пользователях — он лишь узнаёт вернувшиеся устройства.
linkedId закрывает этот разрыв: это accountId текущего авторизованного пользователя, отправляемый вместе с обычным запросом идентификации. Когда два или более visitor ID имеют одинаковый linkedId, TRACIO связывает их в один аккаунт, что и питает страницу Connections в дашборде, кросс-девайс-идентичность и выявление дрейфа при захвате аккаунта (ATO) — см. Что вы получаете.
Без linkedId TRACIO видит только анонимные устройства — у него нет способа сгруппировать их по аккаунтам.
Связывание аккаунтов — это дополнительный параметр к уже существующей интеграции. Код на бэкенде не требуется.
Добавьте lid в существующий тег скрипта, рядом с публичным ключом:
<!-- было --><script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>
<!-- стало (только после авторизации пользователя) --><script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY&lid=ACCOUNT_ID" async></script>Если вы используете @tracio/sdk, передайте linkedId в конфигурации:
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...", linkedId: user.id,})linkedId считывается один раз — в момент загрузки агента. Если ваш тег скрипта или вызов Tracio.init() выполняется до входа в систему, нужно позаботиться, чтобы linkedId был передан, как только состояние авторизации станет известно:
lid=ACCOUNT_ID.Tracio.init() с тем же publicKey возвращает существующий экземпляр и игнорирует новую конфигурацию — он не подхватит linkedId. Сначала вызовите tracio.destroy(), затем Tracio.init({ publicKey, linkedId: user.id }). Либо отложите первый вызов Tracio.init() до момента, когда состояние авторизации известно.linkedId только после реального входа. Никогда не передавайте его для гостей и анонимных посетителей и никогда не подставляйте заглушку вроде "guest" или "anonymous" — общее значение-заглушка сольёт несвязанных людей в один аккаунт.linkedId обрезается на 256 байтах. Обычные ID намного короче; не передавайте крупные токены (например, полные JWT).linkedId хранится вместе с остальными событийными данными вашего рабочего пространства и показывается вам в дашборде как идентификатор аккаунта на странице Connections — он не хешируется и не анонимизируется при отображении, поскольку вам нужно узнавать аккаунт.
Внутри же кросс-девайс-сопоставление TRACIO (выявление фанаута, поведенческие базовые профили ATO) использует отдельный односторонний хеш linkedId в пределах окружения — никогда не исходное значение. Поэтому логика сопоставления не зависит от открытого значения и не раскрывает его за пределами вашего собственного дашборда и вебхуков.
Именно поэтому linkedId должен быть непрозрачным внутренним ID, а не адресом почты или именем (см. Правила): он виден вам как идентификатор аккаунта, а значит не должен нести больше персональных данных, чем у вас уже есть.
s.js (или запрос идентификации от агента) содержит оба параметра — k= и lid=.linkedId не интегрирован, там показывается уведомление о настройке; оно исчезает в течение нескольких минут после первого запроса с lid=.Как только linkedId начинает поступать, TRACIO открывает: