Быстрый старт

Интегрируйте виджет WritesApp на ваш сайт за 5 минут

1

Создайте аккаунт

Зарегистрируйтесь бесплатно и создайте свой первый виджет в личном кабинете.

Создать аккаунт
2

Настройте виджет

Выберите каналы связи, настройте внешний вид и триггеры показа.

3

Добавьте код на сайт

Скопируйте 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.setUser({
  name: "Иван",
  email: "ivan@example.com"
});

// Событие при клике
window.WritesApp.on('click', (channel) => {
  console.log('Клик по каналу:', channel);
});

Аутентификация

Все запросы к REST API должны содержать API ключ в заголовке Authorization.

Authorization: Bearer wa_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Получение API ключа

API ключ доступен в тарифе Business. Создайте ключ в настройках аккаунта.

Scopes (права доступа)

ScopeОписание
widgets:readЧтение списка и настроек
widgets:writeСоздание и редактирование
analytics:readЧтение аналитики

Виджеты

Управление виджетами через REST API.

GET/api/v1/widgets

Получить список всех виджетов аккаунта

Параметры запроса

pageНомер страницы (по умолчанию 1)
limitКоличество на странице (макс. 100)
curl -X GET "https://writesapp.ru/api/v1/widgets?page=1&limit=10" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": [
    {
      "id": "clx123abc456",
      "name": "Основной виджет",
      "domain": "example.com",
      "isActive": true,
      "eventsCount": 1234,
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-15T12:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 1,
    "totalPages": 1
  }
}
POST/api/v1/widgets

Создать новый виджет

curl -X POST "https://writesapp.ru/api/v1/widgets" \
  -H "Authorization: Bearer wa_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Мой виджет",
    "domain": "example.com",
    "channels": [
      {"type": "whatsapp", "value": "79001234567", "label": "WhatsApp"}
    ],
    "config": {
      "position": "bottom-right",
      "color": "#25D366"
    }
  }'
GET/api/v1/widgets/:id

Получить полную информацию о виджете включая настройки

curl -X GET "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": {
    "id": "clx123abc456",
    "name": "Основной виджет",
    "domain": "example.com",
    "isActive": true,
    "config": {
      "position": "bottom-right",
      "size": "medium",
      "color": "#25D366",
      "style": "classic",
      "title": "Напишите нам",
      "greeting": "Привет! Чем помочь?"
    },
    "channels": [
      {"type": "whatsapp", "value": "79001234567", "label": "WhatsApp", "device": "all"},
      {"type": "telegram", "value": "mycompany", "label": "Telegram", "device": "all"}
    ],
    "triggers": {
      "delay": 3,
      "scrollPercentage": 50,
      "exitIntent": true
    },
    "targeting": {},
    "eventsCount": 1234,
    "createdAt": "2024-01-01T00:00:00.000Z",
    "updatedAt": "2024-01-15T12:00:00.000Z"
  }
}
PUT/api/v1/widgets/:id

Обновить настройки виджета. Передавайте только изменяемые поля.

curl -X PUT "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Новое название",
    "isActive": false,
    "config": {"color": "#FF4B3A"}
  }'
DELETE/api/v1/widgets/:id

Удалить виджет и всю связанную аналитику

curl -X DELETE "https://writesapp.ru/api/v1/widgets/clx123abc456" \
  -H "Authorization: Bearer wa_your_api_key"

Структура данных виджета

channels — Каналы связи

ПолеТипОписание
typestringwhatsapp, telegram, viber, vk, max, phone, email, custom
valuestringНомер/username/ссылка
labelstringНазвание кнопки
devicestringall, desktop, mobile

config — Внешний вид

ПолеТипОписание
positionstringbottom-right/left, top-right/left
sizestringsmall, medium, large
stylestringclassic, horizontal, bubble, minimal, glass, premium
colorstringHEX цвет (#25D366)
titlestringЗаголовок виджета
greetingstringПриветствие
offsetXnumberОтступ по X (px)
offsetYnumberОтступ по Y (px)

triggers — Условия показа

ПолеТипОписание
delaynumberЗадержка показа (сек)
scrollPercentagenumberПри прокрутке (%)
exitIntentbooleanПри уходе со страницы
workingHoursEnabledbooleanРабочие часы вкл/выкл
workingHoursStartstringНачало дня (09:00)
workingHoursEndstringКонец дня (18:00)
urlModestringall, include, exclude
urlsstringСписок URL

Аналитика

Получение статистики и событий виджетов.

GET/api/v1/analytics

Параметры запроса

ПараметрТипОписание
widget_idstringID виджета (опц.)
periodstring1d, 7d, 30d, 90d
eventstringview, click, channel_click
channelstringwhatsapp, telegram, viber...
pagenumberСтраница (дефолт 1)
limitnumberКоличество (макс. 1000)
curl -X GET "https://writesapp.ru/api/v1/analytics?period=30d&event=channel_click" \
  -H "Authorization: Bearer wa_your_api_key"
Пример ответа
{
  "data": [
    {
      "id": "evt_abc123",
      "widgetId": "clx123abc456",
      "event": "channel_click",
      "channel": "whatsapp",
      "variant": null,
      "timestamp": "2024-01-15T14:30:00.000Z"
    }
  ],
  "summary": {
    "views": 1500,
    "clicks": 320,
    "channelClicks": 180
  },
  "pagination": {
    "page": 1,
    "limit": 100,
    "total": 180,
    "totalPages": 2
  }
}

Типы событий

viewВиджет показан на странице
clickПользователь открыл виджет
channel_clickПереход в мессенджер

Webhooks

Получайте уведомления о событиях виджета в реальном времени.

Настройка

Укажите URL вебхука в настройках виджета. WritesApp отправит POST-запрос при каждом событии.

Формат запроса

POST https://your-server.com/webhook
Content-Type: application/json

{
  "event": "channel_click",
  "widgetId": "clx123abc456",
  "channel": "whatsapp",
  "timestamp": "2024-01-01T12:00:00.000Z",
  "visitor": {
    "ip": "192.168.1.1",
    "userAgent": "Mozilla/5.0...",
    "referrer": "https://google.com"
  },
  "page": {
    "url": "https://example.com/product",
    "title": "Страница товара"
  }
}

Типы событий

СобытиеОписание
widget_viewВиджет показан
widget_openВиджет открыт
channel_clickКлик по каналу

Лимиты запросов

API имеет ограничения на количество запросов для защиты от злоупотреблений.

ТарифЛимитОкно
Pro100 запр.1 мин
Business1000 запр.1 мин

Заголовки ответа

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704067200

Коды ошибок

API возвращает стандартные HTTP коды ответа.

КодОписаниеРешение
400Неверный запросПроверьте параметры
401Не авторизованПроверьте API ключ
403ЗапрещёнНедостаточно прав
404Не найденоРесурс не существует
429Rate limitДождитесь сброса
500Ошибка сервераПовторите позже

Формат ошибки

{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API ключ недействителен или отозван",
    "details": null
  }
}

История изменений

Обновления и изменения в API и платформе.

v2.0.0Декабрь 2025
  • +Новый стиль виджета «Premium» с аватаром менеджера
  • +Авторизация через Яндекс ID
  • +Система поддержки с тикетами
  • +FAQ и отзывы клиентов
  • ~Улучшена мобильная адаптация
v1.5.0Ноябрь 2025
  • +Интеграция с Google Analytics и Яндекс.Метрикой
  • +Настройка рабочих часов
  • +UTM-фильтры для таргетинга
  • +Поддержка мессенджера MAX
v1.2.0Октябрь 2025
  • +A/B тесты для виджетов
  • +Webhooks для событий
  • +API ключи в настройках
  • ~Rate limit до 1000 req/min для Business
v1.0.0Сентябрь 2025
  • +Первый релиз WritesApp 2.0
  • +REST API v1
  • +6 стилей виджетов
  • +Аналитика в реальном времени

Нужна помощь?

Свяжитесь с нами, если у вас есть вопросы по интеграции