Доска обратной связи в Kookee живёт на готовом портале, и написать туда можно только с аккаунтом. Я сделал так намеренно. Один аккаунт — один голос, у каждого поста есть автор, которому можно ответить, а ваша команда решает, что остаётся на виду у всех.
А теперь вспомните, кто находит ошибки. Человек выгружает отчёт, и в PDF не хватает последнего графика. Чтобы сообщить вам об этом, ему нужно уйти со страницы, найти ваш портал, создать аккаунт, подтвердить почту и написать пост, который прочитают посторонние люди. Единицы так и сделают. Остальные закроют вкладку или через неделю напишут в поддержку пару слов.
Поэтому у виджета для сайта теперь есть вкладка Отзыв. Посетитель пишет, что случилось, прямо на той странице, где это случилось, и отправляет без аккаунта. Сообщение видит ваша команда и больше никто. В том же релизе я сделал то, что давно откладывал: чат с ИИ, Спросить ИИ, теперь можно выключить.

Вот правила, по которым я её делал.
1. Просить сообщение, а не аккаунт
Форма спрашивает три вещи: о чём сообщение (идея, улучшение, ошибка или что-то другое), само сообщение и email, если посетитель хочет получить ответ. Если ваш сайт уже сообщает виджету, кто вошёл в систему, email подставляется сам. Адрес страницы уходит вместе с сообщением, поэтому «экспорт сломался» приходит с адресом страницы, где он сломался.
Очевидный короткий путь я рассматривал. Kookee уже поддерживает гостевых пользователей, и каждое сообщение могло бы создавать такого гостя. Я от этого отказался. Гостевой аккаунт на каждое сообщение засоряет ваш список пользователей людьми, которые никогда не регистрировались, и обещает то, чего нет: аккаунт, в который никто не войдёт, с постом, который никто больше не найдёт. Сообщение из виджета хранится как сообщение, с теми контактами, которые посетитель захотел оставить.
2. Ничего не становится публичным, пока это не прочитал человек
Открытая форма в интернете собирает три вида сообщений: полезные, сырые и спам. Если отправлять их сразу на публичную доску, доска станет похожа на ваш почтовый ящик.
Поэтому сообщения ждут. На странице Обратная связь в панели управления есть второй вид, Из виджета: там каждое сообщение, его категория, отправитель, если он представился, страница, с которой оно пришло, и время.

В открытом сообщении три действия. Добавить на доску превращает его в пост в первой открытой колонке, с заголовком, который вы зададите. Привязать к существующему посту — для запроса, который у вас уже есть: сообщение присоединяется к этому посту, а не становится его дубликатом. Закрыть удаляет сообщение.

Важнее всего, по-моему, окажется привязка. Десять человек, которые десятью разными словами описывают одну и ту же недостающую функцию, должны превратиться в один пост, за которым стоят десять человек. Пост хранит их сообщения, и тем, кто оставил email, вы сможете написать, когда функция выйдет.
3. Сообщать команде раз в час, а не на каждое сообщение
Уведомление на каждое сообщение работает до первого загруженного дня. После этого оно приучает всех не замечать уведомления.
Поэтому виджет никого не оповещает в реальном времени. Раз в час, если пришли новые сообщения, каждый в команде получает одно уведомление в панели управления и одно письмо о том, что сообщения ждут. Десять сообщений за час — одно письмо. Тихая неделя — ни одного.
4. Открытой форме нужны лимиты, до которых живые люди не дойдут
Всё, что посетитель может отправить без аккаунта, может отправить и скрипт. Лимиты стоят намного выше того, что делает человек, и намного ниже того, что делает скрипт: 30 сообщений в час с одного адреса, 120 в час на весь проект и не больше 1000 в очереди на проверку. Когда очередь заполнена, виджет не принимает новые сообщения, пока кто-нибудь не разберёт хотя бы несколько, а панель управления объясняет почему.
Из той же логики выросли ещё два решения. Сообщение, которое никто не добавил на доску и не привязал к посту, удаляется через 90 дней, поэтому очередь не растёт бесконечно. А отправленное сообщение не расходует месячную квоту API. Форма обратной связи не должна ничего вам стоить, когда ею кто-то пользуется.
5. Чат-бот тоже должен быть необязательным
До этой недели чат был единственной вкладкой, которую нельзя было выключить. Вкладки «Главная», «Помощь» и «Отзыв» были дополнениями к нему. Я так решил в самом начале, когда виджет был только чатом, и это решение пережило свою причину.
Одни команды пока не хотят, чтобы их клиентам отвечал ИИ. У других десяток статей в центре помощи, и они знают, что ассистент чаще всего будет говорить, что не уверен. Третьим нужно только место для документации, журнала изменений и формы обратной связи. Виджет, который навязывает чат-бот, такие команды не ставят.
Теперь Спросить ИИ — такая же вкладка, как остальные. Снимите с неё галочку, и чата в виджете не останется нигде: с Главной пропадёт поле для вопроса, из статей — кнопка Спросить об этой статье, и даже вызов KookeeChat.sendMessage() из вашего кода ничего не сделает, так что ответ, который некому читать, не генерируется.

Одна деталь потребовала больше внимания, чем кажется. Раньше виджет открывался на чате и переключался на сохранённые вкладки, когда они через мгновение приходили с сервера. Теперь чат может быть выключен, и в это мгновение посетитель увидел бы чат-бот, который владелец отключил, а самый быстрый успел бы начать в нём печатать. Поэтому панель, которая открывается вместе со страницей, теперь ждёт свои настройки, но не дольше пяти секунд. Если запрос завис, посетитель получает чат, а не спиннер, а настоящие вкладки сменяют его, когда придут.
В панели управления есть своя защита: с последней включённой вкладки галочку не снять, поэтому виджет всегда что-то показывает.

Чего я делать не стал
Ответы. В виджете нет ни входящих, ни переписки. Если хотите кому-то ответить, напишите на email, который он оставил. Переписка — это инструмент поддержки, а форма обратной связи, которая пытается им стать, в итоге хуже справляется и с тем, и с другим.
Голоса. Голосовать из виджета нельзя. Голосование остаётся на портале, где один аккаунт — один голос.
Доверие к тому, что передаёт страница. Имя, id и email, которые сайт передаёт виджету, показываются в сообщении с пометкой «Не проверено». Это подписи, а не удостоверение личности.
Как подключить
Тег script подхватывает всё это сам, на сайте ничего менять не нужно. Если вы ставите виджет из npm, для вкладки «Отзыв» нужен @kookee/react 1.13, а чтобы выключить «Спросить ИИ» — 1.14. Затем откройте Виджет для сайта → Настроить, отметьте Обратная связь и снимите галочку со Спросить ИИ, если нужен виджет без чата.
Чтобы открывать форму из своей ссылки вроде «Сообщить о проблеме»:
KookeeChat.open('feedback');
Подробно всё описано в статье Собирайте обратную связь через виджет для сайта, а про остальные вкладки — в статье Добавьте в виджет вкладки «Главная» и «Помощь».