Contact Form 7 не срабатывает отправка после изменения домена или SSL: как найти причину и исправить

Сценарий типичный: форма на сайте визуально отправляется, но письмо не приходит, статус в браузере может быть успешным, а после переезда на новый домен или включения HTTPS всё ломается. В Contact Form 7 это часто связано не с самой формой, а с окружением: адресами отправителя, настройками почты, конфликтом с кэшем, блокировкой REST API или тем, как сервер обрабатывает wp_mail().

Ниже — практический разбор именно для случая, когда проблема появилась после смены домена, включения SSL или переноса сайта на другой хостинг. Если у вас уже есть дубли отправки, пустые заявки или проблемы с вложениями, это другая история — здесь фокус на цепочке доставки после изменения окружения.

Как понять, что сломалось именно после переезда или SSL

Сначала проверьте, не совпадает ли проблема с одним из этих событий:

  • сменили домен и не обновили адреса в настройках формы;
  • включили HTTPS, но сайт или почта продолжают использовать старые HTTP-адреса;
  • перенесли сайт на другой сервер, где mail() отключён или ограничен;
  • включили кэширование страницы с формой и оно ломает nonce или AJAX-запрос;
  • поставили плагин безопасности, который режет REST API или admin-ajax;
  • в теме или плагине есть фильтр, который меняет заголовки письма.

Самый полезный признак — форма отправляется только на части страниц, в админке всё выглядит нормально, а в консоли браузера или в логах сервера видны ошибки запроса. Если письмо не уходит вообще, сначала исключайте серверную почту и только потом копайте в разметку формы.

Диагностика: что проверить до правки кода

1. Адреса в настройках Contact Form 7

После смены домена часто остаются старые адреса в полях From, Reply-To или в тексте письма. Это не всегда ломает отправку, но может ухудшать доставляемость. Для почтовых систем безопаснее, когда From использует адрес на вашем домене, а email пользователя уходит в Reply-To.

2. Проверка REST API и AJAX

Contact Form 7 использует AJAX-отправку. Если на сайте включён жёсткий кэш, защита от ботов или ограничение REST API, запрос может не доходить. Откройте DevTools в браузере, отправьте форму и посмотрите вкладку Network. Нужен успешный ответ без 403, 404 и 500.

3. Логи почты на сервере

Если есть доступ к логам, проверьте, не отклоняет ли сервер исходящую почту. На общем хостинге это часто выглядит как «письмо отправлено», но фактически оно не покидает сервер или попадает в спам из-за неверного From.

4. Конфликт с кэшем

Если форма на кэшируемой странице, а после отправки вы видите старое состояние или ошибку nonce, исключите страницу с формой из кэша. Это особенно важно для страниц, где форма встроена в модальное окно или подгружается через шаблон темы.

Пошаговое решение

Шаг 1. Приведите адрес отправителя к домену сайта

В настройках письма используйте адрес на текущем домене. Пример безопасной схемы:

From: Site Name <no-reply@your-domain.ru>
Reply-To: [your-email]

Так серверу проще принять письмо, а ответы пользователя будут уходить на его реальный адрес. Если вы оставите From вида gmail.com или старого домена, часть почтовых серверов начнёт отклонять сообщение или отправлять его в спам.

Шаг 2. Проверьте, не нужен ли SMTP

После переноса на новый хостинг стандартная отправка через wp_mail() может работать нестабильно. В этом случае подключите SMTP-плагин и отправляйте почту через нормальный почтовый сервер. Это не «костыль», а стандартная практика для сайтов, где заявки критичны.

Важно: не ставьте два SMTP-плагина одновременно и не дублируйте настройки в нескольких местах. Иначе получите конфликт заголовков или скрытые ошибки авторизации.

Шаг 3. Исключите страницу с формой из кэша

Если у вас включён серверный кэш, плагин кэша или CDN, добавьте страницу с формой в исключения. Для Contact Form 7 это особенно актуально, когда форма встроена в лендинг и после отправки должна показывать актуальный статус.

  • исключите URL страницы с формой из HTML-кэша;
  • не кэшируйте ответ AJAX-запроса формы;
  • проверьте, не оптимизирует ли плагин JS так, что ломается скрипт CF7;
  • очистите кэш после изменения настроек.

Шаг 4. Проверьте, не блокирует ли сайт REST API

Некоторые плагины безопасности отключают REST API целиком или ограничивают его для гостей. Если после этого форма перестала отправляться, временно отключите такую защиту и проверьте результат. Если проблема исчезла, настройте исключение точечно, а не выключайте защиту полностью.

Шаг 5. Если нужно, добавьте фильтр для заголовков письма

