Carrinhos abandonados: recuperando vendas
O Rishi captura carrinhos abandonados na sua loja e dispara fluxos automáticos de recuperação por WhatsApp. Quando o cliente finaliza a compra (no link de retomada ou direto na loja), os fluxos em andamento são interrompidos automaticamente — sem mensagens desnecessárias.
Esta página cobre o lado CRM da feature: como conectar a loja, como o webhook funciona, quais dados ficam disponíveis, e como montar o fluxo de recuperação.
Se você usa o Checkout Rishi como checkout WooCommerce, a recuperação tem uma rota dedicada de setup — veja Checkout Rishi: recuperação de carrinho abandonado.
Como funciona
O Rishi não consulta sua loja procurando carrinhos abandonados. Quem empurra os dados é um plugin instalado na loja (CartBounty no WooCommerce, plugin do próprio Checkout Rishi, ou qualquer sistema que envie POST pro endpoint).
Fluxo:
- Cliente entra no checkout, preenche dados, mas não finaliza.
- O plugin detecta o abandono e envia um POST pro webhook do Rishi com os dados do carrinho.
- O Rishi salva o carrinho e dispara todos os fluxos ativos com gatilho Carrinho abandonado daquele site.
- Os fluxos rodam (mensagens, delays, condições) seguindo a árvore que você desenhou.
- Quando o cliente finaliza a compra, o plugin envia outro POST com
cart_status: recovered(ouconverted). O Rishi interrompe os fluxos em andamento.
Configurando o webhook
Cada site tem uma URL assinada exclusiva pra carrinhos abandonados. Encontre em:
- CRM → Sites → [seu site] → Configurações (ícone de engrenagem) → seção Webhook de carrinho abandonado, ou
- CRM → Sites → [seu site] → Carrinhos abandonados → o painel mostra a URL no topo
A URL tem o formato:
https://app.rishi.com.br/api/webhooks/sites/{site_uuid}/abandoned-carts?signature=...&expires=...
Cole essa URL no campo de webhook do plugin de carrinho abandonado da sua loja.
A URL já vem assinada. Você não precisa configurar token separado de autenticação — a assinatura é a credencial. Se a URL vazar, basta gerar uma nova (regenerando a config do site).
Health-check
Plugins como o CartBounty fazem um GET na URL antes de começar a enviar dados, pra confirmar que o endpoint está vivo. O Rishi responde 200 no GET sem efeito colateral.
Formato do payload
O endpoint aceita um array de carrinhos por requisição (batch). Cada item tem o formato:
{
"id": "123",
"email": "joao@exemplo.com",
"phone": "11999998888",
"name": "João",
"surname": "Silva",
"city": "São Paulo",
"postcode": "01310-100",
"ip_address": "192.168.1.1",
"cart_contents": [
{ "product_id": 1, "name": "Camiseta", "qty": 2, "price": 89.90 }
],
"cart_total": "179.80",
"currency": "BRL",
"coupon": null,
"cart_url": "https://loja.com/carrinho?token=abc123",
"time": "2026-05-02 10:00:00",
"last_synced": "2026-05-02 10:30:00",
"cart_status": "abandoned"
}
Status aceitos
O campo cart_status aceita:
| Status | Efeito no Rishi |
|---|---|
abandoned, pending, open |
Salva e dispara fluxos |
recovered, ordered, completed, converted |
Marca como recuperado e interrompe fluxos em andamento |
lost, expired, cancelled, dismissed |
Marca como perdido sem disparar fluxos |
Batch parcialmente inválido
Se um item do batch tem id ausente ou dados inválidos, só esse item é pulado — os demais são processados normalmente. A resposta lista os itens em skipped.
Variáveis disponíveis no fluxo
Quando o gatilho Carrinho abandonado dispara, o trigger_data inclui:
| Variável | Conteúdo |
|---|---|
{{cart_id}} |
ID interno no Rishi |
{{external_id}} |
ID do carrinho na loja origem |
{{cart_total}} |
Valor numérico (ex: 189.50) |
{{cart_total_formatted}} |
Valor formatado em BRL (ex: R$ 189,50) |
{{cart_url}} |
URL pra retomar o carrinho na loja |
{{cart_token}} |
Querystring do cart_url (ex: ?token=xyz) |
{{cart_contents}} |
Array dos itens |
{{customer.first_name}} |
Primeiro nome |
{{customer.last_name}} |
Sobrenome |
{{customer.full_name}} |
Nome completo |
{{customer.email}} |
|
{{customer.phone}} |
Telefone |
{{customer.city}} |
Cidade |
{{customer.postcode}} |
CEP |
Após um nó Cupom no fluxo, também ficam disponíveis {{coupon.code}}, {{coupon.amount}}, {{coupon.expires_date}}.
Template pronto: 3 toques
A galeria do Flow Builder inclui o template Carrinho Abandonado com 3 toques:
- 30 minutos após o abandono — primeira mensagem amigável
- 3h30 depois — segunda mensagem com sentido de urgência, com verificação de pedido recente (não envia se o cliente já comprou)
- 20h depois — terceira mensagem com cupom de 10% off
Você pode usar como base e personalizar.
Métricas no painel
Acesse CRM → Sites → [seu site] → Carrinhos abandonados ou CRM → Carrinhos abandonados (visão geral de todos os sites).
Os números são dos últimos 15 dias:
| Métrica | O que conta |
|---|---|
| Total | Carrinhos capturados |
| Abandonados | Ainda não recuperados nem perdidos |
| Recuperados | Inclui status recovered (via link Rishi) e converted (compra direta) |
| Perdidos | Status lost, expired, cancelled, dismissed |
| Valor recuperado | Soma do total dos recuperados/convertidos |
| Valor potencial | Soma do total de todos os carrinhos |
| Taxa de recuperação | recuperados / total em % |
E um gráfico diário dos últimos 7 dias com abandonados vs. recuperados (em volume e em R$).
Recovered vs. Converted
Os dois somam nas métricas de recuperação, mas têm semânticas diferentes:
- Recovered — cliente comprou usando o link de retomada enviado pelo Rishi. Atribuição clara à recuperação.
- Converted — cliente comprou normalmente, sem clicar no link. Pode ter sido influenciado pelas mensagens, ou voltou por conta própria.
A distinção te ajuda a medir o impacto real das mensagens versus quem teria voltado de qualquer jeito.
Casos de borda
- Carrinho duplicado — upsert por
(site_id, external_id). O mesmo carrinho pode chegar várias vezes; só o primeiro comabandoneddispara o fluxo. - Carrinho que já chega como
recovered— significa que o cliente comprou antes do plugin sincronizar. O registro é deletado e nenhum fluxo dispara. - Carrinhos antigos não aparecem na lista — a tela mostra apenas os últimos 15 dias. O histórico completo existe no banco; fale com o suporte se precisar acessar.
- URL assinada com
expires— links antigos param de funcionar quando oexpirespassa. Regenere a URL nas configurações se acontecer. - Interrupção só cancela execuções
running— execuções jácompletedoupausednão são afetadas pela interrupção.
Setup passo a passo
- Conecte o site em Sites (WooCommerce, Checkout Rishi, Payee ou API).
- Conecte o WhatsApp — uma instância via QR ou uma conexão Meta.
- Copie a URL do webhook em Carrinhos abandonados ou Configurações do site.
- Instale o plugin de captura na sua loja (CartBounty pra WooCommerce padrão, ou o plugin do Checkout Rishi se for o caso).
- Cole a URL no campo de webhook do plugin.
- No Rishi, crie um fluxo com gatilho Carrinho abandonado — use o template pronto ou monte do zero.
- Ative o fluxo.
A partir daí, todo carrinho abandonado capturado dispara o fluxo automaticamente.
Próximos passos
- Checkout Rishi: recuperação de carrinho abandonado — guia específico se você usa o Checkout Rishi.
- Visão geral do Flow Builder — como construir o fluxo de recuperação.
- Nó Cupom — pra incluir desconto no último toque.