Respuesta rápida
Crea una campaña de Disparo por API con Retraso y activa el reingreso con 1 día de espera. Tu tienda llama a /api/campaigns/trigger en cada cambio del carrito y a /api/campaigns/cancel cuando se cierra el pedido. Cada llamada reinicia la cuenta, y el recordatorio cancelado no sale ni cuenta como envío.
Quien deja el carrito recibe un recordatorio con su nombre y el producto que quedó pendiente, a la hora que elijas. Quien compra antes no recibe nada.
Lo que necesita
- Una cuenta en la BIP (el plan gratuito envía por email)
- Acceso al servidor de tu tienda, donde ocurren el carrito y el pedido
- El nombre y el email del cliente en cuanto se identifica en el carrito (el teléfono, para WhatsApp)
- Una clave de API con Disparo de Campañas y Escritura de leads
- Para WhatsApp: plan de pago, número conectado y una plantilla aprobada
Lo que vas a lograr
- Un recordatorio para quien dejó el carrito, con su nombre de pila y el producto que quedó pendiente.
- Ningún mensaje para quien todavía está comprando: cada cambio en el carrito reinicia la cuenta.
- Ningún recordatorio para quien ya compró: el pedido cancela el envío, y el envío cancelado no cuenta en tu saldo.
- Como máximo un recordatorio cada 24 horas por persona, por cada carrito que abandone.
- Contactos nuevos creados en la misma llamada, sin duplicar a nadie que ya esté en la BIP.
Cómo funciona
- 1Tu tienda llama a la BIP cada vez que cambia el carrito
- 2La BIP espera el retraso y reinicia la cuenta si la persona vuelve
- 3Si compró, la tienda cancela; si no compró, sale el recordatorio
La campaña usa el Disparo por API en modo Retraso. En la práctica:
- Tu tienda llama a
/api/campaigns/triggeren cada cambio del carrito de un cliente identificado. La BIP programa el recordatorio para dentro de una hora (o el tiempo que definas). - Una nueva llamada para la misma persona reinicia la cuenta. Cada persona tiene como máximo un recordatorio en espera en esta campaña.
- Cuando se cierra el pedido o se vacía el carrito, la tienda llama a
/api/campaigns/cancel. El recordatorio pendiente se descarta: no sale y no cuenta como envío. - Si llega la hora sin compra, la BIP revisa la Ventana de Reingreso del Lead y arma el email con los datos más recientes del contacto. Si la persona cambió de producto, el recordatorio muestra el carrito actualizado.
Paso a paso
1. Crea los campos del carrito
El recordatorio convence más cuando menciona el producto. Para eso, la tienda guarda el producto en un campo del contacto en cada llamada.
- En Ajustes → General, ve a Campos y haz clic en Añadir campo.
- En Tipo de campo, elige Cadena. En Nombre del campo, escribe Produto do carrinho (“producto del carrito”) y haz clic en Guardar.
- Para la versión por WhatsApp, crea también el campo Código do carrinho (“código del carrito”), de tipo Cadena. Lleva a la persona directo a su carrito.

Captura de pantalla próximamente
2. Crea la clave de API
- En Ajustes, abre la pestaña Claves de API y haz clic en Añadir nueva clave de API.
- En Nombre, escribe Loja Horizonte — carrito.
- En Alcances, activa Disparo de Campañas y Escritura de leads. El segundo permite que la tienda envíe el contacto como objeto: la BIP crea o actualiza el contacto y programa el recordatorio en la misma llamada.
- Haz clic en Guardar y copia la Clave de API. Guarda la clave en el servidor de la tienda, en una variable de entorno, y nunca en el código del sitio.

Captura de pantalla próximamente
3. Arma el email del recordatorio
- En Plantillas de email, haz clic en Nueva plantilla.
- Haz clic en Ajustes y completa Nombre, Idioma (Español), Asunto y Vista previa. Los textos están en Listo para copiar.
- Arma los bloques: logo, encabezado, texto, botón al carrito y redes sociales.
- En el texto, escribe
@Produtoy elige "Produto do carrinho" field value. Haz clic en la variable y completa el Valor de respaldo conalgunos productos. - En el bloque de botón, completa URL del enlace con la página del carrito de tu tienda.
- Haz clic en Guardar.

