Novo: campanhas, automações e e-mails do produto na mesma conta. Conheça a Postal
Entrar Criar conta

Do Brevo para a Postal, sem levar o que não é e-mail

O Brevo, antes chamado Sendinblue, junta várias ferramentas. O envio por API e SMTP, os modelos, os contatos e os webhooks passam para a Postal, com outros formatos. SMS, WhatsApp, CRM e o resto ficam de fora: este guia mostra o que migra, o que você refaz e o que não tem par.

Os dois envios
API e SMTP
Para exportar a base
CSV ou API
SMS e WhatsApp ficam no Brevo
Só e-mail
Campanhas e automações
Refazer

Visão geral

O que vem junto e o que você refaz

O envio, os modelos, os contatos e os webhooks passam para a Postal, mas nada acontece sozinho: você exporta, converte e confere. Os outros produtos do Brevo não têm par na Postal.

Vem por API ou arquivo

Contatos com os atributos e as listas, quem está descadastrado ou bloqueado, e o HTML dos modelos transacionais.

Você reescreve

A chamada de envio, a configuração de SMTP, os modelos (params viram variáveis) e os webhooks, que mudam de formato.

Fica no Brevo

SMS, WhatsApp, CRM de vendas, reuniões e telefone, notificações push, pagamentos, fidelidade e cupons. A Postal é uma plataforma de e-mail.

Equivalência

Os mesmos conceitos, outros nomes

O Brevo junta várias ferramentas numa conta. A Postal cuida do e-mail: envio, contatos, campanhas e automações. Use esta tabela como dicionário.

No BrevoNa PostalComo funciona na Postal
E-mail transacional (POST /v3/smtp/email)POST /emailsEnvio por API, com chave ps_… no cabeçalho Authorization.
SMTP relaySMTP da Postalsmtp.postal.so, usuário postal e uma chave de API como senha.
Modelos transacionais (templateId, params)Templates (template.id, variables)Variáveis {{{NOME}}} que só aceitam texto ou número. Você edita um rascunho e publica.
Senders e domíniosDomíniosBasta o domínio estar verificado: qualquer endereço dele pode ser o remetente.
Contatos e atributosContatos e propriedadesCada e-mail aparece uma vez por time. As propriedades têm tipo: texto, número, sim/não ou data.
ListasSegmentos estáticosUma lista montada à mão ou por importação. Para escolhas de assunto do contato, use tópicos.
Pastas de listasSem equivalenteOs segmentos não ficam em pastas.
SegmentosSegmentos dinâmicosDefinidos por filtros e atualizados sozinhos. Os filtros você refaz.
Contato na lista de bloqueio (blocklist)Descadastrado ou lista de supressãoDescadastrado não recebe campanhas nem automações. Na supressão, o endereço sai de todos os envios.
Campanhas de e-mailCampanhasEnvio para um segmento, e se quiser só para quem está inscrito num tópico.
AutomaçõesAutomaçõesUm gatilho e passos: esperar, enviar e-mail, condição, mudar o contato e chamar um webhook.
Webhooks transacionais e de marketingWebhooksUm endpoint por URL, com os eventos que você escolher e assinatura em cada entrega.
1

Faça o inventário no Brevo

Antes de mudar qualquer coisa, liste o que o seu sistema usa no Brevo. Cada item tem um lugar na Postal, ou não tem, e é melhor descobrir isso agora.

No BrevoO que anotarOnde fica na Postal
Senders e domíniosDomínios autenticados e os remetentes que o seu sistema usaDomínios
Chaves de API e credenciais SMTPQuem chama a API (cabeçalho api-key) e quem usa o SMTPChaves de API
Modelos transacionaisO ID, o nome e os params de cada umTemplates
WebhooksA URL, os eventos e o jeito de autenticar (o Brevo aceita até 40, somando marketing e transacionais)Webhooks
ContatosListas, segmentos, atributos e quem está descadastrado ou na blocklistAudiência
Campanhas, automações e formuláriosO que está no ar e o que ainda faz sentidoCampanhas, Automações e Formulários
SMS, WhatsApp, CRM, reuniões, push, pagamentos e fidelidadeO que depende de cada umSem equivalente: decida onde isso fica
2

