Краткий ответ: если AI сделал сайт, но форма не отправляет заявки, чаще всего проблема не в дизайне формы, а в отсутствии нормального обработчика: нет PHP-отправки, не настроен SMTP, неправильно указан AJAX URL, сломан JavaScript, письмо уходит в спам, reCAPTCHA блокирует запрос или WordPress возвращает ошибку через admin-ajax.php.
AI может быстро сверстать красивую форму: имя, телефон, email, комментарий, кнопка “Отправить”. Но сама HTML-форма не гарантирует отправку заявки. Нужна связка: фронтенд, JavaScript, PHP-обработчик, проверка данных, защита от спама, отправка письма, логирование и понятный ответ пользователю.
Поэтому частая ситуация выглядит так: сайт внешне готов, кнопка нажимается, сообщение “Спасибо” появляется, а заявка на почту, в CRM или Telegram не приходит. Это типичный разрыв между AI-прототипом и рабочим проектом. Похожая логика подробно разобрана в статье как довести MVP после ChatGPT / Cursor до рабочего проекта.
Главная причина — AI часто делает видимую часть формы, но не доводит цепочку отправки до конца. Он может сгенерировать HTML и CSS, добавить кнопку, показать alert после клика, но не создать надёжный серверный обработчик.
Рабочая форма должна пройти несколько этапов:
wp_mail() или SMTP;AI часто пропускает один или несколько этапов. В результате форма “как будто работает”, но заявка теряется.
| Проблема | Что происходит | Где проверять |
|---|---|---|
| Нет backend-обработчика | Кнопка нажимается, но данные никуда не отправляются | HTML, JS, Network в браузере |
| Неправильный AJAX URL | Запрос уходит не туда или получает 404/400 | admin-ajax.php, DevTools |
| Нет action в AJAX | WordPress не понимает, какой обработчик запускать | POST-параметры запроса |
| PHP-ошибка | Форма возвращает 500 или пустой ответ | debug.log, логи хостинга |
| Не настроен SMTP | WordPress “отправил”, но письмо не дошло | SMTP-плагин, email logs |
| Плохой From email | Почтовый сервер отклоняет письмо или отправляет в спам | настройки формы, SMTP, DNS |
| reCAPTCHA блокирует форму | Запрос не проходит антиспам | консоль браузера, настройки ключей |
| Кеш ломает nonce | AJAX получает 403 или проверка безопасности не проходит | кеш-плагин, HTML страницы |
| Конфликт плагинов | JS или PHP-обработчик перехватывается другим кодом | консоль, отключение на staging |
Диагностику нужно начинать не с замены формы, а с проверки всей цепочки: браузер → JavaScript → PHP → WordPress → почта → получатель.
Откройте сайт в браузере, нажмите F12, перейдите во вкладку Network и отправьте форму.
Смотрите:
action, если используется WordPress AJAX.Если в консоли есть JavaScript-ошибка, форма может не отправляться вообще. Часто AI-код ломается из-за неправильного селектора, отсутствующей библиотеки, конфликта jQuery или ошибки валидации.
Частые признаки:
Uncaught ReferenceError;jQuery is not defined;Cannot read properties of null;Важно: не показывайте ошибки посетителям. Логирование можно включить временно для диагностики, но вывод ошибок на экран лучше держать выключенным.
Куда вставлять: wp-config.php, выше строки /* That's all, stop editing! */.
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
После тестовой отправки проверьте файл:
wp-content/debug.log
Если там есть fatal error, warning, undefined index, ошибка SMTP, ошибка плагина или проблема с функцией wp_mail(), сначала исправляется она.
Форма может успешно отправить данные в WordPress, но письмо всё равно не дойдёт. Это уже не ошибка HTML-формы, а проблема почтовой доставки.
Проверьте:
Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.
Решение зависит от того, где именно обрывается цепочка. Не нужно сразу переписывать сайт. Нужно найти точку поломки.
type;submit.action;wp_ajax_...;wp_ajax_nopriv_....debug.log;Если проблема не только в почте, а в том, что AI-сайт в целом нестабилен, лучше сначала привести проект в рабочее состояние. Для таких случаев подходит доработка проекта после вайб-кодинга: проверка формы, PHP, WordPress, AJAX, SMTP, безопасности и логики отправки заявок.
Важно: код ниже влияет на отправку заявок, AJAX, почту и безопасность формы. Не вставляйте его вслепую на рабочий сайт. Сначала проверьте на копии сайта или в отдельном тестовом плагине.
Куда вставлять: в отдельный мини-плагин или в functions.php дочерней темы. Для рабочего проекта лучше отдельный плагин.
<?php
defined( 'ABSPATH' ) || exit;
add_action( 'wp_ajax_sc_ai_send_lead', 'sc_ai_send_lead' );
add_action( 'wp_ajax_nopriv_sc_ai_send_lead', 'sc_ai_send_lead' );
function sc_ai_send_lead() {
check_ajax_referer( 'sc_ai_lead_nonce', 'nonce' );
$name = isset( $_POST['name'] ) ? sanitize_text_field( wp_unslash( $_POST['name'] ) ) : '';
$phone = isset( $_POST['phone'] ) ? sanitize_text_field( wp_unslash( $_POST['phone'] ) ) : '';
$email = isset( $_POST['email'] ) ? sanitize_email( wp_unslash( $_POST['email'] ) ) : '';
$message = isset( $_POST['message'] ) ? sanitize_textarea_field( wp_unslash( $_POST['message'] ) ) : '';
if ( '' === $name || '' === $phone ) {
wp_send_json_error(
array(
'message' => 'Заполните имя и телефон.',
),
400
);
}
if ( '' !== $email && ! is_email( $email ) ) {
wp_send_json_error(
array(
'message' => 'Некорректный email.',
),
400
);
}
$to = get_option( 'admin_email' );
$subject = 'Новая заявка с сайта';
$body = "Имя: {$name}n";
$body .= "Телефон: {$phone}n";
$body .= "Email: {$email}n";
$body .= "Сообщение: {$message}n";
$headers = array(
'Content-Type: text/plain; charset=UTF-8',
'From: ' . get_bloginfo( 'name' ) . ' <noreply@' . wp_parse_url( home_url(), PHP_URL_HOST ) . '>',
);
$sent = wp_mail( $to, $subject, $body, $headers );
if ( ! $sent ) {
error_log( '[SC AI FORM] wp_mail вернул false. Заявка не отправлена.' );
wp_send_json_error(
array(
'message' => 'Заявка не отправлена. Попробуйте позже.',
),
500
);
}
wp_send_json_success(
array(
'message' => 'Заявка отправлена.',
)
);
}
Куда вставлять: в шаблон страницы, shortcode или PHP-блок, где выводится форма.
<form class="sc-ai-lead-form" method="post">
<input type="hidden" name="nonce" value="<?php echo esc_attr( wp_create_nonce( 'sc_ai_lead_nonce' ) ); ?>">
<p>
<label>Имя</label>
<input type="text" name="name" required>
</p>
<p>
<label>Телефон</label>
<input type="text" name="phone" required>
</p>
<p>
<label>Email</label>
<input type="email" name="email">
</p>
<p>
<label>Сообщение</label>
<textarea name="message"></textarea>
</p>
<button type="submit">Отправить</button>
<div class="sc-ai-lead-result"></div>
</form>
Куда вставлять: в PHP-шаблон страницы или подключаемый JS-блок. В примере используется jQuery, без короткой формы $.
<script>
jQuery(document).on('submit', '.sc-ai-lead-form', function(e) {
e.preventDefault();
var form = jQuery(this);
var resultBox = form.find('.sc-ai-lead-result');
resultBox.text('Отправляем...');
jQuery.ajax({
url: '<?php echo admin_url("admin-ajax.php") ?>',
type: 'POST',
dataType: 'json',
data: {
action: 'sc_ai_send_lead',
nonce: form.find('[name="nonce"]').val(),
name: form.find('[name="name"]').val(),
phone: form.find('[name="phone"]').val(),
email: form.find('[name="email"]').val(),
message: form.find('[name="message"]').val()
},
success: function(response) {
if (response.success) {
resultBox.text(response.data.message);
form[0].reset();
return;
}
resultBox.text(response.data.message);
},
error: function(xhr) {
var message = 'Ошибка отправки. Код: ' + xhr.status;
if (xhr.responseJSON && xhr.responseJSON.data && xhr.responseJSON.data.message) {
message = xhr.responseJSON.data.message;
}
resultBox.text(message);
}
});
});
</script>
После исправления форма должна не просто показывать “Спасибо”, а реально передавать заявку в нужное место: на почту, в CRM, Telegram, базу данных или админку WordPress.
Нормальный результат проверки:
admin-ajax.php возвращает JSON;debug.log нет fatal error;Письмо может не дойти из-за почты, SMTP, спама или блокировки хостинга. Поэтому для важных заявок лучше не ограничиваться email. Надёжнее сохранять заявку в базу данных, а письмо использовать как уведомление.
Так вы не потеряете клиента, даже если почтовая доставка временно сломалась.
Email logs помогают понять, пытался ли WordPress отправить письмо. Без логов владелец сайта видит только итог: “заявки нет”. С логами видно, была ли отправка, какой получатель указан, какой заголовок письма и была ли ошибка SMTP.
Для малого бизнеса удобно дублировать заявки в Telegram. Но Telegram не должен быть единственным каналом. Лучше использовать связку: база данных + email + Telegram.
Если нужно сделать отправку именно в Telegram, можно использовать готовую логику из статьи как отправлять заявки с WordPress в Telegram.
Кеш может сломать nonce, подменить старый HTML формы или задержать обновление JS-файла. После включения кеша обязательно проверьте форму в режиме инкогнито и с мобильного устройства.
AI может добавить reCAPTCHA “по примеру”, но не связать ключи, домен и проверку на сервере. В результате форма будет блокировать реальные заявки или принимать спам.
Проверьте:
AI часто добавляет сообщение об успехе сразу после клика, а не после ответа сервера. Это создаёт ложное ощущение, что заявка ушла.
HTML и CSS не отправляют заявку сами по себе. Если нет backend-части, форма остаётся просто визуальным блоком.
Если сайт отправляет письмо от Gmail, Mail.ru или случайного адреса, почтовый сервер может отклонить письмо. Лучше использовать адрес на домене сайта и SMTP.
Письмо может приходить на Gmail, но не приходить на корпоративный домен, или наоборот. Нужно тестировать несколько получателей и смотреть email logs.
Без вкладки Network сложно понять, отправляется ли запрос вообще. Иногда проблема не в почте, а в том, что браузер даже не отправляет данные на сервер.
wp_ajax_nopriv_Если форма доступна гостям, но есть только хук wp_ajax_..., обработчик будет работать только для авторизованных пользователей.
AI может предложить убрать nonce, reCAPTCHA или проверку данных. Так делать нельзя. Нужно исправлять причину ошибки, а не отключать защиту.
type="submit".e.preventDefault();action;wp-content/debug.log;wp_mail();name у полей;$_POST;Потому что AI мог сделать только визуальную часть формы без полноценного PHP-обработчика, SMTP, проверки AJAX, логирования и корректной почтовой доставки.
Сначала проверьте Network в браузере: отправляется ли POST-запрос, куда он уходит и какой статус возвращает сервер. Потом проверьте debug.log, SMTP и спам.
Скорее всего, сообщение об успехе выводится на фронтенде без проверки реального ответа сервера, или WordPress принял запрос, но письмо не доставилось из-за SMTP, спама, From email или DNS.
Нет, если нужна отправка на почту, в CRM, Telegram или базу данных. HTML только собирает данные. Нужен серверный обработчик или внешний сервис форм.
Потому что в запросе часто просят “сделай форму”, а не “сделай полный backend с SMTP, nonce, sanitization, логами, обработкой ошибок и защитой от спама”. AI делает видимую часть быстрее, чем надёжную серверную логику.
Если нужна простая форма, часто хватает Contact Form 7, Fluent Forms, WPForms или другого готового плагина. Своя форма нужна, если есть нестандартная логика: CRM, Telegram, личный кабинет, расчёт, кастомная база, сложные поля или особая интеграция.
Часто причина в SMTP, SPF, DKIM, DMARC, неправильном From email или фильтрации почтового сервера. Нужно проверить тестовую отправку, логи SMTP и папку спам.
Возможны разные браузеры, блокировка скриптов, кеш, reCAPTCHA, cookies, расширения браузера, мобильная версия или конфликт с CDN. Нужно проверять Network и консоль на устройстве клиента.
Кеш может сохранить старый nonce, старый JS-файл или HTML формы. Нужно исключить страницу с формой из агрессивного кеша или правильно обновлять nonce.
Да, если заявки важны для бизнеса. Email может не дойти, Telegram может быть недоступен, CRM может вернуть ошибку. База данных помогает не потерять заявку.
Иногда да, если проблема только в доставке писем. Но если AJAX не отправляет запрос, PHP падает с ошибкой или форма не имеет обработчика, SMTP не решит проблему.
Сначала включите диагностику, проверьте Network, debug.log, SMTP и email logs. Потом добавьте сохранение заявок в базу или временное дублирование в Telegram, чтобы не терять обращения.
Она должна отправлять заявку, сохранять данные или логировать ошибку, показывать понятный ответ пользователю, проходить проверку с разных устройств и не терять данные при сбое почты.
Если AI сделал сайт, но форма не отправляет заявки, проблема почти всегда в незавершённой технической цепочке. Красивая форма — это только интерфейс. Для реальной заявки нужны JavaScript, PHP, WordPress AJAX, SMTP, проверка данных, защита, логи и тестирование.
Исправлять нужно не вслепую, а по шагам: проверить Network, консоль, debug.log, admin-ajax.php, SMTP, From email, DNS, reCAPTCHA, кеш и конфликты плагинов. Только после этого можно понять, где именно теряется заявка.
AI помогает быстро собрать сайт, но рабочая форма должна быть проверена как полноценная бизнес-функция. Если форма не отправляет заявки, сайт уже теряет клиентов, даже если внешне выглядит готовым.
Рекомендуем услугу: исправление сайта после AI-разработки
Об авторе