Поддержка

Troubleshooting

Диагностика и решение распространённых проблем.

Заявка не приходит

Проверяйте последовательно:

1

Заявка появилась в дашборде?

Дашборд → Сайт → Заявки. Если заявки нет — проблема в отправке, а не в уведомлении. Проверьте шаг 2.

Если заявка есть — проблема в доставке уведомления. Проверьте шаг 4.

2

Проверьте консоль браузера

Откройте DevTools → Network. Найдите запрос POST /api/c1/sites/…/submissions. Какой статус ответа?

  • →403 → CORS или домен не верифицирован → шаг 3
  • →400 → ошибка валидации или капчи → читайте тело ответа
  • →429 → rate limit → шаг 7
  • →Нет запроса вообще → SDK не подключён или data-sitekey не указан
3

Проверьте домен в настройках сайта

Убедитесь что Origin запроса совпадает с доменом в списке разрешённых. Формат: https://example.com без trailing slash.

4

Проверьте статус доставки

Откройте заявку в дашборде → раздел Доставка. Какой статус у канала?

  • →failed / exhausted → ошибка в канале → читайте сообщение ошибки
  • →delivered — уведомление ушло, проблема на стороне получателя

Telegram не подключён / уведомление не приходит

  • →Проверьте: @FormHookBot добавлен в чат/канал и имеет права администратора
  • →chat_id указан правильно. Для каналов начинается с -100
  • →Нажмите Тест в настройках канала — должно прийти тестовое сообщение
  • →Если тест не проходит и ошибка «bot is not a member» — бот не в чате
  • →Если ошибка «chat not found» — неверный chat_id

Как найти chat_id группы

bash
# Добавьте @JsonDumpBot в группу, он вернёт JSON с chat.id
# Или используйте getUpdates через API вашего бота:
curl https://api.telegram.org/bot<TOKEN>/getUpdates

Webhook возвращает ошибку

  • →Убедитесь что URL доступен из интернета (не localhost без тоннеля)
  • →Endpoint должен вернуть HTTP 2xx в течение 10 секунд — иначе считается ошибкой
  • →Проверьте заголовки CORS — FormHook шлёт с Content-Type: application/json
  • →Для отладки используйте webhook.site — временный URL для перехвата запросов
  • →Проверьте HMAC-подпись — см. Webhook HMAC

Domain verification failed

  • →TXT-запись должна распространиться — подождите до 24 часов
  • →Проверьте запись: dig TXT _formhook-verification.example.com
  • →Скопируйте значение из дашборда точно, без пробелов и кавычек
  • →Имя записи: _formhook-verification (не @, не корень)
  • →Если регистратор добавляет домен автоматически: имя должно быть _formhook-verification без .example.com

Captcha failed / CAPTCHA_ANSWER_INVALID

  • →Challenge истекает через 5 минут — пересоздайте если пользователь долго заполнял форму
  • →При прямом HTTP: сначала получите challenge, потом отправляйте заявку
  • →Один challenge — одна заявка. После использования challenge недействителен
  • →Если капча включена в настройках — поле captcha_challenge_id обязательно
  • →После ошибки CAPTCHA_ANSWER_INVALID вызовите formhook.reset(widgetId) — challenge одноразовый

CORS issue (403 CORS_FORBIDDEN)

  • →Добавьте Origin вашего сайта в список разрешённых: Сайт → Настройки → Разрешённые домены
  • →Формат: https://example.com — с протоколом, без trailing slash
  • →Для localhost: http://localhost:3000 (точный порт)
  • →Поддомены добавляются отдельно: https://www.example.com ≠ https://example.com

403 SITE_SUSPENDED

Сайт заблокирован администратором FormHook (нарушение правил использования). Обратитесь в поддержку: support@form-hook.com.

429 Rate Limited

  • →Стандартный лимит: 100 запросов/секунду с одного IP
  • →SDK бросает SUBMIT_RATE_LIMITED — покажите пользователю сообщение и попросите подождать
  • →Если лимит срабатывает в продакшене без спама — обратитесь в поддержку для увеличения лимита
  • →Включите капчу и honeypot — они останавливают ботов до достижения лимита
Не нашли решение? Напишите на support@form-hook.com с описанием проблемы, siteKey и кодом ошибки из консоли.