Пошаговые инструкции intermediate 25 мин

Как сделать ИИ-агента для email-маркетинга и рассылок

Пошаговая инструкция от нуля до рабочего агента для email-маркетинга: сегменты, consent, suppression, drafts, approval, отправки, события и отчеты.

AI-агенты email-маркетинг рассылки Mailchimp Brevo Unisender deliverability A/B тест

Что получится в результате

Соберем ИИ-агента для email-маркетинга, который готовит рассылки как контролируемый процесс: проверяет согласия, собирает сегмент, готовит brief кампании, пишет тему, preheader и тело письма, проверяет риски, отправляет черновик на approval, ставит кампанию в очередь, собирает события отправки и делает отчет по результатам.

Первая рабочая версия будет делать так:

  1. email-платформы хранятся в `email_accounts`;
  2. контакты и статусы пишутся в `contact_registry`;
  3. согласия хранятся в `consent_log`;
  4. suppression list хранится в `suppression_list`;
  5. сегменты описаны в `segment_rules`;
  6. готовые выборки пишутся в `segment_members`;
  7. brief кампании пишется в `campaign_briefs`;
  8. шаблоны лежат в `email_templates`;
  9. черновики писем пишутся в `email_drafts`;
  10. проверки риска пишутся в `content_checks`;
  11. UTM и ссылки пишутся в `link_checks`;
  12. A/B-гипотезы пишутся в `ab_tests`;
  13. спорные действия уходят в `approval_queue`;
  14. готовые рассылки попадают в `send_queue`;
  15. отправки фиксируются в `send_log`;
  16. события открытий, кликов, bounce и spam пишутся в `email_events`;
  17. отписки пишутся в `unsubscribe_log`;
  18. результаты кампаний пишутся в `campaign_reports`;
  19. рекомендации попадают в `recommendation_queue`;
  20. все действия фиксируются в `audit_log`;
  21. ошибки попадают в `error_log`.

В первой версии агент не должен сам отправлять массовые кампании, импортировать базу, менять статус подписки, удалять контакты, обещать скидки или запускать промо без подтверждения. Он готовит черновики, проверяет риски и ждет approval.

Что понадобится

  • n8n Cloud или self-hosted n8n.
  • Google Sheets для управляющих таблиц.
  • Email-платформа: Mailchimp, Brevo, Unisender или другой ESP.
  • Доступ к спискам контактов, кампаниям и отчетам.
  • Отдельный домен или поддомен для рассылок.
  • Настроенные SPF, DKIM и DMARC.
  • Канал approval: Telegram, Slack, email или задача.
  • API-ключ LLM-провайдера.
  • 10-20 прошлых кампаний для теста.
  • Правила бренда, частотности, согласий и запрещенных обещаний.

Шаг 1. Выберите один сценарий рассылки

Не начинайте с агента, который ведет весь email-маркетинг.

Для MVP выберите один сценарий:

  1. еженедельный дайджест;
  2. письмо по новому материалу;
  3. реактивация неактивных подписчиков;
  4. welcome-письмо;
  5. промо-рассылка;
  6. приглашение на вебинар;
  7. onboarding-серия;
  8. отчет клиентам;
  9. письмо по сегменту интересов;
  10. анализ результатов прошлой кампании.

Самый безопасный старт - агент, который готовит draft дайджеста и отчет, но не отправляет кампанию сам.

Проверка: сценарий можно описать одной фразой, например: `каждую неделю подготовить дайджест для подписчиков, читавших AI-инструкции`.

Шаг 2. Разделите типы email

У разных писем разные правила.

Типы:

marketing
transactional
digest
promo
reactivation
welcome
onboarding
webinar_invite
customer_update

Правила:

  1. marketing требует согласия и ссылки отписки;
  2. transactional не должен превращаться в рекламу;
  3. promo требует approval;
  4. reactivation требует проверки частотности;
  5. customer update должен быть точным и без лишних продаж.

