Ir para o conteúdo
OmniChannels.ai

Como enviar milhões de SMS por dia: guia de alto volume

Envie milhões de SMS por dia: cálculo de TPS, binds e janela SMPP, filas, controle de taxa, recibos de entrega, sender IDs, horários e KPIs de monitoramento.

Atualizado em 11 min de leitura

Por OmniChannels.ai Editorial Team · Revisado por BroadNet Messaging Solutions Team

SMS e OTP

Resposta curta

Para enviar milhões de SMS por dia, dimensione a vazão pelo pico, não pela média diária: divida os segmentos a enviar pelos segundos da janela de envio, some uma folga para o tráfego de OTP e ajuste a janela SMPP para no mínimo TPS multiplicado pelo tempo de ida e volta. Use vários binds, filas por operadora e um limitador de taxa que recua diante de erros de throttling, processe os recibos de entrega à parte e mantenha OTP e promoções separados.

Nesta página
  1. Quantos SMS por segundo são necessários para milhões por dia?
  2. Como planejar a vazão pela hora de maior movimento, e não pela média?
  3. O que é um bind SMPP e de quantos você precisa?
  4. Como funciona a janela SMPP?
  5. Como enfileirar e limitar a taxa em escala?
  6. Como rotear por operadora em escala?
  7. Como tratar recibos de entrega em escala?
  8. O que registrar em cada país antes de enviar?
  9. Como respeitar os horários de silêncio em grande volume?
  10. Por que separar o tráfego de OTP do promocional?
  11. Quais KPIs monitorar?
  12. Qual é o checklist de lançamento para um envio de vários milhões?
  13. Como a OmniChannels.ai ajuda

Pontos principais

  • Dez milhões de mensagens por dia dão uma média de apenas cerca de 116 por segundo, mas uma promoção concentrada em uma janela de quatro horas exige cerca de 694 por segundo, e cada segmento extra multiplica esse número.
  • A especificação SMPP permite emitir várias requisições sem esperar as respostas; o número de requisições pendentes fica a cargo da implementação, então a janela precisa ser combinada e ajustada. Um bom ponto de partida é janela de no mínimo TPS multiplicado pelo tempo de ida e volta em segundos.
  • Throttling (ESME_RTHROTTLED, 0x58) e fila cheia (ESME_RMSGQFUL, 0x14) são sinais para reduzir o ritmo e tentar de novo com recuo progressivo, não para reenviar na hora.
  • Os recibos de entrega são um segundo fluxo de alto volume: planeje consumidores, armazenamento e conciliação para eles com o mesmo cuidado dedicado aos envios.
  • A capacidade é combinada por conta e por rota com o seu provedor; peça os valores de pico por escrito e teste antes do lançamento.

Este guia é para engenheiros, líderes de operações de mensageria e equipes de compras que enviam, ou estão prestes a enviar, entre um e dez milhões de SMS por dia. Ele mostra como transformar um volume diário em uma meta de vazão, como configurar binds e janelas SMPP, como enfileirar e limitar a taxa, como tratar recibos de entrega em escala e o que preparar em cada país. Os números dos exemplos são valores ilustrativos de planejamento, não afirmações sobre a capacidade de nenhum provedor.

Quantos SMS por segundo são necessários para milhões por dia?

Você precisa do número de segmentos dividido pelos segundos da janela em que realmente pode enviar. A vazão, medida em TPS (mensagens ou segmentos enviados por segundo), é um valor de pico, não uma média diária. Veja vazão (TPS).

Primeiro calcule a média; depois, o pico para a sua janela real de envio:

Mensagens por dia Média por segundo em 24 h Se enviadas em 4 horas Se enviadas em 2 horas
1.000.000 11,6 69,4 138,9
5.000.000 57,9 347,2 694,4
10.000.000 115,7 694,4 1.388,9

Dois multiplicadores alteram a tabela:

  • Segmentos. Uma mensagem maior que um segmento é enviada em várias partes, e a maioria das plataformas conta cada parte. Dez milhões de mensagens com média de 1,5 segmento são 15 milhões de envios. Controle isso com os limites de caracteres do SMS e o contador de caracteres.
  • Folga. Some o tráfego que não faz parte da campanha, como OTPs, e uma margem para reenvios e operadoras lentas. Trinta por cento é uma folga comum de planejamento, não uma regra.

Como planejar a vazão pela hora de maior movimento, e não pela média?

Planeje a partir da hora ou janela com mais tráfego, porque é quando as filas crescem e o throttling aparece. Use esta fórmula:

TPS necessário = (segmentos da campanha ÷ segundos da janela + TPS de pico de OTP e alertas) × (1 + folga).

Exemplo prático: uma varejista regional

Uma varejista fictícia envia 6 milhões de mensagens promocionais em um dia para clientes no Golfo, com média de 1,4 segmento cada. Ela quer concluir o envio em quatro horas, dentro da janela diurna permitida.

  • Segmentos: 6.000.000 × 1,4 = 8.400.000.
  • Janela: 4 horas = 14.400 segundos, então 8.400.000 ÷ 14.400 = 583 por segundo.
  • Tráfego de pico de OTP e alertas durante a campanha: 40 por segundo (medição própria).
  • Folga: 30 por cento.
  • Necessário: (583 + 40) × 1,3 ≈ 810 por segundo.

Esse é o valor que a varejista pede ao provedor para confirmar por rota, por escrito, antes do lançamento. É um dado de planejamento; não diz nada sobre o que qualquer plataforma consegue suportar.

O que é um bind SMPP e de quantos você precisa?

Um bind SMPP é uma sessão TCP de longa duração entre o seu sistema e o SMSC do provedor, autenticada com credenciais e um endereço IP autorizado. SMPP (Short Message Peer-to-Peer) é o protocolo de telecomunicações para troca de SMS e foi feito para volume sustentado. Veja bind SMPP e SMPP vs API REST.

Existem três tipos de bind: transmitter (só envio), receiver (só recibos e mensagens recebidas) e transceiver (ambos em uma sessão). A maioria dos remetentes usa binds transceiver.

Como calcular quantos binds usar:

  1. Parta do TPS de pico necessário.
  2. Divida pela taxa por bind que o provedor combinar para a sua conta.
  3. Arredonde para cima e some ao menos um bind reserva, para que uma conexão derrubada não pare o envio.
  4. Coloque o tráfego de OTP em binds ou em uma conta próprios.

Os binds são provisionados por conta, então peça o número, a taxa por bind e os IPs de origem permitidos. A página do nosso gateway SMPP e a documentação SMPP para desenvolvedores descrevem a conexão.

Como funciona a janela SMPP?

A janela é o número de requisições submit_sm que você pode ter pendentes ao mesmo tempo. O SMPP é assíncrono: a especificação diz que o remetente pode enviar várias requisições sem esperar as respostas e usa o sequence_number de cada PDU para associar a resposta à requisição. O número máximo de operações pendentes não é definido pela especificação; depende da implementação de cada lado.

A regra que decorre da aritmética de filas é:

Janela ≥ TPS-alvo × tempo de ida e volta (segundos).

TPS-alvo Ida e volta de 50 ms Ida e volta de 150 ms Ida e volta de 300 ms
100 5 15 30
400 20 60 120
810 41 122 243

Uma janela de 1 significa que o remetente espera cada resposta, o que limita a vazão a um dividido pelo tempo de ida e volta. Aumentar a janela ajuda até atingir a taxa que o provedor permite; acima disso, só se produz throttling. Trate o número como algo a combinar com o provedor e testar, não a maximizar. Ao usar vários binds, divida o TPS entre eles: quatro binds com 810 TPS no total carregam cerca de 203 cada.

Como enfileirar e limitar a taxa em escala?

Coloque uma fila durável entre a aplicação e a conexão SMPP e esvazie-a com um limitador de taxa que possa ser alterado em tempo de execução. A fila absorve picos; o limitador mantém você na taxa combinada.

  • Token bucket por bind e por rota. Reponha no TPS combinado; consuma um token a cada submit_sm, contando cada segmento.
  • Uma fila por prioridade. Primeiro OTP e alertas, depois transacionais, por último promocionais.
  • Recuo diante de erros. Em ESME_RTHROTTLED (0x58) ou ESME_RMSGQFUL (0x14), pause e tente de novo com recuo exponencial e jitter. Não reenvie em loop curto.
  • Reconecte com recuo após uma desconexão e acompanhe os números de sequência pendentes para conciliar o que foi aceito.
  • Mantenha as sessões ativas. A especificação define um temporizador enquire_link para verificar se o outro lado ainda tem uma sessão ativa e um temporizador de inatividade após o qual a sessão pode ser derrubada. Envie enquire_link enquanto estiver ocioso.
  • Envios idempotentes. Grave o seu próprio ID de mensagem antes de enviar, para que uma nova tentativa não gere duplicidade.

Como rotear por operadora em escala?

