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.
https://api.postal.so/integrations/crm/01a1c2d3-e4f5-7a6b-8c9d-0e1f2a3b4c5d/webhook
No Auth0, abra Monitoring › Streams e crie um stream Custom Webhook:
| Campo | Valor |
|---|---|
| Payload URL | A URL da conexão |
| Authorization Token | Bearer seguido do segredo mostrado na conexão |
| Content Type | application/json |
| Content Format | JSON Array (ou JSON Object) |
| Filter by Category | Sign 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 log | Evento na Postal | Padrão |
|---|---|---|
ss (cadastro) | auth0.user.signed_up | ligado |
s (login) | auth0.user.logged_in | desligado |
sv (e-mail verificado) | auth0.user.email_verified | ligado |
scp (senha alterada) | auth0.user.password_changed | ligado |
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:
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}}}).