Entrar Criar conta
Conceitos

Limites

Requisições por segundo, cotas de envio por plano e os tamanhos máximos de cada recurso.

#Requisições por segundo

Cada time tem um limite de requisições por segundo, somando todas as chaves. O valor depende do plano:

PlanoRequisições por segundo
Grátis5
Profissional10
Escala20
Empresarial50

O limite em vigor para o seu time aparece em GET /usage (rate_limit). Os apps que têm só uma chave de envio também enxergam o limite: GET /usage aceita chaves sending_access, e os cabeçalhos X-RateLimit-* vêm em toda resposta, inclusive no envio. Toda resposta traz os cabeçalhos:

CabeçalhoDescrição
X-RateLimit-LimitRequisições permitidas por segundo.
X-RateLimit-RemainingQuantas ainda cabem no segundo atual.
Retry-AfterSó no 429: segundos até poder tentar de novo.
X-RateLimit-ResetSó no 429: quando o limite zera (Unix timestamp).

Passou do limite, a resposta é 429 rate_limit_exceeded. Para enviar muitos e-mails, use o envio em lote: 100 e-mails contam como uma requisição.

O limite é do time, não da chave, e vale também para o servidor MCP. Os SDKs leem os cabeçalhos para você: postal.rateLimit (Node.js) e $postal->rateLimit() (PHP) guardam o limite da última resposta, mesmo com uma chave só de envio, e esperam o Retry-After antes de repetir um 429.

#Cotas de envio

Os envios contam quando o e-mail é criado (inclusive agendados e testes de template). Cada destinatário de uma campanha, cada teste de campanha e cada e-mail de automação também conta. O dia e o mês são contados em UTC.

PlanoPor diaPor mês
Grátis1003.000
ProfissionalSem limite50.000
EscalaSem limite100.000
EmpresarialSem limiteSob medida

Ao atingir a cota, os envios recebem 429 daily_quota_exceeded ou 429 monthly_quota_exceeded (no SMTP, 452 4.5.3). Uma campanha que esbarra na cota no meio do envio fica pausada e continua sozinha quando ela renova; um envio de automação falha, e a execução também. Nos planos que permitem, você pode ativar o envio além da cota no painel, em Cobrança: os e-mails extras são cobrados por mil, sem bloqueio. O plano continua o mesmo; você paga só pelos pacotes a mais, na próxima fatura. Acompanhe o consumo em GET /usage.

Reputação da conta. O limite diário que vale é o menor entre o do plano e o teto da reputação da conta: uma pontuação de 0 a 100 que começa em 0 nas contas novas e sobe a cada dia de envios sem bounces nem reclamações. Nos níveis 1 a 4, o teto é de 500, 2.000, 5.000 e 10.000 e-mails por dia; no nível 5, vale só o limite do plano. O limite em vigor está em emails.daily.limit de GET /usage, com plan_limit (o do plano) e limited_by (plan ou reputation), e o bloco reputation traz a pontuação, o nível e o próximo nível. Quando é a reputação que limita, a mensagem do 429 daily_quota_exceeded diz o nível e o teto.

Adicional de envios. Quando o plano do time tem um limite mensal e oferece o Adicional de envios, o dono ou um admin compra, num pagamento único, uma reserva de envios que só é usada depois que a cota mensal acaba: primeiro a cota do plano, depois a reserva (um crédito por e-mail, os que vencem antes primeiro), depois o envio além da cota, se o time o ligou, e só então a recusa. As campanhas não usam a reserva, os e-mails para endereços de teste não gastam crédito, e o limite diário do plano continua valendo. A mensagem do 429 monthly_quota_exceeded diz onde comprar quando dá. Veja Adicional de envios e a referência da API.

Reputação de envio

Para proteger a entrega de todos, a Postal pausa os envios de um time quando, nos últimos 7 dias, os bounces permanentes passam do limite do nível da reputação da conta (3% no nível 1, 4% no nível 2 e 5% do nível 3 em diante), as reclamações de spam passam de 0,3% ou o conteúdo rejeitado pelos provedores passa de 5% dos e-mails enviados. As taxas são julgadas a partir de 100 envios no período nos níveis 1 a 3 e de 1.000 nos níveis 4 e 5. Nos níveis 1 a 3, a Postal também olha as últimas 24 horas, e os bounces de todos os tipos acima de 15% também pausam. Nas primeiras 24 horas depois do primeiro envio do time, a pausa por bounces permanentes só acontece acima do dobro do limite. Os endereços de teste não entram na conta. Cada pausa tira 40 pontos da reputação da conta. O e-mail de pausa lista até 10 endereços com os bounces mais recentes (eles já ficam suprimidos). Enquanto os envios estão pausados, eles recebem 403 sending_paused. Peça a revisão no painel (não há endpoint público para isso) ou pelo formulário de contato para liberar.

