Pular para o conteúdo
Docs

Guia

Migre do Postmark para o Emailit. Faça a correspondência de servers, message streams e tokens, converta os campos da API, troque as configurações SMTP e migre webhooks, supressões e templates.

Atualizado em 1 de out. de 2026

Este guia mostra a correspondência entre os conceitos, as chamadas à API, os webhooks, as supressões e os templates do Postmark e os equivalentes no Emailit. Leia antes Migrar para o Emailit para conhecer a ordem geral e saber como usar os dois provedores em paralelo.

Conceitos

Postmark Emailit
Account Conta
Server Workspace, ou um workspace com vários domínios de envio
Server API token Chave de API Sending Only, que pode ser restrita a um domínio
Account API token Chave de API Full Access
Transactional message stream A API de e-mail e o SMTP relay
Broadcast message stream Campanhas para listas de contatos, ou a API com o seu próprio cabeçalho List-Unsubscribe
Inbound message stream Recebimento de e-mails em um subdomínio como inbound.acme.com
Sender signatures e domínios Domínios de envio. Sender signatures de um único endereço não estão disponíveis.
Templates e layouts Templates com alias e versões. Não há layouts.
Webhooks por stream Webhooks por workspace
Suppressions por stream Uma lista de supressão por workspace
Activity Email APIEmails e Email APILogs
Tag e Metadata meta

Para manter separadas a reputação transacional e a de marketing, envie de domínios ou subdomínios diferentes, como mail.acme.com para recibos e news.acme.com para newsletters.

Atualizar as chamadas à API

O POST /email do Postmark com um X-Postmark-Server-Token passa a ser POST /v2/emails com um bearer token. Os nomes dos campos mudam de PascalCase para snake_case:

Antes: Postmark
curl https://api.postmarkapp.com/email \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: $POSTMARK_SERVER_TOKEN" \
  -d '{
    "From": "Acme <hello@acme.com>",
    "To": "ada@example.com",
    "Subject": "Your receipt",
    "TextBody": "Thanks for your order.",
    "HtmlBody": "<p>Thanks for your order.</p>",
    "MessageStream": "outbound"
  }'
Depois: Emailit
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "Thanks for your order.",
    "html": "<p>Thanks for your order.</p>"
  }'
Postmark Emailit
Cabeçalho X-Postmark-Server-Token Authorization: Bearer secret_…
From from
To, Cc, Bcc (strings separadas por vírgula) to, cc, bcc como string ou array de até 50 cada
ReplyTo reply_to
Subject subject
HtmlBody, TextBody html, text
Headers: [{ "Name": "…", "Value": "…" }] headers: { "Name": "Value" }
Metadata, Tag meta, devolvido nos eventos de webhook
TrackOpens, TrackLinks tracking: { "loads": true, "clicks": true }
Attachments[] com Name, Content, ContentType, ContentID attachments[] com filename, content, content_type, content_id
MessageStream Não é necessário
POST /email/withTemplate com TemplateAlias ou TemplateId e TemplateModel O mesmo POST /v2/emails com template (um alias ou ID) e variables
Resposta com MessageID e ErrorCode: 0 200 com id (em_…), status: "accepted" e ids por destinatário. Os erros usam códigos de status HTTP.

O Emailit não tem endpoint de lote. Envie uma requisição por mensagem, cada uma com até 50 destinatários, e adicione um cabeçalho Idempotency-Key para que as novas tentativas sejam seguras. Consulte Enviar um e-mail.

Mudar as configurações SMTP

Configuração Postmark Emailit
Host smtp.postmarkapp.com smtp.emailit.com
Porta 587, 2525 ou 25 587 (STARTTLS), 465 (TLS), 2525, 2587 ou 25
Usuário O seu server API token emailit
Senha O seu server API token A sua chave de API do Emailit

O Emailit não lê cabeçalhos X-PM-*, como X-PM-Message-Stream ou X-PM-Tag. Remova-os e configure o rastreamento no domínio. Consulte Configurações SMTP.

Correspondência dos eventos de webhook