Проверка: агент знает тип письма до генерации текста.

Шаг 3. Создайте таблицу проекта

Создайте Google Sheet:

Email marketing agent

Добавьте листы:

settings
email_accounts
contact_registry
consent_log
suppression_list
segment_rules
segment_members
campaign_briefs
email_templates
email_drafts
content_checks
link_checks
ab_tests
approval_queue
send_queue
send_log
email_events
unsubscribe_log
campaign_reports
recommendation_queue
audit_log
error_log

Проверка: n8n может читать и писать во все листы.

Шаг 4. Заполните settings

В `settings` добавьте колонки:

key
value
description
updated_at

Заполните минимум:

default_language | ru | язык кампаний
auto_send_enabled | false | автоотправка выключена
approval_channel | telegram | канал согласования
max_campaign_recipients_mvp | 500 | лимит первой версии
min_segment_size | 50 | минимум контактов в сегменте
max_weekly_marketing_emails | 2 | частотность на контакт
require_unsubscribe_link | true | ссылка отписки обязательна
require_consent | true | согласие обязательно
promo_requires_approval | true | промо только через approval

Проверка: массовая отправка выключена, частотность ограничена.

Шаг 5. Настройте email_accounts

В `email_accounts` добавьте колонки:

account_id
platform
account_name
sender_name
sender_email
reply_to
domain
access_mode
owner_email
status
created_at

`platform`:

mailchimp
brevo
unisender
sendgrid
customer_io
manual_export

`access_mode`:

read_only
draft_only
send_with_approval

Проверка: первый аккаунт имеет `access_mode = draft_only` или `read_only`.

Шаг 6. Соберите contact_registry

В `contact_registry` добавьте колонки:

contact_id
email
first_name
last_name
company
language
status
tags
source
created_at
updated_at
last_email_sent_at

`status`:

subscribed
unsubscribed
cleaned
bounced
complained
pending
unknown

Проверка: агент не отправляет письмо контактам со статусом `unsubscribed`, `bounced`, `complained`, `unknown`.

В `consent_log` добавьте колонки:

consent_id
contact_id
email
consent_type
consent_status
consent_source
consent_text
captured_at
expires_at

`consent_type`:

marketing
transactional
webinar
product_updates
partner

Правило:

для marketing-кампаний нужен consent_status = granted

Проверка: контакт без согласия не попадает в сегмент.

Шаг 8. Настройте suppression_list

В `suppression_list` добавьте колонки:

suppression_id
type
value
reason
source
created_at
expires_at

`type`:

email
domain
contact_id

Причины:

unsubscribe
hard_bounce
spam_complaint
manual_block
legal_block
invalid_email
too_many_emails

Проверка: suppression list проверяется перед любым черновиком отправки.

Шаг 9. Опишите segment_rules

В `segment_rules` добавьте колонки:

segment_id
segment_name
email_type
include_rules_json
exclude_rules_json
owner_email
is_active
updated_at

Пример:

{
  "include": [
    {"field": "tags", "contains": "ai_agents"},
    {"field": "status", "equals": "subscribed"}
  ],
  "exclude": [
    {"field": "last_email_sent_at", "after_days": 3},
    {"field": "suppression_list", "exists": true}
  ]
}

Проверка: сегмент объясняет не только кого включили, но и кого исключили.

Шаг 10. Сформируйте segment_members

В `segment_members` добавьте колонки:

segment_member_id
segment_id
contact_id
email
include_reason
exclude_reason
status
created_at

`status`:

included
excluded
needs_review
blocked

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

Шаг 11. Создайте campaign_briefs

В `campaign_briefs` добавьте колонки:

campaign_id
campaign_name
email_type
goal
segment_id
offer
key_message
cta
forbidden_claims
deadline
owner_email
status
created_at

Пример:

CMP-1001 | Дайджест AI-инструкций | digest | вернуть читателей на сайт | SEG-12 | новые инструкции | 5 практических гайдов | Читать подборку | гарантия результата, скидка без условий | 2026-05-27 | marketer@company.ru | draft

