Funil configurável
O funil de vendas do PEPINO ZAP — etapas definidas por REGRAS sobre a conversa (origem, status, etiqueta e posição no fluxo de bot). Como a conversa é colocada na etapa mais avançada que casa, a visualização em canvas (estilo editor de fluxo) e como montar um funil pelo painel ou pela API.
O funil do PEPINO ZAP não é um quadro de cards que você arrasta à mão: é configurável por regras. Você cria etapas e, em cada uma, define uma regra sobre a conversa. As conversas se distribuem sozinhas pelas etapas conforme atendem (ou não) a cada regra — então o funil reflete o estado real do atendimento, sem ninguém mover nada.
- No painel: Funil → (criar/editar) — canvas com arrastar-e-soltar, no mesmo estilo do construtor de fluxo.
- Na API: Funil — o editor visual usa exatamente estes endpoints.
Como uma conversa cai numa etapa
Cada etapa tem uma position (ordem). Uma conversa é colocada na etapa de maior position cuja regra ela satisfaz. É isso que dá o formato de funil: as etapas iniciais pegam muitas conversas, as finais (mais avançadas) pegam menos, e a queda entre elas é a sua taxa de conversão.
- Uma conversa fica em uma etapa (a mais avançada que casa).
- Conversas que não casam com nenhuma etapa ficam fora do funil (
unplaced). - A avaliação é feita na leitura (
GET /v1/funnels/{id}/data), sobre as conversas mais recentes do escopo (instância opcional do funil).
A regra de uma etapa
A regra combina condições com E (AND) — a conversa precisa satisfazer todas as condições presentes. Condição vazia/"any" = sem restrição.
| Critério | Valores | A conversa entra quando… |
|---|---|---|
| Origem | any · inbound · outbound | foi receptiva (o cliente iniciou) ou ativa (a empresa iniciou). |
| Status | any · open · pending · resolved | está aberta, pendente ou resolvida. |
| Etiqueta | labelId | tem a etiqueta indicada (ex.: "Proposta enviada"). |
| Posição no fluxo de bot | ver abaixo | está/passou por um ponto do seu fluxo de chatbot. |
Posição no fluxo de bot (flowMode)
flowMode | Significado |
|---|---|
any | Não considera o fluxo. |
in_flow | A conversa está num fluxo ativo (opcional: flowId específico). |
at_node | Está no nó nodeId do fluxo flowId (um ponto exato do bot). |
completed | Concluiu o fluxo (flowId específico ou qualquer um). |
not_in_flow | Não está em nenhum fluxo. |
Combine os critérios para etapas precisas. Exemplos:
• "Novos leads" → origin: inbound, flowMode: in_flow.
• "Qualificados" → flowMode: at_node no nó "Quer orçamento?" do seu fluxo.
• "Proposta enviada" → labelId da etiqueta Proposta, status: open.
• "Ganhos" → status: resolved, labelId da etiqueta Fechado.
Visualização (canvas)
O funil é desenhado num canvas (igual ao editor de fluxo): cada etapa é um nó com o nome, a contagem de conversas e um resumo da regra. Você arrasta as etapas para organizar, liga uma na outra (aresta visual) e, ao clicar numa etapa, vê as conversas que chegaram ali. A ligação entre etapas é apenas cosmética — quem decide o conteúdo da etapa é a regra, não a aresta.
Montando um funil pela API
- Crie o funil —
POST /v1/funnelscomnamee, opcionalmente,instanceId(limita a uma instância). - Adicione as etapas —
POST /v1/funnels/{id}/stages, uma por etapa, comname,color, aruleeposition(a ordem; maior = mais avançada). - (Opcional) Ligue as etapas no canvas com
PATCH .../stages/{stageId}/connection. - Leia os dados —
GET /v1/funnels/{id}/data: contagem e até 50 conversas por etapa, maisunplacedetotalEvaluated.
# Cria o funil
curl -X POST https://api.pepinozap.com.br/v1/funnels \
-H "Authorization: Bearer pzk_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "name": "Funil de vendas" }'
# Adiciona uma etapa "Proposta" (conversas abertas com a etiqueta X)
curl -X POST https://api.pepinozap.com.br/v1/funnels/fnl_.../stages \
-H "Authorization: Bearer pzk_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "name": "Proposta", "color": "amber", "position": 2,
"rule": { "status": "open", "labelId": "lbl_..." } }'
# Lê o funil (contagem + conversas por etapa)
curl https://api.pepinozap.com.br/v1/funnels/fnl_.../data \
-H "Authorization: Bearer pzk_live_xxxxxxxxxxxxxxxx"A avaliação é on-read sobre as 5.000 conversas mais recentes do escopo.
Como cada conversa fica na etapa mais avançada que casa, etapas com regras
mais "amplas" (ex.: só status: open) devem ter position menor que
etapas mais específicas — senão elas "capturam" conversas que deveriam aparecer
mais à frente.