Integrações

Auth0

Cadastros, logins e exclusões do Auth0 por Log Stream, e todos os e-mails do Auth0 pela Postal com Actions.

No Auth0, a Postal recebe os logs de cadastro, login e exclusão por um Log Stream, e pode enviar todos os e-mails do Auth0 pelo provedor de e-mail customizado.

#Crie a conexão

No painel, abra Integrações › Seu app e clique em Conectar no cartão do Auth0. A conexão tem a sua URL, que você cola no provedor, e mostra o passo a passo na própria tela.

URL da conexão (exemplo)
https://api.postal.so/integrations/crm/01a1c2d3-e4f5-7a6b-8c9d-0e1f2a3b4c5d/webhook

No Auth0, abra Monitoring › Streams e crie um stream Custom Webhook:

CampoValor
Payload URLA URL da conexão
Authorization TokenBearer seguido do segredo mostrado na conexão
Content Typeapplication/json
Content FormatJSON Array (ou JSON Object)
Filter by CategorySign Up, Login e User/Behavioral

As integrações de app contam no limite do plano (app_integrations). Fora do plano, os cartões aparecem bloqueados com o botão Fazer upgrade.

#Eventos

Tipo do logEvento na PostalPadrão
ss (cadastro)auth0.user.signed_upligado
s (login)auth0.user.logged_indesligado
sv (e-mail verificado)auth0.user.email_verifiedligado
scp (senha alterada)auth0.user.password_changedligado
sdu (usuário excluído)auth0.user.deleted (exclusão)ligado

O usuário é casado pelo user_id do Auth0 (auth0|…), no external_id; o e-mail vem de user_name. As propriedades são user_id, connection, client_name, log_id e date.

Para as exclusões, a conexão diz o que fazer com o contato: só registrar o evento (padrão), descadastrar o contato (ele continua na audiência, sem receber marketing) ou excluir o contato (sem evento, já que o contato some). Uma exclusão nunca cria um contato que a Postal não tinha.

#Configurações da conexão

  • Eventos: só os marcados viram contato e evento; os outros são ignorados (a resposta ainda é 202).
  • Sincronizar o nome: atualiza nome e sobrenome do contato com o que vier do provedor.
  • Adicionar ao segmento e Inscrever no tópico: um segmento estático e um tópico para cada contato que chega.
  • Quando o usuário for excluído no app: só registrar, descadastrar ou excluir o contato.

Tudo que a conexão muda no contato leva a origem crm:<id da conexão> (last_change_source), e cada entrega aparece no registro da conexão, com o resultado de cada pessoa. Uma entrega repetida pelo provedor (mesmo ID) não é processada duas vezes.

#E-mails do Auth0 pela Postal

Sem conexão: o provedor de e-mail customizado do Auth0 roda uma Action para cada e-mail (verificação, boas-vindas, redefinição de senha, convite, MFA). Em Branding › Email Provider, escolha Custom Provider, crie a Action e guarde a sua chave de API da Postal como segredo POSTAL_API_KEY:

Action: Custom Email Provider
exports.onExecuteCustomEmailProvider = async (event, api) => {
  const response = await fetch('https://api.postal.so/emails', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${event.secrets.POSTAL_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      from: 'Minha empresa <[email protected]>',
      to: [event.notification.to],
      subject: event.notification.subject,
      html: event.notification.html,
      text: event.notification.text,
      tags: [{ name: 'auth0', value: event.notification.message_type }],
    }),
  })

  if (response.status === 429 || response.status >= 500) {
    api.notification.retry(`Postal respondeu ${response.status}`)
  } else if (!response.ok) {
    api.notification.drop(`Postal respondeu ${response.status}`)
  }
}

Use uma chave só de envio, de preferência restrita ao domínio do remetente. Os modelos continuam no Auth0 (Branding › Email Templates).

#Dispare automações

Cada evento fica no contato com o nome auth0.user.signed_up e as propriedades da tabela acima. Na tela da conexão, o botão Criar automação ao lado de cada evento abre uma automação nova com o gatilho Evento recebido já preenchido. Pelos endpoints de automações, o gatilho é {"type": "event", "event": "auth0.user.signed_up"}.

Exemplo: boas-vindas no cadastro e uma dica de segurança depois de auth0.user.password_changed. Nos e-mails, as propriedades do evento entram como {{event.amount}} nos passos ou como variáveis do template ({{{amount}}}).