Verifique o domínio na Postal

Em Domínios, a Postal mostra poucos registros para quem cuida do DNS copiar e confere sozinha por até 72 horas. O domínio pode continuar autenticado no Brevo ao mesmo tempo: os nomes dos registros são diferentes.

Os registros do Brevo e da Postal lado a lado
No Brevo (exemplos da documentação)Na Postal
Código de verificaçãoTXT no próprio domínio, com valor brevo-code:…Não tem: basta publicar os registros da Postal
DKIMTXT em mail._domainkey, com valor que começa em k=rsa;p=TXT em postal._domainkey
DMARCTXT em _dmarc, por exemplo v=DMARC1; p=none; rua=mailto:…Opcional. O mesmo _dmarc vale para os dois
Return-Path e SPFA documentação consultada do Brevo não os citaMX e TXT em postal
Como confirmarPelo painel ou pela API (/v3/senders/domains/{domínio}); há ainda a opção de hospedar um arquivo ou de enviar um e-mail com códigoSozinha, por até 72 horas, com o status de cada registro
  • Copie os valores da tela do seu Brevo: os da tabela são exemplos da documentação, e o seu código de verificação é único.
  • Como os nomes são diferentes (mail._domainkey no exemplo do Brevo, postal._domainkey na Postal), os dois ficam válidos durante a virada. Confira se algum nome da sua conta é igual antes de publicar.
  • A Postal avisa pelo webhook domain.updated quando o domínio vira verified. Veja Domínios e DNS.
3

Reescreva a chamada de envio

A Postal não aceita o formato do Brevo. A chamada passa a ser POST /emails, com a chave em Authorization: Bearer no lugar do cabeçalho api-key, e os campos mudam de nome. Abaixo, o mesmo e-mail nos dois formatos.

Antes: Brevo, POST /v3/smtp/email
POST https://api.brevo.com/v3/smtp/email
api-key: <chave do Brevo>
Content-Type: application/json

{
  "sender": { "name": "Aurora Cosméticos", "email": "[email protected]" },
  "to": [{ "email": "[email protected]", "name": "Ana" }],
  "subject": "Seu pedido #10482 saiu para entrega",
  "htmlContent": "<p>O pedido <b>#10482</b> está a caminho.</p>",
  "textContent": "O pedido #10482 está a caminho.",
  "tags": ["entrega"]
}
201{ "messageId": "<…>" }
Depois: Postal, POST /emails
POST https://api.postal.so/emails
Authorization: Bearer ps_sua_chave
Idempotency-Key: pedido-10482-saiu
Content-Type: application/json

