Конструктор шаблонов рассылок: как мы убрали 6 задач и 4 исполнителей из процесса

Раньше, чтобы внедрить новый шаблон письма, нужно было пройти цепочку: дизайнер → фронтенд → бэкенд → QA на стороне сервиса рассылок → QA на стороне сервиса-отправителя. Создание и редактирование шаблонов превращалось в мини-проект с большим количеством исполнителей. Мы предложили и реализовали Конструктор шаблонов. Нагрузка на команду разработки снизилась — усилия направили на более важные направления.

Конструктор шаблонов рассылок: как мы убрали 6 задач и 4 исполнителей из процесса

Контекст: как было раньше

Напомним контекст. В статье о сервисе рассылок мы рассказывали, как построили единую точку отправки email и SMS для всех внутренних сервисов. А в истории про агрегаторы — как перешли на мультиагрегаторную модель.

Но у сервиса рассылок была ещё одна проблема — процесс работы с шаблонами.

Как это выглядело раньше:

Чтобы внедрить новый шаблон письма, нужно было пройти цепочку:

  1. Задача дизайнеру — нарисовать макет.

  2. Задача фронтенд-специалисту — сверстать шаблон.

  3. Уточнение у отправителя — какие данные в каком формате он будет посылать.

  4. Задача бэкенд-специалисту — интегрировать шаблон и настроить переменные.

  5. Задача QA — проверить шаблон на стороне сервиса рассылок.

  6. Задача QA — проверить на стороне сервиса-отправителя.

Что это давало на практике:

  • Создание и редактирование шаблонов — это большой список задач на большое количество исполнителей.

  • Каждый шаблон — это мини-проект с координацией между командами.

  • Бизнес ждал, команда тратила время на рутину.

  • Были задержки из-за релизных моделей разных команд

Одна кнопка «изменить шаблон» превращалась в цепочку из 6 задач и 4+ исполнителей.


Идея: Конструктор шаблонов

Мы предложили бизнесу Конструктор шаблонов — инструмент, в котором можно собирать вёрстку шаблона двумя способами:

  • Перетягиванием через блоки — для тех, кто не хочет работать с кодом.

  • Вставкой готового HTML — для тех, у кого уже есть вёрстка.

Цель: убрать цепочку задач и дать бизнесу инструмент, который позволяет создавать и редактировать шаблоны без участия разработки на каждом шаге.


Что вошло в Конструктор

1. Сборка из заготовленных блоков

Можно собирать шаблон из готовых блоков:

  • менять текст;

  • менять иконки;

  • удалять блоки;

  • переставлять блоки местами.

Это даёт гибкость без необходимости писать код.

2. Вставка готового HTML-шаблона

Вместо работы с блоками можно вставить готовый HTML-шаблон с местами под переменные.

Как это работает:

  • В шаблоне есть места для переменных (например, {{name}}, {{order_id}}).

  • При отправке сервис подставляет данные в эти места.

  • Для этого есть инструкция — как размечать переменные в HTML.

3. Превью собранного шаблона

Перед сохранением можно посмотреть, как шаблон будет выглядеть.

Это важно: не нужно отправлять тестовое письмо, чтобы увидеть результат. Превью показывает вёрстку сразу.

4. Название и комментарий к шаблону

У каждого шаблона есть:

  • название — для быстрого поиска;

  • комментарий — для описания назначения и особенностей.

Это помогает не путаться, когда шаблонов становится много.

5. Привязка API-пользователей и отправителей

Можно указать, какие API-пользователи (в основном сервисы, которые шлют письма) могут пользоваться шаблоном.

Что можно настроить:

  • Список API-пользователей, которым доступен шаблон.

  • Отправитель для каждого API-пользователя — из списка доступных.

  • Активация и деактивация API-пользователей.

Это даёт контроль: кто и через какого отправителя может использовать шаблон. Так же оперативно их выключать и обратно включать.

6. Инструкция по интеграции

Для каждого шаблона есть инструкция по интеграции:

  • Запрос, который нужно сделать.

  • Ответ, который вернётся.

  • Схема параметров — если есть большая вложенность и при обработке шаблона данные могут подгрузиться неверно.

Схема параметров — важная деталь: если в шаблоне сложная структура данных, инструкция помогает разработчику правильно передать параметры.

7. Функционал, который мы добавили при проектировании

Помимо запрошенного, мы предусмотрели:

  • Валидация переменных — проверка, что все переменные в шаблоне определены и имеют корректный формат.

  • Тестовая отправка — отправить письмо с тестовыми данными, чтобы проверить, как оно выглядит в реальной почте.

  • Клонирование шаблона — создать новый шаблон на основе существующего.

  • Версионирование — история изменений шаблона с возможностью отката.

  • Роли и доступы — кто может создавать, редактировать и использовать шаблоны.


Как это работает: полный цикл

Опишем, как теперь создаётся новый шаблон.

  1. Бизнес заходит в Конструктор — в дашборде сервиса рассылок.

  2. Выбирает способ: собрать из блоков или вставить готовый HTML.

  3. Собирает шаблон — перетаскивает блоки или вставляет HTML с переменными.

  4. Смотрит превью — как шаблон будет выглядеть.

  5. Добавляет название и комментарий.

  6. Привязывает API-пользователей и указывает отправителя для каждого.

  7. Проверяет инструкцию по интеграции — запрос, ответ, схема параметров.

  8. Сохраняет и активирует шаблон.

Результат: шаблон готов. Разработка не участвовала на каждом шаге.


Результат: нагрузка на команду снизилась

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


Стек

  • Backend: Laravel (PHP)

  • Frontend: Vue.js (дашборд)

  • Очереди: RabbitMQ (для отправки)

  • Интеграция: API, JSON


Что мы вынесли из этой истории

1. Инструмент для бизнеса освобождает разработку

Когда бизнес может сам создавать и редактировать шаблоны — разработка не тратит время на рутину. Это win-win: бизнес быстрее, команда свободнее.

2. Два способа сборки — для разных пользователей

Не все хотят работать с блоками. Не все умеют писать HTML. Конструктор должен поддерживать оба сценария: перетаскивание блоков и вставку готового кода.

3. Превью экономит время

Возможность увидеть результат до сохранения — это экономия на тестовых отправках и правках.

4. Инструкция по интеграции — обязательна

Если шаблон использует переменные, разработчику нужно знать, как их передавать. Схема параметров помогает не запутаться при сложной вложенности.

5. Валидация и тестовая отправка — страховка от ошибок

Проверка переменных и тестовая отправка снижают риск, что шаблон уйдёт клиенту с ошибкой.


Заключение

Эта история — про то, что оптимизация внутренних процессов так же важна, как и разработка новых функций. Конструктор шаблонов не добавил новых возможностей для клиентов — но он убрал 6 задач и 4+ исполнителей из процесса.

Бизнес получил инструмент. Команда — свободное время. Продукт — меньше рутины.

Обсудим проект

Расскажите о задаче — оценим за пару дней

Контакты