Skip to main content
Esta página é o manual operacional para uma pessoa ou uma LLM montar automações Corvex. O entregável pode ir para o painel ou para a API v1:
Automações criadas pela API nascem active: false. Para inserir ou reordenar uma etapa sem reenviar o JSON inteiro: POST /api/v1/automations/:id/steps e POST /api/v1/automations/:id/steps/:stepId/move. PATCH com steps completo continua válido.

Duas etapas mentais

Não pule o plano. Não invente recurso no contrato. Exemplo:
Depois disso, monte o JSON com steps e templates.

Modelo mental

O trigger não é uma etapa. Ele fica em trigger_event.
O template não é uma etapa. Ele é o conteúdo da action (data.subject, data.body, data.message, …).
O fluxo termina quando não há próximo step, quando um end corre, ou quando a condition não tem ramo verdadeiro e não há if_false.

Capability manifesto

Não existem: equals, contains, order.shipped, order.created. Edição incremental: POST .../steps e POST .../steps/:stepId/move, ou PATCH do documento. Templates: POST /api/v1/automation/templates + data.template_id.

Trigger → contexto → mensagem

Confirme sempre em GET /api/v1/automation/metatags?triggerType=....

Como a LLM deve trabalhar

1

Entender a intenção

O que dispara? Espera? Condição? Qual canal? Qual tom?
2

Escolher o trigger

Só um dos 14. “Pedido enviado” → tracking_code_updated. “PIX gerado” → pix.generated.
3

Desenhar o plano

Lista linear: delay, condition, action. Se o recurso não existir, pare e explique.
4

Escrever as mensagens

Ver Templates. Só metatags daquele gatilho.
5

Montar o JSON

name, trigger_event, active, steps. IDs estáveis se for edição.
6

Validar

Checklist abaixo. Depois mostre o preview em português.

Preview (antes de salvar)

Sempre explique o fluxo assim:
Peça confirmação do remetente (remetente_nome / remetente_email) — não invente o e-mail da loja.

Operações de edição (no JSON)

Editar = PATCH no documento ou POST /api/v1/automations/:id/steps e POST /api/v1/automations/:id/steps/:stepId/move. Preserve id / nextId / parentId das etapas que você não pediu para mudar. Invariantes: não recrie o fluxo inteiro para uma troca pontual; não mude id de steps existentes; não altere trigger, nome ou outras actions sem pedido; máximo 50 steps; delay continua 1–10080.

Exemplo: só o delay

Antes: "minutes": 30. Pedido: “troque 30 minutos por 1 hora”.
O resto do JSON permanece igual.

Validação antes de entregar

  • Trigger existe nos 14?
  • Cada step.type é um dos 6?
  • Cada action.name é um dos 5? webhook tem url HTTPS? create_coupon tem coupon_name + discountType + amount?
  • Operator é = (nunca equals) / in / empty / …?
  • Campo da condition está na lista curta?
  • payment_status usa paid pending cancelled?
  • Delay em minutos inteiros (24 h = 1440, não 24 hours)?
  • E-mail tem remetente, assunto ≥ 3, body ou html?
  • SMS ≤ 160?
  • WhatsApp tem message (texto) ou o campo obrigatório do tipo?
  • Cada {{chave}} existe naquele trigger_event?
  • Tronco sem parentId; ramos com parentId = branches[].id?
  • 1–50 steps, nome 3–100?
  • Edição: ids antigos preservados?
Se algum item falhar, não entregue JSON inválido. Explique a limitação.

Biblioteca intenção → automação

Recuperar PIX

Intent: “Avise quem gerar PIX e não pagar.” JSON (formato aninhado, válido):
Substitua remetente pelos dados reais da loja.

Recuperar carrinho

Intent: “Uma hora depois de abandonar o checkout, envie um lembrete.” Não existe campo de condition has_purchased. O gatilho cart.abandoned já significa checkout abandonado. Delay + envio é o fluxo suportado. Opcional: só enviar se houver telefone (lead.phone not-empty).
Não use {{order.pix_code}} aqui.

Pós-compra

Intent: “Quando o pagamento for confirmado, envie instruções.” Trigger payment.confirmed. Sem delay. Sem PIX.

Rastreio

Intent: “Quando o código de rastreio estiver disponível, envie ao cliente.” Trigger tracking_code_updated. WhatsApp ou e-mail com {{tracking.code}} e {{tracking.url}}.

O que recusar

Matrizes rápidas

Canal × template

Campo × operator

Não há contains, starts_with, before, after.

Trigger × action

Qualquer action pode ser salva em qualquer trigger. O envio falha se faltar e-mail (e-mail) ou telefone (SMS/WhatsApp). A restrição real é metatag × trigger, não action × trigger. Próximo: Templates de comunicação e regras para IA.