К содержанию

Установка виджета на сайт ​

В боковом меню откройте «Интеграция виджета», создайте публичный ключ и скопируйте код подключения. Добавьте один тег в общий шаблон сайта:

html
<script async
  src="https://app.flowtomate.ru/widget/v1/widget.js"
  data-flowtomate-key="pub_live_REPLACE_WITH_YOUR_KEY"
  data-flowtomate-api="https://api.flowtomate.ru"></script>

Замените пример ключа на ключ проекта. Он публичный: его можно размещать в HTML. Пароль и токен кабинета туда не добавляйте. На каждой странице должен быть один тег виджета. Если сайт меняет страницы без перезагрузки, не вставляйте скрипт заново на каждом переходе.

Порядок загрузки ​

Тег с async загружается независимо от кода сайта. Вызывайте window.FlowtomateWidget после события загрузки скрипта, затем дождитесь await window.FlowtomateWidget.ready(). В GTM используйте тег Custom HTML с триггером All Pages и тем же кодом. Проверьте, что другой тег или шаблон не вставляет дубликат.

В React и Next.js добавьте скрипт один раз в браузере. Для Next.js используйте клиентский компонент:

tsx
'use client';

import { useEffect } from 'react';

export function FlowtomateScript() {
  useEffect(() => {
    if (document.querySelector('script[data-flowtomate-key]')) return;
    const script = document.createElement('script');
    script.async = true;
    script.src = 'https://app.flowtomate.ru/widget/v1/widget.js';
    script.dataset.flowtomateKey = 'pub_live_REPLACE_WITH_YOUR_KEY';
    script.dataset.flowtomateApi = 'https://api.flowtomate.ru';
    document.body.append(script);
  }, []);
  return null;
}

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

Для обычной HTML-страницы можно сохранить порядок двух скриптов через defer:

html
<script defer src="https://app.flowtomate.ru/widget/v1/widget.js"
  data-flowtomate-key="pub_live_REPLACE_WITH_YOUR_KEY"
  data-flowtomate-api="https://api.flowtomate.ru"></script>
<script defer src="/flowtomate-integration.js"></script>

Второй файл создаёт ваш разработчик. Браузер выполнит его после скрипта виджета. Перед методами, которым нужен загруженный контент, вызовите await window.FlowtomateWidget.ready(). Полный пример передачи ID, email и событий есть в основной инструкции. Для команд до загрузки есть ранняя очередь.

Своя кнопка ​

В «Настройки виджета» → «Вид виджета» выберите «Своя кнопка». Добавьте атрибут к кнопке или пункту меню на сайте:

html
<button type="button" data-flowtomate-open>Что нового</button>

Виджет найдёт и элементы, добавленные после загрузки страницы. Если он выключен или посетителю нечего показать, панель не откроется.

Если сайт использует CSP ​

Добавьте источники виджета в действующую Content Security Policy сайта. Текущая версия создаёт стили в документе, поэтому ей нужен 'unsafe-inline' в style-src:

text
script-src 'self' https://app.flowtomate.ru;
connect-src 'self' https://api.flowtomate.ru;
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
media-src 'self' https:;

Источники изображений и медиа нужны для материалов, которые вы публикуете. Если ваша политика перечисляет конкретные домены, добавьте домены этих материалов вместо общего https:.

Проверка ​

Откройте сайт и DevTools → Network. Убедитесь, что widget.js загрузился, запрос настроек не заблокирован CSP или CORS, а window.FlowtomateWidget появился. Выполните await window.FlowtomateWidget.ready(). Затем вернитесь в «Интеграция виджета»: там должен появиться адрес сайта и время последнего запроса. ready() сам по себе не доказывает, что контент и данные посетителя загрузились; проверяйте нужный результат отдельно. Если что-то не сработало, откройте диагностику.