Pular para o conteúdo
couryo

Guia do desenvolvedorAutomações

Sequências

Sequências de e-mail por evento no Couryo, com gatilhos, passos (enviar, esperar, condição, sair), saídas automáticas, horário de silêncio e limite por contato. Sem cobrança por contato.

Ver em Markdown

Uma sequência manda uma série de e-mails para cada contato que entra nela: boas-vindas no cadastro, lembretes do teste grátis, carrinho abandonado. Você monta os passos em lista no painel (em Sequências) ou pela API, e o Couryo cuida do tempo, das condições e das saídas.

Sem cobrança por contato. Os e-mails das sequências contam na cota do plano e mais nada.

Gatilhos#

  • Evento: o contato entra quando chega um evento com esse nome (POST /v1/events ou a ferramenta track_event do MCP). Cada contato entra uma vez por sequência.
  • Manual: você coloca o contato pelo painel ou por POST /v1/sequences/{id}/enrollments. Um contato que terminou pode entrar de novo assim.
  • Evento de conversão (opcional): quando ele chega (por exemplo, order.paid), o contato sai da sequência como convertido.

Passos#

Passo O que faz
send envia um e-mail: um template salvo (template_id + variables) ou assunto, HTML e texto próprios, feitos no editor
wait espera minutos, horas ou dias (amount, unit); com until, depois espera até as HH:mm no fuso da conta ou do contato (timezone: account ou contact)
condition confere se o contato abriu ou clicou num e-mail anterior, se um evento aconteceu desde a entrada, ou se um atributo é igual a um valor; if_true e if_false seguem (next), saem (exit) ou pulam para um passo mais adiante ({ "goto": "<id do passo>" })
exit o contato sai da sequência ali

Nos e-mails, valem os atributos do contato ({{nome}}, também como {{contact.nome}}), {{email}}, as propriedades do evento que iniciou a sequência ({{event.plano}}) e {{unsubscribe_url}}.

Contato sem um atributo#

Nem todo contato tem todos os atributos, e isso não derruba a sequência:

  • Uma variável com valor padrão usa o padrão: Oi, {{nome|tudo bem}}! sai "Oi, tudo bem!" para quem não tem nome.
  • Uma variável sem valor e sem padrão sai vazia e o e-mail é enviado mesmo assim, no conteúdo próprio e no template. A inscrição ganha um aviso em warning (por exemplo, "Variáveis sem valor no passo 1: nome"), visível na lista de inscrições do painel, e o contato continua na sequência.
  • Só um e-mail que fica vazio de verdade é erro: assunto vazio depois de preencher as variáveis, ou conteúdo vazio. Aí o contato sai com o motivo send_failed e a explicação em last_error.
  • No construtor, o painel avisa quando um passo usa uma variável sem padrão: "Contatos sem {{x}} recebem esse trecho vazio. Use {{x|padrão}}."
  • O envio pela API (POST /v1/emails com template ou variables) continua estrito: variável sem valor e sem padrão é recusada.
Criar uma sequência
curl https://api.couryo.com/v1/sequences \
  -H "Authorization: Bearer $COURYO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Onboarding",
    "trigger": { "type": "event", "event": "user.signed_up" },
    "conversion_event": "order.paid",
    "from": "Loja <oi@exemplo.com.br>",
    "steps": [
      { "id": "boas", "type": "send", "template_id": "boas-vindas" },
      { "type": "wait", "amount": 2, "unit": "days", "until": "09:00" },
      { "type": "condition", "check": { "kind": "opened", "step_id": "boas" }, "if_true": "next", "if_false": "exit" },
      { "type": "send", "subject": "Uma dica, {{nome}}", "html": "<p>Oi, {{nome}}!</p>" }
    ]
  }'

A sequência nasce como rascunho. Ative com POST /v1/sequences/{id}/activate: é preciso um remetente num domínio verificado e pelo menos um e-mail.

Saídas automáticas#

O contato sai da sequência, e nenhum outro e-mail dela sai, quando:

  • descadastra (link em um clique ou pedido do provedor): motivo unsubscribed;
  • o endereço entra na lista de supressão: suppressed;
  • há devolução definitiva: bounced, ou reclamação de spam: complained;
  • chega o evento de conversão: o status vira converted;
  • a sequência é apagada (sequence_deleted) ou pausada com exit_enrollments: true (sequence_paused). Pausada sem essa opção, ninguém recebe nada e cada contato continua de onde parou quando ela voltar.

Outros motivos: condition (a condição mandou sair), exit_step, removed (você tirou), contact_deleted e send_failed.

Regras de envio#

  • Horário de silêncio: por padrão, nenhum e-mail de sequência sai das 21h às 8h no fuso da conta; o e-mail espera o fim do horário. Configurável em settings.quiet_hours (ou null para desligar).
  • No máximo 1 e-mail de sequência por contato a cada 12 horas, somando todas as sequências do projeto. Configurável em settings.min_hours_between_emails.
  • Fluxo marketing por padrão, com descadastro em um clique (List-Unsubscribe) e um link de descadastro adicionado no fim do e-mail quando o conteúdo não tem. O fluxo transactional é só para sequências de onboarding de conta, que começam por um evento.
  • Tudo passa pelo mesmo caminho do POST /v1/emails: cota do plano, níveis de confiança, supressões e checagem de conteúdo. Se um limite do dia ou uma pausa segurar o envio, o Couryo tenta de novo a cada hora por até 3 dias.
  • Sem envio duplicado: cada passo roda uma vez por contato, mesmo se o servidor reiniciar no meio.

Planos#

Plano Sequências
Grátis 1 sequência ativa, com até 3 e-mails
Pro o mesmo do Grátis; com o complemento Automações, ilimitadas
Escala e Empresa ilimitadas, incluídas

Rascunhos não contam. Ativar além do limite devolve 403 automations_limit_reached, com upgrade_options (o complemento e o Escala, com preço). O complemento é ligado e desligado em Cobrança, no painel.

Métricas e inscrições#

  • GET /v1/sequences/{id}/metrics traz, por passo: enviados, entregues, aberturas, cliques, saídas e conversões.
  • GET /v1/sequences/{id}/enrollments lista quem está ou passou pela sequência (status: active, completed, exited, converted), com o passo atual, o próximo envio (next_run_at), o motivo da saída, o último erro (last_error) e o aviso (warning), como variáveis que saíram vazias. Filtre por status e por parte do e-mail (q).

Endpoints#

Método e caminho Escopo O que faz
GET e POST /v1/sequences read / admin lista e cria (rascunho)
GET, PATCH e DELETE /v1/sequences/{id} read / admin uma sequência, muda (steps troca a lista inteira) e apaga
POST /v1/sequences/{id}/activate admin ativa ou retoma
POST /v1/sequences/{id}/pause admin pausa; { "exit_enrollments": true } também tira todo mundo
POST /v1/sequences/{id}/duplicate admin cópia como rascunho
GET /v1/sequences/{id}/metrics read métricas por passo
GET e POST /v1/sequences/{id}/enrollments read / send lista e coloca um contato à mão
GET e DELETE /v1/sequences/{id}/enrollments/{eid} read / admin uma inscrição e tirar o contato

Pelo MCP: create_sequence (escopo admin, cria como rascunho) e list_sequences (read).