
Разбор · Проверили 07.10.2026
Триггерные рассылки с сайта строят вокруг событий, повторной отправки и защиты от дублей
Что согласовать до шаблонов писем и как принять рассылку на сбоях. Письмо доступа нашего курса, очередь, журнал отправок и протокол проверки для CTO и директора по маркетингу.
Текст подготовлен машиной агентов под надзором Евгения Шилова · факты проверены 7 октября 2026
Триггерные рассылки с сайта принимают по всей цепочке: событие сохранилось, письмо дождалось отправки после сбоя, повтор не создал дубль.
На vibecoding.ru дефект повторной отправки письма доступа курса нашли при ревью до продаж; своего клиентского кейса и замера роста продаж от рассылок у нас нет.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Сценарий начинается с подтверждённого события.
Триггерная рассылка отправляет письмо после события или выполнения условия. Покупатель оплатил, заказ сменил статус, подписчик подтвердил адрес. Для каждого случая заранее задают получателя и содержание.
Подписку на рассылку связывают с подтверждением адреса и защитой от повторных писем.
Нажатие кнопки оплаты ещё не подтверждает покупку. Письмо доступа должно ждать подтверждённой оплаты нужного продукта. Иначе красивый сценарий сообщит человеку о результате, которого нет.
Маркетинг и разработка согласуют карту событий до шаблонов писем. Событие приходит из системы, где хранится результат действия. Если это своя CRM, сначала определяют, кто владеет статусом заказа.
Письмо запускает сохранённый факт или условие сценария.
Примеры Sendsay, Mindbox и RetailCRM, проверено 07.10.2026. Условия приёмки предложены нами, это не сравнение платформ.
2. Событие и задание на письмо сохраняют вместе.
Очередь нужна, чтобы сбой отправки не отменял результат на сайте. Оплата остаётся оплатой, а письмо ждёт следующей попытки. Человеку не приходится платить заново.
Но очередь не спасает задание, которое в неё не попало. Между записью оплаты и созданием письма приложение может остановиться. На экране будет успех, а отправлять окажется нечего.
Для такого разрыва используют outbox: изменение и задание на письмо записывают одной операцией. Отдельный обработчик забирает сохранённые задания. Этот приём описан в руководстве AWS, проверенном 7 октября 2026.
Сохранённое задание переживает остановку приложения.
AWS Prescriptive Guidance, transactional outbox, 07.10.2026. Таблица показывает предложенный порядок приёмки, не устройство нашей инфраструктуры.
3. Повтор продолжает отправку, а журнал удерживает результат.
Результат покупки и результат письма учитывают отдельно. Уже выданный доступ не отвечает на вопрос, получил ли человек ссылку входа. Это разные записи о разных действиях.
Повтор проверяет историю конкретного письма. Если отправитель его не принял, задание остаётся для новой попытки. Если принял, обычный повтор события подавляют.
Ремонт сломанной интеграции включает сверку пропущенных событий после восстановления передачи.
На нашем сайте инженер ведёт машину агентов, а ошибки превращаются в правила проверки. В письме доступа ревью нашло смешение результатов. В форме подписки оно нашло другую проблему: повторов было слишком много.
Ревью разделило результат доступа и результат письма.
17.07
Публичная форма отправляла подтверждение на каждый повтор для неподтверждённого адреса. Ревью нашло возможность заливать чужой ящик. В той правке повтор ограничили интервалом 24 часа.
09.09
Письмо доступа зависело от признака «доступ создан впервые». При сбое повтор оплаты пропускал письмо. До боевых продаж флаг заменили журналом отправок: неуспех разрешает попытку, успешная запись подавляет обычный повтор.
Исходные записи журналов vibecoding.ru от 17.07 и 09.09, сверены 07.10.2026. Вторая история описывает найденный дефект, а не потерю письма у клиента.
Потерянный ответ отправителя требует отдельного решения. Он мог принять письмо, а приложение не дождалось ответа. Пустая строка в нашем журнале ещё не доказывает, что письмо не отправлялось.
Постоянный отказ тоже нельзя лечить бесконечным повтором. Несуществующий адрес отправляют на разбор. Для временного сбоя задают интервалы, предел попыток и ответственного за остановившуюся отправку.
Статус «отправлено» нужно расшифровать до приёмки. Resend различает успешный запрос к API и доставку на почтовый сервер адресата. Ни тот, ни другой статус не подтверждает чтение человеком.
Принято отправителем ещё не означает прочитано человеком.
Resend, Event Types, 07.10.2026. «В очереди» и «Результат неизвестен» являются предлагаемыми состояниями приложения.
4. Защита от дублей работает и при одновременных запросах.
Письмо узнают по устойчивому ключу, который сохраняется при повторе. Для доступа это сценарий, покупка и получатель. Для смены статуса к ключу добавляют конкретное изменение.
Только адреса недостаточно: он склеит разные покупки одного человека. Случайный новый ключ на каждую попытку даст обратную ошибку. Система примет повтор за новое письмо.
Одновременность проверяют отдельно. Два обработчика могут вместе увидеть «ещё не отправлено». Поэтому право на отправку получают одной неделимой операцией, с защитой от повторной записи и сроком освобождения зависшего задания.
Повтор узнают, другую покупку сохраняют.
Рекомендации Stripe по повторным событиям и Resend по ключам, 07.10.2026. Сценарии испытаний предложены нами.
Защиту проводят до границы почтового сервиса. Например, Resend повторяет ответ на тот же запрос с тем же ключом без нового письма. На 7 октября 2026 ключ хранится 24 часа.
Это срок конкретного сервиса, а не универсальная настройка очереди. После него автоматический повтор уже нельзя считать защищённым этим ключом. Собственный журнал и порядок разбора неизвестного результата остаются нужны.
Просьба покупателя «пришлите ссылку заново» создаёт отдельное управляемое действие. Его отличают от повтора оплаты, ограничивают частоту и записывают причину. Старые ссылки обрабатывают по правилам доступа продукта.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Сценарии | Официальные страницы Sendsay, Mindbox, RetailCRM и EMAILMATRIX прочитаны 7 октября. Берём виды событий и назначение писем, без заимствования процентов роста продаж | 2026-10-07 |
| Очередь и повторы | Документы AWS, Stripe и Resend. У Resend срок ключа повторного запроса 24 часа. Это свойство конкретного сервиса, не настройка нашей очереди. Таблицы испытаний составлены нами по этим документам | 2026-10-07 |
| Наш опыт | Исходные записи ревью формы подписки от 17 июля и цепочки доступа курса от 9 сентября 2026 сверены с инвентарём серии. Дефект письма доступа нашли до продаж. Клиентского кейса и замера маркетингового эффекта нет | 2026-10-07 |
| Цена подписки | Живой /services, 7 октября 2026, 20:49 МСК: «Один проект», один поток работы, 250 000 ₽ в месяц. Это тариф разработки, не смета одной рассылки. /open прочитан в тот же проход, счётчик коммитов не используем как доказательство доставки | 2026-10-07 |
5. Приёмку строят на сбоях, которые можно повторить.
Письмо на демонстрации подтверждает только обычный путь. Для приёмки нужен протокол с повтором события, остановкой обработчика и потерей ответа. Результат смотрят в журнале и тестовом ящике.
ИИ-агенту отдают этот протокол вместе с задачей. Формулировка «сделать триггерные письма» оставляет ему решения о повторах и дублях. Постановку задач агенту разбираем в соседней статье.
Критерий готовности задаёт инженер, который принимает правку. Повторное письмо после сбоя и лишнее письмо после успеха проверяют разными испытаниями. Одного флага «обработано» для этих результатов мало.
Готовность доказывают воспроизводимые сбои.
Предлагаемый нами протокол по AWS, Stripe, Resend и предупреждению RetailCRM об импорте, 07.10.2026. Это условия будущей приёмки, не отчёт о проведённых испытаниях.
Задержку согласуют по назначению письма. Ссылка доступа после оплаты и напоминание о корзине терпят разное ожидание. В задаче задают допустимую задержку и способ заметить её превышение.
Агент пишет код и воспроизводимые проверки, инженер принимает результат. Правила для ИИ-агентов задают границы работы, а тестовые отправки изолируют от данных покупателей. Сам запуск на покупателей согласуют отдельно.
До запуска у каждого результата есть владелец.
Предлагаемое нами распределение приёмки. Согласуйте ответственных в своём проекте.
6. Работу рассылки видно от события до результата.
Наблюдение начинают с события, которому положено письмо. Число успешных отправок не покажет оплату, для которой задание вообще не создали. Поэтому события сверяют с заданиями и результатами.
Оператор видит остановившуюся очередь и причину отказа. Он может повторить разрешённое письмо или отменить потерявшее смысл. Каждое действие остаётся в истории.
Для маркетинга перед отправкой заново проверяют условия. Покупка могла завершиться, адресат мог отписаться, статус мог измениться. Ожидание в очереди не замораживает действия человека.
События сверяют с заданиями и результатами.
Наш предложенный контроль по состояниям из официальных документов, 07.10.2026. Пороги выбирают для конкретного сценария.
Так замыкается работа над рассылкой. Пропуск или дубль становится воспроизводимой задачей, правка получает проверку. Следующий выпуск проверяет тот же сбой.
На странице /open видно, как инженер ведёт машину агентов на vibecoding.ru. Этот опыт помогает ставить проверки. Он не заменяет замер доставляемости и продаж в вашей компании.
При постоянных задачах по сайту второй шаг можно обсудить на /services. Тариф «Один проект» стоит 250 000 ₽ в месяц на 7 октября 2026: это подписка на поток разработки, а не цена настройки одной рассылки.
7. Частые вопросы
Чем триггерное письмо отличается от транзакционного?+
Триггер описывает основание отправки, транзакционное письмо обслуживает действие человека: оплату, вход или заказ. Письмо доступа может быть и транзакционным, и запускаемым событием. В задаче лучше указывать назначение, а не спорить о ярлыке.
Можно обойтись готовой платформой?+
Можно, если она принимает нужные события и даёт проверить повторы, отмены и результат. Свой код понадобится для связи сайта с событиями бизнеса. Приёмка этой связи нужна и при готовом конструкторе.
Когда отправлять письмо после регистрации?+
После сохранённой регистрации, с ограничением повторов подтверждения. Подтверждение адреса и приветственная цепочка после подтверждения являются разными сценариями.
Нужен ли ИИ, чтобы рассылка работала?+
ИИ-агент может написать интеграцию, шаблоны и проверки. Решение об отправке принимает сохранённое правило сценария. Языковую модель в путь доставки для этого добавлять не требуется.
Сколько стоит разработать триггерные рассылки?+
Сначала определяют события, готовность сайта, почтовую платформу и протокол приёмки. Тариф подписки на разработку не является сметой отдельного сценария. Цена сервиса отправки и расходы на работу продукта обсуждаются отдельно.
Что передать подрядчику?+
Карту событий, назначение писем, условия отмены, допустимую задержку и протокол сбоев. Для разработки используют тестовые получатели и события. Доступ к базе покупателей не является исходным условием написания кода.
Источники
- Sendsay, руководство по триггерным сценариям для онлайн-продаж — документация
- RetailCRM, общая информация о триггерах — документация
- EMAILMATRIX, руководство по триггерным рассылкам, обновление 25 июня 2025 — блог вендора
- Mindbox, виды рассылок — сайт вендора
- AWS Prescriptive Guidance, transactional outbox — документация
- Stripe, Webhooks: повторные события и очередь — документация
- Resend, Idempotency Keys: повтор запроса с тем же ключом — документация
- Resend, Event Types: принятие письма и доставка — документация
- Опыт машины vibecoding.ru, записи ревью 17 июля и 9 сентября 2026; публичная дверь /open — наш опыт
- Курс, чей сценарий доступа разобран в статье — наш продукт
- Условия подписки на разработку, /services; срез 7 октября 2026 — условия сервиса
Запомнить
- Зафиксируйте событие и условия отправки до работы над письмом.
- Сохраните задание вместе с событием, чтобы остановка приложения не потеряла письмо.
- Разделите повтор после сбоя и подавление дубля после успеха. Потерю ответа проверьте отдельно.
- Принимайте сценарий по протоколу сбоев, с журналом и тестовым ящиком.
- Сверяйте события с отправками. Каждый пропуск или дубль превращайте в задачу с проверкой.