{
  "from": "Aurora Cosméticos <[email protected]>",
  "to": ["Ana <[email protected]>"],
  "subject": "Seu pedido #10482 saiu para entrega",
  "html": "<p>O pedido <b>#10482</b> está a caminho.</p>",
  "text": "O pedido #10482 está a caminho.",
  "tags": [{ "name": "entrega" }]
}
200{ "id": "019a1b2c-4d5e-7f60-8a9b-0c1d2e3f4a5b" }
POST /v3/smtp/email e POST /emails, campo a campo
Campo no BrevoNa PostalO que muda
sender: {email, name} ou {id}from: texto Nome <email>Não há ID de remetente. O domínio precisa estar verificado (e ser o da chave, se ela for restrita).
to: lista de {email, name}, até 2.000 por requisiçãoto: texto ou lista de até 50, no formato Nome <email>Uma lista na Postal é um único e-mail, em que todos se veem. Para um e-mail por pessoa, use o lote.
messageVersions (até 99 destinatários por versão)POST /emails/batch: lista de até 100 e-mails, cada um com o seu toCada item tem o seu assunto, conteúdo ou template. O lote é validado antes: ou todos entram na fila, ou nenhum. Não aceita anexos nem scheduled_at e depende do plano.
cc, bcccc, bccTexto ou lista.
replyTo: {email, name}reply_to: texto ou lista
subject, htmlContent, textContentsubject, html, textSem text, o html é obrigatório. Mande os dois quando puder.
templateId e paramstemplate: {id, variables}O ID numérico vira o ID ou o alias do template. Não mande html junto. Veja o passo dos modelos.
headersheadersO Brevo aceita só cabeçalhos fora do padrão. Na Postal, alguns nomes não podem ser trocados: From, To, Cc, Bcc, Subject, Reply-To, Sender, Date, Message-ID, Return-Path, MIME-Version, Content-Type, Content-Transfer-Encoding e DKIM-Signature.
tags: lista de textostags: lista de {name, value} (até 50)Nome e valor só aceitam letras ASCII, números, _ e -: “Promoção de Natal” vira promocao-de-natal. O valor é opcional.
attachment: {url} ou {content, name}attachments: {path} ou {content, filename}url vira path e name vira filename. Até 40 MB no total, não vale no lote e depende do plano.
scheduledAt, em UTC (a entrega pode atrasar até 5 minutos)scheduled_at, em ISO 8601No futuro e a no máximo 30 dias. Dá para reagendar (PATCH /emails/{id}) e cancelar (POST /emails/{id}/cancel). Depende do plano.
batchIdSem equivalenteCancele cada e-mail agendado, um a um.
Resposta 201 com messageIdResposta 200 com idGuarde o id: é ele que aparece nos webhooks (data.email_id) e em GET /emails/{id}.
Erros: {code, message}Erros: {statusCode, name, message}Veja Erros.
Até 1.000 requisições por segundo (faixa geral dos planos)Por plano: Grátis 5, Profissional 10, Escala 20 e Empresarial 50No lote, 100 e-mails contam como uma requisição. Veja Limites.
  • Sem templateId, o Brevo exige sender, subject e htmlContent. A Postal exige from, subject e html ou text.
  • A Postal acrescenta o cabeçalho Idempotency-Key: repetir a chamada com a mesma chave e o mesmo corpo, em até 24 horas, devolve a resposta da primeira e não envia de novo. Veja Idempotência.
  • A documentação da Postal não trata de IP dedicado. Se você usa o campo sender.ip no Brevo, fale com a gente pelo formulário de contato antes de migrar.
  • Prefere um SDK? Os da Postal (Node.js, PHP e Laravel) usam esta mesma API. Veja SDKs e CLI e a referência de e-mails.
4

Se você envia por SMTP, troque só a conexão

Sistemas que falam SMTP, como WordPress, ERPs e plataformas de loja, mudam quatro campos: servidor, porta, usuário e senha. No Brevo a senha é uma chave SMTP, e não a chave de API. Na Postal é uma chave de API.

.env do Laravel
- MAIL_HOST=smtp-relay.brevo.com- MAIL_PORT=587- MAIL_USERNAME=<login SMTP do Brevo>- MAIL_PASSWORD=<chave SMTP do Brevo>+ MAIL_SCHEME=smtps+ MAIL_HOST=smtp.postal.so+ MAIL_PORT=465+ MAIL_USERNAME=postal+ MAIL_PASSWORD=ps_sua_chave
Configuração de SMTP nos dois lados
SMTP do BrevoSMTP da Postal
Servidorsmtp-relay.brevo.comsmtp.postal.so
Portas587 ou 2525 (a documentação manda deixar a criptografia vazia) e 465 (SSL/TLS)465 (TLS direto, recomendada) ou 587 (STARTTLS). Se a rede bloquear, 2465 (TLS) ou 2587 (STARTTLS)
UsuárioO login SMTP da aba SMTP, em SMTP e APIpostal
SenhaA chave SMTP (a documentação avisa que não é a chave de API)Uma chave de API (ps_…). Uma chave só de envio basta
Envio em loteO relay não faz lote: a documentação manda usar a APIAté 50 destinatários por mensagem. Para lote, a API
  • Na Postal, a autenticação (AUTH PLAIN ou AUTH LOGIN) vem sempre depois do TLS.
  • O SMTP da Postal não tem tags, agendamento nem templates: para isso, use a API. Se o seu sistema manda cabeçalhos próprios do Brevo para essas funções, a Postal não os interpreta e eles seguem como cabeçalhos comuns.
  • Os envios por SMTP seguem as mesmas regras da API (domínio verificado, cotas e supressão) e aparecem em E-mails e Logs. Veja o guia de SMTP.
