Два почтовых провайдера, от которых всё зависит, публикуют свои требования к массовым отправителям, и прочитать их стоит раньше, чем в шаблоне появится первая фигурная скобка. Правила 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 — слишком много» в правилах нет: правила про spintax молчат. Вопрос можно сузить до единственной вещи, которую спиннинг меняет измеримо: сколько ваших получателей получают одно и то же письмо. Это число и цена его сдвига — ниже.

Одно письмо, пятьсот отправок

Письмо построено так, как учит любое руководство по холодным рассылкам: тема, первая строка с названием компании, строка про пользу, строка с доказательством, призыв к действию и подпись с двумя ссылками. В нём 24 места, куда можно поставить группу синонимов, по три варианта в каждой, и включаются они в том порядке, в каком их добавлял бы копирайтер: сначала тема и первая строка. Получатели — 500 пар «имя плюс компания»: правдоподобный день для одного отправляющего домена, взятый здесь как пример, и десятая часть порога из правил. Движок — открытый @spintax/core; весь эксперимент умещается в один файл, ссылка в конце.

Две отправки считаются одинаковыми, если после удаления имени и компании их текст совпадает полностью, вместе с темой письма: так сравнивает этот эксперимент, а что сравнивает настоящий фильтр, не опубликовано.

Живых групп из трёх Писем на бумаге Разных писем на 500 отправок Отправок, чей текст получил кто-то ещё
0 1 1 500
2 9 9 500
4 81 81 498
6 729 371 231
8 6 561 483 32
10 59 049 500 0

Последнюю колонку никто не цитирует. Первые две группы стоят в теме письма, так что при двух группах различаются только темы, а сам текст у всех один. Четыре группы из трёх, нижняя планка обычных советов, дают 81 письмо, и у 498 получателей из 500 в руках текст, который получил ещё кто-то. При шести группах таких по-прежнему 231. Это не случайность: при 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% остальных отправок или чаще.

Живых групп из трёх Доля письма, одинаковая в 95% отправок
0 100.0%
8 68.4%
24 7.5%

При 24 группах, когда закручено каждое предложение, 7.5% каждого письма всё ещё совпадают почти во всех отправках. Эти 7.5% — блок подписи: имя отправителя, компания и две ссылки, запись на звонок и отписка. Ссылка на отписку, которую требования предписывают, стоит в этом блоке; остальное, что они предписывают, аутентификация и доля жалоб, привязано к домену. Что фильтры взвешивают сверх этого, не опубликовано; а то, что опубликовано, касается части, до которой не дотягивается ни один синоним.

Выходит, спиннинг — страховка от одной конкретной вещи, отпечатка текста, и стоит она ровно столько, сколько этот отпечаток значит для фильтра, чьи веса за пределами 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» — нет: после «we work with» следующему глаголу нужен «to» впереди, автор шаблона этого не заметил, а этот линт заметить не может, потому что согласование двух слотов между собой он не проверяет. Лечится это привычкой, а не инструментом: ветвить самый короткий отрезок, который действительно различается, и читать двадцать рендеров, а не один. На странице продукта обе привычки перечислены в разделе «перед отправкой».

Где проходит граница

Групп из трёх Что это даёт при 500 отправках в день
от 0 до 3 одно письмо или горстка; отпечаток цел, а текст ваш
от 4 до 6 от 81 до 729 писем; при шести 231 получатель из 500 всё ещё делит текст с кем-то
от 10 до 11 при 11 ожидается меньше одной одинаковой пары; в измеренном прогоне на 10 не было ни одной
больше, чем нужно по таблице отпечатку это ничего не добавляет, зато больше повторов слов и больше предложений, которые не выдерживает ни один набор вариантов
любая группа, варианты которой не взаимозаменяемы в предложении сломанное письмо на каком-то seed, сколько бы групп ни было

Слишком много spintax — это больше групп, чем нужно вашему дневному объёму, или одна группа, варианты которой не согласуются со словами вокруг. Слишком мало — меньше, чем по таблице, если вы страхуетесь именно от общего письма; имеет ли это значение для фильтра, эта статья измерить не может. Вендорское правило «три-пять» — ни то ни другое: это правильный объём прозы и половина от одиннадцати групп, которые нужны при 500 отправках в день.

Где это ломается

Всё, что здесь измерено, — текст. Ничто из этого не доставляемость. Что Gmail или Outlook делают с 500 одинаковыми письмами с аутентифицированного домена с низкой долей жалоб, не опубликовано, а вендорские цифры, которые ходят по рынку, рост попадания во «Входящие» после добавления spintax в тему письма, — это замеры самих вендоров на собственных клиентах. Эта статья к ним ничего не добавляет и не пересказывает их как выводы.

Линт ловит повторы слов и плохие стыки, а грамматику между слотами пропускает по замыслу. Арифметика дней рождения предполагает, что движок выбирает варианты равномерно, и измеренные колонки это подтверждают с точностью до нескольких писем, но она ничего не говорит о том, что именно сравнивает фильтр: письма целиком, предложения или те 7.5%, которые общие у 95% отправок. Та же арифметика шинглов для веб-страниц, где пул читает не спам-фильтр, а Google, — в статье про scaled content abuse.

Где заканчивается ручной путь

Для одного шаблона и таблицы на 500 строк файл по ссылке рендерит пул, считает одинаковые письма и помечает повторы слов примерно за секунду, а прочитать двадцать рендеров глазами — десять минут:

npm install @spintax/core@0.6.1
node measure.mjs

Файл — measure.mjs. Его перестаёт хватать, когда шаблон меняется каждую неделю, список приходит из CRM, а письма уходят из сервиса, который понимает только скобки. Для этого на spintax.net есть мост для холодных рассылок: строки на входе, отрендеренные тема и текст на каждую строку на выходе, seed закреплён за получателем, линт прогнан по каждому рендеру, а уникальность пула измерена до того, как что-либо попадёт в сервис рассылки. Движок под ним — тот же пакет, которым мерила эта статья. Когда канал — не почта, а контакт-форма, и Send на каждой странице нажимает человек, тот же движок работает в расширении для браузера.