Captura de pantalla próximamente
4. Crea la campaña con retraso
- En Campañas, haz clic en Nueva campaña.
- En Nombre de la campaña, escribe Carrito abandonado — email y elige el emoji 🛒.
- En Tipo de Programación, elige Disparo por API.
- En Modo de Disparo, elige Retraso. En Retraso (Segundos), escribe
3600(una hora). - En Canal, elige Email y, en Plantilla de email, vincula la plantilla del paso 3.
Las campañas por API no tienen sección de segmentos: cada llamada de la tienda indica quién recibe el mensaje.

Captura de pantalla próximamente
5. Activa el reingreso
Quien abandona un carrito hoy puede abandonar otro el mes que viene. Con la Ventana de Reingreso del Lead desactivada (el valor predeterminado), cada contacto recibe la campaña una sola vez, para siempre: el segundo carrito de Marina no tendría recordatorio.
- En Ventana de Reingreso del Lead, activa Permitir Reingreso del Lead.
- En Período de Espera (Días), escribe
1.
Con 1 día, cada persona recibe como máximo un recordatorio cada 24 horas, aunque abandone varios carritos el mismo día. La BIP revisa la ventana cuando termina el retraso. Un recordatorio frenado por la ventana aparece con el estado Rechazada en las estadísticas y no cuenta como envío. No lo dejes en 0: sin período de espera, la misma persona puede recibir varios recordatorios el mismo día.

Captura de pantalla próximamente
6. Prueba y activa
- Haz clic en Guardar → Guardar borrador.
- Haz clic en Probar campaña, escribe tu email y haz clic en Enviar prueba. Si todavía no eres contacto, créate antes en Leads → Crear lead.
- Revisa el email. La prueba sale al instante, sin esperar el retraso, y no consume envíos. Si tu contacto no tiene el campo Produto do carrinho, aparece el respaldo
algunos productos. - Haz clic en Guardar → Guardar y Activar y confirma en Activar Disparo por API. La campaña pasa al estado Activo y empieza a aceptar llamadas.

Captura de pantalla próximamente
7. Conecta la tienda a la BIP
- En la campaña, abre Integración vía API. Los comandos ya traen el ID de la campaña, que también está al final de la dirección de la página.
- Cada vez que cambie el carrito de un cliente identificado (producto agregado, producto eliminado, cantidad modificada), llama a
/api/campaigns/triggercon elleadcomo objeto:name,emaily los campos del carrito. La respuesta trae"mode": "delay". - Cuando se complete el pedido, o se vacíe el carrito, llama a
/api/campaigns/cancelcon el mismo email. La respuesta trae"cancelled": truecuando había un recordatorio en espera. - Un contacto nuevo necesita un
namecon al menos 2 caracteres y un email o un teléfono. El teléfono, siempre con+y código de país:+5541998765432.
Los comandos listos están en Listo para copiar.

