
🔧 Contact Form 7: налаштовуємо надсилання листів і виправляємо помилки доставки
Як Contact Form 7 надсилає листи і чому вони не доходять
Contact Form 7 використовують на понад 5 мільйонах сайтів — це найпопулярніший плагін форм для WordPress. Налаштувати форму з трьох полів можна за пару хвилин, але коли листи перестають надходити, починається головний біль: власник сайту втрачає заявки, не розуміє причин і лізе в нетрі форумів.
Проблема майже ніколи не в самому плагіні. CF7 передає лист функції wp_mail(), а та, вашому серверу. Далі сценарій залежить від хостингу, налаштувань PHP, активних плагінів і десятка інших факторів. Один вимкнений REST API або неправильне поле «Від кого», і форма працює, а листів немає.
Ми зібрали покрокове налаштування поштового шаблону CF7 і розібрали всі типові причини відмови, з конкретними рішеннями, які перевірені на десятках сайтів.
💡 Швидкий огляд:
- Заповнюємо поля Кому, Від кого і Тема в налаштуваннях листа
- Копіюємо готовий HTML-шаблон тіла листа
- Перевіряємо основні причини, чому листи не йдуть
- Налаштовуємо SMTP для стабільної доставки
Налаштування поштового шаблону: покроково
Відкриваємо форму в адмінці: Контактна форма → вибрати форму → вкладка «Лист». Тут CF7 збирає лист із трьох частин: заголовків, теми та тіла. Помилка в будь-якому полі ламає доставку, пройдемося по кожному.
Кому, Від кого і Тема
Кому, ваша робоча email-адреса, на яку надходять заявки. Наприклад, info@ваш-домен.com або Gmail-адреса, якщо ви використовуєте SMTP-плагін.
Від кого, тут головне правило: домен відправника має збігатися з доменом сайту. Більшість хостерів відхиляють листи, де в полі «Від кого» стоїть [email protected], а сайт висить на mysite.com. Ставте site@ваш-домен.com, сама скринька може не існувати — це нормально. Поштовий сервер перевіряє саме домен, а не реальність адреси.
Тема, використовуйте макроси CF7 для підстановки даних:
1 [_site_title] — Форма «Контактная форма»
[_site_title] автоматично підставить назву сайту з налаштувань WordPress. Так ви одразу бачите, з якого проєкту надійшла заявка.
Додаткові заголовки, Reply-to не чіпаємо, CF7 сам виставить email із поля форми, яке ви вкажете в тілі листа.
Тіло листа: HTML-шаблон
Стандартний лист CF7 — це голий текст із мітками полів. Виглядає дешево і нечитабельно. Ось шаблон, який ми використовуємо на всіх проєктах, із логотипом, нормальним верстанням і посиланнями на email/телефон клієнта:
1 <img src="https://ВАШ_ДОМЕН.COM/wp-content/uploads/2024/logo-150x150.png" 2 style="max-width: 150px !important;"> 3 4 <h3>Пользователь заполнил следующие данные:</h3> 5 6 <p><b>Имя:</b> [text-59]</p> 7 <p><b>E-mail:</b> <a href="mailto:[Email]">[Email]</a></p> 8 <p><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 9 <p><b>Сообщение:</b> [textarea-102]</p> 10 11 <p>Сообщение отправлено с сайта [_site_title] ([_site_url])</p>
Що тут важливо: логотип має бути квадратним і компактним (близько 150 px по кожній стороні), інакше в поштових клієнтах він поїде. Макроси в квадратних дужках ([text-59], [Email]) — це теги полів вашої форми; підставте свої назви з вкладки «Форма». І обов’язково позначте галочку «Використовувати HTML-формат листа» під редактором шаблону, без неї HTML-теги прийдуть як plain text.