Como ser avisado antes e como detectar a pausa: quando os bounces permanentes chegam ao aviso do nível (2% no nível 1, 2,5% no nível 2 e 3% do nível 3 em diante) ou as reclamações a 0,15%, os donos e administradores do time recebem um aviso por e-mail, antes da pausa (um quando a taxa cruza o nível; o próximo só se ela piorar 1 ponto percentual, ou 0,1 nas reclamações, ou depois de 7 dias); ao pausar, recebem outro. Pela API, assine os eventos sending.paused e sending.resumed dos webhooks para alertar a sua equipe na hora, ou consulte GET /usage, que traz sending.paused, paused_at, o reason e review_requested_at (quando a revisão foi pedida). Um lote de convites ou de e-mails com endereços errados é a causa mais comum: valide os endereços antes de enviar e trate os bounces recebidos nos webhooks.

Endereços suprimidos: um bounce permanente põe o endereço na lista de supressão automaticamente. Se a pessoa corrigiu o e-mail, remova com DELETE /suppressions/{id} ou em lote com POST /suppressions/batch/remove e o envio volta a funcionar.

#Recursos por plano

Planos e preços: postal.so/precos ou, por API, GET /plans (público, sem chave).

GrátisProfissionalEscalaEmpresarial
Domínios3101.000Sem limite
Inboxes310100Sem limite
Inboxes no seu domínioNãoSimSimSim
Pessoas no time310Sem limiteSem limite
Créditos de IA por mês101001.000Sem limite
Execuções de automação por mês1.00010.000100.000Sem limite
Contatos (plano de marketing)1.0005.00050.000Sem limite
Segmentos (plano de marketing)3Sem limiteSem limiteSem limite
Campanhas por mês (plano de marketing)Sem limiteSem limiteSem limiteSem limite
Layouts10Sem limiteSem limiteSem limite
Testes A/B nas automaçõesNãoSimSimSim
Créditos de validação de e-mails por mês (plano de marketing)1005.00050.000Sem limite
Conexões de CRM (plano de marketing)015Sem limite
Integrações com apps (plano de marketing)1310Sem limite

Times podem ter limites ajustados individualmente. O valor que vale para você é sempre o de GET /usage.

#Limites e recursos do plano

Cada plano define, por time, quantas coisas você pode ter e quais recursos estão incluídos. Passar do limite de um item ou usar um recurso que o plano não inclui responde 403 plan_limit_reached, com uma mensagem que diz qual. A lista completa, com o texto de cada recurso e se a API já o aplica (enforced), vem em GET /plans (feature_catalog), e os valores do seu time em GET /usage. Nos números, null é ilimitado e 0 é não incluído; nos recursos liga/desliga, 1 é incluído e 0 não.

Quantidade

Só bloqueiam a criação de mais um item. O que já existe nunca é apagado.

Contatos acima do limite. O limite de contatos do plano de marketing também pode ser ultrapassado, como o de e-mails: em Cobrança, o dono ou admin do time liga Continuar adicionando contatos acima do limite do plano (um botão para cada produto, desligado por padrão). Ligado, importações, formulários, a API e as integrações de CRM deixam de recusar com 403 plan_limit_reached ao chegar no limite, e os contatos extras são cobrados por pacote de 1.000 (arredondando para cima) na próxima fatura, sem trocar de plano. O que se cobra é o maior número de contatos que o time teve no período de cobrança (ou de contatos que receberam campanhas no ciclo, se for maior: veja abaixo), e apagar contatos depois não baixa o que já foi medido. Descadastrados e endereços suprimidos contam como contato, como sempre. Só vale com assinatura de marketing ativa, num plano que permita excedente e que tenha preço de contatos extras; sem isso, o limite continua recusando. A mensagem de recusa diz como ligar quando a opção está disponível.

Adicional de contatos. Quando o plano de marketing do time oferece o Adicional de contatos, o dono ou um admin soma contatos ao limite sem trocar de plano: o preço do pacote entra na fatura da assinatura e o limite passa a ser o do plano mais o dos pacotes. O limite que a API confere (403 plan_limit_reached) e o que GET /usage mostra já incluem os pacotes. Só valem com um plano de marketing pago e ativo. Veja Adicional de contatos e a referência da API.

Contatos que recebem campanhas no ciclo