Faça fila e limite de taxa também por operadora de destino, além de por bind, porque uma operadora lenta não deve bloquear as outras. As operadoras podem limitar o tráfego A2P por remetente ou por rota, então o limite efetivo de um país pode ser menor que a taxa da conta.

  1. Identifique a operadora de cada número. A consulta de número ajuda; veja consulta HLR.
  2. Mantenha uma fila e um limitador por operadora ou grupo de rotas.
  3. Acompanhe a taxa de entrega e o atraso dos recibos por operadora e reduza o ritmo das que se degradarem.
  4. Pergunte ao provedor se são usadas rotas diretas; veja rotas diretas vs rotas cinzas.

Como tratar recibos de entrega em escala?

Trate os recibos de entrega como um segundo fluxo tão grande quanto o primeiro. Um recibo chega como deliver_sm no seu bind, e você deve responder a cada um com deliver_sm_resp. A especificação define estes estados finais e intermediários no recibo: DELIVRD, EXPIRED, DELETED, UNDELIV, ACCEPTD, UNKNOWN e REJECTD. Veja recibos de entrega e status de entrega de mensagens explicados.

Um desenho confiável:

  1. Confirme rápido. Responda deliver_sm_resp assim que o recibo estiver em uma fila.
  2. Processe de forma assíncrona com workers que associam o recibo à mensagem original pelo ID.
  3. Torne o processamento idempotente. Recibos podem se repetir e podem chegar fora de ordem.
  4. Trate os segmentos. Dependendo da rota, você pode receber um recibo por parte ou por mensagem; teste.
  5. Defina um tempo limite para mensagens que nunca recebem status final e marque-as como desconhecidas.
  6. Mantenha os consumidores de recibos fora do caminho de envio para que um acúmulo não deixe o envio lento.

O que registrar em cada país antes de enviar?

As regras de sender ID variam por país e, em alguns mercados, remetentes não registrados são bloqueados ou substituídos. Exemplos: os Emirados Árabes e a Arábia Saudita exigem registro junto às operadoras, a Índia exige o registro DLT do cabeçalho e de cada modelo, e os EUA usam 10DLC ou toll-free em vez de remetentes alfanuméricos. Os prazos vão de alguns dias úteis a cerca de um mês nos mercados que acompanhamos.

Comece pelos registros, pois estão no caminho crítico do lançamento. Consulte as regras de SMS marketing por país, o verificador de sender ID e o guia de sender ID para os Emirados e a Arábia Saudita. Preparamos e protocolamos os registros com você por meio do nosso serviço de registro; as aprovações continuam com reguladores e operadoras.

Como respeitar os horários de silêncio em grande volume?

Programe as promoções pelo horário local de cada destinatário e pela regra do país, e mantenha o tráfego não promocional fora dessa restrição. Alguns mercados publicam janelas: os Emirados Árabes proíbem mensagens de marketing das 21h às 7h, e a Arábia Saudita das 22h às 9h e, durante o Ramadã, da 1h às 12h. Veja horário de silêncio.

  • Agrupe a lista por país e fuso horário antes de enfileirar.
  • Libere cada grupo na sua própria fila quando a janela abrir.
  • Pare as filas promocionais no fim da janela e passe o restante para o dia seguinte.
  • Planeje a sequência com o planejador de horário de envio.

Uma janela estreita aumenta o TPS necessário, então confira o efeito na fórmula de planejamento.

Por que separar o tráfego de OTP do promocional?

Mensagens de OTP e alertas são críticas em tempo, e as campanhas promocionais são em massa; se compartilharem fila ou bind, uma campanha pode atrasar um código de login. Use binds ou contas separados, sender IDs separados quando as regras exigirem, filas separadas com prioridade estrita e monitoramento separado. OTPs não são promocionais, então os horários de silêncio não se aplicam a eles. Proteja também as rotas de OTP contra abuso: veja prevenção de fraude de SMS pumping e o guia de OTP.

Quais KPIs monitorar?

Monitore a saúde dos envios, a idade da fila, os resultados e o atraso dos recibos, separados por país e operadora. Configure alertas para variações em relação à sua própria linha de base.

KPI Fórmula O que indica
Taxa de sucesso de envio submit_sm_resp aceitos ÷ submit_sm enviados Saúde do bind e da conta
Taxa de throttle Respostas ESME_RTHROTTLED ÷ submit_sm enviados Taxa ou janela alta demais
Idade da fila (p95) Tempo da entrada na fila até o envio Falta de capacidade
Taxa de entrega DELIVRD ÷ mensagens com status final Qualidade da rota e do conteúdo
Parcela de falhas e expiradas (UNDELIV + EXPIRED + REJECTD) ÷ status finais Validade do número, sender ID, filtragem
Atraso do recibo (mediana e p95) Hora do recibo − hora do envio Lentidão da operadora
Cobertura de recibos Status finais ÷ mensagens enviadas Recibos ausentes
Taxa de descadastro Respostas STOP ÷ mensagens promocionais entregues Adequação de público e conteúdo