Проверка: письмо генерируется из brief, а не “просто напиши рассылку”.

Шаг 12. Подготовьте email_templates

В `email_templates` добавьте колонки:

template_id
email_type
template_name
structure_json
required_blocks
forbidden_blocks
is_active
updated_at

Структура дайджеста:

{
  "blocks": [
    "subject",
    "preheader",
    "intro",
    "main_items",
    "cta",
    "footer",
    "unsubscribe"
  ]
}

Проверка: агент не забывает обязательные блоки.

Шаг 13. Сгенерируйте email_drafts

В `email_drafts` добавьте колонки:

draft_id
campaign_id
subject
preheader
body_text
body_html
cta_text
utm_campaign
risk_flags
approval_required
status
created_at

Prompt:

Ты готовишь email-кампанию.
Используй только campaign brief, segment summary и template.
Не выдумывай скидки, сроки, гарантии и результаты.
Не обещай то, чего нет в brief.
Пиши коротко и понятно.
Верни JSON:
{
  "subject": "до 55 символов",
  "preheader": "до 90 символов",
  "body_text": "текст письма",
  "cta_text": "текст кнопки",
  "risk_flags": []
}

Проверка: draft содержит subject, preheader, body и CTA.

Шаг 14. Проверьте content_checks

В `content_checks` добавьте колонки:

check_id
draft_id
check_type
status
severity
details
created_at

`check_type`:

missing_unsubscribe
missing_sender
contains_discount
contains_guarantee
contains_false_urgency
too_aggressive
spam_words
personal_data
broken_html
missing_approval

Запрещенные фразы:

гарантируем результат
скидка только сегодня
последний шанс
вы обязаны
100% окупится

Проверка: письмо с риском не попадает в send queue.

В `link_checks` добавьте колонки:

link_check_id
draft_id
url
status_code
has_utm
utm_source
utm_medium
utm_campaign
redirect_final_url
status
created_at

Проверки:

  1. ссылка открывается;
  2. нет 404 и 500;
  3. UTM есть;
  4. UTM campaign соответствует campaign_id;
  5. ссылка отписки есть;
  6. редирект не ведет на неожиданный домен.

Проверка: рассылка не уходит с битыми ссылками.

Шаг 16. Подготовьте ab_tests

В `ab_tests` добавьте колонки:

ab_test_id
campaign_id
test_type
variant_a
variant_b
primary_metric
sample_size
status
created_at
completed_at

`test_type`:

subject
preheader
cta
intro
offer
segment

Правила:

  1. менять один фактор;
  2. заранее выбрать метрику;
  3. не запускать A/B на слишком маленьком сегменте;
  4. не тестировать risky claims;
  5. фиксировать результат.

Проверка: A/B-тест имеет гипотезу, а не два случайных варианта.

Шаг 17. Настройте approval_queue

В `approval_queue` добавьте колонки:

approval_id
object_type
object_id
campaign_id
reason
preview
approver_email
status
created_at
decided_at

`object_type`:

email_draft
segment
ab_test
send_request
import_contacts
automation_start

Статусы:

pending
approved
rejected
needs_edit
expired

Проверка: отправка кампании всегда требует approved `send_request`.

Шаг 18. Сделайте Telegram approval

В n8n создайте workflow:

Email approval

Цепочка:

  1. найти `approval_queue` со статусом `pending`;
  2. отправить preview в Telegram;
  3. добавить кнопки `Approve`, `Needs edit`, `Reject`;
  4. обновить статус;
  5. записать решение в `audit_log`;
  6. только после approve перевести кампанию в `send_queue`.

Сообщение:

Нужно согласовать email-кампанию
Кампания: Дайджест AI-инструкций
Сегмент: SEG-12, 420 контактов

Subject: 5 практических гайдов по AI-агентам
Preheader: Собрали инструкции, которые можно внедрять по шагам

