El SMS de verificacion que deja de llegar: lo que el filtro SHAFT bloquea en un directorio de anuncios para adultos

El codigo que nunca llega, y nadie explica por que
Un visitante se registra, escribe un numero de telefono y espera el codigo de seis cifras que le permite entrar. En un buen dia llega en tres segundos. En un mal dia no llega nunca, y nada en el producto explica el motivo. El formulario de registro no muestra ningun error. El operador telefonico no envia un aviso de entrega fallida. El mensaje simplemente no existe al otro lado, y el unico sintoma visible es una tasa de abandono algo mas alta, que se podria achacar a una docena de otras causas.
Ese silencio es peor que una caida del servicio, porque una caida se repara. Un filtro de contenido del operador que ha decidido en silencio que tu trafico pertenece a una categoria bloqueada no se arregla reiniciando un servidor o rotando una clave de API. Se arregla solo entendiendo que lo activo, y la mayoria de los operadores nunca llegan hasta ahi, porque el motivo del rechazo vive en una consola para desarrolladores que jamas abren, escrita en un lenguaje pensado para quien programa, no para quien dirige el negocio.
El mecanismo detras de esto no es un rumor. Tiene una sigla, un conjunto de codigos de error publicados por las empresas que encaminan el trafico, y una conexion directa con la palabra que aparece en el propio nombre del negocio: para adultos. Los operadores estadounidenses filtran los SMS comerciales comparandolos con un pequeno conjunto de categorias de contenido, y una de esas categorias es sexo y contenido para adultos. Un directorio de anuncios de escorts entra ahi por definicion, sea lo que sea lo que diga el texto real del mensaje.
Esto no es el mismo fallo que se trata en otra parte de este blog. La entrega de correo electronico se rompe porque los filtros antispam puntuan un mensaje segun la reputacion del remitente y el formato, y un remitente cuidadoso puede recuperarse con mejor autenticacion y un calentamiento gradual. El filtro de SMS para contenido para adultos funciona de otra manera: no es una puntuacion de reputacion que se recupera con el tiempo, es una coincidencia de categoria que el sistema de un operador comprueba una sola vez, en el registro, y a menudo ni siquiera permite volver a presentar la solicitud.
El filtro SHAFT: lo que los operadores marcan realmente, con sus propias palabras
La sigla que usa el sector para las categorias bloqueadas es SHAFT: sexo, odio, alcohol, armas de fuego y tabaco (en ingles sex, hate, alcohol, firearms, tobacco). No es un termino que los operadores hayan acunado para marketing; aparece dentro de los codigos de rechazo que devuelven las plataformas de mensajeria cuando una solicitud falla. La documentacion de errores de Twilio para el codigo 30953 afirma con claridad que una campana fue rechazada porque contiene sexo o contenido para adultos que infringe las directrices SHAFT de la CTIA, y anade un detalle mas importante que el propio rechazo: esa categoria de rechazo no admite reenvio. No hay formulario de apelacion, no hay una redaccion revisada que lo arregle, no hay un segundo intento por la via normal de registro.
El mismo patron aparece en el lado de los numeros gratuitos, a los que muchos operadores recurren precisamente porque parecen menos burocraticos que el registro estandar de numero local. El codigo de error 30441 corresponde a una verificacion de numero gratuito rechazada porque quien la revisa, mirando el sitio web real, el flujo de consentimiento o los mensajes de muestra presentados con la solicitud, decide que el caso de uso "parece relacionado con el sexo". El rechazo no se limita a lo que dice cada mensaje. Mira el sitio que el numero esta registrado para representar, que en un directorio de anuncios es el negocio entero.
Lo que hace esto distinto del cierre de una cuenta por un procesador de pagos es la ausencia total de una conversacion de revision. Un procesador de pagos cierra a un comercio con un periodo de aviso, un codigo de motivo y a veces un responsable de cumplimiento dispuesto a discutirlo. El filtro automatico de contenido de un operador devuelve un codigo de rechazo en un panel para desarrolladores y sigue adelante. Nadie en el operador decide que tu negocio no merece el servicio; una regla escrita hace anos por otro motivo lo hace de forma automatica, y no sabe ni le importa que los mensajes en cuestion sean inocuos codigos de acceso de seis cifras.
La coincidencia de categoria ocurre a nivel de la marca y el caso de uso registrados, no solo de las palabras dentro de cada mensaje. Una campana se registra con un nombre de negocio, una descripcion de para que sirven los mensajes y a menudo un enlace al sitio web. Si cualquiera de esas tres cosas se lee como contenido para adultos, el filtro puede rechazar toda la campana aunque el texto real del SMS no sea mas que un numero y la palabra "codigo". Este es el detalle que los operadores pasan por alto con mas frecuencia: sanear el cuerpo del mensaje no sanea el registro que hay detras.
Por que "simplemente cambiar a Verify" no es la solucion completa
El consejo habitual, una vez que un operador entiende el problema, es dejar de intentar registrar una campana completa de mensajeria comercial y usar en su lugar un producto dedicado a la autenticacion, como la API Verify de Twilio o un equivalente de otro proveedor. Este consejo es correcto hasta cierto punto: un producto pensado solo para codigos de un solo uso queda explicitamente exento del proceso completo de registro de marca y campana que activa el filtro SHAFT, y la documentacion de incorporacion de Twilio confirma que un negocio que solo envia codigos OTP no necesita registrar ninguna Marca ni Campana al usar ese producto.
La exencion viene con una condicion que raramente aparece en el consejo que se repite entre colegas: se aplica especificamente al envio a traves de los numeros compartidos y agrupados del propio proveedor, no al encaminamiento de codigos de verificacion por un numero de telefono que el negocio ha registrado y posee. Si se dirige ese mismo trafico OTP hacia el propio numero registrado, las reglas de registro habituales vuelven a aplicarse, categoria SHAFT incluida. El atajo es real, pero esta ligado a una via de entrega concreta, no es una exencion general para cualquier mensaje que resulte contener un codigo de seis cifras.
Tambien hay un coste al aceptar la exencion. Los operadores dan prioridad de entrega y mayor capacidad a las campanas registradas y verificadas precisamente porque el negocio detras de ellas ha sido comprobado. Un numero compartido y agrupado que lleva trafico parecido al no registrado queda mas abajo en ese orden de prioridad, lo que se traduce en un aumento pequeno pero real del retraso en la entrega y en cuellos de botella ocasionales durante periodos de mucho volumen, como una campana promocional o un pico de nuevos registros tras el lanzamiento de una funcion. Para un directorio pequeno esto rara vez importa. Para uno que gestiona promociones o picos estacionales de nuevos anunciantes, la diferencia entre "entregado en dos segundos" y "entregado en veinte" es la diferencia entre un registro completado y uno abandonado.
El filtro que decide si un mensaje pasa tambien mira mas alla de la via de envio, hacia senales que un negocio rara vez controla de forma directa: cuanto se parece el contenido real de los mensajes al caso de uso aprobado, y como esta evolucionando la reputacion del numero remitente. Un mensaje de soporte aqui, una campana promocional alla, enviados por el mismo canal preparado para una entrega OTP limpia, pueden desplazar esa senal sin que aparezca una sola palabra de contenido sexual. Mantener el canal de verificacion completamente separado de cualquier otro tipo de mensaje que envie el negocio no es aqui un lujo; es la unica forma de que la exencion siga funcionando.
Saltarse el registro ya no funciona
Antes de que todo este filtrado se endureciera, el atajo habitual era simplemente no registrarse en absoluto: comprar un numero local, enviar mensajes, aceptar que una parte se filtraria y tratar la perdida como un coste del negocio. Ese atajo ya no existe. El registro de cambios de Twilio sobre el cierre de la mensajeria 10DLC estadounidense sin registrar describe un regimen de filtrado que se fue endureciendo a lo largo de mediados de 2023 y, tras el final de agosto de ese ano, se convirtio en un bloqueo total de todo el trafico estadounidense sin registrar, devuelto al remitente con el codigo de error 30034. Esto no es un filtrado mas duro con un recargo. Es trafico que no llega, punto, sin ninguna tarifa que lo recupere.
La distincion importa porque un negocio que se registro una vez, fue marcado y dejo de vigilar en silencio su estado de registro no esta tampoco en el regimen anterior, mas suave. Una campana cuya puntuacion de confianza ha bajado, ya sea por una discordancia de contenido, un repunte de quejas de baja o simple inactividad, se desliza hacia el mismo trato que el trafico sin registrar: menor capacidad, mas filtrado, y ningun aviso claro de que algo ha cambiado, porque el bloqueo ocurre en la infraestructura del operador, varios pasos alejado de donde el negocio esta mirando sus propios registros.
Es el mismo tipo de riesgo que este blog ya ha descrito para la infraestructura de alojamiento, CDN y dominio: un proveedor varias capas alejado del producto puede apagar una pieza de el segun su propio calendario, por sus propias razones de politica, y la primera senal es la ausencia de algo que antes funcionaba. La diferencia con el filtrado de SMS es que el "interruptor" no es la decision de una sola empresa. Es una regla aplicada conjuntamente por todos los grandes operadores estadounidenses, aplicada de forma uniforme sin importar que plataforma de mensajeria este en medio, lo que significa que cambiar de proveedor no permite rodearla como a veces permite rodear la politica de una sola empresa el cambio de alojamiento.
No existe una forma legitima de disfrazar un directorio de anuncios para adultos como otra cosa durante el registro para evitar la coincidencia de categoria. Hacerlo arriesga un rechazo permanente en la unica solicitud que un tipo de campana puede presentar, y un rechazo ligado a una declaracion falsa es un resultado peor que no haberse registrado nunca, porque tambien cierra la via legitima. La via honesta, por incomoda que sea, es la unica que deja un segundo intento sobre la mesa.
Que construir antes de que el numero de telefono deje de ser confiable
El primer paso concreto es dejar de tratar el numero de telefono como una infraestructura garantizada y construir un segundo canal dentro del flujo de registro y acceso desde el principio, no despues del primer ticket de soporte por un codigo que no llego. Un codigo generado por una aplicacion de autenticacion, un enlace magico enviado por correo o un codigo de respaldo generado en el registro rodean por completo un filtro del operador, porque ninguno depende de una categoria de mensaje que una red telefonica este escaneando. Ninguna de estas opciones funciona fuera del flujo construido para ellas, asi que construir al menos una ahora cuesta mucho menos que anadirla despues de que un filtro haya empezado a comerse una parte visible de los registros.
El segundo paso es separar los canales por completo: el numero o producto que envie codigos de un solo uso no deberia enviar nunca tambien un SMS promocional, un recordatorio de reactivacion o un aviso de pago. Mezclar tipos de mensaje en una misma via de envio es exactamente el patron que erosiona la senal de reputacion que un filtro esta observando, y pone en riesgo el unico canal que un negocio realmente necesita, el codigo de acceso, para proteger un canal de marketing que tiene otras opciones.
El tercer paso es registrarse con honestidad y tratar el resultado como definitivo. Como un rechazo de categoria SHAFT normalmente no se puede volver a presentar, el registro debe hacerse una sola vez, con una descripcion exacta del negocio, tras haber decidido de antemano si el negocio puede aceptar los compromisos de capacidad y prioridad de una exencion tipo Verify o necesita el registro completo y esta preparado para que sea rechazado. Adivinar y confiar en la suerte desperdicia el unico intento que cuenta.
El cuarto paso es vigilar directamente los datos de entrega en lugar de esperar a que un usuario se queje. Todas las grandes plataformas de mensajeria exponen recibos de entrega y codigos de error por mensaje; una proporcion creciente de codigos como el 30034, o una tasa de entrega que cae especificamente en el canal de verificacion, es la senal mas temprana disponible de que algo ha cambiado, y llega mucho antes de que se vea como una caida de los registros completados en un informe mensual. Un operador que revisa ese numero cada mes detecta un cambio de filtrado en semanas. Uno que solo revisa la conversion lo detecta en un trimestre, despues de que ya haya costado negocio real.
Nada de esto vuelve inutil el numero de telefono. Lo deja como lo que realmente es: un canal que un negocio toma en prestamo de operadores que no lo construyeron pensando en un directorio de anuncios para adultos, y que se reservan el derecho de decir no sin explicarse. Tratarlo asi, con un respaldo real y una separacion clara de lo que transporta, es lo que mantiene funcionando un flujo de acceso el dia en que el filtro decida que tu negocio es justamente el que se escribio para detener.