6 Причин, чому листи не йдуть, і що з цим робити
1. Неправильне поле «Від кого»
Найчастіша помилка: у «Від кого» вказано email клієнта з форми, [Email]. Сервер отримувача бачить лист із доменом gmail.com, надісланий із вашого хостингу, і блокує його як спуфінг. Рішення: у «Від кого» завжди має бути адреса на домені сайту. Email клієнта ставте в Reply-to, через додатковий заголовок:
1 Reply-To: [Email]
2. Конфлікт плагінів безпеки
Плагіни на кшталт Wordfence, iThemes Security (тепер Solid Security) та All-In-One Security можуть блокувати вихідні HTTP-запити WordPress, зокрема надсилання листів. Діагностика проста: вимкніть усі плагіни, крім Contact Form 7, і протестуйте форму. Якщо запрацювало, вмикайте плагіни по одному та виловлюйте винуватця.
3. Вимкнений REST API
Contact Form 7 використовує WordPress REST API для надсилання форм через AJAX. Плагіни оптимізації, як-от Clearfy Cache (примітка: з жовтня 2025 проєкт перейшов під крило Super Page Cache і більше не розвивається окремо; поточним користувачам рекомендують мігрувати на Super Page Cache), можуть вимикати REST API для пришвидшення сайту. Перевірте налаштування вашого оптимізатора: перемикач REST API має бути в положенні «Вимк», тобто REST API увімкнений і працює.
4. Хостинг блокує функцію mail()
На дешевих хостингах PHP-функція mail() часто вимкнена або урізана. Contact Form 7 за замовчуванням надсилає листи саме через неї. Напишіть у підтримку хостингу та запитайте, чи дозволена mail() на вашому тарифі. Якщо ні, переходьте на SMTP (розділ нижче) — це вирішує проблему радикально.
5. Листи потрапляють у спам
Навіть якщо лист надіслано, Gmail або пошта хостингу може покласти його в спам. Причини: відсутність SPF/DKIM-записів у домену, «підозрілий» заголовок «Від кого», HTML без текстової частини. Рішення: SMTP-плагін із надсиланням через зовнішній сервіс (Gmail API, Mailgun, SendGrid). Вони підписують кожен лист DKIM-підписом і використовують авторитетні SMTP-сервери, доставність стає практично стовідсотковою.
6. Чутливість до версії PHP і WordPress
CF7 активно оновлюється (звірте актуальну версію на wordpress.org, на середину 2026 це гілка 6.x, працює на PHP 7.4 і вище). Якщо ваш хостинг крутить древній PHP 5.6 або, навпаки, ви увімкнули експериментальний PHP 8.4 без перевірки сумісності, листи можуть тихо падати. Тримайте PHP 8.1-8.2, це золота середина.
Налаштування SMTP: вирішуємо проблему доставки раз і назавжди
SMTP — це протокол, який передає лист не через функцію mail() вашого сервера, а через повноцінний поштовий сервіс. Для WordPress є десяток плагінів, які перехоплюють wp_mail() і маршрутизують листи через зовнішній SMTP-сервер.
Що обрати:
- Gmail API, безкоштовно до 500 листів на добу через Google Workspace або особистий Gmail. Плюс: відмінна доставність. Мінус: потрібно створювати проєкт у Google Cloud Console та отримувати OAuth-ключі.
- Brevo (колишній Sendinblue), 300 листів на добу безкоштовно, простий SMTP із логіном і паролем. Не потребує OAuth.
- Mailgun, 100 листів на добу безкоштовно, API-ключ і готово. Для розробників.
Установіть будь-який SMTP-плагін (WP Mail SMTP, Post SMTP, FluentSMTP, усі безкоштовні в репозиторії WordPress), введіть дані від провайдера, і функція mail() вам більше не потрібна. CF7 продовжить працювати як зазвичай, але листи підуть надійним каналом.
CSS і кастомний шрифт у листах CF7
Якщо ви надсилаєте не просто заявки, а, наприклад, підтвердження замовлення з короткими деталями товару, має сенс стилізувати лист. CSS в email працює через inline-стилі (style=""), зовнішні таблиці стилів поштові клієнти ігнорують. Ось приклад стилізованого шаблону:
1 <img src="https://ВАШ_ДОМЕН.COM/logo.png" 2 style="max-width: 150px !important;"> 3 4 <h2 style="font-family: Arial, sans-serif; color: #333;"> 5 Пользователь выбрал товар: 6 </h2> 7 <h2 style="font-family: Arial, sans-serif;">[hidden-120]</h2> 8 9 <hr style="border: 1px solid #eee;"> 10 11 <h3 style="font-family: Arial, sans-serif; color: #555;"> 12 Пользователь заполнил следующие данные: 13 </h3> 14 15 <p style="font-size: 14px;"><b>Имя:</b> [text-59]</p> 16 <p style="font-size: 14px;"><b>Телефон:</b> <a href="tel:[tel-116]">[tel-116]</a></p> 17 <p style="font-size: 14px;"><b>Email:</b> [Email]</p> 18 19 <p style="color: #999; font-size: 12px;"> 20 Сообщение отправлено с сайта <b>[_site_title] ([_site_url])</b> 21 </p>
Правила ті самі: логотип, квадрат, галочка HTML-формату, увімкнена, макроси, свої. Кастомні шрифти з Google Fonts у пошті не працюють, ставте системні стеки (Arial, Helvetica, sans-serif).
⁉️🤔 Часті запитання
Чому CF7 показує «Повідомлення надіслано», а листа немає?
CF7 відповідає за збір даних і передачу їх WordPress, а не за фінальну доставку. Відповідь «успішно» означає, що AJAX-запит відпрацював без помилок. Саме надсилання листа відбувається у фоновому режимі через
wp_mail(), і якщо на цьому кроці щось пішло не так, хостинг заблокувавmail(), адреса «Від кого» не пройшла перевірку, лист потрапив у спам, CF7 не покаже помилку. Тому після налаштування завжди тестуйте форму на реальну поштову скриньку.
Чи обов’язково використовувати SMTP-плагін?
Не обов’язково, але наполегливо рекомендується. Без SMTP ваші листи надсилає PHP-функція
mail(), вона не автентифікує відправника, не підписує DKIM і часто блокується спам-фільтрами. SMTP-плагін додає автентифікацію та радикально підвищує доставність. На практиці ми бачили десятки сайтів, де форма «працювала», але листи потрапляли в спам або не доходили взагалі. Після ввімкнення SMTP через Post SMTP або FluentSMTP проблема зникала за 5 хвилин.
Що робити, якщо CF7 перестав працювати після оновлення WordPress?
Спочатку перевірте версію PHP, CF7 вимагає PHP 7.4 або вище (звіртеся з офіційною документацією). Потім вимкніть плагіни кешування та оптимізації: вони часто ламають REST API під час оновлення ядра. Якщо не допомогло, тимчасово перемкніться на стандартну тему WordPress і протестуйте форму. У більшості випадків це конфлікт із плагіном кешування або безпеки, який ще не адаптувався під нову версію ядра.
Як перевірити, що REST API працює?
Відкрийте у браузері
https://ваш-сайт.com/wp-json/, якщо бачите JSON із переліком доступних кінцевих точок, REST API живий. Якщо отримуєте 404 або білий екран, REST API вимкнено плагіном оптимізації або security-плагіном. Це найшвидший спосіб діагностики: кінцева точка віддає JSON, CF7 має все необхідне для роботи. Шукайте налаштування REST API у плагінах на кшталт Clearfy, Perfmatters, WP-Optimize або в security-рішеннях на кшталт Wordfence.
Чи можна надсилати листи з вкладеннями через CF7?
Так, CF7 підтримує завантаження файлів через поле
[file]. У налаштуваннях листа, у полі «Вкладення», вкажіть макрос цього поля, і файл прикріпиться до листа. Більшість хостерів обмежують розмір вкладень черезupload_max_filesizeу PHP (зазвичай 2-8 МБ). Для множинного завантаження використовуйте окремі поля. Якщо листи з вкладеннями не надходять при робочій формі без вкладень, проблема в ліміті розміру, зменшіть файли або попросіть хостера збільшити ліміт.
Що ставити у 2026 році: CF7 + SMTP чи альтернативи?
Contact Form 7, як і раніше, найкращий безплатний плагін форм для WordPress, якщо вам потрібна кастомізація і ви не боїтеся зазирнути в налаштування. Але проблема з надсиланням листів вбудована в саму архітектуру WordPress: функція mail() ненадійна за визначенням.
Тому формула 2026 року така: Contact Form 7 + SMTP-плагін. Встановіть FluentSMTP (безплатний, легкий, без реклами в адмінці) або Post SMTP і налаштуйте надсилання через Gmail API, Brevo або Mailgun. Ці два компоненти разом дають: необмежену кастомізацію форм + доставність на рівні корпоративних сервісів. Ціна, 0 $, час налаштування, 10 хвилин.
Якщо ж ви хочете форму «з коробки», де все працює одразу й без зайвих рухів, придивіться до WPForms або Ninja Forms. Вони платні, але SMTP-надсилання у них вшито за замовчуванням через власні сервери. Вибір за вами: гнучкість CF7 чи простота комерційних рішень.