[Approve] [Needs edit] [Reject]

Проверка: без approve send queue остается пустой.

Шаг 19. Настройте send_queue

В `send_queue` добавьте колонки:

send_queue_id
campaign_id
draft_id
segment_id
email_account_id
scheduled_at
recipient_count
status
created_at
processed_at

Статусы:

ready
scheduled
sent_to_esp
paused
blocked
done
error

Правило:

в send_queue попадает только approved draft, approved segment, clean content_checks, clean link_checks

Проверка: risky draft не может уйти в отправку.

Шаг 20. Отправляйте через ESP после повторной проверки

Перед API-вызовом к Mailchimp, Brevo или Unisender еще раз проверьте:

  1. approval approved;
  2. segment_members не изменились критично;
  3. suppression_list актуален;
  4. unsubscribe link есть;
  5. content checks passed;
  6. link checks passed;
  7. лимит получателей не превышен;
  8. частотность соблюдена.

Проверка: ручной повторный запуск workflow не отправляет кампанию дважды.

Шаг 21. Запишите send_log

В `send_log` добавьте колонки:

send_id
campaign_id
esp
external_campaign_id
recipient_count
sent_at
status
created_at

Статусы:

sent
scheduled
failed
cancelled
manual_required

Проверка: можно найти, какая кампания реально ушла и через какую платформу.

Шаг 22. Соберите email_events

В `email_events` добавьте колонки:

event_id
campaign_id
contact_id
email
event_type
url
occurred_at
payload_json
created_at

`event_type`:

delivered
open
click
bounce
hard_bounce
soft_bounce
spam_complaint
unsubscribe
conversion

Проверка: события из ESP попадают в таблицу и связываются с campaign_id.

Шаг 23. Обрабатывайте unsubscribe_log

В `unsubscribe_log` добавьте колонки:

unsubscribe_id
contact_id
email
campaign_id
reason
source
created_at

Правило:

любая отписка добавляет email в suppression_list

Проверка: отписавшийся контакт не получает следующую рассылку.

Шаг 24. Соберите campaign_reports

В `campaign_reports` добавьте колонки:

campaign_id
sent_count
delivered_count
open_count
click_count
bounce_count
spam_complaint_count
unsubscribe_count
conversion_count
revenue
open_rate
click_rate
unsubscribe_rate
complaint_rate
created_at

Формулы:

open_rate = open_count / delivered_count
click_rate = click_count / delivered_count
unsubscribe_rate = unsubscribe_count / delivered_count
complaint_rate = spam_complaint_count / delivered_count

Проверка: отчет считает не только opens, но и негативные сигналы.

Шаг 25. Создайте recommendation_queue

В `recommendation_queue` добавьте колонки:

recommendation_id
campaign_id
recommendation_type
summary
evidence
recommended_action
risk_level
owner_email
status
created_at

`recommendation_type`:

subject_improve
segment_adjust
frequency_reduce
deliverability_check
unsubscribe_risk
ab_test_next
content_update
cta_change

Проверка: агент предлагает действие на основе данных кампании, а не “улучшить письмо”.

Шаг 26. Настройте audit_log

В `audit_log` добавьте колонки:

audit_id
actor
action
object_type
object_id
before_json
after_json
created_at

Логируйте:

  1. синхронизацию контактов;
  2. consent check;
  3. suppression check;
  4. сбор сегмента;
  5. генерацию draft;
  6. content checks;
  7. link checks;
  8. approval;
  9. send queue;
  10. отправку;
  11. event import;
  12. unsubscribe;
  13. отчет;
  14. ошибку API.

Проверка: можно восстановить путь кампании от brief до отчета.

Шаг 27. Настройте error_log

В `error_log` добавьте колонки:

error_id
campaign_id
workflow_name
node_name
error_type
error_message
payload_snapshot
status
owner_email
created_at

Типы ошибок:

esp_api_failed
segment_empty
consent_missing
suppression_check_failed
llm_invalid_json
link_check_failed
approval_timeout
send_failed
event_import_failed
report_failed

Проверка: если ESP API упал, кампания не считается отправленной.

Шаг 28. Протестируйте на тестовом сегменте

Создайте сегмент из 10-20 внутренних адресов.

Проверьте:

  1. контакты есть в `contact_registry`;
  2. consent есть в `consent_log`;
  3. suppression исключает заблокированные адреса;
  4. segment_members показывает включенных и исключенных;
  5. draft содержит subject, preheader, body, CTA;
  6. content_checks ловит risky claims;
  7. link_checks ловит битую ссылку;
  8. approval блокирует отправку;
  9. send_queue заполняется только после approve;
  10. события попадают в `email_events`.

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

Минимальная проверка результата

MVP готов, если:

  • аккаунты описаны в `email_accounts`;
  • контакты есть в `contact_registry`;
  • согласия пишутся в `consent_log`;
  • suppression list работает;
  • сегменты описаны в `segment_rules`;
  • получатели пишутся в `segment_members`;
  • brief пишется в `campaign_briefs`;
  • шаблоны есть в `email_templates`;
  • письма пишутся в `email_drafts`;
  • проверки пишутся в `content_checks`;
  • ссылки проверяются в `link_checks`;
  • A/B-тесты пишутся в `ab_tests`;
  • approval блокирует отправку;
  • send queue принимает только approved кампании;
  • отправки пишутся в `send_log`;
  • события пишутся в `email_events`;
  • отписки пишутся в `unsubscribe_log`;
  • отчеты пишутся в `campaign_reports`;
  • рекомендации пишутся в `recommendation_queue`;
  • audit и error logs заполнены.

Перед живым запуском пройдите чек-лист:

  1. Подключите один ESP в draft/read-only режиме.
  2. Синхронизируйте 20 тестовых контактов.
  3. Добавьте один email в suppression list.
  4. Создайте segment rules.
  5. Сформируйте campaign brief.
  6. Сгенерируйте draft.
  7. Добавьте одну битую ссылку и проверьте `link_checks`.
  8. Отклоните draft через approval.
  9. Одобрите исправленный draft.
  10. Отправьте только на внутренний тестовый сегмент.

Что нельзя автоматизировать в первой версии

  • массовую отправку без approval;
  • импорт новой базы;
  • отправку без consent;
  • отправку по suppression list;
  • удаление контактов;
  • изменение статуса подписки;
  • обещания скидок, гарантий и сроков;
  • запуск промо без проверки;
  • запуск automation без approval;
  • отправку кампании с битой ссылкой отписки;
  • повторную отправку одной кампании из-за сбоя workflow.

Частые вопросы

Может ли агент сам отправлять рассылку?

В первой версии лучше нет. Он должен готовить сегмент, письмо, проверки и send request, а человек подтверждает отправку. Автоотправку можно включать позже только для низкорисковых кампаний с лимитами.

Что подключить первым?

Подключите платформу, где уже есть база и история кампаний: Mailchimp, Brevo, Unisender или другой ESP. Для MVP достаточно чтения контактов, кампаний, отчетов и создания черновиков.

Как агент защищает от проблем с deliverability?

Он проверяет suppression list, hard bounce, spam complaints, частотность, наличие отписки, битые ссылки и рискованные формулировки. Но техническую репутацию домена все равно нужно мониторить отдельно.

Нужны ли A/B-тесты сразу?

Не обязательно. Сначала добейтесь стабильного процесса: сегмент, draft, checks, approval, send, report. A/B добавляйте, когда есть достаточный размер сегмента и понятная гипотеза.

Какие метрики смотреть после рассылки?

Delivered, open rate, click rate, conversion, revenue, bounce, spam complaints, unsubscribe rate, CTR по ссылкам и качество трафика или лидов после перехода.

Дальше по теме

Похожие материалы