Практична інструкція

Форма не надсилає листи: як знайти причину

Повідомлення про успіх не підтверджує доставку листа. Перевірте шлях заявки від сайту до інбоксу й сповіщення.

Коротка відповідь. Якщо форма показує успіх, але листа немає, перевірте три етапи: чи надіслано запит із сайту, чи збережено заявку, чи ввімкнений поштовий канал із підтвердженим отримувачем. У Formgong також перевірте спам, підтвердження email та відповідь Turnstile. success: true підтверджує приймання запиту, а не потрапляння листа у вашу скриньку.

Formgong·

Ваша форма Ім’я Email Повідомлення Надіслати Formgong Telegram Нова заявка Ім’я · Email Відкрити в інбоксі + сповіщення на пошту
Дизайн — на вашому сайті. Приймання заявок та сповіщення — у Formgong.

Три різні результати, які не варто плутати

«Успішно» на сайті, запис у базі та лист у пошті — різні події. Повідомлення може бути намальоване JavaScript ще до відповіді сервера. Сервер може прийняти запит, а сповіщення — чекати перевірки адреси або бути відфільтрованим поштою.

Перевіряйте цей шлях послідовно: запит із браузера, збережену заявку, потім канал сповіщень. Зробіть одну впізнавану тестову заявку на опублікованому сайті. Це дасть спільний орієнтир для всіх перевірок.

Нижче конкретні кроки для Formgong. Принцип працює й для інших сервісів, але назви помилок та налаштування потрібно звіряти з їхньою документацією.

1. Чи сайт справді надсилає запит

Відкрийте інструменти розробника браузера, вкладку Network («Мережа»), і надішліть форму. Знайдіть POST на https://formgong.com/submit. Перевірте адресу, поле access_key, передані дані та відповідь.

Якщо запиту немає, проблема в обробнику форми або кнопці: сам стан «дякуємо» нічого не надсилає. Якщо адреса інша, перевірте, який сервіс насправді обробляє форму. Для звичайного HTML дивіться action і method; для JavaScript — URL у fetch.

Для JSON-запиту вкажіть Accept: application/json. Нативна HTML-форма після приймання отримує перехід, а не JSON. Не обробляйте ці два варіанти як однакову відповідь.

2. Показуйте успіх після перевірки відповіді

Для JavaScript перевірте HTTP-статус і result.success === true. Саме завершення fetch не означає успіх: він може повернути відповідь із помилкою. Нижче функція для обробника форми; замініть ключ і обгорніть виклик у try/catch.

JavaScript
// Call from your form's submit handler inside try/catch.
// Keep the entered fields when the request fails.
async function sendContactForm(form) {
  const response = await fetch("https://formgong.com/submit", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json",
    },
    body: JSON.stringify({
      ...Object.fromEntries(new FormData(form)),
      access_key: "fk_your_access_key",
    }),
  });
  const result = await response.json();
  if (!response.ok || result.success !== true) {
    throw new Error(result.message || "Submission failed");
  }
  // Accepted by Formgong; this is not email-delivery confirmation.
  return result.id;
}

Які помилки шукати у відповіді

unknown_access_key
Ключ не належить жодній формі. Скопіюйте його заново з «Підключення сайту».
origin_not_allowed
Домен не проходить налаштований список дозволених доменів. Перевірте реальний і preview-домени.
turnstile_missing / turnstile_failed
Відсутній або неприйнятний токен Turnstile. Оновіть код віджета та отримайте свіжий токен.
rate_limited / limit_exceeded
Перевищено короткочасне обмеження запитів або місячний ліміт. Повторювати багато запитів поспіль не допоможе.

При помилці залишайте поля заповненими та показуйте зрозуміле повідомлення. Вимикайте кнопку на час запиту, а після завершення повертайте її в робочий стан.

3. Перевірте запис і статус спаму

Відкрийте «Заявки» потрібної форми в Formgong і знайдіть тестове повідомлення. Перевірте також спам. Якщо ви випадково заповнили приховане botcheck, запит може виглядати успішним, але повідомлення буде позначене як спам і не надіслане.

Перевірте, чи ключ із сайту належить формі, яку ви відкрили. Якщо ввімкнене AI-оцінювання з утриманням спаму, перевірте і цей статус. Приймання запиту не обіцяє доставку кожного повідомлення незалежно від захисту.

4. Перевірте підтвердження, канал і отримувачів

  1. Підтвердьте пошту власника акаунта. До підтвердження нормальні заявки можуть бути утримані.
  2. У налаштуваннях email цієї форми перевірте, що сповіщення ввімкнені.
  3. Перевірте адресу потрібного отримувача та її підтвердження. Додана, але непідтверджена адреса ще не є адресою доставки.
  4. Перевірте папки «Спам», «Усі листи», фільтри й переадресацію пошти.

Якщо заявка є в інбоксі та Telegram, це допомагає звузити пошук до поштового каналу. Це ще не доказ, що лист потрапив у поштову скриньку отримувача. Автоматична відповідь відвідувачу також є окремим листом із власними налаштуваннями.

Якщо проблема виникла після ввімкнення Turnstile

Формі потрібно передати cf-turnstile-response, а сервісу — перевірити його. Віджет сам по собі недостатній. Turnstile-токен одноразовий і має строк дії: для повторної спроби може знадобитися оновлення віджета.

Скопіюйте актуальний приклад із «Підключення сайту» після зміни налаштувань захисту. Перевірте саме опублікований домен. Не вставляйте secret key Turnstile в браузер; у коді сайту використовують site key.

Що зібрати, якщо причина лишилася незрозумілою

Збережіть URL сторінки форми, час тесту, HTTP-статус та код відповіді. Якщо відповідь містить ID заявки, збережіть і його. Не публікуйте дані реального клієнта, токени чи секретні ключі у зверненні.

Для додаткового каналу скористайтеся інструкцією Telegram. Якщо форма ще не підключена, почніть із робочого HTML-прикладу або налаштування Lovable. Після виправлення повторіть тест і перевірте весь шлях до сповіщення.

Питання та відповіді

Чи success: true означає, що лист доставлено?

Ні. Це відповідь про приймання запиту Formgong. Доставка сповіщення відбувається окремо; спам або утримання до підтвердження пошти також впливають на неї.

Чому заявка є в Telegram, але не на пошті?

Це окремі канали. Перевірте ввімкнення поштових сповіщень, підтвердження потрібного отримувача та папку «Спам» у його пошті.

Чому заповнений botcheck не показує помилку?

Це honeypot для ботів. Запит може виглядати успішним, але зберігатися як спам без сповіщень. Людина має залишати це приховане поле порожнім.

Що робити після помилки Turnstile?

Перевірте актуальний site key і передачу cf-turnstile-response. Отримайте свіжий токен для повторної спроби: токени одноразові та мають строк дії.

Джерела та документація

Офіційні джерела для цієї інструкції: MDN: Fetch API, Cloudflare: Turnstile token validation. Документація Formgong, де зберігаються дані.

Завантажити текст статті (Markdown)
← До блогу