Captura de pantalla próximamente
Listo para copiar
Campaña
| Opción | Valor |
|---|---|
| Nombre de la campaña | 🛒 Carrito abandonado — email |
| Tipo de Programación | Disparo por API |
| Modo de Disparo | Retraso |
| Retraso (Segundos) | 3600 |
| Ventana de Reingreso del Lead | Permitir Reingreso del Lead activado, Período de Espera (Días) 1 |
| Canal | |
| Plantilla de email | Carrito abandonado · Loja Horizonte |
Retrasos comunes en Retraso (Segundos):
| Espera | Segundos |
|---|---|
| 30 minutos | 1800 |
| 1 hora | 3600 |
| 2 horas | 7200 |
| 4 horas | 14400 |
| 24 horas | 86400 |
Campos
| Nombre del campo | Tipo de campo | Valor de ejemplo | Dónde aparece |
|---|---|---|---|
| Produto do carrinho | Cadena | Camisa de Linho Areia | Texto del email y de WhatsApp |
| Código do carrinho | Cadena | LH8F3K2 | Botón de WhatsApp |
Con más de un producto, envía un resumen: Camisa de Linho Areia y 2 artículos más.
Donde aparece [@primer nombre], escribe @first y elige lead.firstName(). Donde aparece [@Produto do carrinho], escribe @Produto y elige el campo. Completa cada Valor de respaldo según la tabla al final de esta sección.
[@primer nombre], tu carrito te está esperando
Guardamos todo en Loja Horizonte. Finaliza tu compra cuando quieras.
| Orden | Bloque | Ajuste sugerido |
|---|---|---|
| 1 | Añadir imagen | Logo de Loja Horizonte, Ancho máximo (px) 160, URL del enlace de la tienda |
| 2 | Añadir encabezado | Saludo con el nombre de pila |
| 3 | Añadir texto | El producto que quedó en el carrito |
| 4 | Añadir botón | Una sola acción, con Ancho de 50 |
| 5 | Añadir divisor | Ancho máximo (px) 120, color claro |
| 6 | Añadir texto | Ayuda con tallas, envíos y cambios |
| 7 | Agregar Redes Sociales | Solo las redes que usa la tienda |
[@primer nombre], olvidaste algo aquí
Dejaste [@Produto do carrinho] en tu carrito de Loja Horizonte. Guardamos todo para ti: solo tienes que volver y finalizar la compra.Los productos del carrito no quedan reservados. Si te gustó, asegura el tuyo antes de que se agote.
Volver al carrito
https://lojahorizonte.com.br/carrinho?origem=bip-carrinho
¿Tienes dudas sobre tallas, envíos o cambios? Encuentra las respuestas en lojahorizonte.com.br/ajuda.
| Variable | Dónde | Valor de respaldo |
|---|---|---|
lead.firstName() | Asunto | Hola |
lead.firstName() | Encabezado | Oye |
"Produto do carrinho" field value | Texto | algunos productos |
La tienda siempre envía el nombre al crear un contacto, así que el respaldo del nombre casi nunca aparece.
Para la versión por WhatsApp, crea la plantilla en la pestaña Plantillas de la pantalla WhatsApp, con Categoría Marketing e Idioma Spanish (LATAM).
horizonte_carrinho_lembrete · MARKETING
- Botón 1, URL:
https://lojahorizonte.com.br/carrinho/{{1}}, con el ejemploLH8F3K2. - Botón 2, Respuesta rápida: quien lo toca entra en la Tasa de respuesta, y la conversación sigue en la app WhatsApp Business.
- Muestras de variables del cuerpo:
{{1}}Marina,{{2}}Camisa de Linho Areia.
| Variable en la campaña | Campo del lead | Valor de ejemplo |
|---|---|---|
| Cuerpo · {{1}} | first name | Marina |
| Cuerpo · {{2}} | "Produto do carrinho" field value | Camisa de Linho Areia |
| Botón 1 · {{1}} | "Código do carrinho" field value | LH8F3K2 |
Para crear la plantilla con Importar desde JSON:
[
{
"name": "horizonte_carrinho_lembrete",
"category": "MARKETING",
"language": "es",
"components": [
{ "type": "HEADER", "format": "TEXT", "text": "Tu carrito te está esperando" },
{ "type": "BODY", "text": "¡Hola, {{1}}! Dejaste {{2}} en tu carrito de Loja Horizonte. Guardamos todo para que finalices la compra cuando quieras. Toca el botón para volver directo a tu carrito.", "example": { "body_text": [["Marina", "Camisa de Linho Areia"]] } },
{ "type": "FOOTER", "text": "Loja Horizonte · lojahorizonte.com.br" },
{ "type": "BUTTONS", "buttons": [
{ "type": "URL", "text": "Ver mi carrito", "url": "https://lojahorizonte.com.br/carrinho/{{1}}", "example": ["https://lojahorizonte.com.br/carrinho/LH8F3K2"] },
{ "type": "QUICK_REPLY", "text": "Tengo una duda" }
] }
]
}
]API
Reemplaza TU_CLAVE_DE_API por tu clave e ID_DE_LA_CAMPAÑA por el ID del panel Integración vía API.
curl -X POST https://api.bip.marketing/api/campaigns/trigger \
-H "Content-Type: application/json" \
-H "x-bip-api-key: TU_CLAVE_DE_API" \
-d '{
"campaignId": "ID_DE_LA_CAMPAÑA",
"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" }
]
}
}'curl -X POST https://api.bip.marketing/api/campaigns/cancel \
-H "Content-Type: application/json" \
-H "x-bip-api-key: TU_CLAVE_DE_API" \
-d '{"campaignId": "ID_DE_LA_CAMPAÑA", "lead": "marina.alves@exemplo.com"}'{"campaignId": "ID_DE_LA_CAMPAÑA", "leadId": "ID_DEL_CONTACTO", "mode": "delay"}{"campaignId": "ID_DE_LA_CAMPAÑA", "cancelled": true, "leadId": "ID_DEL_CONTACTO"}"cancelled": false significa que no había ningún recordatorio en espera: el retraso ya había terminado o no se disparó nada. No es un error.
// En el servidor de Loja Horizonte const API_KEY = process.env.BIP_API_KEY ?? 'TU_CLAVE_DE_API'; const CAMPANHA_CARRINHO = 'ID_DE_LA_CAMPAÑA';type Carrinho = { codigo: string; cliente: { nome: string; email: string; telefone?: string }; // teléfono con + y código de 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); // Cancelación de alguien que nunca entró en la BIP: no había nada que 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;// Producto agregado, eliminado o cantidad modificada: programa o reinicia el recordatorio 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 completado o carrito vaciado: cancela el recordatorio pendiente export const carrinhoFechado = (email: string) => bip('/api/campaigns/cancel', { campaignId: CAMPANHA_CARRINHO, lead: email }); // { cancelled: true | false }
Cómo medir
En Campañas, abre Estadísticas de la campaña (con el ícono de gráfico en la lista o en la parte superior de la campaña).
- Procesado (N ejecuciones): recordatorios que la BIP procesó después del retraso. Los disparos cancelados no aparecen: nunca llegaron a procesarse.
- Entregado, Tasa de apertura y Tasa de clics: cuántos recordatorios llegaron, se abrieron y generaron un clic.
- Enlaces más clicados: el enlace del botón, con el parámetro
origem=bip-carrinho, muestra cuántos clics volvieron al carrito. - Interacciones del destinatario: filtra por Clicado para ver quién volvió al carrito. Filtra por Rechazada para ver a quién frenó la ventana, con el motivo El lead está dentro de la ventana de reingreso.
- En la versión por WhatsApp: Entregado, Tasa de lectura y Tasa de respuesta (incluye los toques en Tengo una duda).
En tu sistema, dos lecturas completan el panorama:
- La respuesta de la cancelación en cada pedido.
"cancelled": truesignifica que la persona compró antes de la hora del recordatorio, y no salió nada. En un carrito que la tienda disparó,"cancelled": falsesignifica que el retraso ya había terminado: la compra llegó después de la hora del recordatorio. Crúzalo con Interacciones del destinatario para ver si lo recibió e hizo clic. - El parámetro
origem=bip-carrinhoen la dirección de las visitas, para vincular los pedidos al recordatorio en los informes de la tienda.
En BIP Lite, la tarjeta Uso muestra cuánto del saldo del mes ya usaron los recordatorios.
Variaciones
Email o WhatsApp
- Solo WhatsApp (planes de pago): sigue los mismos pasos, pero en el paso 4 elige WhatsApp en Canal, la plantilla
horizonte_carrinho_lembretey la asignación de variables de Listo para copiar. La tienda debe enviar elphonedel cliente, con+y código de país. - Los dos canales: cada campaña usa un solo canal. Crea una campaña de email y otra de WhatsApp, con retrasos distintos, como
3600en el email y86400en WhatsApp. La tienda llama a trigger y cancel en las dos, con los dos IDs. Cada recordatorio que sale cuenta como un envío.
Contacto que ya está en la BIP
Si el cliente ya es contacto y no usas los campos del carrito, envía lead como texto, con el email o el teléfono. En ese caso, la clave solo necesita Disparo de Campañas.
Preguntas frecuentes
¿Quien compra antes de la hora recibe el recordatorio?
No. Cuando se cierra el pedido, la tienda llama a /api/campaigns/cancel y el recordatorio pendiente se descarta. No sale y no cuenta como envío.
¿Y si la persona vuelve y cambia el carrito?
Cada nueva llamada para la misma persona reinicia la cuenta. Con 3600 segundos, el recordatorio sale una hora después del último cambio, una sola vez. Y muestra el producto más reciente, porque la BIP arma el mensaje en el momento del envío.
¿Necesito crear un segmento?
No. Las campañas de Disparo por API no usan segmentos: cada llamada de la tienda indica quién recibe el mensaje. Si la persona todavía no es contacto, la misma llamada crea el contacto.
¿Cuánto consume esto de mi plan?
En BIP Lite, cada recordatorio procesado usa un envío del mes. Los recordatorios cancelados y los frenados por la Ventana de Reingreso del Lead no cuentan. El plan gratuito incluye 1.000 envíos por mes, por email.
Ver también
- Bienvenida en una llamada: del registro al primer email
- API de la BIP: claves, contactos, eventos y disparos
- Campañas: únicas, recurrentes y por API
- Editor de email: bloques, variables y vista previa
- Plantillas de WhatsApp: crear, sincronizar y usar
- Planes y límites: envíos, capacidad y precios
- Recuperación de carritos abandonados en el sitio de la BIP
- La BIP para e-commerce