O limite de contatos do plano de marketing (com o Adicional de contatos) vale também para quem recebe campanhas: no ciclo de uso do time (o mês que renova no dia do seu plano), as campanhas e os e-mails de automação podem ir para até esse número de contatos diferentes. Cada endereço conta uma vez por ciclo. Quem já recebeu campanha no ciclo continua contando até a renovação, mesmo se for apagado, e apagar e criar de novo o mesmo endereço não conta duas vezes. Apagar contatos que ainda não receberam campanha libera espaço na hora. Enviar várias campanhas para os mesmos contatos não consome mais. Os e-mails transacionais não contam.

Exemplo, com limite de 50.000 contatos: enviar 5 campanhas para os mesmos 50.000 contatos no ciclo está dentro do plano. Apagar os 50.000 que já receberam e importar outros 50.000 no mesmo ciclo passa do limite: a campanha para os novos é recusada até a renovação.

Uma campanha que passaria do limite é recusada inteira, sem enviar nada, com 422 cycle_recipients_limit, uma mensagem com os números, a data da renovação e o que fazer, e o bloco cycle_recipients (new, used, limit, remaining e resets_at). A Postal confere de novo quando uma campanha agendada vai sair: se não couber mais, ela fica pausada com o mesmo motivo. Um e-mail de automação para um contato que ainda não recebeu nada no ciclo, com o limite cheio, é pulado. O dono e os admins recebem um e-mail ao chegar a 80% e a 100%. Com o excedente de contatos ligado, nada é recusado e os contatos acima do limite são cobrados como contatos extras. Sem limite de contatos, não há limite de destinatários. O contador está em GET /usage (marketing_recipients) e em Configurações › Uso, e o efeito de uma campanha, antes de enviar, em GET /broadcasts/audience.

ChaveO que contaOnde bloqueia
domainsDomínios de envioPOST /domains e a reivindicação de domínio
inboxesInboxesPOST /inboxes
templatesTemplatesPOST /templates e duplicar
layoutsLayoutsPOST /layouts e duplicar
api_keysChaves de APIPOST /api-keys
webhooksEndpoints de webhookPOST /webhooks
team_membersPessoas no time (convites pendentes contam)Convidar pessoas, no painel
contactsContatosCriar contatos pela API, por importação, formulário ou integração
segmentsSegmentosPOST /segments e unificar segmentos
topicsTópicosPOST /topics
formsFormuláriosPOST /forms
automationsAutomações (ativas ou não)POST /automations
broadcasts_per_monthCampanhas enviadas ou agendadas no mês (UTC)Enviar ou agendar uma campanha
crm_connectionsConexões de CRMCriar a conexão
app_integrationsIntegrações com apps (Stripe, Supabase, Clerk, Firebase, Auth0)Criar a integração
attachments_mbTamanho total dos anexos de um e-mail, em MB. 0 não permite anexos; vazio (null) usa o limite da plataforma, de 40 MBEnviar e-mails com anexos

Outros limites mensais não dão 403: emails_per_day e emails_per_month dão 429 (veja cotas de envio); ai_credits, 429 ai_credits_exhausted; email_verifications_per_month, 403 se o plano não inclui a validação de e-mails e 429 verification_credits_exhausted quando os créditos acabam; e automation_runs: acima do limite, as novas execuções de automação não começam (ficam como skipped).

Recursos liga/desliga

ChaveO que liberaOnde bloqueia
batch_sendingEnvio em lotePOST /emails/batch
scheduled_sendingAgendamento de enviosscheduled_at em POST /emails
test_addressesEndereços de teste simuladosEnviar para @sandbox.postal.so
smtp_accessEnvio por SMTPO SMTP recusa a mensagem com 550 5.7.1
engagement_trackingRastreio de aberturas e cliquesLigar open_tracking ou click_tracking num domínio (os que já rastreiam continuam)
custom_domain_recordsReturn-Path e subdomínio de rastreio próprioscustom_return_path e tracking_subdomain novos ou alterados
shared_email_linksLinks para compartilhar e-mailsPOST /emails/{id}/share
custom_inbound_domainsInboxes e recebimento no seu domínioCriar inboxes e ativar capabilities.receiving em domínios próprios
inbox_agentAgente de IA da inboxLigar o agente numa inbox
exportsExportações em CSVPOST /exports e a exportação das respostas de formulários
mcp_accessServidor MCPO endpoint /mcp
restricted_api_keysChaves só de envio ou restritas a um domínioPOST /api-keys com permission: "sending_access" (as chaves já criadas continuam valendo)
dynamic_segmentsSegmentos dinâmicosCriar um segmento dinâmico (os existentes continuam)
form_analyticsAnálise dos formuláriosGET /forms/overview e GET /forms/{id}/analytics, com as respostas por pergunta e a exportação da análise
automation_experimentsTestes A/B nas automaçõesPassos de experimento A/B
postal_brandingSelo “Enviado com Postal” (invertido: 1 é ter o selo)Esconder o selo em um formulário

