Повернутися до блогу
Розробка Опубліковано 16.09.2026 Час читання: 1 хв

Коли контактна форма каже «Дякуємо», але лист не надходить

Контактна форма може зламатися без видимої помилки: відвідувач отримує привітне підтвердження, а Ви — нічого. Чому це трапляється та як вчасно помітити.

Уявіть невелику фізіотерапевтичну практику. На її сайті є контактна форма, і вона працює — принаймні так здається. Відвідувачі заповнюють її, натискають «Надіслати» й бачать привітне «Дякуємо, ми незабаром зв’яжемося з Вами». Чого ніхто не бачить: повідомлення вже якийсь час не надходять до скриньки практики. Немає помилки, повідомлення про недоставку ні в чиїй скриньці, жодного червоного сигналу. Форма відмовляє мовчки.

Чому ніхто не помічає

Сторінка «Дякуємо» у формі зазвичай означає лише одне: сайт передав повідомлення далі. Чи прийме його поштовий сервер, віднесе до спаму або відхилить дорогою, з’ясовується пізніше, поза полем зору форми. Наприклад, функція PHP mail() повідомляє про успіх, щойно локальна система прийме повідомлення для доставки, а не коли воно комусь надійде. Тож відвідувач отримує підтвердження й іде далі. Власник тим часом бачить порожню скриньку й припускає, що місяць просто тихий. Менша кількість звернень сама по собі рідко тривожить: відпустки, погода, економіка — завжди є пояснення, що здається правдоподібнішим за «форма зламалася».

Умовна хронологія
  1. День 0
    Уночі виконується звичайне оновлення плагіна. Сайт виглядає точно як раніше.
  2. День 1
    Надходить останнє повідомлення. Ніхто не знає, що воно останнє.
  3. Дні 2–13
    Відвідувачі продовжують надсилати форму й бачити «Дякуємо». До скриньки нічого не надходить.
  4. День 14
    Хтось телефонує й трохи роздратовано запитує, чому на його звернення ніхто так і не відповів.
  5. День 15
    Причину знаходять за годину. Повідомлення за ці два тижні втрачені, якщо тільки форма не зберігала ще й копію.
Не справжній випадок, але дуже типовий розвиток подій.

Типові причини

  • Змінився пароль SMTP або поштовий провайдер. Форма продовжує входити зі старими обліковими даними, а поштовий сервер відмовляє — мовчки, наскільки може судити відвідувач.
  • PHP mail() без автентифікації. Вебсервер надсилає пошту безпосередньо, не входячи на належний поштовий сервер. Багато серверів одержувачів вважає такі листи підозрілими: вони потрапляють до спаму або відхиляються відразу.
  • SPF, DKIM і DMARC не узгоджені. Багато форм ставить адресу відвідувача в поле From. Тоді повідомлення стверджує, що походить, скажімо, з адреси gmail.com, але надсилається Вашим вебсервером — саме це DMARC і покликаний зупиняти.
  • Оновлення плагіна або зміна теми ламає форму чи її CAPTCHA. Змінений шаблон втрачає поле, скрипт більше не завантажується або віджет CAPTCHA з’являється без скрипта — і кожне надсилання не проходить валідацію.
  • Скринька одержувача переповнена. Поштовий сервер відмовляється приймати нові повідомлення, а повідомлення про недоставку надходить на адресу, яку ніхто не читає.
  • Банер cookie блокує скрипт форми. Якщо інструмент згоди класифікує CAPTCHA або скрипт форми як «маркетинг», відвідувачі, які відхилили cookie, можуть отримати форму, яку неможливо надіслати або надсилання якої відхиляються через відсутність токена.
  • Сертифікат TLS або домен прострочено. Відвідувачі бачать попередження браузера й ідуть, або поштовий сервер більше не доступний безпечно. Якщо строк домену скриньки одержувача спливає, пошта до неї просто перестає надходити.
  • Шар кешування надає застарілі сторінки. Кеш цілої сторінки може видати форму з простроченим токеном безпеки (одноразовим значенням або токеном CSRF). Сервер відхиляє надсилання, а залежно від налаштування відвідувач не бачить чіткої помилки.

Пастка адреси From

Третя причина варта докладнішого розгляду, оскільки багато налаштувань форм містить її за замовчуванням. DMARC перевіряє, чи збігається домен у видимій адресі From з доменом, за який поручаються SPF або DKIM. Якщо форма надсилає повідомлення «від» адреси відвідувача, Ваш сервер не має дозволу надсилати від цього домену, тож перевірка не вдається. Залежно від політики DMARC домену відвідувача та Вашого власного поштового провайдера повідомлення потрапляє до спаму або відхиляється. Виправлення просте: надсилайте з адреси на власному домені, а адресу відвідувача ставте в Reply-To. Натискання «Відповісти» все одно спрямовує відповідь відвідувачу.

Два способи надіслати те саме повідомлення з форми
Ненадійно
  • From: адреса відвідувача
  • Без Reply-To
  • PHP mail() прямо з вебсервера
  • Без SPF, DKIM або DMARC для домену відправника
  • Повідомлення існує лише як електронний лист
Надійно
  • From: адреса на Вашому власному домені, наприклад form@yourdomain
  • Reply-To: адреса відвідувача
  • SMTP з автентифікацією або сервіс надсилання
  • SPF, DKIM і DMARC налаштовано й узгоджено
  • Копія також зберігається в базі даних
Правий стовпець майже не потребує більше роботи — переважно це налаштування.

Що робити

  1. 1Регулярно надсилайте тестове повідомлення через власну форму — щонайменше щомісяця та завжди після оновлень, змін теми або поштових налаштувань. Чітко позначайте його як тест, щоб ніхто не відповідав.
  2. 2Знайте свій звичайний ритм. Якщо форма зазвичай приносить кілька повідомлень на тиждень, два тижні тиші — привід перевірити, а не просто тихий місяць.
  3. 3Надсилайте через SMTP з автентифікацією — через поштового провайдера або спеціальний сервіс надсилання, — а не покладайтеся на PHP mail().
  4. 4Використовуйте власний домен у From, а адресу відвідувача — у Reply-To. Потім налаштуйте SPF, DKIM і DMARC для цього домену, щоб повідомлення проходили перевірки.
  5. 5Зберігайте копію кожного надсилання в базі даних. Багато плагінів форм пропонує це, іноді як доповнення. Якщо пошта не спрацює, звернення залишаться.
  6. 6Перевіряйте форму після кожного оновлення плагіна — включно з CAPTCHA, а також із відхиленими cookie.

Такі перевірки легко забути, тому варто їх автоматизувати. З обліковим записом і підтвердженим доменом formexposed може виконати чітко позначене тестове надсилання й перевірити, чи воно справді надходить (перевірка доставки, лише після добровільного ввімкнення). Він також виявляє тишу — коли форма, що зазвичай отримує повідомлення, раптом не отримує жодного — і перевіряє SPF, DKIM та DMARC листів-повідомлень, а також строки дії сертифіката TLS і домену. Ви отримуєте сповіщення лише за зміни.

Якщо Вам потрібен лише перший огляд: безкоштовна перевірка на formexposed.com не потребує облікового запису й нічого не надсилає. Серед іншого вона показує, чи є CAPTCHA, яка не працює: віджет без скрипта, загальнодоступний тестовий ключ, помилки браузера — один із непомітних способів, якими форма перестає працювати. Чи справді повідомлення надходять, може підтвердити лише справжнє тестове повідомлення, тож надішліть його сьогодні.