5

Recrie os modelos transacionais

A Postal não converte modelos de outra plataforma, mas o HTML vem pela API do Brevo. O script abaixo lista os modelos ativos, troca {{params.nome}} por {{{nome}}} e cria cada um como template, com o alias brevo-<id>. É um ponto de partida: revise o resultado antes de publicar o seu.

Node.js: dos modelos do Brevo para os templates da Postal
const brevoHeaders = { 'api-key': process.env.BREVO_API_KEY }
const postalHeaders = {
  Authorization: `Bearer ${process.env.POSTAL_API_KEY}`,
  'Content-Type': 'application/json',
}

// {{params.nome}} do Brevo vira {{{nome}}} na Postal
const convert = (text) => text.replace(/\{\{\s*params\.(\w+)\s*\}\}/g, '{{{$1}}}')

const url = 'https://api.brevo.com/v3/smtp/templates?templateStatus=true&limit=100'
const response = await fetch(url, { headers: brevoHeaders })
const { templates } = await response.json()

for (const template of templates) {
  const created = await fetch('https://api.postal.so/templates', {
    method: 'POST',
    headers: postalHeaders,
    body: JSON.stringify({
      name: template.name,
      alias: `brevo-${template.id}`,
      subject: convert(template.subject),
      html: convert(template.htmlContent),
    }),
  })
  if (!created.ok) throw new Error(await created.text())

  const { id } = await created.json()
  await fetch(`https://api.postal.so/templates/${id}/publish`, { method: 'POST', headers: postalHeaders })
}
Variáveis dos modelos
No BrevoNa PostalObservação
{{params.codigo}}{{{codigo}}}O valor vem em template.variables. No HTML, os valores são escapados.
{{ contact.FIRSTNAME }} (dado do contato){{{FIRST_NAME}}} ou {{{contact.chave}}}, só em campanhas e automaçõesEm um envio por POST /emails, mande o valor em variables.
{% if … %} e {% for … %}Sem equivalenteOs templates da Postal só substituem variáveis. Resolva as condições e as listas no seu sistema e mande o resultado pronto.
Link de descadastro do Brevo{{{POSTAL_UNSUBSCRIBE_URL}}}Em campanhas, sem a variável a Postal acrescenta um rodapé de descadastro no fim do e-mail.
  • O Brevo só aceita params nos modelos da “nova linguagem de modelos” (New Template Language). Os modelos mais antigos precisam ser revisados à mão.
  • Valores de params que são listas ou objetos não passam: na Postal, cada variável é texto ou número, e uma variável sem valor e sem valor padrão devolve 422. Declare as opcionais com fallback_value.
  • A resposta do Brevo traz o remetente (sender) de cada modelo. Na Postal, ele vem de from no envio, ou do remetente padrão que você guardar no template.
  • O envio usa sempre a última versão publicada. Veja a referência de templates; o plano define quantos templates o time tem.
6

Recrie os webhooks e troque a autenticação

Os eventos principais existem nos dois lados, com outros nomes e outro corpo. No Brevo, a documentação consultada não descreve assinatura: ele autentica com usuário e senha na URL, token Bearer, cabeçalhos próprios ou lista de IPs. Na Postal, cada entrega vem assinada com o segredo do endpoint.

