intermediate
jornadas
drips
automacao

Construtor de Jornadas

Drips multi-etapa que reagem a eventos de viagens - gatilhos de entrada, espera, ramificacao, envio, meta, saida.

Levy Fleets TeamMay 18, 202613 min read

Construtor de Jornadas

Uma jornada e um drip multi-etapa que reage a eventos conforme acontecem. Enquanto uma campanha e "enviar essa mensagem a esse segmento agora", uma jornada e "quando isso acontecer, iniciar essa sequencia".

Navegacao

Jornadas em Engage > Jornadas.

Tipos de No

Toda jornada e um grafo desses seis tipos:

NoProposito
EntradaGatilho baseado em evento que admite um condutor na jornada
EsperaPausa por duracao fixa ou ate outro evento
EnvioEmail, SMS ou push usando um modelo
RamificacaoPredicado sobre estado do cliente - divide em if_true / if_false
MetaCheckpoint de conversao que sai da jornada em sucesso
SaidaNo terminal

Gatilhos de Entrada

EventoDispara quando
customer.createdNovo condutor se cadastra
ride.endedViagem termina
ride.force_endedViagem encerrada forcadamente
wallet.low_balanceCarteira cai abaixo do limite
violation.createdInfracao registrada
subscription.lapsedAssinatura para canceled ou expired
rider_score.tier_changedNivel de score muda
referral.convertedIndicado faz primeira viagem

Cada gatilho aceita expressao de filtro opcional.

Regras de Re-Entrada

RegraComportamento
neverUma vez por cliente para sempre (Serie de Boas-Vindas)
after_cooldownRe-entra apos N dias (Win-Back)
every_triggerRe-entra a todo evento (raro - Saldo Baixo)

Exemplo - Serie de Boas-Vindas

  ┌────────────┐
  │  ENTRADA   │ customer.created (consent = true)
  └─────┬──────┘
        ▼
  ┌────────────┐
  │ ENVIA email│ tpl_welcome_intro
  └─────┬──────┘
        ▼
  ┌────────────┐
  │ ESPERA 48h │
  └─────┬──────┘
        ▼
  ┌────────────┐         ┌───────────────┐
  │ RAMIFIC.   │── true ─►│ META          │
  │ rides ≥ 1  │          │ first_ride    │
  └─────┬──────┘          └───────────────┘
        │ false
        ▼
  ┌────────────┐
  │ ENVIA email│ tpl_how_to_ride
  └─────┬──────┘
        ▼
  ┌────────────┐
  │ ESPERA 72h │
  └─────┬──────┘
        ▼
  ┌────────────┐
  │ ENVIA email│ tpl_promo_first_ride
  └─────┬──────┘
        ▼
       SAIDA

JSON:

{
  "entry": {
    "type": "event",
    "event": "customer.created",
    "filters": { "marketing_email_consent": true }
  },
  "reentry": "never",
  "steps": [
    { "id": "s1", "type": "send", "channel": "email", "template_id": "tpl_welcome_intro", "next": "s2" },
    { "id": "s2", "type": "wait", "duration_hours": 48, "next": "s3" },
    {
      "id": "s3",
      "type": "branch",
      "predicate": { "rides.total_count": { "gte": 1 } },
      "if_true": "goal_hit",
      "if_false": "s4"
    },
    { "id": "s4", "type": "send", "channel": "email", "template_id": "tpl_how_to_ride", "next": "s5" },
    { "id": "s5", "type": "wait", "duration_hours": 72, "next": "s6" },
    { "id": "s6", "type": "send", "channel": "email", "template_id": "tpl_promo_first_ride", "next": "exit" },
    { "id": "goal_hit", "type": "goal", "name": "first_ride_taken" },
    { "id": "exit", "type": "exit" }
  ]
}

Presets Integrados

PresetGatilhoEtapas
Serie de Boas-Vindascustomer.created3 envios + 1 ramificacao + 1 meta
Win-Back 30/60/90Varredura de inatividade3 envios com ramificacoes
Saldo Baixowallet.low_balancePush, email apos 4h
Em BrancoEscolha suaApenas entrada + saida

Editando Jornadas

O painel mostra canvas SVG somente-leitura mais editor JSON. Voce edita:

  1. Iniciando um preset.
  2. Modificando JSON.
  3. Salvando (incrementa version).
  4. Publicando.

Por que editor JSON?

A primeira versao do Engage usa canvas somente-leitura mais editor JSON. Drag-and-drop esta planejado.

Predicados de Ramificacao

{ "wallet.current_balance": { "gt": 5 } }
{ "rides.total_count": { "gte": 3 } }
{ "subscription.status": { "eq": "active" } }
{ "rider_score_tier": { "in": ["gold", "platinum"] } }

Operadores: eq, ne, gt, gte, lt, lte, in, nin, exists.

Nos de Espera

TipoUso
Duracao fixaduration_hours: 48
Ate proximo eventoPausa ate evento especifico

Rastreamento de Metas

Um no de meta tem um name e e tratado como saida bem-sucedida.

Condicoes de Corrida e Locks

Multiplos workers podem avancar a mesma jornada simultaneamente. Engage usa locks de nivel de linha Postgres:

  • journey_runs devidos reivindicados via engage_claim_due_journey_runs usando FOR UPDATE SKIP LOCKED.
  • Dois workers chamando a RPC ao mesmo tempo recebem conjuntos disjuntos.
  • next_step_due_at atualizado atomicamente.

Dados Obsoletos em uma Jornada

Engage evita essa classe de bug completamente. Todo envio re-resolve variaveis e re-avalia ramificacoes no momento do envio.

Cliente em Multiplas Jornadas

Um unico condutor pode estar em qualquer numero de jornadas simultaneamente. Dedup de 24h previne mesmo modelo disparando duas vezes em 24h.

Publicando e Pausando

AcaoEfeito
SalvarIncrementa version; nao afeta runs ativos
PublicarJornada aceita novas entradas
PausarSem novas entradas; runs em voo continuam
ArquivarSem novas entradas; runs encerrados

Melhores Praticas

  • Sempre inclua ramificacao que sai em sucesso.
  • Mantenha duracoes de espera realistas.
  • Use metas.
  • Teste com segmento pequeno primeiro.

Solucao de Problemas

Jornada "publicada" mas sem runs

Verificar gatilho de entrada e filtros.

Run preso em no wait

Verificar next_step_due_at.

Mesmo modelo disparou duas vezes

Verificar janela de dedup de 24h e regra de re-entrada.


Precisa de ajuda?

Ajuda com jornadas: support@levyelectric.com.