Embeddable website chat widget + operator admin panel. Built for shared hosting with PHP + MySQL. No Node.js, no WebSocket — HTTP polling / long-polling only.
Support & community: https://t.me/chateedze
- Live chat on your site via a single embed script (
widget/loader.js) - Text messages and image uploads
- Typing indicators, emoji picker, optional read receipts
- Online / offline status and custom offline message
- Working hours with after-hours auto-reply
- Launcher position: bottom left / center / right (desktop and mobile separately)
- Full theming: colors, gradients, bubbles, chat background, offer banner
- Languages: Russian, English, or auto-detect from the browser
- Pre-chat form, callback / contact form (phone, email, Telegram)
- GDPR / privacy consent checkbox with policy link and version
- Start buttons before the first message (with A/B labels)
- Proactive invites (time on page, URL, exit-intent, return visit, scroll, idle)
- Chat scenarios / bots (messages, buttons, consent steps)
- Lead form after N visitor messages
- CSAT rating after the chat
- Page URL / title tracking, UTM capture, visitor fingerprint
- Inbox — queued / active / closed dialogs; claim, close, reopen, delete, transfer
- Reply tools: emoji, images, quick replies (
!cmd//cmd, variables{name},{page},{city}) - Lead statuses, internal notes, lead reminders
- Visitor card: geo, contacts, page history, SLA highlight, CSAT
- Team chat — private staff messenger (clients never see it); images and emoji
- Visitors — who is online now; start a chat; visitor 360° profile
- Personal profile: avatar, password, work schedule, browser notification prefs
- Operators management (roles, avatars, schedules, per-operator Telegram / ntfy)
- Notifications: Telegram bot, ntfy, browser alerts (while the admin tab is open)
- Notify modes: first message / every message / repeat with interval and max attempts
- Reports: dialogs, first response time, CSAT, leads, SLA breaches, operator load, peak hours, invite & start-button A/B
- Chat features: pre-chat, callback form, auto-assign, read receipts, overdue auto-replies, default scenario
- Privacy & SLA: consent, retention, purge, visitor data deletion, first-response SLA alerts
- Connection: polling vs long-polling, intervals, trusted proxy /
X-Forwarded-For - Widget settings: colors, sounds, launcher, work hours, CORS origins, upload size limit
- GeoLite2 IP geolocation (Country + City) with auto-check about every 3 hours
- Settings export / import (JSON): site settings, buttons, replies, contacts, invites, scenarios
- Install code page with cache-busting widget URL
- Post-deploy upgrade helper (
upgrade.php)
- Chat images are not public via
/uploads/… - Files are served through
media.phpwith access checks:- staff (logged into admin) — dialog and team images
- visitor — only images from their conversations (
visitor_key) - avatars — public (needed by the widget)
- CSRF protection on mutating actions, password hashing, roles (admin / operator)
- Rate limiting on the API, security headers, CORS allow-list
- PHP 7.4+ (8.x recommended)
- Extensions: PDO, pdo_mysql, json (
mbstring,curlrecommended) - MySQL 5.7+ or MariaDB 10.3+ (utf8mb4)
- Writable
config/anduploads/ - Apache with
mod_rewriterecommended (private media via.htaccess). On nginx, deny direct access touploads/in the server config.
- Upload the
chatfolder to your hosting - Create a MySQL database
- Open
https://your-domain.com/chat/— the install wizard runs - After success, the
install/folder is removed automatically - Sign in to the admin panel and copy the widget code from Install code
Example embed:
<script src="https://your-domain.com/chat/widget/loader.js?v=..." async></script>Use the URL from the admin panel — it already includes a cache-busting version parameter.
Do not overwrite on deploy:
| Path | Why |
|---|---|
config/config.php |
DB credentials and base URL |
uploads/ |
Chat files and avatars |
ip/ |
GeoIP databases |
After uploading a new version, open /chat/upgrade.php while logged in as admin.
Optional: export settings JSON from Settings before major upgrades.
| Path | Purpose |
|---|---|
admin/ |
Operator / admin panel |
api/ |
HTTP API (polling) |
widget/ |
Site widget |
install/ |
Install wizard (deleted after install) |
media.php |
Authorized image delivery |
sql/schema.sql |
Database schema |
uploads/ |
Private storage (not for direct public access) |
ip/ |
GeoLite2 databases |
Questions, help, and product discussion:
Telegram: https://t.me/chateedze
Виджет чата для сайта + админ-панель для операторов. Рассчитан на обычный shared-хостинг: PHP + MySQL. Без Node.js и WebSocket — только HTTP polling / long-polling.
Общение и поддержка по сервису: https://t.me/chateedze
- Живой чат на сайте одной строкой подключения (
widget/loader.js) - Текст и отправка изображений
- Индикатор набора, эмодзи, опциональные статусы прочтения
- Онлайн / офлайн и свой текст офлайн-сообщения
- Рабочие часы и автоответ вне часов
- Позиция кнопки: снизу слева / по центру / справа (отдельно для ПК и мобильных)
- Оформление: цвета, градиенты, пузыри, фон чата, баннер-оффер
- Языки: русский, английский или авто по браузеру
- Пре-чат форма, форма обратного звонка / контакта (телефон, email, Telegram)
- GDPR / согласие на обработку данных со ссылкой на политику и версией
- Кнопки старта до первого сообщения (с A/B-подписями)
- Проактивные приглашения (время на странице, URL, уход со страницы, возврат, скролл, простой)
- Сценарии / боты (сообщения, кнопки, шаг согласия)
- Форма лида после N сообщений посетителя
- Оценка CSAT после чата
- Трекинг URL / title страницы, UTM, fingerprint посетителя
- Диалоги — очередь / активные / закрытые; взять, закрыть, переоткрыть, удалить, передать
- Ответы: эмодзи, картинки, быстрые ответы (
!cmd//cmd, переменные{name},{page},{city}) - Статусы лида, внутренние заметки, напоминания по лиду
- Карточка посетителя: гео, контакты, история страниц, подсветка SLA, CSAT
- Рабочий чат — переписка только для сотрудников (клиенты не видят); картинки и эмодзи
- Посетители — кто сейчас на сайте; начать чат; профиль 360°
- Профиль: аватар, пароль, график работы, настройки браузерных уведомлений
- Операторы (роли, аватары, графики, личный Telegram / ntfy)
- Уведомления: Telegram-бот, ntfy, браузерные (пока открыта вкладка админки)
- Режимы: первое сообщение / каждое / повтор с интервалом и лимитом попыток
- Отчёты: диалоги, время первого ответа, CSAT, лиды, нарушения SLA, нагрузка, пиковые часы, A/B приглашений и кнопок старта
- Функции чата: пре-чат, форма callback, автоназначение, read receipts, просроченные автоответы, сценарий по умолчанию
- Приватность и SLA: согласие, срок хранения, очистка, удаление данных посетителя, SLA первого ответа с алертами
- Соединение: polling / long-polling, интервалы, доверенный прокси /
X-Forwarded-For - Настройки виджета: цвета, звуки, кнопка, часы работы, CORS, лимит размера файлов
- GeoLite2 (геолокация IP, Country + City) с автопроверкой примерно раз в 3 часа
- Экспорт / импорт настроек (JSON): сайт, кнопки, ответы, контакты, приглашения, сценарии
- Страница кода установки с URL виджета и сбросом кэша
- Помощник обновления после деплоя (
upgrade.php)
- Картинки чата не открываются напрямую по
/uploads/… - Раздача через
media.phpс проверкой прав:- сотрудник (вход в админку) — файлы диалогов и рабочего чата
- посетитель — только файлы своих диалогов (
visitor_key) - аватары — публичные (нужны виджету)
- CSRF на изменяющих действиях, хеширование паролей, роли (admin / operator)
- Rate limit API, security-заголовки, список разрешённых CORS origins
- PHP 7.4+ (рекомендуется 8.x)
- Расширения: PDO, pdo_mysql, json (желательны
mbstring,curl) - MySQL 5.7+ или MariaDB 10.3+ (utf8mb4)
- Запись в
config/иuploads/ - Для Apache желателен
mod_rewrite(закрытиеuploads/через.htaccess). На nginx прямой доступ кuploads/нужно запретить в конфиге сервера.
- Загрузите папку
chatна хостинг - Создайте базу MySQL
- Откройте
https://ваш-домен.ru/chat/— запустится мастер установки - После успеха папка
install/удалится автоматически - Войдите в админку и скопируйте код виджета из раздела Код установки
Пример вставки на сайт:
<script src="https://ваш-домен.ru/chat/widget/loader.js?v=..." async></script>Берите URL из админки — там уже есть параметр версии для сброса кэша.
Не перезаписывайте при деплое:
| Путь | Зачем |
|---|---|
config/config.php |
Доступ к БД и базовый URL |
uploads/ |
Файлы чата и аватары |
ip/ |
Базы GeoIP |
После заливки новой версии откройте /chat/upgrade.php под учёткой администратора.
Перед крупным обновлением можно скачать JSON настроек в разделе Настройки.
| Путь | Назначение |
|---|---|
admin/ |
Панель оператора / администратора |
api/ |
HTTP API (polling) |
widget/ |
Виджет на сайте |
install/ |
Мастер установки (удаляется после установки) |
media.php |
Выдача картинок с проверкой доступа |
sql/schema.sql |
Схема БД |
uploads/ |
Хранилище файлов (не для прямого публичного доступа) |
ip/ |
Базы GeoLite2 |
Вопросы, помощь и обсуждение сервиса:
Telegram: https://t.me/chateedze