Eventos: o que corresponde a quê
Evento do Brevo (event)Evento da PostalObservação
requestemail.sentAproximado: a Postal avisa quando entregou o e-mail ao provedor de envio.
deliveredemail.deliveredO servidor do destinatário aceitou a mensagem.
deferredemail.delivery_delayedAs novas tentativas acontecem sozinhas.
soft_bounceemail.bounceddata.bounce.type é Transient.
hard_bounceemail.bounceddata.bounce.type é Permanent, e o endereço entra na lista de supressão.
invalid_email, erroremail.failedAproximado: failed.reason traz o motivo.
blockedemail.suppressedAproximado: a Postal usa quando o destinatário estava na lista de supressão. Confira com um envio de teste.
spamemail.complainedO endereço entra na lista de supressão.
opened, unique_openedemail.openedSó com o rastreamento de aberturas ligado no domínio. A documentação da Postal não separa a primeira abertura das seguintes: se precisa disso, conte pelo email_id.
clickemail.clickeddata.click traz link, ipAddress, userAgent e timestamp. Só com o rastreamento de cliques ligado.
unsubscribedcontact.updatedO descadastro de um contato de marketing gera contact.updated.
proxy_open, unique_proxy_openSem equivalenteA Postal não tem um evento para abertura por proxy.
Marketing: contact_updated, contact_deletedcontact.updated, contact.deleted
Marketing: list_additionSem evento próprioSegmentos estáticos não geram evento.
Webhooks: formato, autenticação e tentativas
No BrevoNa PostalObservação
Campos soltos no corpo: event, email, message-id, ts_event…{type, created_at, data}, com o e-mail dentro de dataSe você ligou webhooks em lote (batched, até 500 eventos por envio, a cada 5 minutos), o seu código recebe vários por requisição. A Postal manda um evento por requisição.
message-id, o identificador do e-mail no eventodata.email_idÉ o id devolvido por POST /emails: guarde-o para ligar o evento ao envio.
email: um endereçodata.to: uma lista
ts_event em UTC; date em CET/CESTcreated_at em ISO 8601
tags e tagdata.tags: objeto {nome: valor}
reasondata.bounce.message e data.failed.reason
X-Mailin-custom, devolvido no eventoSem equivalenteGuarde os seus dados no banco, junto com o id do e-mail, ou use tags.
Sem assinatura documentada: usuário e senha na URL, token Bearer, cabeçalhos próprios ou lista de IPsPadrão Standard Webhooks, HMAC-SHA256: webhook-id, webhook-timestamp e webhook-signatureO segredo (whsec_…) é de cada endpoint. Veja a verificação da assinatura.
4 novas tentativas (após 10 minutos, 1 hora, 2 horas e 8 horas). Resposta 4xx (exceto 429) ou 5xx encerra e descarta o evento8 tentativas em cerca de 27 horas. Qualquer resposta que não seja 2xx conta como falha e gera nova tentativaTodas com o mesmo webhook-id: use para descartar duplicatas. Reenvio manual pelo painel ou por POST /webhooks/{id}/events/{event_id}/replay.
Até 40 webhooks, somando marketing e transacionaisO número de endpoints depende do planoA URL precisa ser HTTPS e pública. Você escolhe os eventos de cada endpoint.
  • Crie o endpoint em Webhooks (painel ou POST /webhooks) e guarde o signing_secret. Mande um evento de teste pelo painel antes de virar.
  • Os endereços de teste ([email protected], [email protected] e outros) geram webhooks reais, sem usar a cota. Dependem do plano.
  • Tire os webhooks do Brevo só depois de virar todo o tráfego: os e-mails que ainda saem por lá continuam gerando eventos.
7

Leve quem está bloqueado ou pediu para sair

Faça isto antes de importar contatos: um endereço que está na lista de supressão nunca vira contato. O Brevo lista, por API, os contatos bloqueados ou descadastrados dos e-mails transacionais, com o motivo de cada um.

Bounce e spamSuprimir

Motivos hardBounce e contactFlaggedAsSpam na lista de bloqueados.

Coloque na lista de supressão.

Descadastrados e bloqueadosDecidir

Motivos unsubscribedViaMA, unsubscribedViaEmail, unsubscribedViaApi e adminBlocked.

Suprima, se a pessoa não deve receber nem os e-mails do sistema. Se só o marketing parou, importe como descadastrada.

InscritosImportar

Contatos que aceitaram receber.

Importe como contatos, no passo seguinte.

Só SMS ou WhatsAppNão importar

Contatos que têm número e não têm e-mail.

Deixe de fora: a Postal não tem esses canais.

Node.js: dos bloqueados do Brevo para a lista de supressão da Postal
const reasonsToSuppress = new Set(['hardBounce', 'contactFlaggedAsSpam'])
const emails = []

