---
title: "Mailgun и n8n: transactional email без дублей | Nodbot"
source_url: "https://nodbot.ru/integrations/mailgun/"
canonical_url: "https://nodbot.ru/integrations/mailgun/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 1211
---

# Интеграция Mailgun и n8n: transactional email с шаблонами, tracking и idempotency

## AI summary

Problem/Solution-гайд по Mailgun и n8n: как отправлять transactional email через API без дублей, с шаблонами, проверкой получателей, tracking и журналом доставки.

## Key topics
- Mailgun API
- transactional email
- templates
- idempotency key
- delivery tracking
- bounce handling

## Source outline


# Интеграция Mailgun и n8n: transactional email с шаблонами, tracking и idempotency

Обновлено: 2026-05-30

Импортируйте JSON в n8n, замените credentials, домены, sender IDs, лимиты, callback URL и production-политики под вашу инфраструктуру.

- Проблема и решение
- Архитектура workflow
- Контракт данных
- Code Node и проверки
- Готовый workflow JSON
- Пошаговая настройка
- Тесты перед production
- Production-риски
- Полезные ссылки
- Критерии готовности
Проблема: письмо из CRM или формы кажется простым HTTP-запросом, пока retry не отправляет клиенту два одинаковых invoice, шаблон не ломается из-за пустого поля, а delivery status остаётся только в логах Mailgun.

Решение: интеграция Mailgun и n8n должна валидировать получателя, выбрать approved template, собрать idempotency key, отправить письмо через Sending API и записать delivery/audit status обратно в CRM или таблицу. Такой подход закрывает не демонстрационный happy path, а реальную production-боль: повторы, consent, delivery status, API-ошибки, ограничения провайдера и понятный audit trail.


## Проблема: почему простая отправка ломает коммуникации

Коммуникационный workflow нельзя оценивать только по ответу API. Важны consent, формат адреса или телефона, повторная отправка, связь с CRM, callback-статусы и способ отката, если провайдер принял запрос, но сообщение не доставлено.

Для этой страницы основной объект — transactional email message . Входной контракт должен явно фиксировать recipient_email, template_name, variables, campaign_id, idempotency_key, message_id. Если эти поля приходят нестабильно, автоматизация начинает угадывать и может отправить сообщение не тому получателю, не тем каналом или повторно.

Поэтому workflow строится вокруг детерминированных проверок: сначала validation, consent и idempotency, затем отправка, затем callback/audit и только потом бизнес-действия вроде смены статуса или уведомления менеджера.


## Архитектура workflow для n8n

Такой workflow удобно сопровождать: mapping, API-запрос, retry, callback и human-readable audit не смешиваются в одной ноде.


## Контракт входных данных

Payload можно расширять, но нельзя делать обязательные поля “по настроению”. Если источник не передал внешний ID, получателя, шаблон или consent, workflow должен остановиться с понятной ошибкой до отправки.


## Code Node: нормализация, mapping и guard-условия

Этот скрипт n8n не заменяет политику провайдера. Его задача — привести данные к стабильному контракту, сформировать idempotency key и не пропустить опасный payload дальше по цепочке.


## Готовый workflow JSON: скачать и импортировать

В архиве страницы есть импортируемый workflow JSON и тестовый payload. После импорта замените credentials, домены, sender IDs, callback URL, лимиты и правила доступа. Не запускайте сценарий на production-данных, пока не проверены повторы, пустые значения и ошибки API.


## Пошаговая настройка связки

- Подтвердите sending domain в Mailgun и не используйте sandbox domain для production-писем клиентам.
- Создайте allowlist template names и не разрешайте workflow отправлять произвольный HTML из входного payload.
- Сохраните Mailgun API key в credentials или ENV, а не в Code Node и не в test payload.
- Добавьте таблицу idempotency: ключ, order_id/deal_id, recipient_email, template, Mailgun message_id и status.
- Подключите webhook delivery events и обновляйте CRM после accepted/delivered/failed, а не только после 200 OK.
Откройте каждую ноду, замените credentials и IDs, включите dry-run там, где доступно, затем выполните сценарий на тестовом объекте. Для платных или внешних отправок добавьте approval, rate limit и отдельный тестовый получатель.


## Тесты перед production

Минимальный smoke test:

- повторный payload с тем же order_id
- невалидный email
- template не из allowlist
- ошибка Mailgun 401/429
- delivery failed event после успешной отправки
Отдельно проверьте, что retry n8n не создаёт повторную отправку. Для критичных действий используйте durable storage: Postgres, CRM custom field, audit table или другой слой с уникальным ключом.


## Production-риски

- 200 OK от Mailgun считается доставкой, хотя это только принятие запроса.
- Retry n8n отправляет одно письмо повторно без durable idempotency.
- HTML письма приходит из формы и открывает риск фишинга или XSS в шаблоне.
- Bounce/failed события не возвращаются в CRM, и менеджер не видит проблему.
- Один API key используется для всех доменов без разделения окружений.

## Полезные ссылки и смежные материалы

- Mailgun Sending API
- SendGrid integration
- Gmail integration
- Error workflow alerts
Внутренняя перелинковка помогает перейти от общего integration-гайда к готовым workflow, а внешние ссылки ведут на официальную документацию API и n8n-нод.


## Критерии готовности

- Повторный запуск не отправляет второе письмо.
- Шаблоны ограничены allowlist и версионируются.
- Mailgun message_id сохраняется в CRM или audit table.
- Delivery events обновляют статус письма после отправки.
- Ошибки 401/429/5xx уходят в alert или DLQ.
