Виджет и пользователь сайта — за несколько строк.
Анонимный чат подключается одной строкой. Если на сайте есть авторизация, передайте ID, email и имя клиента — безопасно с серверной подписью или упрощённо для некритичных данных.
Обычное подключение
Создайте сайт в кабинете, добавьте его домен и вставьте код перед </body>. Публичный ключ можно показывать в браузере.
<script async src="https://visitker.com/widget.js" data-site="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ"> </script>
Виджет сам создаёт анонимный ID в браузере, сохраняет историю, определяет русский или английский язык и подключает ответы в реальном времени.
Разрешённые домены
Добавьте точный домен в настройках сайта: например, shop.example.com. HTTPS-страница, с которой приходит запрос, проверяется сервером. Один публичный ключ нельзя незаметно использовать на чужом сайте.
Самая простая интеграция с пользователем
Если доверенная верификация пока не нужна, данные можно передать атрибутами. В кабинете они будут отмечены как данные из браузера, а не как подтверждённая личность.
<script async src="https://visitker.com/widget.js" data-site="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ" data-user-id="42" data-email="client@example.com" data-user-name="Анна"> </script>
Этот вариант удобен для быстрого старта, но пользователь браузера теоретически может подменить атрибуты. Для заказов, платежей и персональных данных используйте подпись ниже.
Безопасная серверная подпись
Ваш backend создаёт одноразовый токен HMAC-SHA256. Visitker проверяет подпись, срок, публичный ключ и уникальный jti. Максимальный срок жизни — 24 часа; рекомендуемый — 5 минут.
<?php
$payload = [
'site_key' => getenv('VISITKER_SITE_KEY'),
'external_id'=> (string) $user->id,
'email' => $user->email,
'name' => $user->name,
'exp' => time() + 300,
'jti' => bin2hex(random_bytes(16)),
];
$json = json_encode($payload, JSON_UNESCAPED_UNICODE);
$encoded = rtrim(strtr(base64_encode($json), '+/', '-_'), '=');
$token = $encoded.'.'.hash_hmac(
'sha256', $encoded, getenv('VISITKER_SIGNING_SECRET')
);
?>
<script async src="https://visitker.com/widget.js"
data-site="<?= htmlspecialchars(getenv('VISITKER_SITE_KEY')) ?>"
data-identity-token="<?= htmlspecialchars($token) ?>">
</script>SPA: вход пользователя и контекст страницы
Для React, Vue и других SPA дождитесь события готовности. Новый подписанный токен получайте с вашего backend непосредственно перед вызовом identify.
document.addEventListener('visitker:ready', async () => {
await Visitker.identify(
{ externalId: user.id, email: user.email, name: user.name },
freshIdentityToken
);
Visitker.setContext({
order_id: currentOrder.id,
plan: account.plan
});
});Ключи контекста сначала разрешите в настройках сайта. При каждом следующем сообщении Visitker отправляет актуальные URL, заголовок страницы и контекст — это работает и после переходов внутри SPA.
Выход и смена аккаунта
На logout обязательно сбросьте локальный диалог. Так следующий человек за тем же браузером не увидит историю предыдущего пользователя.
// Выход
Visitker.resetIdentity();
// Смена аккаунта без перезагрузки
Visitker.resetIdentity();
const token = await fetch('/api/visitker-token').then(r => r.text());
await Visitker.identify(
{ externalId: nextUser.id, email: nextUser.email, name: nextUser.name },
token
);Доступны также Visitker.open(), close(), setVisibility(false) и destroy().
Регистрация и установка через Telegram
Пользователь может пройти весь стартовый сценарий прямо в @visitkerbot: отправить /register, указать имя и email (или /skip), затем создать сайт и получить код виджета.
/start — приветствие или меню /register — регистрация workspace /site — создать сайт: название → домен /code — получить код установки последнего сайта /login — одноразовая ссылка входа в кабинет /active — активные диалоги и онлайн-посетители /cancel — отменить текущий шаг
В уведомлении доступны кнопки «Инфо», «Ответить» и «Ответить на сайте». Кнопка «Ответить» включает ответ прямо в Telegram, а «Активные диалоги» показывает посетителей, которые недавно писали и сейчас находятся на сайте.
После регистрации Telegram подключается автоматически. Ссылка /login действует 15 минут и используется только один раз.
Карточка посетителя и данные визита
После первого сообщения Visitker создаёт карточку посетителя и показывает её оператору: имя или стабильное анонимное имя, email, необязательный телефон, внешний ID, UUID браузера, сайт, страницу, реферер, UTM, контекст и технические данные визита.
Email запрашивается в компактной форме после сообщения; телефон остаётся необязательным. Данные визита обновляются при heartbeat виджета и при каждом новом сообщении.