for (let offset = 0; ; offset += 100) {
  const url = `https://api.brevo.com/v3/smtp/blockedContacts?limit=100&offset=${offset}`
  const response = await fetch(url, { headers: { 'api-key': process.env.BREVO_API_KEY } })
  const { contacts = [] } = await response.json()
  if (contacts.length === 0) break

  for (const contact of contacts) {
    if (reasonsToSuppress.has(contact.reason?.code)) emails.push(contact.email.toLowerCase())
  }
}

for (let i = 0; i < emails.length; i += 100) {
  const response = await fetch('https://api.postal.so/suppressions/batch/add', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.POSTAL_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ emails: emails.slice(i, i + 100) }),
  })
  if (!response.ok) throw new Error(await response.text())
  await new Promise((resolve) => setTimeout(resolve, 250)) // respeita o limite do plano
}
201Cada lote aceita até 100 endereços
  • A rota é GET /v3/smtp/blockedContacts, com até 100 por página. Cada item traz email, blockedAt e reason.code. O script leva só os dois motivos de entrega e deixa os demais para você decidir.
  • Na Postal, os endereços entram com a origem manual: a diferença entre bounce e reclamação não é guardada. A chave precisa ser de acesso total. Veja a referência de supressões.
  • O Brevo também tem uma lista de domínios bloqueados. A lista de supressão da Postal guarda endereços, e não domínios inteiros: se precisa disso, recuse o domínio no seu formulário ou no seu sistema.
8

Exporte a base do Brevo e importe na Postal

O painel do Brevo exporta contatos em CSV, e a API também. Em CRM, Contacts, selecione os contatos e use More actions, Export, escolhendo os atributos. Pela API, o pedido abaixo gera o arquivo e avisa o seu notifyUrl quando ele ficar pronto.

Pedir a exportação de uma lista
POST https://api.brevo.com/v3/contacts/export
api-key: <chave do Brevo>
Content-Type: application/json

{
  "customContactFilter": { "actionForContacts": "subscribed", "listId": 12 },
  "exportAttributes": ["FIRSTNAME", "LASTNAME"],
  "notifyUrl": "https://exemplo.com.br/hooks/brevo-export"
}
202{ "processId": 3912 }
  • Em actionForContacts, a API aceita allContacts, subscribed, unsubscribed e unsubscribedPerList. É preciso informar também listId, segmentId, modifiedSince ou createdSince (data completa, com fuso). Exporte inscritos e descadastrados em arquivos separados.
  • Sem CSV, GET /v3/contacts (até 1.000 por página) e GET /v3/contacts/lists/{id}/contacts (até 500) devolvem JSON com attributes, listIds, listUnsubscribed e emailBlacklisted.
  • Descadastrados: no arquivo deles, deixe uma coluna Descadastrado com sim em todas as linhas e aponte essa coluna para o campo Descadastrado (sim/não). Quem estava com emailBlacklisted verdadeiro entra aqui, e nunca como inscrito.
  • Listas: exporte uma lista por arquivo e importe cada um escolhendo o segmento. Só segmentos estáticos recebem contatos importados. Quem saiu de uma lista só (listUnsubscribed) merece cuidado: se a lista virou um tópico, registre a escolha opt_out dessas pessoas com PATCH /contacts/{id}/topics.
  • Crie antes as Propriedades dos atributos que quer manter: a importação não cria propriedades novas. Se você usa um ID próprio (ext_id) e ele vier no arquivo, aponte-o para o campo de ID externo.
  • Deixe desligada a opção Disparar automações. Contatos que já existem são atualizados pelo e-mail, e cada arquivo pode ter até 20 MB. O limite de contatos do plano está em Preços: no Grátis são 1.000, no Profissional 5.000 e no Escala 50.000.
  • Antes de enviar, passe a lista pela Validação de e-mails.
9

Refaça campanhas, automações e formulários

Campanhas e automações não passam sozinhas. Não achamos na documentação do Brevo uma exportação delas para outra plataforma, então trate cada uma como nova e aproveite para revisar o que ainda faz sentido.

