Follow-ups

Agende mensagens de acompanhamento automaticas em conversas. Configure templates reutilizaveis, automacoes baseadas em triggers e regras de follow-up por estagio do pipeline.

Escopos de Follow-up

Follow-ups podem ser criados por conversa (scoped) ou gerenciados globalmente na conta. Templates e automacoes permitem escalar o processo de acompanhamento.

Follow-ups da Conversa

GET/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups

Lista follow-ups de uma conversa.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/conversations/42/follow-ups" \
  -H "api_access_token: YOUR_TOKEN" | jq .
200Lista de follow-ups (chave payload)
json
{
  "payload": [
    {
      "id": 1,
      "status": "pending",
      "scheduled_at": 1771596000,
      "message": "Ola! Gostaria de saber se teve chance de avaliar nossa proposta.",
      "title": null,
      "inbox_id": 1,
      "conversation_id": 42,
      "created_at": 1771212000
    }
  ]
}
GET/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/count

Retorna a contagem total de follow-ups da conversa.

200Contagem
json
{ "count": 3 }
POST/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups

Agenda um novo follow-up para a conversa. Body envolto em follow_up.

Body envolto em follow_up

Os campos devem estar dentro do wrapper follow_up. O conversation_idna URL e o display_id da conversa (per-account, nao ID global); ele e resolvido dentro da conta autenticada e a conversa e ligada automaticamente — nao envie conversation_id no corpo.

Body (follow_up)

NomeTipoObrigatorioDescricao
contentstringSimConteudo da mensagem de follow-up
scheduled_atstringSimData/hora de envio (ISO 8601)
inbox_idintegerSimID do inbox para envio
titlestringNaoTitulo do follow-up
follow_up_template_idintegerNaoID do template a usar
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/conversations/42/follow-ups" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "follow_up": {
      "content": "Ola! Vi que ainda nao respondeu. Posso ajudar?",
      "scheduled_at": "2026-02-20T10:00:00Z",
      "inbox_id": 1
    }
  }'
GET/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/{id}

Retorna detalhes de um follow-up.

PATCH/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/{id}

Atualiza um follow-up pendente.

DELETE/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/{id}

Remove um follow-up.

POST/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/{id}/cancel

Cancela um follow-up pendente sem remove-lo do historico.

bash
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/conversations/42/follow-ups/1/cancel" \
  -H "api_access_token: YOUR_TOKEN"
POST/api/v1/accounts/{account_id}/conversations/{conversation_id}/follow-ups/{id}/retry_send

Reenvia um follow-up que falhou.

Apenas Follow-ups Falhados

So e possivel reenviar follow-ups com status "failed".

Follow-ups da Conta

GET/api/v1/accounts/{account_id}/follow-ups

Lista todos os follow-ups de toda a conta (todas as conversas). Apenas a acao index existe nesta rota — criar/cancelar e feito na rota aninhada de conversa.

bash
curl -s "https://chat.seudominio.com/api/v1/accounts/1/follow-ups" \
  -H "api_access_token: YOUR_TOKEN" | jq .
200Follow-ups da conta (chave payload)
json
{
  "payload": [
    {
      "id": 1,
      "message": "Ola! Posso ajudar?",
      "scheduled_at": 1771596000,
      "title": null,
      "inbox_id": 1,
      "inbox_name": "WhatsApp Business",
      "conversation_id": 42,
      "status": "pending",
      "user_id": 5,
      "user_name": "Joao Silva",
      "created_at": 1771212000
    }
  ]
}

Templates de Follow-up

Templates reutilizaveis com variaveis dinamicas para padronizar mensagens de acompanhamento.

GET/api/v1/accounts/{account_id}/follow-up-templates

Lista todos os templates ativos da conta.

200Lista de templates (chave payload)
json
{
  "payload": [
    {
      "id": 3,
      "name": "Acompanhamento pos-proposta",
      "content": "Template de acompanhamento",
      "variables": ["contact_name"],
      "active": true,
      "items_count": 2,
      "uses_items": true,
      "has_attachments": false,
      "attachments": [],
      "user_id": 5,
      "user_name": "Joao Silva",
      "created_at": 1767225600,
      "updated_at": 1767225600
    }
  ]
}

Itens nao vem na listagem

A listagem traz apenas items_count. Para obter os itens individuais (mensagens) de um template, use GET /follow-up-templates/{template_id}/items.

GET/api/v1/accounts/{account_id}/follow-up-templates/variables

Lista variaveis disponiveis para uso nos templates (nomes planos, nao aninhados).

200Variaveis disponiveis (chave variables)
json
{
  "variables": [
    { "name": "contact_name", "placeholder": "{{contact_name}}", "description": "Nome do contato" },
    { "name": "contact_phone", "placeholder": "{{contact_phone}}", "description": "Telefone do contato" },
    { "name": "contact_email", "placeholder": "{{contact_email}}", "description": "E-mail do contato" },
    { "name": "conversation_id", "placeholder": "{{conversation_id}}", "description": "ID da conversa" },
    { "name": "inbox_name", "placeholder": "{{inbox_name}}", "description": "Nome do canal (inbox)" },
    { "name": "agent_name", "placeholder": "{{agent_name}}", "description": "Nome do agente responsavel" },
    { "name": "card_title", "placeholder": "{{card_title}}", "description": "Titulo do card no pipeline" },
    { "name": "card_value", "placeholder": "{{card_value}}", "description": "Valor do card no pipeline" },
    { "name": "stage_name", "placeholder": "{{stage_name}}", "description": "Nome do estagio atual" },
    { "name": "pipeline_name", "placeholder": "{{pipeline_name}}", "description": "Nome do pipeline" },
    { "name": "current_date", "placeholder": "{{current_date}}", "description": "Data atual (DD/MM/YYYY)" },
    { "name": "current_time", "placeholder": "{{current_time}}", "description": "Hora atual (HH:MM)" }
  ]
}
POST/api/v1/accounts/{account_id}/follow-up-templates

