Код подтверждения по SMS больше не приходит: что на самом деле блокирует фильтр SHAFT для сайта объявлений для взрослых

Код, который никогда не приходит, и никто не объясняет почему
Посетитель регистрируется, вводит номер телефона и ждет шестизначный код, который позволит ему войти. В хороший день код приходит за три секунды. В плохой день он не приходит вообще, и ничто в продукте не объясняет, почему. Форма регистрации не показывает никакой ошибки. Оператор не присылает уведомление о недоставке. Сообщение просто не существует на другой стороне, и единственный видимый симптом это чуть более высокий процент отказов, который можно списать на десяток других причин.
Это молчание хуже, чем сбой, потому что сбой можно устранить. Фильтр контента на стороне оператора, который тихо решил, что ваш трафик относится к запрещенной категории, не устраняется перезапуском сервера или обновлением ключа API. Его можно решить только поняв, что его вызвало, а большинство операторов бизнеса до этого никогда не доходят, потому что причина отказа хранится в консоли для разработчиков, которую они никогда не открывают, написанной языком для программистов, а не для владельца бизнеса.
Механизм за этим не слух. У него есть аббревиатура, набор кодов ошибок, опубликованных компаниями, которые направляют трафик, и прямая связь со словом, стоящим прямо в названии самой деятельности: для взрослых. Американские операторы фильтруют коммерческие SMS, сравнивая их с небольшим набором категорий контента, и одна из этих категорий это секс и контент для взрослых. Каталог объявлений эскорт-услуг попадает в нее по определению, независимо от того, что написано в реальном тексте сообщения.
Это не тот же сбой, который разбирается в другом месте этого блога. Доставляемость электронной почты ломается потому, что спам-фильтры оценивают сообщение по репутации отправителя и оформлению, и внимательный отправитель может выбраться из этого с помощью лучшей аутентификации и постепенного прогрева репутации. SMS-фильтрация контента для взрослых работает иначе: это не рейтинг репутации, который восстанавливается со временем, это совпадение категории, которое система оператора проверяет один раз, при регистрации, и часто вообще не позволяет подать заявку повторно.
Фильтр SHAFT: что операторы на самом деле помечают, их собственными словами
Отраслевое сокращение для заблокированных категорий это SHAFT: секс, ненависть, алкоголь, огнестрельное оружие и табак (в оригинале sex, hate, alcohol, firearms, tobacco). Это не термин, который операторы придумали для маркетинга; он встречается прямо в кодах отказа, которые платформы обмена сообщениями возвращают при неудачной заявке. Собственная документация ошибок Twilio для кода 30953 прямо говорит, что кампания была отклонена, потому что содержит секс или контент для взрослых, нарушающий рекомендации SHAFT от CTIA, и добавляет деталь, более важную, чем сам отказ: эта категория отказа не подлежит повторной подаче. Нет формы апелляции, нет пересмотренной формулировки, которая бы это исправила, нет второй попытки через обычный путь регистрации.
Та же схема проявляется и на стороне бесплатных номеров, к которым многие операторы бизнеса обращаются именно потому, что это кажется менее бюрократическим, чем стандартная регистрация локального номера. Код ошибки 30441 относится к проверке бесплатного номера, отклоненной потому, что проверяющий, глядя на реальный сайт, процесс согласия или образцы сообщений, поданные с заявкой, решает, что вариант использования "выглядит связанным с сексом". Отказ не ограничивается тем, что говорит отдельное сообщение. Он смотрит на сайт, который номер зарегистрирован представлять, а для каталога объявлений это весь бизнес целиком.
Что отличает это от закрытия счета платежным процессором это полное отсутствие разговора о рассмотрении дела. Платежный процессор закрывает продавца с уведомлением заранее, кодом причины, а иногда и сотрудником по соответствию, готовым это обсудить. Автоматический контент-фильтр оператора выдает код отказа на панели для разработчиков и идет дальше. Никто в компании-операторе не решает, что ваш бизнес не заслуживает обслуживания; правило, написанное много лет назад по другой причине, делает это автоматически, и ему не известно и не важно, что речь идет о безобидных шестизначных кодах входа.
Совпадение категории происходит на уровне зарегистрированного бренда и варианта использования, а не только слов внутри каждого сообщения. Кампания регистрируется с названием бизнеса, описанием назначения сообщений и часто ссылкой на сайт. Если хотя бы одно из этих трех элементов читается как контент для взрослых, фильтр может отклонить всю кампанию, даже если реальный текст SMS это всего лишь число и слово "код". Это деталь, которую операторы бизнеса упускают чаще всего: очистка текста сообщения не очищает регистрацию, стоящую за ним.
Почему "просто перейти на Verify" не является полным решением
Стандартный совет, как только оператор бизнеса понимает проблему, это перестать пытаться зарегистрировать полноценную коммерческую кампанию обмена сообщениями и вместо этого использовать выделенный продукт для аутентификации, например API Verify от Twilio или аналог от другого поставщика. Этот совет верен до определенного предела: продукт, предназначенный только для одноразовых кодов, явно исключен из полного процесса регистрации бренда и кампании, который запускает фильтр SHAFT, а собственная документация по подключению Twilio подтверждает, что бизнесу, отправляющему только коды OTP, не нужно регистрировать ни бренд, ни кампанию при использовании этого продукта.
Исключение сопровождается условием, которое редко попадает в совет, который передают друг другу коллеги: оно применяется именно к отправке через собственные общие, объединенные номера поставщика, а не к маршрутизации кодов подтверждения через номер телефона, который бизнес зарегистрировал и которым владеет. Направьте тот же трафик OTP на собственный зарегистрированный номер, и обычные правила регистрации возвращаются в силу, включая категорию SHAFT. Обходной путь реален, но он привязан к конкретному пути доставки, а не является общим исключением для любого сообщения, которое случайно содержит шестизначный код.
Использование исключения также имеет свою цену. Операторы дают приоритет доставки и более высокую пропускную способность зарегистрированным, проверенным кампаниям именно потому, что бизнес за ними прошел проверку. Общий, объединенный номер, несущий трафик, похожий на незарегистрированный, оказывается ниже в этом порядке приоритета, что проявляется как небольшое, но реальное увеличение задержки доставки и периодические замедления в периоды высокой нагрузки, например во время рекламной кампании или всплеска новых регистраций после запуска функции. Для небольшого каталога это редко имеет значение. Для того, кто проводит акции или испытывает сезонные всплески новых рекламодателей, разница между "доставлено за две секунды" и "доставлено за двадцать" это разница между завершенной и брошенной регистрацией.
Фильтр, решающий, проходит ли сообщение, также смотрит за пределы пути отправки на сигналы, которые бизнес редко контролирует напрямую: насколько реальное содержание сообщений соответствует утвержденному варианту использования, и как меняется репутация номера отправителя. Одно сообщение поддержки здесь, одна рекламная кампания там, отправленные по тому же каналу, настроенному для чистой доставки OTP, могут сдвинуть этот сигнал без единого слова с сексуальным подтекстом где бы то ни было. Держать канал подтверждения полностью отдельно от любого другого вида сообщений, которые отправляет бизнес, здесь не приятная опция; это единственный способ сохранить работоспособность исключения.
Обход регистрации больше не работает
До того как эта фильтрация стала жестче, обычным обходным путем было просто не регистрироваться вообще: купить локальный номер, отправлять сообщения, принять, что часть будет отфильтрована, и считать эту потерю издержками бизнеса. Этого обходного пути больше не существует. Собственный журнал изменений Twilio об отключении незарегистрированного обмена сообщениями 10DLC в США описывает режим фильтрации, который ужесточался в течение середины 2023 года и, после конца августа того же года, превратился в полную блокировку всего незарегистрированного трафика в США, возвращаемую отправителю с кодом ошибки 30034. Это не более жесткая фильтрация с доплатой. Это трафик, который не доходит, точка, без какого-либо тарифа, который бы его выкупил.
Это различие важно, потому что бизнес, который зарегистрировался однажды, был помечен и тихо перестал следить за своим статусом регистрации, тоже не находится в старом, более мягком режиме. Кампания, чей показатель доверия снизился, будь то из-за несоответствия контента, всплеска жалоб на отказ от подписки или простой неактивности, сползает к тому же режиму, что и незарегистрированный трафик: меньшая пропускная способность, больше фильтрации, и никакого четкого уведомления о том, что что-то изменилось, потому что блокировка происходит на инфраструктуре оператора, на несколько шагов дальше того места, где бизнес смотрит на собственные журналы.
Это та же форма риска, которую этот блог уже описал для инфраструктуры хостинга, CDN и домена: поставщик, находящийся на несколько уровней дальше от продукта, может отключить его часть по собственному графику, по собственным причинам политики, и первым признаком становится отсутствие того, что раньше работало. Разница с SMS-фильтрацией в том, что "выключатель" не решение одной компании. Это правило, применяемое совместно всеми крупными операторами США, применяемое одинаково независимо от того, какая платформа обмена сообщениями находится посередине, а значит смена поставщика не позволяет обойти его так, как иногда позволяет обойти политику одной компании смена хостинга.
Нет легитимного способа маскировать каталог объявлений для взрослых под что-то другое при регистрации, чтобы избежать совпадения категории. Это рискует постоянным отказом на единственной заявке, которую может подать данный тип кампании, а отказ, связанный с искажением фактов, это худший результат, чем отсутствие регистрации вовсе, потому что он закрывает и легитимный путь. Честный путь, каким бы неудобным он ни был, единственный, что оставляет вторую попытку на столе.
Что нужно построить до того, как номер телефона станет ненадежным
Первый конкретный шаг это перестать относиться к номеру телефона как к гарантированной инфраструктуре и встроить второй канал в поток регистрации и входа с самого начала, а не после первого обращения в поддержку по поводу пропавшего кода. Код из приложения-аутентификатора, магическая ссылка по электронной почте или резервный код, сгенерированный при регистрации, полностью обходят фильтр оператора, потому что ни один из них не зависит от категории сообщения, которую сканирует телефонная сеть. Ни один из этих вариантов не работает вне потока, построенного для него, поэтому построить хотя бы один сейчас стоит намного дешевле, чем догонять его после того, как фильтр уже начал съедать заметную долю регистраций.
Второй шаг это полное разделение каналов: тот номер или продукт, который отправляет одноразовые коды, никогда не должен также отправлять рекламный SMS, напоминание о повторном вовлечении или уведомление об оплате. Смешивание типов сообщений на одном пути отправки это именно та схема, которая разрушает сигнал репутации, наблюдаемый фильтром, и она подвергает риску единственный канал, который бизнесу действительно нужен, код входа, ради защиты маркетингового канала, у которого есть другие варианты.
Третий шаг это честная регистрация и восприятие результата как окончательного. Поскольку отказ в категории SHAFT обычно не подлежит повторной подаче, регистрация должна проходить один раз, с точным описанием бизнеса, после того как заранее решено, может ли бизнес принять компромиссы по пропускной способности и приоритету исключения в стиле Verify, или нужна полная регистрация, и он готов к тому, что ее отклонят. Угадывание и надежда впустую тратят единственную попытку, которая имеет значение.
Четвертый шаг это прямое наблюдение за данными о доставке, а не ожидание жалобы пользователя. Каждая крупная платформа обмена сообщениями предоставляет квитанции о доставке и коды ошибок для каждого сообщения; растущая доля кодов вроде 30034, или падающий процент доставки именно на канале подтверждения, это самый раннее доступное свидетельство того, что что-то изменилось, и оно появляется задолго до того, как это отразится падением завершенных регистраций в месячном отчете. Оператор бизнеса, проверяющий это число каждый месяц, замечает изменение фильтрации за недели. Тот, кто проверяет только конверсию, замечает это через квартал, после того как это уже стоило реального бизнеса.
Ничто из этого не делает номер телефона бесполезным. Это ставит его на то место, которое он на самом деле занимает: канал, который бизнес заимствует у операторов, построивших его не с оглядкой на каталог объявлений для взрослых, и оставляющих за собой право отказать без объяснений. Относиться к нему именно так, с реальным запасным вариантом и четким разделением того, что он несет, вот что сохраняет работоспособность потока входа в тот день, когда фильтр решит, что ваш бизнес это именно тот, для остановки которого его и написали.