O que refazer
No BrevoNa PostalO que fazer
Campanhas de e-mailCampanhasCopie o HTML para um template ou cole na campanha. Escolha o segmento (e, se quiser, o tópico), o remetente de um domínio verificado e o assunto. Campanhas já enviadas não são importadas.
AutomaçõesAutomaçõesMonte de novo no editor de fluxos: um gatilho e passos de esperar, enviar e-mail, condição, mudar o contato e chamar um webhook. Veja Automações.
SegmentosSegmentos dinâmicosRefaça os filtros. Só os contatos vêm no arquivo.
Formulários de inscriçãoFormuláriosRecrie, ligue a confirmação por e-mail (double opt-in) e troque o endereço ou o código no seu site. Veja Formulários.
Relatórios e históricoNão vemExporte o que quiser guardar antes de encerrar a conta. A Postal guarda e-mails, eventos e logs por 30 dias.
  • Importações não iniciam automações, a menos que você ligue essa opção. Revise quem entraria antes de ativar.
  • Cada plano tem um limite de execuções de automações por mês.
10

Confira o que não tem equivalente e vire o tráfego

Vire um fluxo de cada vez, com o Brevo ainda ligado. Comece pelos endereços de teste e por você mesmo, compare entregas e bounces nos primeiros dias e só então passe o resto.

Domínio verificadoTeste em [email protected]Um fluxo pela PostalTodo o tráfegoDesligar o Brevo
O que não tem equivalente, e como contornar
No BrevoO que fazer na Postal
SMS e WhatsAppSem equivalente. A Postal é uma plataforma de e-mail.
CRM de vendas, reuniões e telefone, notificações push, pagamentos, fidelidade e cuponsSem equivalente. Continue no Brevo ou use outra ferramenta.
Modelos com condições e laçosResolva no seu sistema e mande o HTML pronto, ou variáveis simples.
IP dedicado (sender.ip)A documentação da Postal não trata disso.
batchIdCancele cada e-mail agendado com POST /emails/{id}/cancel.
Lista de domínios bloqueadosSem equivalente: a supressão guarda endereços.
Webhooks autenticados por usuário e senha na URL, token Bearer ou cabeçalhos própriosA proteção é a assinatura de cada entrega.
Eventos de abertura por proxySem evento próprio.

Antes de virar a chave

  • O domínio está verificado na Postal e a chave de API foi criada (só envio e restrita ao domínio, nos sistemas que apenas enviam).
  • A chamada de envio foi reescrita e testada com um endereço de teste, e o seu código guarda o id de cada e-mail.
  • Os modelos foram recriados e publicados, e os que usavam condições ou laços foram resolvidos no sistema.
  • O SMTP aponta para smtp.postal.so com uma chave de API como senha.
  • O webhook foi criado, a assinatura é conferida e um evento de teste chegou.
  • Os bloqueados por bounce e spam estão na lista de supressão, antes da importação de contatos.
  • Quem estava descadastrado entrou como descadastrado, e as automações ficaram desligadas na importação.
  • O seu código guarda de qual provedor cada e-mail saiu, e os bounces foram conferidos nos primeiros dias.
  • Você decidiu onde ficam SMS, WhatsApp e o CRM, se usava.

Perguntas frequentes

Preciso manter o Brevo durante a migração?

Sim, até terminar: trocar o envio, levar os contatos, recriar campanhas e automações e ver chegarem os eventos dos últimos e-mails que saíram por lá. Se você usa SMS, WhatsApp ou o CRM, eles ficam no Brevo, porque a Postal não tem esses produtos.

Posso manter o domínio autenticado nos dois?

Pode. Os registros têm nomes diferentes (a Postal usa o seletor postal no DKIM e o subdomínio postal no Return-Path), então os dois ficam verificados durante a virada.

Os meus modelos com condições e listas funcionam na Postal?

Não do mesmo jeito. Os templates da Postal só substituem variáveis de texto ou número. Resolva as condições e as listas no seu sistema, monte o HTML final e mande em html, ou passe só os valores já prontos em variables.

O Brevo era o Sendinblue. Este guia vale para mim?

Vale. O guia usa os nomes e as rotas da documentação atual do Brevo (api.brevo.com/v3). Se o seu código ainda usa o nome antigo, confira na documentação do Brevo qual endereço ele chama.

Quer testar a Postal?

Crie a sua conta e comece no plano Grátis.