Быстрый старт
Интегрируйте виджет WritesApp на ваш сайт за 5 минут
Создайте аккаунт
Зарегистрируйтесь бесплатно и создайте свой первый виджет в личном кабинете.
Создать аккаунтНастройте виджет
Выберите стиль (6 вариантов), добавьте каналы связи, настройте анимации, QR-коды, персонализацию и триггеры показа.
Добавьте код на сайт
Скопируйте embed-код и вставьте перед закрывающим тегом </body>
<script src="https://writesapp.ru/widget.js"
data-widget-id="YOUR_WIDGET_ID"
async>
</script>Установка виджета
Виджет загружается асинхронно и не блокирует загрузку страницы.
Базовая установка
<!-- Вставьте перед </body> -->
<script
src="https://writesapp.ru/widget.js"
data-widget-id="clx123abc456"
async>
</script>Атрибуты
| Атрибут | Обязат. | Описание |
|---|---|---|
data-widget-id | Да | ID вашего виджета |
data-lazy | Нет | Ленивая загрузка |
data-container | Нет | CSS селектор |
JavaScript API
Управляйте виджетом программно:
// Открыть виджет
window.WritesApp.open();
// Закрыть виджет
window.WritesApp.close();
// Переключить (открыть/закрыть)
window.WritesApp.toggle();
// Открыть форму обратного звонка напрямую
window.WritesApp.openCallback();
// Установить пользовательские данные
window.WritesApp.setUser({
name: "Иван",
email: "ivan@example.com"
});
// Подписка на события
window.WritesApp.on('click', (data) => {
console.log('Клик по каналу:', data.channel);
});Открытие с кнопки на сайте
Виджет можно открывать по клику на любую кнопку или ссылку. Рекомендуем использовать делегирование событий — этот способ работает на всех CMS и конструкторах сайтов (Tilda, Рег.ру, Bitrix, WordPress).
Шаг 1. Добавьте кнопку с классом writesapp-open:
<a href="#" class="writesapp-open">Написать нам</a>
<!-- Или кнопку -->
<button class="writesapp-open">Открыть чат</button>Шаг 2. Вставьте скрипт (один раз, в любом месте страницы):
<script>
document.addEventListener('click', function(e) {
if (e.target.closest('.writesapp-open')) {
e.preventDefault();
if (window.WritesApp) window.WritesApp.open();
}
});
</script>Почему делегирование? Многие конструкторы загружают блоки страницы асинхронно. При использовании getElementById кнопка может ещё не существовать в DOM. Делегирование через document.addEventListener перехватывает клики независимо от порядка загрузки.
Установка через тег-менеджер
Яндекс Тег Менеджер и другие системы могут обрезать data-* атрибуты и теги <script src>. Используйте динамическое создание скрипта через document.createElement.
Яндекс Тег Менеджер (ЯТМ)
Подготовка: в настройках счётчика Яндекс.Метрики включите Тег менеджер и поставьте галочку «Пользовательский HTML».
Шаг 1. Создайте триггер: тип «Просмотр страницы» → условие «Все страницы».
Шаг 2. Создайте тег «Пользовательский HTML» и вставьте код ниже.
Шаг 3. Привяжите триггер к тегу и нажмите «Опубликовать».
<script>
(function(d) {
var s = d.createElement('script');
s.async = true;
s.src = 'https://writesapp.ru/widget.js';
s.setAttribute('data-widget-id', 'ВАШ_WIDGET_ID');
(d.head || d.documentElement).appendChild(s);
})(document);
</script>Замените ВАШ_WIDGET_ID на ID вашего виджета из раздела «Настройки» в личном кабинете.
Google Tag Manager (GTM)
Добавьте тег «Custom HTML» с тем же кодом. Триггер — «All Pages».
<script>
(function(d) {
var s = d.createElement('script');
s.async = true;
s.src = 'https://writesapp.ru/widget.js';
s.setAttribute('data-widget-id', 'ВАШ_WIDGET_ID');
(d.head || d.documentElement).appendChild(s);
})(document);
</script>Альтернативный способ (WritesAppConfig)
Если основной способ не работает, используйте глобальный конфиг:
<script>
window.WritesAppConfig = { widgetId: 'ВАШ_WIDGET_ID' };
var s = document.createElement('script');
s.src = 'https://writesapp.ru/widget.js';
s.defer = true;
document.body.appendChild(s);
</script>Параметры WritesAppConfig
| Параметр | Обязат. | Описание |
|---|---|---|
widgetId | Да | ID вашего виджета |
lazy | Нет | Ленивая загрузка (true по умолчанию) |
delay | Нет | Задержка инициализации в мс |
apiUrl | Нет | URL API (для self-hosted) |
Онлайн-чат
Полноценный онлайн-консультант прямо в виджете. Общайтесь с посетителями в реальном времени, отвечайте через дашборд, получайте уведомления по email и звуком.
Возможности чата
Посетитель пишет в виджете, оператор отвечает в дашборде мгновенно
Оператор видит текст посетителя ещё до отправки — готовьте ответ заранее
Посетитель видит анимацию, когда оператор набирает ответ
Запрашивайте имя, email и телефон перед началом диалога
Кнопки-подсказки для посетителей: «Сколько стоит?», «Как заказать?»
Посетитель возвращается и видит предыдущую переписку
Оператор слышит звук при новом сообщении, даже в другой вкладке
Письмо на почту при каждом новом сообщении от посетителя
Красная точка на иконке вкладки — видно непрочитанные даже при свёрнутом окне
Вне рабочих часов показывается форма «Оставьте контакт — мы свяжемся»
Настройка чата в виджете
Добавьте канал livechat в список каналов виджета. Доступно на тарифах Pro (до 100 диалогов/мес) и Business (безлимит).
"channels": [
{ "type": "livechat", "value": "", "label": "Онлайн-чат" },
{ "type": "whatsapp", "value": "79001234567", "label": "WhatsApp" }
]Персонализация чата
Настройте имя и должность оператора, аватар, шапку чата и приветственное сообщение.
"config": {
"chatOperatorName": "Анна Петрова",
"chatOperatorTitle": "Менеджер по продажам",
"chatOperatorAvatar": "user",
"chatGreetingEnabled": true,
"chatGreetingText": "Здравствуйте! Чем могу помочь?",
"chatGreetingDelay": 30,
"chatQuickButtonsEnabled": true,
"chatQuickButtons": [
{ "text": "Сколько стоит?" },
{ "text": "Как заказать?" },
{ "text": "Какие сроки?" }
]
}| Параметр | Описание |
|---|---|
chatOperatorName | Имя оператора в шапке чата |
chatOperatorTitle | Должность оператора |
chatOperatorAvatar | user — аватар пользователя, custom — загруженное фото |
chatGreetingEnabled | Авто-приветствие в чате (true/false) |
chatGreetingText | Текст приветственного сообщения |
chatGreetingDelay | Задержка приветствия (сек) |
chatQuickButtonsEnabled | Включить быстрые вопросы |
chatQuickButtons | Массив кнопок-подсказок для посетителя |
chatPreFormEnabled | Pre-chat форма (имя, email, телефон) |
chatPrivacyUrl | Ссылка на политику конфиденциальности |
Шаблоны быстрых ответов
Оператор вводит / в поле ввода и видит список шаблонов. Выбор шаблона вставляет текст в поле. Настраиваются в дашборде индивидуально для каждого пользователя.
Экономия времени: шаблоны сокращают время ответа до 60%. Создайте шаблоны для частых вопросов: приветствие, цены, условия доставки.
Рабочие часы и офлайн-форма
Настройте расписание работы по дням недели. Вне рабочих часов чат переключается в офлайн-режим: посетитель видит форму «Оставьте контакт — мы свяжемся». Заявки поступают на email и во вкладку «Заявки».
"config": {
"chatWorkScheduleEnabled": true,
"chatWorkSchedule": {
"mon": { "start": "09:00", "end": "18:00" },
"tue": { "start": "09:00", "end": "18:00" },
"wed": { "start": "09:00", "end": "18:00" },
"thu": { "start": "09:00", "end": "18:00" },
"fri": { "start": "09:00", "end": "17:00" },
"sat": null,
"sun": null
}
}Мониторинг посетителей
Real-time дашборд с информацией о посетителях вашего сайта. Видьте кто сейчас онлайн, на какой странице, откуда пришёл — и начинайте диалог первым.
Что показывает дашборд
Видите кто сейчас на сайте в реальном времени
URL и заголовок страницы, на которой находится посетитель
Десктоп или мобильное, разрешение экрана
Откуда пришёл посетитель (referrer)
Количество просмотренных страниц за визит
Сколько времени посетитель уже на сайте
Проактивные приглашения в чат
Нажмите «Написать» на карточке посетителя — диалог откроется у него в виджете автоматически. Идеально для таргетирования горячих лидов: посетитель на странице цен 2 минуты — начните диалог первым.
Конверсия +20-40%: проактивные приглашения в чат увеличивают конверсию посетителей в лиды. Не ждите, пока клиент напишет — начните диалог сами.
Доступность
| Тариф | Мониторинг | Приглашения в чат |
|---|---|---|
| Бесплатный | — | — |
| Pro | ✓ | ✓ (100 диалогов/мес) |
| Business | ✓ | ✓ (безлимит) |
Дизайн и стили
6 готовых стилей виджета с гибкой настройкой внешнего вида, анимаций и адаптации под мобильные устройства.
Стили виджета
Круглая кнопка с вертикальным списком каналов
Компактная панель внизу экрана
С приветствием и аватаром
Только иконки, компактно
Прозрачный с blur-эффектом
Строгий glassmorphism с фото менеджера
Анимации кнопки
Привлекайте внимание посетителей с помощью анимаций. Анимация автоматически останавливается при открытии панели.
bounceПодпрыгиваниеpulseПульсацияshakeПокачиваниеglowСвечениеКастомизация иконок
iconStylefilled — залитые цветом, outline — контурные
iconColorModebrand — фирменные цвета мессенджеров, single — единый цвет
Мобильная адаптация
Отдельные настройки для мобильных: позиция, размер кнопки и отступы. Управляйте видимостью через showOnMobile и showOnDesktop.
"config": {
"position": "bottom-right",
"mobilePosition": "bottom-left",
"size": "medium",
"mobileSize": "small",
"offsetX": 20, "offsetY": 20,
"mobileOffsetX": 10, "mobileOffsetY": 10,
"showOnMobile": true,
"showOnDesktop": true
}Триггеры и правила
Гибкие условия показа виджета: по времени, скроллу, URL, UTM-меткам и рабочим часам.
Базовые триггеры
Показ через N секунд после загрузки
Показ при прокрутке на N%
Показ при попытке покинуть сайт
Рабочие часы
Виджет показывается только в рабочее время с учётом часового пояса.
"triggers": {
"workingHoursEnabled": true,
"workingHoursStart": "09:00",
"workingHoursEnd": "18:00",
"timezone": "Europe/Moscow"
}URL-правила
Показывайте виджет только на определённых страницах или исключайте ненужные.
"triggers": {
"urlMode": "include",
"urls": "/contacts\n/pricing\n/product/*"
}UTM-фильтры
Показывайте виджет только посетителям из определённых рекламных кампаний.
"triggers": {
"utmEnabled": true,
"utmSource": "yandex",
"utmMedium": "cpc",
"utmCampaign": "sale_2026"
}Персонализация
Сегментируйте посетителей и показывайте разные приветствия новым и возвращающимся пользователям.
Сегменты посетителей
Виджет автоматически определяет, первый ли это визит или пользователь возвращается. Вы можете настроить разные тексты для каждого сегмента.
"config": {
"segmentsEnabled": true,
"greeting": "Выберите удобный мессенджер",
"greetingNew": "Привет! Задайте вопрос — ответим за 5 минут",
"greetingReturning": "С возвращением! Чем можем помочь?"
}Как это работает: при первом визите пользователю устанавливается cookie. При повторном посещении виджет распознаёт его и показывает персонализированное приветствие.
Деловой стиль с менеджером
Стиль «Деловой» позволяет добавить фото, имя и должность менеджера — повышает доверие посетителей.
"config": {
"style": "premium",
"managerImage": "https://example.com/photo.jpg",
"managerName": "Анна Петрова",
"managerTitle": "Менеджер по продажам",
"showOnlineStatus": true,
"backgroundColor": "#1a1a2e",
"accentColor": "#e94560"
}QR-коды
На десктопе посетитель может отсканировать QR-код, чтобы открыть мессенджер или позвонить с мобильного.
Как работает
Посетитель наводит на канал
Появляется QR-код
Скан открывает мессенджер на телефоне
Поддерживаемые каналы
Включение
QR-коды доступны на тарифах Pro и Business. Включите в настройках виджета:
"config": {
"qrEnabled": true
}QR отображается только на десктопе. На мобильных устройствах канал открывается напрямую. Для канала «Телефон» QR-код содержит ссылку tel: — при скане телефон начинает набор номера.
A/B тесты
Тестируйте разные варианты настроек виджета и находите конфигурацию с максимальной конверсией.
Что можно тестировать
Как работает
Pro-совет: для статистически значимых результатов рекомендуем не менее 1000 показов на каждый вариант.
Яндекс.МетрикаPro
Виджет автоматически отправляет 17 целей (reachGoal) в Яндекс.Метрику при каждом действии посетителя. Вы получаете полную воронку конверсии: от показа виджета до лида.
Быстрая настройка (2 минуты)
Включите Метрику в настройках виджета
Раздел «Интеграции» → «Яндекс.Метрика» → вкл.
Укажите ID счётчика
Найдите в Яндекс.Метрике: Настройки → Код счётчика → число (например, 12345678)
Создайте цели в Метрике
Метрика → Цели → «Добавить цель» → тип «JavaScript-событие» → укажите идентификатор из таблицы ниже
Готово! Виджет отправляет цели автоматически
Никакого ручного кода. Виджет сам вызывает ym(ID, 'reachGoal', ...) при каждом событии.
Все 17 автоматических целей
| Идентификатор цели | Описание | Когда срабатывает |
|---|---|---|
widget_view | Показ виджета | Виджет загрузился на странице |
widget_open | Открытие виджета | Посетитель нажал на кнопку виджета |
click_whatsapp | Клик WhatsApp | Клик по каналу WhatsApp |
click_telegram | Клик Telegram | Клик по каналу Telegram |
click_phone | Клик Телефон | Клик по каналу «Телефон» |
click_email | Клик Email | Клик по каналу «Email» |
click_vk | Клик ВКонтакте | Клик по каналу VK |
click_viber | Клик Viber | Клик по каналу Viber |
click_max | Клик MAX | Клик по каналу MAX |
click_livechat | Открытие чата | Клик по каналу «Онлайн-чат» |
click_callback | Клик обратный звонок | Клик по каналу «Обратный звонок» |
messenger_redirect | Переход в мессенджер | Фактический переход по ссылке канала |
form_submit | Отправка формы | Любая форма: callback, pre-chat, офлайн |
lead_success | Успешный лид | Сервер подтвердил получение заявки/сообщения |
callback_request | Заказ обратного звонка | Успешная отправка формы обратного звонка |
chat_started | Начало диалога | Первое сообщение посетителя в чат |
chat_message_sent | Сообщение в чат | Каждое сообщение посетителя в чат |
Составные цели (воронки)
В Метрике можно создать составную цель с несколькими шагами. Это покажет, где посетители «отваливаются». Рекомендуемая воронка:
widget_openПосетитель открыл виджет
click_whatsapp / click_telegram / form_submitВыбрал канал связи или отправил форму
lead_successЛид получен (заявка подтверждена сервером)
Как создать: Метрика → Цели → «Добавить цель» → «Составная цель» → добавьте 3 шага с идентификаторами выше. Тип каждого шага: «JavaScript-событие».
Что происходит под капотом
Виджет автоматически вызывает ym() с параметрами визита:
// При клике по WhatsApp виджет вызовет:
ym(12345678, 'reachGoal', 'click_whatsapp', {
widget_id: "clx123abc456",
url: "https://example.com/contacts",
channel: "whatsapp",
ab_variant: "variant-A" // если активен A/B тест
});
// При успешной отправке callback-формы:
ym(12345678, 'reachGoal', 'callback_request', {
widget_id: "clx123abc456",
url: "https://example.com",
form_type: "callback",
name: "Иван",
phone: "+79001234567"
});
// При первом сообщении в чат:
ym(12345678, 'reachGoal', 'chat_started', {
widget_id: "clx123abc456",
url: "https://example.com",
source: "livechat"
});Параметры визита
Каждая цель отправляется с дополнительными параметрами, доступными в отчётах Метрики:
| Параметр | Описание |
|---|---|
widget_id | ID виджета WritesApp |
url | Страница, на которой произошло событие |
channel | Тип канала (whatsapp, telegram, phone...) |
ab_variant | ID варианта A/B теста (если активен) |
form_type | Тип формы (callback, prechat, offline) |
source | Источник лида (livechat, callback) |
Доступность
| Тариф | Яндекс.Метрика | Кол-во целей |
|---|---|---|
| Бесплатный | — | — |
| Pro | ✓ | 17 целей + воронки |
| Business | ✓ | 17 целей + воронки |
Важно
ym() через глобальную функцию — если Метрика не подключена к сайту, цели не отправятся.Google Analytics 4Все тарифы
Виджет автоматически отправляет 10 событий в Google Analytics 4 при каждом действии посетителя. Требуется только наличие gtag.js на вашем сайте.
Быстрая настройка
Установите Google тег на сайт
Убедитесь что на сайте подключён gtag.js (стандартный тег GA4)
Включите GA4 в настройках виджета
Вкладка «Интеграции» → Google Analytics 4 → включить
Готово!
События появятся в GA4 → Reports → Engagement → Events
Все 10 автоматических событий
| Событие | Описание | Когда срабатывает |
|---|---|---|
writesapp_widget_view | Показ виджета | Виджет отрендерился на странице |
writesapp_widget_open | Открытие виджета | Посетитель нажал на кнопку виджета |
writesapp_channel_click | Клик по каналу | Выбран конкретный канал связи |
writesapp_messenger_redirect | Переход в мессенджер | Открыта ссылка мессенджера |
writesapp_form_submit | Отправка формы | Любая форма (callback, offline, pre-chat) |
writesapp_lead_success | Лид создан | Сервер подтвердил получение заявки |
writesapp_callback_request | Заказ звонка | Отправлена форма обратного звонка |
writesapp_chat_started | Начало чата | Первое сообщение в онлайн-чате |
writesapp_chat_message | Сообщение в чате | Каждое отправленное сообщение |
writesapp_offline_form | Офлайн-форма | Отправлена форма когда оператор офлайн |
Параметры событий
Каждое событие включает набор параметров для детальной аналитики.
| Параметр | Описание |
|---|---|
widget_id | ID виджета WritesApp |
page_url | URL страницы события |
channel | Канал связи (whatsapp, telegram и т.д.) |
ab_variant | ID варианта A/B-теста (если активен) |
form_type | Тип формы (callback, offline, prechat) |
message_length | Длина сообщения в чате |
Воронка конверсии в GA4
Создайте воронку в GA4 (Explore → Funnel exploration) для анализа пути посетителя:
Так вы увидите на каком этапе посетители уходят и сможете оптимизировать виджет.
Что происходит под капотом
Виджет вызывает gtag() автоматически:
// Пример вызова при клике по каналу
gtag('event', 'writesapp_channel_click', {
widget_id: 'abc123',
page_url: 'https://example.com/contacts',
channel: 'whatsapp',
ab_variant: 'variant_B'
});
// Пример вызова при отправке callback-формы
gtag('event', 'writesapp_callback_request', {
widget_id: 'abc123',
page_url: 'https://example.com',
form_type: 'callback'
});Важно
gtag.js на сайте (стандартный Google тег)Интеграции
Подключите виджет к системам аналитики и бизнес-логике вашего сайта.
Google Analytics 4
Виджет автоматически отправляет 10 событий в GA4 при каждом действии посетителя. Подробная документация — в разделе .
"config": {
"gaEnabled": true
}Яндекс.МетрикаPro
Автоматическая отправка 17 целей в Метрику. Подробная документация — в разделе .
"config": {
"ymEnabled": true,
"ymCounterId": "12345678"
}Обратный звонок (Callback)
Добавьте канал «Обратный звонок» — посетитель заполнит форму с именем и номером телефона, заявка придёт вам на email и в личный кабинет.
"channels": [
{ "type": "callback", "value": "", "label": "Обратный звонок" }
]JavaScript Callback
Вызывайте свою функцию при кликах по виджету — для CRM, чат-ботов или кастомной логики.
"config": {
"callbackEnabled": true,
"callbackFunction": "onWidgetClick"
}
// В вашем JS:
window.onWidgetClick = function(channel, data) {
console.log('Канал:', channel, 'Данные:', data);
};REST API Reference
Управляйте виджетами и аналитикой программно. Аутентификация, CRUD виджетов, webhooks, лимиты. Доступно на тарифе Business.
История изменений
Обновления и изменения платформы WritesApp.
- +Google Analytics 4: 10 автоматических событий (gtag) — все тарифы
- +Яндекс.Метрика: 17 автоматических целей (reachGoal) — виджет, каналы, формы, чат
- +Составные воронки конверсии для GA4 и Метрики
- +Параметры визита: widget_id, URL, канал, A/B вариант
- ~Яндекс.Метрика перенесена на тариф Pro (ранее доступна всем)
- ~Трекинг чата: chat_started, chat_message_sent, chat_prechat_submit
- +Онлайн-чат с посетителями (Pre-chat форма, быстрые вопросы, MagicType)
- +Мониторинг посетителей в реальном времени
- +Проактивные приглашения в чат с карточки посетителя
- +Email-уведомления о новых сообщениях в чате
- +Favicon badge с индикатором непрочитанных сообщений
- +Шаблоны быстрых ответов (/слеш-команды) для операторов
- +Звуковые уведомления при новых сообщениях
- ~Офлайн-режим теперь работает по расписанию (понедельно)
- +QR-коды для телефонных звонков (tel:)
- +Автоматический Pro trial 14 дней при регистрации
- ~Кнопка виджета: иконка закрытия (×) при открытии панели
- ~Сокращение длинных ссылок в виджете до домена
- +QR-коды для мессенджеров (WhatsApp, Telegram, Viber, VK, MAX)
- +Персонализация приветствий (сегменты: новые/возвращающиеся)
- +Интеграция с Google Analytics и Яндекс.Метрикой
- +Форма обратного звонка (Callback)
- +Кастомизация иконок (filled/outline, brand/single color)
- +Анимации кнопки (bounce, pulse, shake, glow)
- +UTM-фильтры для таргетированного показа
- ~Раздельные мобильные настройки (позиция, размер, отступы)
- +Стиль «Деловой» с аватаром менеджера
- +Авторизация через Яндекс ID
- +Система поддержки с тикетами
- +A/B тестирование виджетов
- ~Улучшена мобильная адаптация
- +Интеграция с Google Analytics и Яндекс.Метрикой
- +Настройка рабочих часов
- +UTM-фильтры для таргетинга
- +Поддержка мессенджера MAX
- +A/B тесты для виджетов
- +Webhooks для событий
- +API ключи в настройках
- ~Rate limit до 1000 req/min для Business
- +Первый релиз WritesApp 2.0
- +REST API v1
- +6 стилей виджетов
- +Аналитика в реальном времени
Нужна помощь?
Свяжитесь с нами, если у вас есть вопросы по интеграции