Shared Inbox de WhatsApp para nueva PlataformaMás
1msg official logo

Empujón a la decisión de compra con botones WhatsApp

Este escenario envía a un cliente potencial una plantilla de WhatsApp personalizada mientras aún decide.

Descripción del caso de uso

Este escenario envía a un cliente potencial una plantilla de WhatsApp personalizada mientras aún decide. El mensaje incluye su nombre, el producto o servicio en consideración y una pista útil de siguiente paso. Dos botones quick-reply permiten hacer una pregunta o señalar que están listos para comprar; los toques llegan vía webhook para enrutar a ventas o seguimiento automatizado.

Ejemplo de plantilla

Hola {{1}}! Estamos aquí para ayudarte a decidir sobre {{2}}. {{3}} — toca un botón abajo si tienes preguntas o estás listo para avanzar.

Hacer una pregunta
  • {{1}}
    nombre del cliente o prospecto
  • {{2}}
    nombre del producto o servicio en consideración
  • {{3}}
    pista útil de siguiente paso o touchpoint de nutrición (p. ej. guía comparativa, FAQ, oferta de agendar llamada)
  • “Hacer una pregunta”
    botón — fijo en la plantilla de Meta
WhatsApp Business API for purchase decision nurture

Cuándo usarlo

Usa este escenario cuando un prospecto aún decide tras una propuesta, demo o solicitud de precios, y no hay chat abierto en WhatsApp — solo una plantilla aprobada puede iniciar la conversación. Encaja en equipos B2B y de servicios que nutren negocios estancados, leads de e-commerce y SaaS que comparan planes, y agencias que conectan touchpoints de nutrición programados desde CRM o pipeline de ventas.

Menos negocios perdidos entre interés y compra
El CRM dispara la plantilla en un hito de nutrición mientras el prospecto sigue en etapa de decisión, así recibe un touchpoint oportuno en WhatsApp sin llamada en frío y sin esperar una sesión abierta.
Mensajes personales, no difusiones masivas
Tres variables del cuerpo llevan el nombre del prospecto, el producto en consideración y una pista de siguiente paso como guía comparativa o FAQ, así cada envío se lee como seguimiento uno a uno.
Menos persecución manual del pipeline
El pipeline de ventas programa touchpoints y toma del CRM teléfono, contexto del producto y la pista, así los comerciales no retipean mensajes de nutrición para cada prospecto.
Handoff más rápido cuando quieren comprar
Un quick-reply «Listo para comprar» llega vía webhook y se enruta a checkout o handoff de ventas dentro de la ventana de sesión de 24 horas.
Preguntas resueltas en el mismo chat
«Hacer una pregunta» abre la sesión para respuesta de manager o bot en WhatsApp, y la entrega más los toques de botón quedan registrados en CRM hasta un resultado de compra o no compra.

Flujo de trabajo

  1. Disparador

    CRM o el pipeline de ventas detecta que corresponde un touchpoint de nutrición para un prospecto aún en etapa de decisión.

    evento · disparado

  2. Capturar evento

    Se toman del CRM o registro del pipeline el teléfono del cliente, contexto de producto o servicio y la pista de siguiente paso.

    phone: "+…"

  3. Construir y enviar

    Se envía una plantilla personalizada con tres variables en el cuerpo y dos botones quick-reply para engagement.

    POST /sendTemplate

  4. Estado registrado

    El prospecto toca «Hacer una pregunta» o «Listo para comprar» — el evento llega vía webhook y el seguimiento se enruta en consecuencia.

    status: "read"

  5. Entregado

    La entrega y el engagement se registran en CRM hasta que el prospecto compra, declina o sale del track de nutrición.

    entregado

WhatsApp Business API for purchase decision nurture

Implementación técnica

Requisitos previos

  1. Clave API de 1MSG · Cómo obtener la clave API
  2. Cuenta de WhatsApp Business · Cómo conectar WABA
  3. Plantilla de WhatsApp · Cómo aprobar una plantilla WABA
  4. Opt-in del cliente · Cómo gestionar el consentimiento
  5. Endpoint de webhook · Cómo configurar webhooks

Ejemplos de código

#!/usr/bin/env bash
set -euo pipefail

# === Configuration (replace "___" placeholders) ===

API_BASE_URL="https://api.1msg.io"        # production 1MSG API base URL
CHANNEL_ID="___"                           # channel ID from 1MSG dashboard
API_TOKEN="___"                            # channel JWT token (Bearer)

TEMPLATE_NAME="___"                        # approved template name
TEMPLATE_NAMESPACE="___"                   # template namespace (required — send fails without it)
TEMPLATE_LANGUAGE="___"                    # template language code, e.g. "en"



# === Test data ===
TEST_PHONE="___"                 # client phone in international format
TEST_CUSTOMERNAME="___"         # {{1}} customer name
TEST_PRODUCTORSERVICENAME="___"         # {{2}} product or service name
TEST_NEXTSTEP="___"         # {{3}} next step

PHONE_NORM="$(printf '%s' "$TEST_PHONE" | tr -cd '0-9')"