retention_days, priority_support, uptime_sla e dedicated_manager são informativos: a API não bloqueia nada por eles (a retenção é de 30 dias para todos, e o suporte é combinado à parte).

Quando o plano cai

Quando o plano muda, a quantidade que o time já tem pode passar do novo limite. Nada é apagado: de domínios, inboxes, templates, layouts, chaves de API, webhooks, automações, segmentos, tópicos e formulários, os mais antigos até o limite continuam ativos e os mais novos ficam com paused_by_plan: true. Um item pausado aparece nas listas e pode ser lido e excluído, mas não alterado nem usado: o domínio não envia, a chave de API não autentica, o webhook não recebe eventos, o template não envia, o formulário sai do ar, a automação não dispara, o segmento não serve de público e a inbox não roda o agente (ela continua recebendo e-mails). Qualquer tentativa de alterar responde 403 paused_by_plan. Os itens voltam sozinhos quando o plano, a faixa de volume ou a contagem permitem, e GET /usage lista o que está pausado em paused. Contatos, pessoas no time e conexões não são pausados: o limite só impede adicionar mais.

As cotas de e-mails por mês e o número de contatos seguem a faixa de volume contratada (veja Planos), e um time pode ter limites ajustados individualmente. O valor que vale para você é sempre o de GET /usage.

A escala de volume é feita de faixas definidas pela Postal (por exemplo 3.000, 50.000, 100.000 e 250.000 e-mails por mês): cada plano atende algumas dessas faixas, com o preço de cada uma, e acima da última faixa só o plano sob medida atende. A lista das faixas e das que cada plano atende está em GET /plans (volume_bands e bands).

#Tamanhos e quantidades

O quêLimite
Destinatários em to50 por e-mail
E-mails por lote (POST /emails/batch)100
Anexos40 MB no total por e-mail (menos, se o plano limitar: attachments_mb)
Anexos de respostas, mensagens e rascunhos da inboxAté 10 arquivos e 40 MB no total
Mensagem pelo SMTP40 MB e 50 destinatários
Agendamento (scheduled_at)Até 30 dias no futuro
Endereços de teste ([email protected]…)Não contam na cota de envio, nem nas taxas de bounce e de reclamação da reputação; o limite de requisições por segundo vale
Tags50 por e-mail; nome e valor com até 256 caracteres
Assunto e valores de cabeçalho998 caracteres
Itens por página nas listas100
Idempotency-Key256 caracteres, guardada por 24 horas
Imagens (POST /assets)5 MB
Exportações em andamento3 por time
Link público de um e-mail (POST /emails/{id}/share)Vale de 1 minuto a 48 horas
Métricas (GET /emails/metrics)Até 10.000 períodos e 100 IDs em cada filtro
Instruções de DNS por e-mail (POST /domains/{id}/instructions)Até 5 destinatários; 3 por minuto e 10 por hora por time; 5 por dia para cada endereço
Respostas encaminhadas por e-mail com detecção de respostas20
Origens a ignorar num webhook (skip_sources)20
Importações de contatosCSV de até 20 MB; 3 em andamento por time
Contatos por requisição em POST /contacts/batch10.000
Etiquetas por requisição de contato50
Contatos por operação de etiqueta em massa1.000
Validação de e-mailsAté 200.000 endereços por lista; 2 listas em andamento por time
Segmento dinâmico10 grupos de condições e 20 condições no total
Segmentos numa mesclagem20
Propriedades de contato100 por time; valores de texto com até 1.000 caracteres
Variáveis de um template50
Envios a um formulário público5 por minuto por IP
Agendamento de campanhasAté 30 dias no futuro
Teste de campanha5 endereços
Eventos (POST /events)Nome com até 100 caracteres; properties com até 16 KB
Automações100 passos; 10 filtros no gatilho; 20 ações por update_contact; espera de até 365 dias
Passo de webhook das automações3 tentativas, 15 segundos cada
Retenção de e-mails, webhooks e logs30 dias
Retenção de eventos90 dias
Arquivos de exportação7 dias; o link de download vale por 1 hora
Resultados da validação de e-mails7 dias para o resultado de cada endereço e o CSV; a validação em si fica 30 dias