Pular para o conteúdo

Campanhas

Campanhas enviam jornadas de email guiadas pelo seu stream de eventos: um evento gatilho inicia uma jornada, os passos enviam emails após delays configuráveis, e um evento de saída a encerra mais cedo (“objetivo atingido”). Os eventos de entrega voltam para o seu analytics como eventos $email_*, então o funil de uma campanha é consultável como qualquer outro dado.

As jornadas hoje são lineares: gatilho → (delay → email) → (delay → email) → … Jornadas com ramificações, quiet hours e envio ciente de fuso horário estão no roadmap.

Peça O que faz
Evento gatilho Um nome de evento que inicia uma jornada para a pessoa que o executou (ex.: cart_abandoned)
Filtros do gatilho Condições opcionais sobre as propriedades do evento gatilho, combinadas com AND. Operadores: exact, icontains
Coorte de audiência Coorte opcional: só membros podem entrar na jornada
Passos Cada passo = delay + email (assunto + template de corpo). O delay do passo 1 conta a partir do gatilho
Evento de saída Se a pessoa o executa antes de a jornada terminar, ela para (goal met) e nenhum outro email é enviado
Reentrada never (uma jornada por pessoa, para sempre) ou after N days (pode reentrar quando a jornada anterior tiver terminado há ≥ N dias)
Frequency cap Máximo de mensagens para uma pessoa dentro de uma janela móvel (em horas) — contado entre campanhas, então jornadas sobrepostas não se acumulam
  • Pessoas identificadas exigem eventos verificados para disparar uma jornada. Se a verificação de identidade não estiver passando para um usuário, seus eventos ainda entram no analytics, mas não iniciam campanhas — enviar email com base em um evento forjável é exatamente o modo de falha para o qual a verificação existe. Eventos anônimos podem disparar normalmente.
  • Eventos de saída não exigem verificação. Sair é a direção segura: melhor perder um email do que enviar um constrangedor.
  • Para gatilhos que precisam ser fatos (pagamento recebido, assinatura cancelada), envie o evento gatilho server-side com uma secret key.

Assuntos e corpos de email suportam dois namespaces de variáveis:

Hi {{person.first_name}},
you left {{event.item_count}} items in your cart.
  • {{person.x}} — os traits da pessoa no momento do envio.
  • {{event.y}} — propriedades do evento gatilho, congeladas no momento do disparo. Uma jornada lembra do evento que a iniciou, mesmo que os dados da pessoa tenham mudado desde então.

Os valores são escapados como HTML; variáveis não resolvidas renderizam como strings vazias. Não há lógica (nada de condicionais ou loops) — templates são apenas substituição.

  • Exactly-once por passo. Todo envio reivindica um slot único (journey, step) em um ledger de mensagens antes de falar com o provedor de email, e o envio em si carrega uma chave de idempotência. Retries, crashes e workers concorrentes não conseguem duplicar um email.
  • Lista de supressão. Hard bounces e reclamações de spam suprimem o endereço permanentemente, de forma automática (soft bounces suprimem no terceiro). Endereços suprimidos são pulados no momento do envio, e você pode adicionar supressões manuais no painel.
  • Checagem de saída de última hora. Mesmo depois de um envio ser agendado, o dispatcher re-checa o estado da jornada antes de enviar — um evento de saída que chegou no meio do caminho ainda interrompe o email.
  • Pausar para o relógio, não as jornadas. Pausar uma campanha interrompe novas entradas e congela o progresso; jornadas existentes mantêm seu estado. Reativar processa os passos atrasados imediatamente (com todas as checagens de saída/supressão). Pausar não cancela jornadas.

Os webhooks de entrega do provedor são convertidos em eventos atribuídos à mesma pessoa: $email_sent, $email_delivered, $email_opened, $email_clicked, $email_bounced, $email_complained — cada um marcado com a campanha, a jornada e o passo. A página de detalhe da campanha os usa no seu funil (enviado → entregue → aberto → clicado), e você pode usá-los em qualquer lugar: coortes de pessoas que clicaram, flags segmentadas para quem não abriu, e assim por diante.

Uma campanha com coorte de audiência também pode ser enviada como um broadcast único para a coorte inteira (respeitando regras de reentrada, supressão e frequency caps). As jornadas são criadas em massa e seguem pelos mesmos passos e garantias.

O editor de campanha pode enviar um único passo para um endereço à sua escolha sem criar uma jornada; envios de teste ficam de fora da contagem do frequency cap.