for pair in "CHANNEL_ID=$CHANNEL_ID" "API_TOKEN=$API_TOKEN" \
            "TEMPLATE_NAME=$TEMPLATE_NAME" "TEMPLATE_NAMESPACE=$TEMPLATE_NAMESPACE" \
            "TEMPLATE_LANGUAGE=$TEMPLATE_LANGUAGE" "TEST_PHONE=$TEST_PHONE" \
            "TEST_CUSTOMERNAME=$TEST_CUSTOMERNAME" \
            "TEST_PRODUCTORSERVICENAME=$TEST_PRODUCTORSERVICENAME" \
            "TEST_NEXTSTEP=$TEST_NEXTSTEP"; do
    val="${pair#*=}"
    if [ -z "$val" ] || [ "$val" = "___" ]; then
        echo "Missing configuration value: ${pair%%=*}" >&2
        exit 1
    fi
done

if [ -z "$PHONE_NORM" ]; then
    echo "Error: phone number has no digits after normalization" >&2
    exit 1
fi

URL="${API_BASE_URL%/}/${CHANNEL_ID}/sendTemplate"

# params carries body ONLY. Button text is fixed in the Meta template — no button param.

# {{1}} customer name → ${TEST_CUSTOMERNAME}
# {{2}} product or service name → ${TEST_PRODUCTORSERVICENAME}
# {{3}} next step → ${TEST_NEXTSTEP}
read -r -d '' PAYLOAD <<JSON || true
{
  "phone": "${PHONE_NORM}",
  "template": "${TEMPLATE_NAME}",
  "namespace": "${TEMPLATE_NAMESPACE}",
  "language": { "policy": "deterministic", "code": "${TEMPLATE_LANGUAGE}" },
  "params": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "${TEST_CUSTOMERNAME}" },
        { "type": "text", "text": "${TEST_PRODUCTORSERVICENAME}" },
        { "type": "text", "text": "${TEST_NEXTSTEP}" }
      ]
    }

  ]
}
JSON

RESPONSE="$(curl -s -w '\n%{http_code}' -X POST "$URL" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${API_TOKEN}" \
    -d "$PAYLOAD")"

HTTP_CODE="$(printf '%s' "$RESPONSE" | tail -n1)"
BODY="$(printf '%s' "$RESPONSE" | sed '$d')"

case "$BODY" in
    *'"sent":true'*) ok=1 ;;
    *) ok=0 ;;
esac

if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ] && [ "$ok" -eq 1 ]; then
    echo "Message sent to client."
    echo "API response: $BODY"
else
    echo "Send failed. HTTP status: $HTTP_CODE" >&2
    echo "$BODY" >&2
    exit 1
fi

Respuesta y estado de entrega

HTTP 2xx y JSON "sent": true significan que 1MSG aceptó el mensaje para envío — no que ya llegó al teléfono del cliente. Guarda el campo id (tipo wamid.…) para correlacionar los callbacks de entrega.

200 OKRespuesta
{
  "sent": true,
  "message": "Sent to [email protected]",
  "description": "Message has been sent to the provider",
  "id": "wamid.HBgLMzgwNjM5..."
}
  • sent

    Aceptado para envío — aún no en el teléfono del cliente

  • id

    Guárdalo; los callbacks de entrega y hookInfo se basan en él

Estados de entrega y webhooks →

Errores frecuentes

EstadoRespuesta de la APICausaSolución
200Message was not sent: template is not definedFalta namespace, template o language en el cuerpo de la petición.Envía los tres. Toma namespace y el nombre exacto de la plantilla de GET /templates; language es un objeto: {"policy": "deterministic", "code": "es_MX"}.
200template name (…) does not exist in <language>La plantilla está aprobada en otro idioma que el solicitado.Usa el código de idioma exacto con el que se aprobó la plantilla (por ejemplo, es_MX no es lo mismo que es). Revísalo en GET /templates.
200Message was not sent: provide chatId, phone, bsuid, or usernameNingún destinatario que el canal pudiera resolver.Envía un solo destinatario: phone (código de país y número, solo dígitos), chatId (por ejemplo [email protected]) o bsuid.

Todos los códigos de error →

Preguntas comunes

Relacionado

Captación y conversión de leads
Responder consultas de precio con WhatsApp API
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente pregunte cuánto cuesta un producto o servic
Captación y conversión de leads
Respuesta automática a leads con WhatsApp API
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente escribió primero sobre un producto o servic
Captación y conversión de leads
Responder disponibilidad de stock con WhatsApp API
Este escenario envía un mensaje de texto libre de WhatsApp con sendMessage dentro de la ventana de atención al cliente de 24 horas después de que el cliente pregunte si un artículo está disponible.
Captación y conversión de leads
Seguimiento de propuesta comercial con WhatsApp API
El escenario envía al prospecto una plantilla de WhatsApp personalizada recordándole revisar la propuesta comercial.
Captación y conversión de leads
Lista interactiva de WhatsApp API: catálogo
Este escenario envía una lista interactiva con sendList durante la ventana de sesión de 24 horas.
Captación y conversión de leads
Invitación a asesoría con plantilla de WhatsApp API
El escenario envía al cliente una plantilla de WhatsApp personalizada invitándolo a una consulta pre-compra.
Captación y conversión de leads
Alerta de nuevo lead al gerente por WhatsApp API
El escenario envía al gerente de ventas una plantilla de WhatsApp personalizada cuando se captura un lead nuevo.
Captación y conversión de leads
Iniciar calificación de leads con WhatsApp API
Este caso de uso envía a un lead nuevo una plantilla de WhatsApp aprobada con saludo personalizado: el mensaje sustituye el nombre del lead y el contexto de producto o fuente, y el botón quick-reply «

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura