Письма о заказах в WordPress: что знать до настройки
Покупатель оформил заказ и не получил подтверждения — классика магазина на WooCommerce. Разбираем, что подготовить до настройки писем, как подключить отправку и как проверить, что письмо реально дошло.

На выходе должно получиться так: покупатель оформляет заказ и в течение минуты получает письмо с адреса на вашем домене, письмо лежит во «Входящих», а не в спаме, а вы видите в логе, ушло оно или нет. На чистом сайте с доступом к DNS это 40–60 минут. Если домен у одного провайдера, почта у другого, а пароль от панели DNS никто не помнит — планируйте день. Дальше всё написано под WordPress 6.x, WooCommerce 9.x и PHP 8.1+.
Что нужно иметь до начала
Проверьте список целиком, прежде чем открывать настройки. Половина застрявших настроек спотыкается не о WooCommerce, а об отсутствие доступа к DNS.
- Администратор в WordPress. Вкладка настроек WooCommerce видна только с правами
manage_woocommerce, у роли «Менеджер магазина» они есть, у «Редактора» — нет. - Доступ к DNS домена — панель регистратора или хостинга, где можно добавить TXT-записи. Без этого SPF и DKIM не настроить, и часть писем будет уезжать в спам независимо от настроек сайта.
- Почтовый ящик на вашем домене (например,
zakaz@вашдомен.ru) или аккаунт транзакционного сервиса. Ящик на бесплатном домене в поле отправителя — главная причина спама. - Пароль приложения для этого ящика. При включённой двухфакторной аутентификации Яндекс и Mail.ru не принимают обычный пароль по SMTP.
- FTP, SSH или файловый менеджер хостинга — понадобится правка
wp-config.phpи папкаwp-content/mu-plugins/. - Тестовый ящик на чужом домене. Удобнее всего Gmail: он показывает результат проверки SPF и DKIM в «Показать оригинал». Проверять доставку на ящик того же домена бессмысленно — письмо часто доходит внутри сервера, минуя внешние проверки.
- WP-CLI — необязательно, но тест отправки одной командой быстрее, чем через интерфейс.
Что ломает ожидания чаще всего
WordPress сам по себе про заказы ничего не знает — письма о них отправляет WooCommerce, а наружу их выпускает функция wp_mail(). По умолчанию она отдаёт письмо в системную mail() на хостинге: без подписи, с IP-адреса, который почтовые провайдеры видят впервые. Поэтому «настроить письма» — это почти всегда «настроить отправку», а не «поправить шаблон».
Второе: WooCommerce не отправляет письмо «по факту заказа». Он реагирует на смену статуса, и набор писем жёстко привязан к этим статусам.
Какие письма есть и что их запускает
- Новый заказ — уходит только администратору, при создании заказа. Покупатель его не видит.
- Заказ в обработке (Processing) — то самое «ваш заказ принят» для покупателя. При оплате наложенным платежом или при получении статус ставится сразу, при онлайн-оплате — только после подтверждения платежа.
- Заказ на удержании (On hold) — ждёт оплаты, например при переводе на счёт.
- Заказ выполнен — только когда вы вручную или через интеграцию переводите заказ в «Выполнен».
- Отменён и Не удался — администратору.
- Счёт покупателю / детали заказа — не автоматическое письмо, отправляется вручную из карточки заказа действием в блоке «Действия над заказом».
Если покупатель жалуется, что ничего не получил, первое, что надо открыть, — заметки заказа. Там видно, менялся ли статус вообще.
Письмо о заказе — не рассылка. Его нельзя отправить «примерно»: не дошло — покупатель звонит в поддержку, и о проблеме вы узнаёте от него, а не из мониторинга.
Пошаговая настройка
-
Проверьте, уходит ли хоть что-нибудь. Через WP-CLI:
wp eval 'var_dump( wp_mail( "you@example.com", "Test", "Проверка отправки" ) );'Проверка: в ответ приходит
bool(true)илиbool(false). Важно:trueозначает только то, что письмо передано дальше, а не что оно доставлено. Еслиfalse— отправка сломана на уровне сервера, переходите к шагу 3 сразу. -
Определите отправителя. WooCommerce → Настройки → Письма, блок настроек отправителя: имя и адрес. Адрес должен быть на домене сайта и реально существовать, чтобы ответы покупателей куда-то приходили.
Проверка: отправьте письмо на этот адрес с телефона и убедитесь, что оно пришло.
-
Подключите SMTP. Поставьте плагин отправки — например, FluentSMTP, WP Mail SMTP или Post SMTP, у всех трёх есть бесплатная версия с тестовой отправкой. Параметры из таблицы ниже.
Проверка: тестовое письмо из интерфейса плагина уходит без ошибки, и вы видите его в тестовом ящике на Gmail.
-
Добавьте SPF и DKIM в DNS. Точные значения даёт почтовый провайдер: для SPF это TXT-запись на корень домена, для DKIM — TXT-запись на поддомен-селектор, который провайдер выдаёт сам. Не придумывайте селектор, возьмите его из панели провайдера.
Проверка: в Gmail откройте письмо → меню из трёх точек → «Показать оригинал». В верхней таблице должно быть
SPF: PASSиDKIM: PASSс вашим доменом. Записи DNS обновляются не мгновенно, дайте им до нескольких часов. -
Оформите письма. На той же вкладке — логотип в шапке, текст подвала, базовый цвет и цвет фона. Логотип загружайте шириной около 600 px: шаблон письма рассчитан на эту ширину, и более крупная картинка обрежется в мобильных клиентах.
Проверка: откройте предпросмотр письма из списка уведомлений и посмотрите его на телефоне.
-
Пройдите список уведомлений по одному. Каждое письмо в списке открывается отдельно: включено или нет, получатель (для писем администратору), тема, заголовок внутри письма. Если заказы собирает ещё и склад, добавьте второй адрес — через запятую в поле получателя или фильтром:
<?php // wp-content/mu-plugins/order-email-cc.php // Дублирует письмо о новом заказе на склад. WooCommerce 9.x add_filter( 'woocommerce_email_recipient_new_order', function ( $recipient ) { return $recipient . ',sklad@example.com'; }, 10, 1 );Проверка: тестовый заказ на следующем шаге должен прийти на оба адреса.
-
Сделайте настоящий тестовый заказ. Включите способ оплаты «При получении», оформите заказ на тестовый ящик, затем в админке переведите его в «Выполнен».
Проверка: администратор получил «Новый заказ», покупатель — «Заказ в обработке» и «Заказ выполнен». Три письма, не меньше.
-
Включите лог ошибок отправки. В
wp-config.phpвыше строки с/* That's all, stop editing! */:define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );И файл
wp-content/mu-plugins/mail-fail-logger.php:<?php /** * Plugin Name: Mail Fail Logger * Description: Пишет причину неудачной отправки письма в debug.log. */ add_action( 'wp_mail_failed', function ( $wp_error ) { error_log( 'wp_mail failed: ' . $wp_error->get_error_message() ); } );Проверка: временно укажите в плагине SMTP неверный пароль, отправьте тест — в
wp-content/debug.logпоявится строка с текстом ошибки. Потом верните пароль. На продеdebug.logне оставляйте открытым: файл читается по прямому URL, если хостинг не закрывает доступ кwp-content.
Параметры SMTP: что куда вписать
| Параметр | Что вписать | Где взять |
|---|---|---|
| Хост | smtp.yandex.ru, smtp.mail.ru или хост транзакционного сервиса | Справка почтового провайдера |
| Порт | 465 или 587. Порт 25 на массовом хостинге обычно закрыт | Там же; при сомнении пробуйте 465 |
| Шифрование | SSL для порта 465, TLS (STARTTLS) для 587 | Привязано к порту, не выбирается произвольно |
| Логин | Полный адрес ящика, а не часть до собаки | Панель почты |
| Пароль | Пароль приложения. В примерах и заметках — только заглушка вида YOUR_SMTP_PASSWORD | Создаётся в настройках безопасности аккаунта |
| Адрес отправителя | Тот же ящик, что в логине | У Яндекса и Mail.ru расхождение обычно приводит к отказу |
| Имя отправителя | Название магазина, два-три слова | Видно покупателю в списке писем |
Если не получилось
Could not instantiate mail function.— системнаяmail()на хостинге отключена или сломана. Лечится только подключением SMTP, шаг 3.SMTP connect() failed.— не тот хост, не тот порт или порт закрыт хостингом. Попробуйте 465 со SSL, затем 587 с TLS; если оба молчат, спросите у поддержки хостинга, какие исходящие порты открыты.SMTP Error: Could not authenticate.— почти всегда обычный пароль вместо пароля приложения либо логин не совпадает с адресом отправителя.- Письмо уходит, но попадает в спам. Откройте оригинал в Gmail: если
SPFилиDKIMв состоянииfail, дело в DNS, а не в тексте письма. Отдельная частая причина — адрес отправителя на домене, которым вы не управляете. - Тест уходит, письма о заказах нет. Смотрите заметки заказа: если статус так и остался «Ожидает оплаты», письмо и не должно было уйти. Второй вариант — конкретное уведомление выключено в списке.
- WooCommerce → Статус показывает устаревшие шаблоны. Появляется после копирования шаблонов писем в тему. Сравните номер версии в комментарии вверху файла темы и файла плагина и перенесите правки в свежую копию.
Что делать дальше
Включите журнал отправленных писем — у FluentSMTP он есть в бесплатной версии, у остальных плагинов встречается в платных. Журнал нужен ровно для одного вопроса: «мы отправляли или нет». Помните, что в нём лежат адреса и состав заказов, так что ограничьте доступ и срок хранения.
Раз в месяц делайте тестовый заказ на внешний ящик: пароль приложения отзывают, DNS переносят, лимиты провайдера меняются, и отправка ломается молча. Когда базовая доставка стабильна, дальше смотрят в сторону DMARC и собственных шаблонов письма через переопределение в теме — это уже отдельные темы, здесь мы их не разворачиваем.
SPF и DKIM — две TXT-записи в DNS домена. Первая перечисляет серверы, которым разрешено отправлять почту от вашего имени, вторая добавляет к письму криптографическую подпись. Без них принимающий сервер не может отличить ваше письмо от подделки.
mu-plugins — папка wp-content/mu-plugins/. PHP-файлы из неё подключаются всегда и не отображаются в списке плагинов, поэтому их нельзя случайно отключить одним кликом.
Мотивационное письмо и эссе: Поступление, стипендии, гранты, обмен
Спросить за 25 ₽Источники: WooCommerce: Email FAQ (официальная документация), wp_mail() — WordPress Developer Resources
Частые вопросы
У меня WooCommerce 8.x, а не 9.x — всё так же?
Тестовое письмо приходит, а письма о заказах нет. Где искать?
Нужен ли платный транзакционный сервис или хватит обычного ящика?
Можно ли переделать шаблон письма под свой дизайн?
Какие подводные камни ждут на продакшене?
Письма не доходят только одному покупателю, остальным всё приходит. Что делать?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.