Webhook do Postmark Evento do Emailit
Delivery email.delivered
Bounce, tipos de hard bounce email.bounced
Bounce, tipos soft ou transient email.attempted enquanto o Emailit faz novas tentativas, e depois email.bounced se todas as novas tentativas falharem
Spam complaint email.complained
Open email.loaded
Click email.clicked
Subscription change email.unsubscribed para e-mails de campanha, e suppression.created ou suppression.deleted para as supressões que você adiciona ou remove pela API
Inbound email.received; depois, busque o conteúdo com GET /emails/{id}

O Emailit também envia email.accepted quando a API aceita um e-mail, algo para o qual o Postmark não tem webhook.

O formato da requisição muda:

  • O Postmark envia um registro por requisição e o identifica em RecordType. O Emailit envia um array JSON de até 100 eventos, com o nome em type e o e-mail em data.object.
  • Use data.object.id, o ID em_ da resposta do envio, em vez de MessageID. Os seus valores de meta ficam em data.object.meta.
  • Os webhooks do Postmark costumam ser protegidos com credenciais de autenticação básica na URL. O Emailit, em vez disso, assina cada requisição: verifique X-Emailit-Signature com X-Emailit-Timestamp e o seu segredo whsec_. Consulte Assinatura das requisições.
JavaScript
for (const event of req.body) {
  const email = event.data.object;
  if (event.type === 'email.bounced') markBounced(email.to, email.id);
  if (event.type === 'email.complained') unsubscribe(email.to);
}

Migrar as supressões

  1. Exporte as supressões de cada message stream do Postmark de onde você envia, pela página de supressões do stream ou pela API de dump de supressões. Inclua hard bounces, reclamações de spam e supressões manuais.

  2. Monte um único CSV com as colunas email,type,reason:

    CSV
    email,type,reason
    old-address@example.com,recipient,postmark hard bounce
    angry@example.com,recipient,postmark spam complaint

    Use o tipo recipient para endereços que nunca devem receber e-mails. Ele bloqueia envios pela API, por SMTP e de campanhas. Para pessoas que só cancelaram o recebimento dos seus broadcasts, use o tipo unsubscribe, que bloqueia campanhas, mas ainda deixa passar os e-mails transacionais.

  3. Em Email APISuppressions, selecione Import e envie o arquivo. Cada arquivo pode ter até 10.000 linhas e no máximo 8 MB. Os duplicados são ignorados.

Consulte Gerenciar supressões.

Migrar os templates

Copie o HTML de cada template do Postmark, incluindo o layout dele, e depois importe-o em Email MarketingTemplates ou crie-o com a API de templates. O Emailit não tem layouts, então junte o layout e o conteúdo em um único template. Use o mesmo alias que você usava no Postmark para que as mudanças no seu código sejam pequenas.

Os templates do Postmark usam Mustachio. O Temple cobre valores simples e condições:

Postmark (Mustachio) Emailit (Temple)
{{name}} {{name}}
{{company.name}} {{company.name}}
Seções {{#company}}…{{/company}} {{#if company}}…{{/if}}, com caminhos completos como {{company.name}} dentro
Seções invertidas {{^name}}…{{/name}} {{#if name}}{{else}}…{{/if}}
{{#each items}}…{{/each}} Não suportado. Renderize a lista no seu código e passe-a como uma única variável.
TemplateModel variables

O Temple nunca escapa HTML, então escape o que vier dos usuários antes de passar. Um valor ausente é renderizado como string vazia, a menos que você adicione um valor padrão, como {{name|"there"}}. Consulte Temple.

Alterar o DNS

Adicione o seu domínio em Email APIDomains e publique os registros do Emailit. Eles usam nomes próprios (emailit._domainkey, emailit.<domain> e, opcionalmente, go e inbound), então não entram em conflito com o registro DKIM do Postmark nem com o CNAME de return path pm-bounces dele. Mantenha o seu registro DMARC. Depois da virada, remova os registros do Postmark. Consulte Registros DNS.

Se você processa e-mails recebidos com o Postmark, mude para um subdomínio de recebimento do Emailit e atualize os endereços que a sua aplicação divulga. Consulte Configurar o recebimento de e-mails.

Próximos passos

Esta página foi útil?

Obrigado pelo feedback.

Obrigado, lemos todas as mensagens.