Cria um novo template.

Body (follow_up_template)

NomeTipoObrigatorioDescricao
namestringSimNome do template (unico por conta)
contentstringSimConteudo do template (suporta variaveis como {{contact_name}})
activebooleanNaoSe o template esta ativo (padrao: true)
PATCH/api/v1/accounts/{account_id}/follow-up-templates/{id}

Atualiza um template.

DELETE/api/v1/accounts/{account_id}/follow-up-templates/{id}

Remove um template (soft delete).

Itens do Template

POST/api/v1/accounts/{account_id}/follow-up-templates/{template_id}/items

Adiciona um item (mensagem) ao template. Body envolto em follow_up_template_item.

Body (follow_up_template_item)

NomeTipoObrigatorioDescricao
contentstringSimConteudo da mensagem (suporta variaveis como {{contact_name}})
item_typestringSimTipo do item: text, image, audio, video, document
positionintegerNaoPosicao do item na sequencia (0, 1, 2...). Se omitida ou 0, e anexado ao final.
delay_secondsintegerNaoDelay em segundos apos o item anterior (padrao: 0). Ex: 86400 = 24h
bash
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/follow-up-templates/3/items" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "follow_up_template_item": {
      "item_type": "text",
      "content": "Ola {{contact_name}}! Tudo certo com a proposta?",
      "delay_seconds": 86400
    }
  }'
PATCH/api/v1/accounts/{account_id}/follow-up-templates/{template_id}/items/{item_id}

Atualiza um item do template.

DELETE/api/v1/accounts/{account_id}/follow-up-templates/{template_id}/items/{item_id}

Remove um item do template.

POST/api/v1/accounts/{account_id}/follow-up-templates/{template_id}/items/reorder

Reordena itens do template.

Body

NomeTipoObrigatorioDescricao
itemsarraySimArray de objetos { id, delay_seconds } na nova ordem. A posicao de cada item e definida pelo indice no array.
bash
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/follow-up-templates/3/items/reorder" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "id": 2, "delay_seconds": 0 },
      { "id": 1, "delay_seconds": 86400 }
    ]
  }'
POST/api/v1/accounts/{account_id}/follow-up-templates/{id}/preview

Pre-visualiza o template com variaveis substituidas.

Body

NomeTipoObrigatorioDescricao
contextobjectNaoObjeto com pares variavel: valor para substituir (ex: { "contact_name": "Maria" }). Apenas variaveis suportadas sao usadas. Se omitido, retorna o conteudo com os placeholders preservados.
bash
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/follow-up-templates/3/preview" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "context": { "contact_name": "Maria", "agent_name": "Joao" } }'
200Preview renderizado
json
{
  "original": "Ola {{contact_name}}, tudo certo?",
  "rendered": "Ola Maria, tudo certo?",
  "sample": "Ola [Nome do contato], tudo certo?"
}

Automacoes de Follow-up

Configure triggers automaticos para iniciar sequencias de follow-up baseados em eventos.

GET/api/v1/accounts/{account_id}/follow-up-automations

Lista automacoes de follow-up.

POST/api/v1/accounts/{account_id}/follow-up-automations

Cria uma automacao de follow-up.

Body (follow_up_automation)

NomeTipoObrigatorioDescricao
namestringSimNome da automacao (unico por conta)
follow_up_template_idintegerSimID do template a executar
trigger_typestringSimTipo de gatilho: label_added, label_removed, contact_created, conversation_created, conversation_resolved
enabledbooleanNaoSe a automacao esta ativa (padrao: true)
delay_minutesintegerNaoDelay em minutos antes de executar (padrao: 0)
trigger_configobjectNaoConfiguracao especifica do gatilho (ex: qual etiqueta dispara label_added)
conditionsobjectNaoCondicoes adicionais para filtrar quando a automacao dispara
bash
curl -X POST "https://chat.seudominio.com/api/v1/accounts/1/follow-up-automations" \
  -H "api_access_token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "follow_up_automation": {
      "name": "Follow-up pos-resolucao",
      "follow_up_template_id": 3,
      "trigger_type": "conversation_resolved",
      "enabled": true
    }
  }'
PATCH/api/v1/accounts/{account_id}/follow-up-automations/{id}

Atualiza uma automacao.

DELETE/api/v1/accounts/{account_id}/follow-up-automations/{id}

Remove uma automacao.

Regras de Follow-up por Pipeline

Configure follow-ups automaticos baseados na movimentacao de cards entre estagios do pipeline.

GET/api/v1/accounts/{account_id}/pipelines/{pipeline_id}/follow-up-rules

Lista regras de follow-up de um pipeline.

POST/api/v1/accounts/{account_id}/pipelines/{pipeline_id}/follow-up-rules

Cria uma regra de follow-up para o pipeline.

Body (pipeline_follow_up_rule)

NomeTipoObrigatorioDescricao
to_stagestringSimID do estagio destino que aciona a regra (ex: "755_entrada_de_lead")
follow_up_template_idintegerSimID do template a executar
from_stagestringNaoID do estagio de origem (opcional, filtra apenas cards vindos deste estagio)
delay_minutesintegerNaoDelay em minutos apos entrar no estagio (padrao: 0)
enabledbooleanNaoSe a regra esta ativa (padrao: true)
PATCH/api/v1/accounts/{account_id}/pipelines/{pipeline_id}/follow-up-rules/{id}

Atualiza uma regra.

DELETE/api/v1/accounts/{account_id}/pipelines/{pipeline_id}/follow-up-rules/{id}

Remove uma regra.