Два почтовых провайдера, которые имеют значение, публикуют, чего они требуют от массового отправителя, и это стоит прочитать до того, как в шаблон попадёт первая фигурная скобка. Правила Google для отправителей действуют с 1 февраля 2024 и начинаются с порога:
Starting February 1, 2024, email senders who send more than 5,000 messages per day to Gmail accounts must meet the requirements in this section.
Требования — аутентификация, доля жалоб и отписка:
Set up SPF and DKIM email authentication for your domain
Set up DMARC email authentication for your sending domain
Keep spam rates reported in Postmaster Tools below 0.30%
Marketing messages and subscribed messages must support one-click unsubscribe, and include a clearly visible unsubscribe link
Microsoft провёл ту же черту на том же числе. Его пост для крупных отправителей,
опубликованный 2 апреля 2025 и обновлённый 29 апреля, ставит порог в более чем 5 000 писем
в день, требует SPF, DKIM и DMARC как минимум с p=none и выравниванием по одному из двух
и говорит, что будет иначе: несоответствующие письма сначала уходят в Junk, а потом могут
и отклоняться. Требования действуют с 5 мая 2025.
Прочитайте обе страницы от начала до конца, и вы не найдёте слов «синоним», «похожий» или «одинаковый». Единственные фразы про содержание — про честность:
Message headers and message content should be accurate, and not misleading or deceptive
Don’t use HTML and CSS to hide content in your messages. Hiding content might cause messages to be marked as spam
Так что на вопрос «сколько spintax — слишком много» из свода правил не ответить: свод правил его не упоминает. На него можно ответить из того единственного, что спиннинг измеримо меняет: сколько ваших получателей получают одинаковые письма, одно и то же тело. Это число, и чего стоит его сдвинуть, — ниже.
Одно письмо, пятьсот отправок
Письмо из пяти строк, той формы, которой учит каждое руководство по холодным рассылкам: тема, первая строка с названием компании, строка про пользу, строка с доказательством, призыв к действию и подпись с двумя ссылками. В нём 24 места, где можно включить группу синонимов, по три варианта в каждой, в том порядке, в каком их добавлял бы копирайтер: сначала тема и первая строка. Получатели — 500 пар «имя и компания», это реалистичный день для одного отправляющего домена и десятая часть порога выше. Движок — открытый @spintax/core; весь эксперимент — один файл, ссылка в конце.
Две отправки считаются одинаковыми, когда после удаления имени и компании их текст совпадает: именно это сравнил бы фильтр, который снимает отпечаток с шаблона.
| Живых групп из трёх | Тел на бумаге | Разных тел среди 500 отправок | Самая большая группа одинаковых |
|---|---|---|---|
| 0 | 1 | 1 | 500 |
| 2 | 9 | 9 | 70 |
| 4 | 81 | 81 | 12 |
| 6 | 729 | 371 | 5 |
| 8 | 6 561 | 483 | 3 |
| 10 | 59 049 | 500 | 1 |
Средняя колонка — та, которую никто не цитирует. Четыре группы из трёх, нижний край обычного совета, дают 81 тело письма и одно из них вручают двенадцати людям. Шесть групп всё ещё дают только 371 разное тело на 500 отправок. Это не везение: для C тел и N отправок ожидаемое число разных тел равно C, умноженному на единицу минус e в степени минус N на C, — формула, которую страница продукта о холодных рассылках выводит для 20 000 отправок, а на 500 она предсказывает 362, 481 и 498 для трёх последних строк против измеренных 371, 483 и 500.
Сколько групп нужно вашему объёму
Разверните ту же арифметику, и она скажет, сколько групп нужно объёму отправки, чтобы ожидаемое число одинаковых пар опустилось ниже единицы:
| Отправок в день | Групп из трёх | Тел на бумаге |
|---|---|---|
| 200 | 10 | 59 049 |
| 500 | 11 | 177 147 |
| 2 000 | 14 | 4 782 969 |
| 5 000 | 15 | 14 348 907 |
На фоне этой таблицы стандартный совет выглядит иначе. Три-пять групп — то, что рекомендует большинство вендорских руководств, и страница продукта по ссылке выше читает это как потолок, до которого подмена слов остаётся безопасной, а не как рекомендацию. Пять групп из трёх — это 243 тела. При 200 отправках в день это около 82 пар получателей с одинаковым телом письма; при 500 в день — около 513. Совет прав насчёт текста и неправ насчёт арифметики, и разрыв между десятью группами и пятью — вся проблема: объём хочет вдвое больше вариативности, чем может вынести проза.
Закрыть разрыв без словаря синонимов можно, варьируя что-то кроме слов. Перестановка четырёх элементов по два-три за раз — это 36 исходов от одной правки, примерно три группы, и меняет она порядок и длину, а не словарь; условие меняет то, что предложение говорит, по полю в строке. Обе конструкции разобраны на странице продукта с посчитанной арифметикой, и ни одна не работает внутри отправлялки, которая разбирает плоские скобки и больше ничего. Сначала рендер, потом отправка готового текста.
Чего спиннинг не трогает никогда
Теперь второй замер, и он объясняет, почему свод правил может не замечать синонимы. Возьмите каждую отправку и посчитайте, какая часть каждого тела — текст, который встречается почти в каждой другой отправке.
| Живых групп из трёх | Доля тела, одинаковая в 95% отправок |
|---|---|
| 0 | 100.0% |
| 8 | 68.4% |
| 24 | 7.5% |
При 24 группах, когда закручено каждое предложение, 7.5% каждого тела по-прежнему совпадают в каждой отправке. Эти 7.5% — блок подписи: имя отправителя, компания и две ссылки, страница записи и отписка. И это ровно та часть письма, о которой говорят требования выше. Аутентификация висит на домене. Доля жалоб висит на домене. Отписка — одна из этих двух ссылок. Спам-фильтр, который смотрит на отправляющий домен и домены ссылок, видит одно и то же письмо 500 раз, будь в теле ноль групп или 24, и два провайдера, которые публикуют свои правила, говорят, что смотрят именно на это.
Спиннинг, таким образом, — страховка от одной конкретной вещи, отпечатка тела письма, и стоит он ровно столько, сколько этот отпечаток стоит для фильтра, чьи веса никто вне Google и Microsoft не знает. Это не аргумент против него. Это причина перестать добавлять группы, когда первая таблица удовлетворена, потому что дальше начинается сторона расходов.
Чего это стоит
Стоит это текста. С ростом числа групп ломаются две вещи, и только одну из них может поймать машина.
Первая — слово, дважды попавшее в короткий отрезок, потому что две соседние группы случайно выбрали его. У ноды spintax для n8n есть линт ровно для этого: окно в шесть слов, служебные слова исключены, и его языконезависимая половина воспроизведена в файле замера. На этом письме он не находит ничего до четырёх групп, а начиная с восьми помечает 6.6% рендеров: «is growing the team» из первой строки за три слова до «growing teams» из строки про пользу. Каждый помеченный рендер — письмо, которое читается как написанное машиной, а это то самое впечатление, ради избегания которого всё и затевалось, и 6.6% от 500 — это 33 получателя в день.
Вторую поймать нельзя. Вот то же письмо, seed 7, со всеми 24 живыми группами:
We work with companies at your stage cut ramp-up time.
Каждый вариант в каждой группе сам по себе был в порядке. «We help teams like yours cut onboarding time» — предложение; «We work with companies at your stage cut ramp-up time» — нет, потому что второму варианту первой группы нужен другой глагол после него, автор шаблона этого не заметил, а линт заметить не может: согласование между двумя слотами — не механическое правило. Лечится это привычкой, а не инструментом: ветвить наименьший отрезок, который различается, и читать двадцать рендеров, а не один. Страница продукта перечисляет обе привычки в разделе «перед отправкой».
Где проходит граница
| Групп из трёх | Что это даёт при 500 отправках в день |
|---|---|
| от 0 до 3 | одно тело письма или горстка; отпечаток цел, а текст ваш |
| от 4 до 6 | от 81 до 729 тел; треть получателей всё ещё делит тело с кем-то ещё |
| от 10 до 11 | никакие два получателя не получают одно тело; это число для 500 в день |
| больше, чем нужно по таблице | ничего нового для отпечатка, больше повторов слов, больше предложений, которые не выдерживает ни один набор вариантов |
| любая группа, варианты которой не взаимозаменяемы в предложении | сломанное письмо на каком-то seed, сколько бы групп ни было |
Слишком много spintax — это больше групп, чем нужно вашему дневному объёму, или одна группа, варианты которой не согласуются со словами вокруг. Слишком мало — меньше, чем по таблице. Вендорское правило «три-пять» — ни то ни другое: это правильное количество прозы и пятая часть арифметики.
Где это ломается
Всё, что здесь измерено, — текст. Ничто из этого — не доставляемость. Что Gmail или Outlook делают с 500 одинаковыми телами с аутентифицированного домена с чистой долей жалоб, не опубликовано, а гуляющие вендорские цифры, рост попадания во «Входящие» после добавления spintax в темы писем, — собственные замеры вендоров на собственных клиентах. Эта статья к ним ничего не добавляет и не повторяет их как выводы.
Линт ловит повторы слов и плохие стыки и по замыслу пропускает грамматику между слотами. Арифметика дней рождения предполагает, что движок выбирает равномерно, и измеренные колонки это подтверждают с точностью до нескольких тел, но она ничего не говорит о том, сравнивает ли фильтр тела целиком, предложения или те 7.5%, которые никогда не меняются. Та же арифметика шинглов на веб-страницах, где пул читает не спам-фильтр, а Google, — в статье про scaled content abuse.
Где заканчивается ручной путь
Для одного шаблона и таблицы на 500 строк файл по ссылке рендерит пул, считает одинаковые тела и помечает повторы слов примерно за секунду, а прочитать двадцать рендеров глазами — десять минут:
npm install @spintax/core@0.6.1
node measure.mjs
Файл — measure.mjs. Его перестаёт хватать, когда шаблон меняется еженедельно, список приходит из CRM, а отправки уходят из инструмента, который понимает только скобки. Это мост для холодных рассылок на spintax.net: строки на входе, отрендеренные тема и тело на каждую строку на выходе, seed закреплён за получателем, линт прогнан по каждому рендеру, а уникальность пула измерена до того, как что-либо попадёт в отправлялку. Движок под ним — тот же пакет, которым мерила эта статья. Когда канал — не почта, а контакт-форма, и на каждой странице Send нажимает человек, тот же движок работает в расширении для браузера.