Veja como melhorar a taxa de entrega de SMS para fazer o diagnóstico.

Qual é o checklist de lançamento para um envio de vários milhões?

  1. TPS de pico necessário calculado a partir de segmentos, janela e carga de OTP.
  2. Taxa por bind, número de binds, janela e IPs de origem confirmados por escrito pelo provedor.
  3. Sender IDs registrados em cada país, com modelos onde exigido.
  4. Teste de carga com uma fração do volume e aumento em etapas; não comece pelo máximo.
  5. Filas, limitador, recuo e idempotência testados, incluindo uma desconexão forçada.
  6. Pipeline de recibos testado com o volume total de recibos.
  7. Agendamento dos horários de silêncio verificado por país.
  8. Tráfego de OTP separado e monitorado.
  9. Painéis e alertas ativos, com um responsável de plantão.
  10. Um botão de parada que interrompe as filas promocionais na hora.

Como a OmniChannels.ai ajuda

A BroadNet entrega SMS por conectividade direta com as operadoras e oferece SMPP 3.4 sobre TLS com binds provisionados por conta, além de API REST, envio em massa, SMS bidirecional, Unicode e árabe, consulta HLR e relatórios de entrega. A capacidade é dimensionada por conta e por rota: informe destinos, volume de pico, janelas de envio e sender IDs, e combinamos com você vazão, binds e registros. Nossa equipe prepara os registros de sender ID. Fale com vendas com o seu plano de volume ou conheça o programa atacadista.

Perguntas frequentes

Quantos SMS por segundo preciso para enviar um milhão de mensagens?

Divida o número de segmentos pelos segundos da janela de envio. Um milhão de mensagens de um segmento em uma hora exige cerca de 278 por segundo, em quatro horas cerca de 69 e, distribuído ao longo de um dia inteiro, cerca de 12. Na maioria das plataformas, mensagens com vários segmentos contam uma vez por segmento, então uma mensagem de dois segmentos dobra a taxa necessária.

O que é a janela SMPP e como defini-la?

A janela é o número de requisições submit_sm que você pode ter pendentes, enviadas e ainda sem resposta. A especificação SMPP admite requisições assíncronas, mas deixa o limite para a implementação. Uma regra prática é janela de no mínimo o TPS-alvo multiplicado pelo tempo de ida e volta em segundos; depois, aumente só até o limite combinado com o provedor, porque excedê-lo causa throttling.

Quantos binds SMPP preciso para alto volume?

Depende do seu pico, do limite por bind combinado com o provedor e da redundância desejada. Divida o TPS de pico pela taxa combinada por bind, arredonde para cima e some ao menos um bind reserva, para que uma conexão derrubada não pare o envio. Mantenha o tráfego de OTP em binds ou contas próprios. Os binds são provisionados por conta.

O que fazer ao receber ESME_RTHROTTLED?

Reduza o ritmo. A especificação define ESME_RTHROTTLED (0x58) como o remetente que excedeu os limites de mensagens permitidos. Pause ou diminua os envios, tente de novo as mensagens rejeitadas com recuo exponencial e jitter e nunca repita em loop curto, o que prolonga o bloqueio. Se isso acontece com frequência, sua janela ou taxa está acima do limite combinado.

Como lidar com milhões de recibos de entrega?

Confirme cada deliver_sm com deliver_sm_resp imediatamente, coloque o recibo em uma fila e processe de forma assíncrona em um armazenamento indexado pelo ID da mensagem. Torne o processamento idempotente, porque recibos podem se repetir. Execute os consumidores de recibos separados do caminho de envio e monitore o quanto estão atrasados.

Posso enviar SMS promocionais de madrugada?

Em vários mercados, não. Os Emirados Árabes proíbem mensagens de marketing das 21h às 7h, e a Arábia Saudita das 22h às 9h e, durante o Ramadã, da 1h às 12h. Programe as promoções pelo horário local de cada destinatário e envie OTPs e alertas à parte, pois não são promocionais.

Fontes

  1. SMPP Protocol Specification v3.4, SMPP Developers Forum
  2. 3GPP TS 23.040: Technical realization of the Short Message Service (SMS)
  3. TDRA spam policy, UAE
  4. CST Regulations for Curbing SPAM Messages and Calls, Saudi Arabia