O conteúdo
O corpo do e-mail é uma lista de blocos, e quem escreve o HTML é a API. O club manda só o que vai dentro de cada bloco:
A imagem precisa ser pública porque o e-mail fica na caixa de entrada por tempo
indeterminado, e a URL assinada de uma mídia privada venceria lá dentro.
Variáveis
Toda campanha e todo passo de automação aceitam:{{first_name|aluna}} usa o texto depois da barra quando o valor está vazio. Os valores saem
sempre escapados: um nome com marcação aparece como texto, nunca como HTML.
A automação acrescenta as variáveis do gatilho:
Variável desconhecida — ou que o gatilho não oferece — é recusada com
422 ao agendar a
campanha ou publicar a automação. O rascunho aceita, porque pode estar pela metade.
Campanhas
scheduled, sending e paused podem ir para canceled.
- Agendar confere o conteúdo inteiro e a audiência. Sem data, a campanha sai em instantes.
unschedulea devolve ao rascunho enquanto o horário não chegou. - No horário, a lista congela, uma vez, com cada pessoa no máximo uma vez. Daí em diante o envio segue em lotes e a campanha não muda mais: o e-mail que metade da lista recebeu é o que a outra metade recebe.
- Pausar vale no lote seguinte — o que já está com o provedor termina.
- Retomar continua a mesma lista, sem reavaliar a audiência: quem entrou no club depois do disparo não recebe.
- Cancelar não se desfaz. O que não saiu fica como
canceled, e os números de quem já recebeu continuam valendo.
Audiência
A audiência teminclude e exclude, cada um com entregas, turmas, produtos e cursos
concluídos. Dentro de cada um, qualquer regra casa. Sem include, a campanha vai para o club
inteiro; exclude tira quem casar com qualquer regra dele. Um id que deixou de existir não casa
com ninguém — a audiência nunca se alarga sozinha.
Só recebe quem é alcançável: conta não removida e com o e-mail confirmado — ou criada por
compra, importação ou convite, em que o endereço veio de quem vendeu ou de quem administra.
GET …/audience conta essa mesma regra antes do disparo.
Automações
O rascunho é conferido só na forma: tipos conhecidos, ids de passo únicos, tamanho e profundidade. Ele pode estar incompleto, e nada dispara a partir dele. Publicar confere tudo e grava uma versão imutável, que passa a abrir as execuções novas. As execuções em curso continuam na versão em que entraram — editar a régua não muda o caminho de quem já está nela.Passos
Os passos formam uma árvore:
As regras da condição são avaliadas no momento do passo, contra o estado atual: se o aluno
concluiu a aula ontem, a condição de hoje já vê.
O
id de cada passo precisa ser estável entre versões: é por ele que os números somam e que uma
regra de “abriu o e-mail” cita o envio.
Quem entra, e quando sai
reentry:once(uma vez na vida, o padrão),one_at_a_time(a cada evento, mas nunca duas em curso) oualways(uma execução por evento).exit_on_access_lost: encerra a execução quando a matrícula que disparou é revogada ou vence.exit_when: a meta. Conferida antes de cada passo; atingida, a execução termina — quem já comprou não recebe o resto da régua de venda.
Pausar e arquivar
Pausar para de abrir execuções e retém as que estão em curso; ao retomar, elas continuam de onde pararam. Os fatos que aconteceram durante a pausa não abrem execução: pausar é parar de ouvir. Arquivar encerra as execuções em curso e não se desfaz; a trilha e os números ficam.Entrega
O envio sai em lotes, com um teto diário por club — 10.000 e-mails por dia, por padrão. O que passa do teto sai no dia seguinte. Os e-mails de automação têm prioridade sobre os de campanha: o boas-vindas de quem acabou de comprar não espera o fim de um disparo grande.Descadastro e supressão
Todo e-mail de campanha e automação leva:- os cabeçalhos
List-UnsubscribeeList-Unsubscribe-Post— o descadastro de um clique (RFC 8058) que o Gmail e o Yahoo mostram ao lado do remetente; - o link no rodapé para a tela do classroom,
<slug>.weve.studio/email-preferences?token=….
Quem administra não remove supressão. O endereço que voltou com bounce não existe, e quem
reclamou disse ao provedor que não quer — reenviar nos dois casos derruba a reputação do envio de
todos os clubs.
Métricas
Em cada envio,status é o envio (pending, sending, sent, skipped, failed). Entrega,
bounce, reclamação, abertura e clique são carimbos à parte, preenchidos uma vez — os números
contam pessoas, não batidas: abrir dez vezes é uma abertura.
Configuração do ambiente
Para quem opera a API:
O webhook é configurado no painel do Resend, apontando para
POST /webhooks/email, com os eventos
email.delivered, email.bounced, email.complained, email.opened, email.clicked e
email.suppressed.
Sem RESEND_API_KEY e MARKETING_MAIL_FROM, ou sem SECRETS_KEY — que assina o link de descadastro —, agendar uma
campanha e publicar uma automação respondem 501: nada entra numa fila que não vai andar.