Когда форма отправляет письмо, но оно не доходит из-за заголовков, можно явно задать адрес отправителя через фильтр. Делать это стоит аккуратно, без подмены пользовательского email в From.

<?php
add_filter( 'wpcf7_mail_components', function( $components, $contact_form, $mail ) {
	if ( empty( $components['headers'] ) ) {
		$components['headers'] = '';
	}

	$components['headers'] .= "\nReply-To: no-reply@your-domain.ru";

	return $components;
}, 10, 3 );

Этот вариант полезен, если почтовый сервер требует явного Reply-To или если тема/плагин перезаписывает заголовки. Но не используйте его как замену нормальной настройке SMTP.

Когда проблема в теме или плагине

Если форма работает на стандартной теме, но ломается в вашей, проверьте шаблон страницы и подключаемые скрипты. Частая ошибка — тема отключает wp_footer() или wp_head(), из-за чего скрипты Contact Form 7 не подгружаются полностью.

Ещё один частый случай — форма вставлена в кастомный блок, который рендерится только после клика. Тогда скрипт инициализации не успевает отработать, и отправка выглядит сломанной. В таком случае сначала проверьте консоль браузера, потом уже правьте шаблон.

Как проверить, что всё заработало

После правок не ограничивайтесь одной тестовой отправкой. Проверьте цепочку целиком:

  1. откройте страницу с формой в режиме инкогнито;
  2. отправьте тестовую заявку с реальным адресом;
  3. посмотрите ответ формы в интерфейсе — должен быть успешный статус;
  4. проверьте, пришло ли письмо в основной ящик и в спам;
  5. если используется SMTP, посмотрите журнал отправки в плагине или на стороне почтового сервиса;
  6. обновите страницу и убедитесь, что кэш не возвращает старое состояние формы.

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

Частые ошибки и как их исправить

ОшибкаПочему это ломает отправкуЧто делать
From = email пользователяПочтовый сервер может отклонить письмо как подмену отправителяИспользуйте адрес на своём домене, а email пользователя перенесите в Reply-To
Страница с формой кэшируетсяAJAX-ответ или nonce устареваютИсключите страницу и очистите кэш
REST API заблокированCF7 не может завершить запросПроверьте плагины безопасности и правила сервера
Старый домен в настройках письмаПисьмо выглядит подозрительно для фильтровОбновите адреса и заголовки под текущий домен
Нет SMTP на новом хостингеwp_mail() работает нестабильноПодключите SMTP и проверьте авторизацию

Практика по безопасности и производительности

Если вы уже трогаете отправку формы, заодно проверьте, не тащите ли на страницу лишние скрипты. Contact Form 7 сам по себе не тяжёлый, но проблемы часто создают сторонние виджеты, попапы и агрессивная оптимизация JS. Не объединяйте всё подряд в один минифицированный файл, если после этого ломается отправка.

Для безопасности держите почтовый адрес отправителя внутри домена, а для производительности исключайте форму из агрессивного кэша только там, где это действительно нужно. Не отключайте защиту сайта целиком ради одной формы: точечное исключение почти всегда лучше.

Если вы регулярно сталкиваетесь с дублями, спамом и проблемами с формами, имеет смысл навести порядок в технических настройках сайта в целом. Для этого часто используют инструменты вроде Clearfy Pro, но только если вам действительно нужен набор для чистки дублей, отключения лишнего и технической оптимизации: https://wpshop.ru/plugins/clearfy.

Короткий чек-лист перед повторным тестом

  • адрес From на текущем домене;
  • Reply-To содержит email пользователя;
  • страница с формой исключена из кэша;
  • REST API и AJAX не блокируются;
  • SMTP настроен и протестирован;
  • в консоли браузера нет ошибок при отправке;
  • письмо проверено не только в Inbox, но и в спаме.

Если после этого форма всё ещё не отправляет заявки, проблема уже не в Contact Form 7 как таковом, а в конкретной связке темы, сервера и почтового провайдера. В этом случае быстрее идти от логов: браузер, сервер, почта, только потом код.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Contact Form 7: как запретить отправку формы без согласия на обработку данных
31.08.2026
Contact Form 7 не показывает сообщение после отправки в модальном окне: как исправить отображение и закрытие формы
06.09.2026
Как запретить отправку Contact Form 7 на один и тот же email дважды
03.09.2026
Contact Form 7 закрывает форму после отправки и сбрасывает поля: как настроить поведение без перезагрузки
12.09.2026
Contact Form 7 не показывает капчу и блокирует отправку: как исправить reCAPTCHA, hCaptcha и антиспам
09.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше