1. Wiki
  2. Casos de uso

Recupere carrinhos abandonados por e-mail ou WhatsApp

Sua loja avisa a BIP quando o carrinho para. A BIP espera o tempo que você define e manda o lembrete. Se a pessoa comprar antes, nada sai.

Resposta rápida

Crie uma campanha de Disparo por API com Atraso e ligue a reentrada com 1 dia de espera. Sua loja chama /api/campaigns/trigger a cada mudança no carrinho e /api/campaigns/cancel quando o pedido fecha. Cada chamada reinicia a contagem, e o lembrete cancelado não sai nem conta como envio.

EsforçoAPICanalE-mail + WhatsAppPlanoGrátis

Quem deixou o carrinho recebe um lembrete com o próprio nome e o produto que ficou para trás, na hora que você escolher. Quem comprou antes não recebe nada.

O que você precisa

  • Uma conta na BIP (o plano gratuito envia por e-mail)
  • Acesso ao servidor da sua loja, onde o carrinho e o pedido acontecem
  • O nome e o e-mail do cliente assim que ele se identifica no carrinho (o telefone, para WhatsApp)
  • Uma chave de API com Disparo de Campanhas e Escrita de Contatos
  • Para WhatsApp: plano pago, número conectado e um template aprovado

O que você vai conseguir

  • Um lembrete para quem deixou o carrinho, com o primeiro nome e o produto que ficou para trás.
  • Nenhuma mensagem para quem ainda está comprando: cada mudança no carrinho reinicia a contagem.
  • Nenhum lembrete para quem já comprou: o pedido cancela o envio, e o envio cancelado não conta no seu saldo.
  • No máximo um lembrete a cada 24 horas por pessoa, a cada carrinho que ela abandonar.
  • Contatos novos criados na mesma chamada, sem duplicar quem já está na BIP.

Como funciona

  1. 1Sua loja chama a BIP sempre que o carrinho muda
  2. 2A BIP espera o atraso e reinicia a contagem se a pessoa voltar
  3. 3Comprou, a loja cancela; não comprou, o lembrete sai

A campanha usa o Disparo por API no modo Atraso. Na prática:

  • Sua loja chama /api/campaigns/trigger a cada mudança no carrinho de um cliente identificado. A BIP agenda o lembrete para daqui a uma hora (ou o tempo que você definir).
  • Uma nova chamada para a mesma pessoa reinicia a contagem. Cada pessoa tem no máximo um lembrete esperando nesta campanha.
  • Quando o pedido fecha ou o carrinho é esvaziado, a loja chama /api/campaigns/cancel. O lembrete pendente é descartado, não sai e não conta como envio.
  • Se a hora chega sem compra, a BIP confere a Janela de Reentrada do Lead e monta o e-mail com os dados mais recentes do contato. Se a pessoa trocou de produto, o lembrete mostra o carrinho atualizado.

Passo a passo

1. Crie os campos do carrinho

O lembrete fica mais forte quando cita o produto. Para isso, a loja grava o produto num campo do contato a cada chamada.

  1. Em Configurações → Geral, vá até Campos e clique em Adicionar Campo.
  2. Em Tipo de Campo, escolha String. Em Nome do Campo, digite Produto do carrinho e clique em Salvar.
  3. Para a versão por WhatsApp, crie também o campo Código do carrinho, do tipo String. Ele leva a pessoa direto ao carrinho dela.
dash.bip.marketing/…/settings
Campos personalizados Produto do carrinho e Código do carrinho em Configurações, aba Geral

Captura de tela em breve

Campos personalizados Produto do carrinho e Código do carrinho em Configurações, aba Geral

2. Crie a chave de API

  1. Em Configurações, abra a aba Chaves de API e clique em Adicionar Nova Chave de API.
  2. Em Nome, digite Loja Horizonte — carrinho.
  3. Em Escopos, ligue Disparo de Campanhas e Escrita de Contatos. O segundo deixa a loja mandar o contato como objeto: a BIP cria ou atualiza o contato e agenda o lembrete na mesma chamada.
  4. Clique em Salvar e copie a Chave de API. Guarde a chave no servidor da loja, numa variável de ambiente, e nunca no código do site.
dash.bip.marketing/…/settings?tab=api-keys
Nova chave de API com os escopos Disparo de Campanhas e Escrita de Contatos ligados

Captura de tela em breve

Nova chave de API com os escopos Disparo de Campanhas e Escrita de Contatos ligados

3. Monte o e-mail do lembrete

  1. Em Modelos de Email, clique em Novo Modelo.
  2. Clique em Configurações e preencha Nome, Idioma (Português), Assunto e Pré-visualização. Os textos estão em Pronto para copiar.
  3. Monte os blocos: logo, cabeçalho, texto, botão para o carrinho e redes sociais.
  4. No texto, digite @Produto e escolha "Produto do carrinho" field value. Clique na etiqueta e preencha o Valor de Fallback com alguns produtos.
  5. No bloco de botão, preencha URL do Link com a página do carrinho da sua loja.
  6. Clique em Salvar.
dash.bip.marketing/…/emails-templates/…
Editor de e-mail com o lembrete de carrinho e a variável do produto no texto

Captura de tela em breve

Editor de e-mail com o lembrete de carrinho e a variável do produto no texto

4. Crie a campanha com atraso

  1. Em Campanhas, clique em Nova Campanha.
  2. Em Nome da Campanha, digite Carrinho abandonado — e-mail e escolha o emoji 🛒.
  3. Em Tipo de Agendamento, escolha Disparo por API.
  4. Em Modo de Disparo, escolha Atraso. Em Atraso (Segundos), digite 3600 (uma hora).
  5. Em Canal, escolha Email e, em Modelo de E-mail, ligue o modelo do passo 3.

Campanhas por API não têm seção de segmentos: cada chamada da loja diz quem recebe.

dash.bip.marketing/…/campaigns/…
Campanha com Disparo por API, modo Atraso e 3600 segundos

Captura de tela em breve

Campanha com Disparo por API, modo Atraso e 3600 segundos

5. Ligue a reentrada

Quem abandona um carrinho hoje pode abandonar outro no mês que vem. Com a Janela de Reentrada do Lead desligada (o padrão), cada contato recebe a campanha uma vez só, para sempre: o segundo carrinho da Marina não ganharia lembrete.

  1. Em Janela de Reentrada do Lead, ligue Permitir Reentrada do Lead.
  2. Em Período de Espera (Dias), digite 1.

Com 1 dia, cada pessoa recebe no máximo um lembrete a cada 24 horas, mesmo que abandone vários carrinhos no mesmo dia. A BIP confere a janela quando o atraso termina. Um lembrete barrado pela janela aparece como Rejeitado nas estatísticas e não conta como envio. Não deixe em 0: sem período de espera, a mesma pessoa pode receber vários lembretes no mesmo dia.

dash.bip.marketing/…/campaigns/…
Janela de Reentrada do Lead com Permitir Reentrada do Lead ligado e 1 dia de espera

Captura de tela em breve

Janela de Reentrada do Lead com Permitir Reentrada do Lead ligado e 1 dia de espera

6. Teste e ative

  1. Clique em Salvar → Salvar Rascunho.
  2. Clique em Testar Campanha, digite o seu e-mail e clique em Enviar Teste. Se você ainda não é contato, crie-se antes em Contatos → Criar Contato.
  3. Confira o e-mail. O teste sai na hora, sem esperar o atraso, e não consome envios. Se o seu contato não tem o campo Produto do carrinho, aparece o fallback alguns produtos.
  4. Clique em Salvar → Salvar e Ativar e confirme em Ativar Disparo por API. A campanha passa ao status Ativo e começa a aceitar chamadas.
dash.bip.marketing/…/campaigns/…
Janela de confirmação Ativar Disparo por API

Captura de tela em breve

Janela de confirmação Ativar Disparo por API

7. Ligue a loja à BIP

  1. Na campanha, abra Integração via API. Os comandos já vêm com o ID da campanha, que também está no fim do endereço da página.
  2. Sempre que o carrinho de um cliente identificado mudar (produto adicionado, removido, quantidade alterada), chame /api/campaigns/trigger com o lead como objeto: name, email e os campos do carrinho. A resposta traz "mode": "delay".
  3. Quando o pedido for concluído, ou o carrinho esvaziado, chame /api/campaigns/cancel com o mesmo e-mail. A resposta traz "cancelled": true quando havia um lembrete esperando.
  4. Contato novo precisa de name com pelo menos 2 caracteres e de e-mail ou telefone. Telefone sempre com + e código do país: +5541998765432.

Os comandos prontos estão em Pronto para copiar.

dash.bip.marketing/…/campaigns/…
Painel Integração via API com os comandos de disparo e de cancelamento

Captura de tela em breve

Painel Integração via API com os comandos de disparo e de cancelamento

Pronto para copiar

Campanha

OpçãoValor
Nome da Campanha🛒 Carrinho abandonado — e-mail
Tipo de AgendamentoDisparo por API
Modo de DisparoAtraso
Atraso (Segundos)3600
Janela de Reentrada do LeadPermitir Reentrada do Lead ligado, Período de Espera (Dias) 1
CanalEmail
Modelo de E-mailCarrinho abandonado · Loja Horizonte

Atrasos comuns em Atraso (Segundos):

EsperaSegundos
30 minutos1800
1 hora3600
2 horas7200
4 horas14400
24 horas86400

Campos

Nome do CampoTipo de CampoExemplo de valorOnde aparece
Produto do carrinhoStringCamisa de Linho AreiaTexto do e-mail e do WhatsApp
Código do carrinhoStringLH8F3K2Botão do WhatsApp

Com mais de um produto, mande um resumo: Camisa de Linho Areia e mais 2 itens.

E-mail

Onde aparece [@primeiro nome], digite @first e escolha lead.firstName(). Onde aparece [@Produto do carrinho], digite @Produto e escolha o campo. Preencha cada Valor de Fallback conforme a tabela do fim desta seção.

Assunto
[@primeiro nome], seu carrinho está esperando
Pré-visualização
Guardamos tudo na Loja Horizonte. Finalize quando quiser.
OrdemBlocoAjuste sugerido
1Adicionar ImagemLogo da Loja Horizonte, Largura Máxima (px) 160, URL do Link da loja
2Adicionar CabeçalhoSaudação com o primeiro nome
3Adicionar TextoO produto que ficou no carrinho
4Adicionar BotãoUma ação só, com Largura de 50
5Adicionar DivisorLargura Máxima (px) 120, cor clara
6Adicionar TextoAjuda com tamanho, frete e troca
7Adicionar Redes SociaisSó as redes que a loja usa
Cabeçalho
[@primeiro nome], você esqueceu algo aqui
Texto
Você deixou [@Produto do carrinho] no carrinho da Loja Horizonte. Guardamos tudo para você: é só voltar e finalizar a compra.

Os produtos do carrinho não ficam reservados. Se gostou, garanta o seu antes que o estoque acabe.

Botão — Nome
Voltar ao carrinho
Botão — URL do Link
https://lojahorizonte.com.br/carrinho?origem=bip-carrinho
Texto final
Ficou com dúvida sobre tamanho, frete ou troca? Veja as respostas em lojahorizonte.com.br/ajuda.
VariávelOndeValor de Fallback
lead.firstName()AssuntoOi
lead.firstName()CabeçalhoEi
"Produto do carrinho" field valueTextoalguns produtos

A loja sempre manda o nome de quem cria um contato, então o fallback do nome raramente aparece.

WhatsApp

Para a versão por WhatsApp, crie o template na aba Templates da tela WhatsApp, com Categoria Marketing e Idioma Portuguese (BR).

  • Botão 1, URL: https://lojahorizonte.com.br/carrinho/{{1}}, com o exemplo LH8F3K2.
  • Botão 2, Resposta rápida: quem toca entra em Taxa de resposta, e a conversa continua no app WhatsApp Business.
  • Amostras de variáveis do corpo: {{1}} Marina, {{2}} Camisa de Linho Areia.
Variável na campanhaCampo do contatoValor de exemplo
Corpo · {{1}}first nameMarina
Corpo · {{2}}"Produto do carrinho" field valueCamisa de Linho Areia
Botão 1 · {{1}}"Código do carrinho" field valueLH8F3K2

Para criar o template por Importar do JSON:

horizonte_carrinho_lembrete.json
[
  {
    "name": "horizonte_carrinho_lembrete",
    "category": "MARKETING",
    "language": "pt_BR",
    "components": [
      { "type": "HEADER", "format": "TEXT", "text": "Seu carrinho está esperando" },
      { "type": "BODY", "text": "Oi, {{1}}! Você deixou {{2}} no carrinho da Loja Horizonte. Guardamos tudo para você finalizar quando quiser. Toque no botão para voltar direto ao seu carrinho.", "example": { "body_text": [["Marina", "Camisa de Linho Areia"]] } },
      { "type": "FOOTER", "text": "Loja Horizonte · lojahorizonte.com.br" },
      { "type": "BUTTONS", "buttons": [
        { "type": "URL", "text": "Ver meu carrinho", "url": "https://lojahorizonte.com.br/carrinho/{{1}}", "example": ["https://lojahorizonte.com.br/carrinho/LH8F3K2"] },
        { "type": "QUICK_REPLY", "text": "Tenho uma dúvida" }
      ] }
    ]
  }
]

API

Troque SUA_CHAVE_DE_API pela sua chave e ID_DA_CAMPANHA pelo ID do painel Integração via API.

Carrinho mudou: agenda ou reinicia o lembrete
curl -X POST https://api.bip.marketing/api/campaigns/trigger \
  -H "Content-Type: application/json" \
  -H "x-bip-api-key: SUA_CHAVE_DE_API" \
  -d '{
    "campaignId": "ID_DA_CAMPANHA",
    "lead": {
      "name": "Marina Alves",
      "email": "marina.alves@exemplo.com",
      "phone": "+5541998765432",
      "fields": [
        { "key": "Produto do carrinho", "value": "Camisa de Linho Areia" },
        { "key": "Código do carrinho", "value": "LH8F3K2" }
      ]
    }
  }'
Pedido concluído: cancela o lembrete
curl -X POST https://api.bip.marketing/api/campaigns/cancel \
  -H "Content-Type: application/json" \
  -H "x-bip-api-key: SUA_CHAVE_DE_API" \
  -d '{"campaignId": "ID_DA_CAMPANHA", "lead": "marina.alves@exemplo.com"}'
Resposta do disparo
{"campaignId": "ID_DA_CAMPANHA", "leadId": "ID_DO_CONTATO", "mode": "delay"}
Resposta do cancelamento
{"campaignId": "ID_DA_CAMPANHA", "cancelled": true, "leadId": "ID_DO_CONTATO"}

"cancelled": false quer dizer que não havia lembrete esperando: o atraso já tinha terminado ou nada foi disparado. Não é erro.

TypeScript
// No servidor da Loja Horizonte
const API_KEY = process.env.BIP_API_KEY ?? 'SUA_CHAVE_DE_API';
const CAMPANHA_CARRINHO = 'ID_DA_CAMPANHA';

type Carrinho = { codigo: string; cliente: { nome: string; email: string; telefone?: string }; // telefone com + e código do país itens: { nome: string }[]; };

async function bip(path: string, body: unknown) { const res = await fetch(https://api.bip.marketing${path}, { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-bip-api-key': API_KEY }, body: JSON.stringify(body) }); const texto = await res.text(); if (res.ok) return JSON.parse(texto); // Cancelamento de quem nunca entrou na BIP: não havia nada para cancelar if (path.endsWith('/cancel') && res.status === 404 && texto.includes('Lead not found')) { return { cancelled: false }; } throw new Error(BIP ${res.status}: ${texto}); }

const resumo = (itens: { nome: string }[]) => itens.length > 1 ? ${itens[0].nome} e mais ${itens.length - 1} ${itens.length === 2 ? 'item' : 'itens'} : itens[0].nome;

// Produto adicionado, removido ou quantidade alterada: agenda ou reinicia o lembrete export const carrinhoMudou = (c: Carrinho) => bip('/api/campaigns/trigger', { campaignId: CAMPANHA_CARRINHO, lead: { name: c.cliente.nome, email: c.cliente.email, ...(c.cliente.telefone ? { phone: c.cliente.telefone } : {}), fields: [ { key: 'Produto do carrinho', value: resumo(c.itens) }, { key: 'Código do carrinho', value: c.codigo } ] } }); // { campaignId, leadId, mode: 'delay' }

// Pedido concluído ou carrinho esvaziado: cancela o lembrete pendente export const carrinhoFechado = (email: string) => bip('/api/campaigns/cancel', { campaignId: CAMPANHA_CARRINHO, lead: email }); // { cancelled: true | false }

Como medir

Em Campanhas, abra Estatísticas da Campanha (pelo ícone de gráfico na lista ou no topo da campanha).

  • Processado (N execuções): lembretes que a BIP processou depois do atraso. Os disparos cancelados não aparecem: eles nunca chegaram a ser processados.
  • Entregue, Taxa de Abertura e Taxa de Cliques: quantos lembretes chegaram, foram abertos e levaram a um clique.
  • Links mais clicados: o link do botão, com o parâmetro origem=bip-carrinho, mostra quantos cliques voltaram ao carrinho.
  • Interações do Destinatário: filtre por Clicado para ver quem voltou ao carrinho. Filtre por Rejeitado para ver quem a janela segurou, com o motivo O lead está dentro da janela de reentrada.
  • Na versão por WhatsApp: Entregue, Taxa de leitura e Taxa de resposta (inclui os toques em Tenho uma dúvida).

No seu sistema, duas leituras completam o quadro:

  • A resposta do cancelamento em cada pedido. "cancelled": true quer dizer que a pessoa comprou antes da hora do lembrete, e nada saiu. Num carrinho que a loja disparou, "cancelled": false quer dizer que o atraso já tinha terminado: a compra veio depois da hora do lembrete. Cruze com Interações do Destinatário para ver se ela recebeu e clicou.
  • O parâmetro origem=bip-carrinho no endereço das visitas, para ligar os pedidos ao lembrete nos relatórios da loja.

No BIP Lite, o card Uso mostra quanto do saldo do mês os lembretes já usaram.

Variações

E-mail ou WhatsApp

  • Só WhatsApp (planos pagos): siga os mesmos passos, mas no passo 4 escolha WhatsApp em Canal, o template horizonte_carrinho_lembrete e o mapeamento de variáveis de Pronto para copiar. A loja precisa mandar o phone do cliente, com + e código do país.
  • Os dois canais: cada campanha usa um canal só. Crie uma campanha de e-mail e outra de WhatsApp, com atrasos diferentes, como 3600 no e-mail e 86400 no WhatsApp. A loja chama trigger e cancel nas duas, com os dois IDs. Cada lembrete que sai conta como um envio.

Contato que já está na BIP

Se o cliente já é contato e você não usa os campos do carrinho, mande lead como texto, com o e-mail ou o telefone. Nesse caso, a chave precisa só de Disparo de Campanhas.

Perguntas frequentes

Quem compra antes da hora recebe o lembrete?

Não. Quando o pedido fecha, a loja chama /api/campaigns/cancel e o lembrete pendente é descartado. Ele não sai e não conta como envio.

E se a pessoa voltar e mexer no carrinho?

Cada nova chamada para a mesma pessoa reinicia a contagem. Com 3600 segundos, o lembrete sai uma hora depois da última mudança, uma vez só. E ele mostra o produto mais recente, porque a BIP monta a mensagem na hora do envio.

Preciso montar um segmento?

Não. Campanhas de Disparo por API não usam segmentos: cada chamada da loja diz quem recebe. Se a pessoa ainda não é contato, a mesma chamada cria o contato.

Quanto isso consome do meu plano?

No BIP Lite, cada lembrete processado usa um envio do mês. Lembretes cancelados e lembretes barrados pela Janela de Reentrada do Lead não contam. O plano gratuito tem 1.000 envios por mês, por e-mail.

Veja também