Креатив
Документ, а не шаблон
То, что вы пишете, — это дерево блоков с опубликованной схемой. То, что уходит, — этот документ, отрисованный для цели: e-mail, страница, форма, SMS, push или печать. Они разделены намеренно, потому что редактор заменяем, а отрисовка — нет, и притворство обратным — это то, как маркетинговый инструмент оказывается с шестью версиями одного сообщения, которые больше не совпадают.
Шесть целей, один источник
У каждой цели есть ограничения, которые не дело вкуса, и отрисовщик знает их, чтобы вам не приходилось.
E-mail означает таблицы и встроенный CSS, без flex и grid, потому что Outlook по-прежнему использует Word для вёрстки писем, автоматически созданную текстовую альтернативу, цвета, переживающие инверсию в клиенте с тёмной темой, и ограничение размера около 102 КБ, где Gmail начинает обрезать.
Страница означает обычный современный адаптивный HTML, опубликованный по слагу, на вашем собственном домене, если хотите. Форма — это страница плюс привязки полей, валидация, ханипот и лимит частоты — и это единственный путь в ваши контакты, который законно может создать основание consent.
SMS считает сегменты по мере набора. Push — это заголовок, текст, значок, действия и глубокая ссылка. Письмо — это печатный CSS, отрисованный в PDF, адресованный и отправленный почтой.
Сам документ хранится как конфигурация с опубликованной схемой в службе документов экосистемы, а не спрятан в приватной таблице. А значит, в день, когда появится лучший редактор, он будет редактировать те же документы, и ничего выше по цепочке не изменится.
- 1emailТаблицы, встроенный CSS, текстовая альтернатива, безопасно для тёмной темы, ограничение ~102 КБ.
- 2страницаАдаптивный HTML по слагу, на вашем домене.
- 3ФормаСтраница плюс привязки, валидация, ханипот, лимит частоты.
- 4smsТекст с живым счётчиком сегментов GSM-7 / UCS-2.
- 5pushЗаголовок, текст, значок, действия, глубокая ссылка.
- 6ПисьмоПечать CSS → PDF.
- iСтыкРедактор можно заменить; цели — нет. Именно поэтому у документа есть опубликованная схема.
Результат рендеринга кэшируется для каждой цели
Переменные слияния
Неизвестная переменная приводит к сбою при публикации, а не молча при отправке
По умолчанию любой язык шаблонов при отсутствии ключа не выводит ничего. В письме это означает «Здравствуйте, ,» для сорока тысяч получателей, и никто не узнает об этом, пока не начнут приходить ответы. Поэтому документ проверяется на соответствие словарю переменных ещё до публикации.
Что можно подставлять
Электронную почту, имя, телефон и язык контакта; attrs.* — открытый набор, потому что атрибуты принадлежат вам; название и почтовый адрес вашей организации; ссылки для отписки и настройки; а также тему и прехедер самого сообщения.
Это сознательно список, а не «всё, что есть в записи». В записи контакта есть и внутренние идентификаторы, и ни один из них не должен попадать в сообщение.
Значение по умолчанию — не отсутствующая переменная
{{first_name | default:there}} — это известная переменная, которой просто нет у данного контакта — например, в импортированном списке, где у половины строк не было имени. Выводится значение по умолчанию, и это совершенно нормально.
Отклоняется {{frist_name}}: переменная, которой нет ни у кого. При отправке они выглядят одинаково. При публикации разница между ними принципиальна — именно поэтому проверка происходит там.
Один и тот же словарь работает для всех целей, поэтому фраза, написанная для письма, выводится в SMS и на целевой странице без переписывания. А first_name вычисляется при рендеринге из полного имени, а не хранится отдельно — потому что сохранённое разделение рано или поздно окажется неверным для человека, чьё имя не вписывается в предположение.

Напишите один раз. Оно придёт одетым по каналу.
Перед отправкой
Проверки, которые выполняются, пока ещё можно всё исправить
Обрезка в Gmail
Примерно после 102 КБ Gmail обрезает письмо и прячет остальное за ссылкой, на которую почти никто не нажимает — включая, в самом низу, вашу ссылку отписки. Рендерер измеряет размер и предупреждает при публикации.
Вес изображений
Фотография на четыре мегабайта ломает бюджет размера и плохо отображается на телефоне. Изображения уменьшаются и конвертируются при загрузке — это вопрос доставляемости, а не эстетики.
Предпросмотр во входящих
Сообщение рендерится и снимается на скриншот в десктопной и мобильной ширинах, поэтому в списке видно, как оно выглядит на самом деле, а не только его название. Никаких платных сервисов предпросмотра.
Настоящая тестовая отправка
Отправьте письмо себе — через тот же рендерер и тот же отправительский идентификатор, которые получит реальный адресат. Предпросмотр, идущий по другому коду, ничего не доказывает о сообщении, которое уйдёт.
Вставленный HTML очищается
Содержимое, вставленное откуда-либо, проходит через очиститель перед сохранением, потому что маркетинговое письмо — не место, чтобы узнавать, что было в чьём-то буфере обмена.
Markdown, если вам так удобнее
Пишите в Markdown — и он будет отрендерен. Это куда надёжнее, чем просить модель сгенерировать HTML для письма, и именно поэтому агент, пишущий сообщение, — рабочая идея, а не демо.
Начните со своего сайта
Вставьте URL при первом запуске. ClickSomo читает страницу: логотип, иконки, манифест и измеренные цвета — не цвета, которые кто-то угадал, — и собирает первое письмо, которое уже выглядит как ваше. Он также определяет платформу, чего обычно достаточно, чтобы предложить подходящую воронку: магазину — брошенную корзину, изданию — приветственную рассылку.
Каждая загрузка указанного вами URL проходит через защищённый загрузчик: только HTTP и HTTPS, буквальные адреса проверяются напрямую, каждый ответ DNS должен быть публичным, каждый переход по перенаправлению проверяется заново. Загрузка произвольных URL от имени клиента — один из простейших способов проделать дыру в собственной сети, и такое не пишут дважды.
Честно говоря: первый шаблон, сгенерированный с вашего сайта, — это хорошее начало, а не готовый дизайн. Он более-менее правильно берёт логотип, цвета и шрифт, чтобы ваша первая отправка не выглядела как демо, — а дальше вы его редактируете, что куда приятнее, чем смотреть на пустой холст.