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

Difusión de noticias de la empresa con WhatsApp API

El escenario envía una plantilla de WhatsApp personalizada cuando el negocio publica noticias de la empresa o del servicio.

Descripción del caso de uso

El escenario envía una plantilla de WhatsApp personalizada cuando el negocio publica noticias de la empresa o del servicio. El mensaje incluye el nombre del contacto, el titular de la noticia y un resumen breve de lo que cambió. Un botón URL estático abre la página completa del anuncio con detalles.

Ejemplo de plantilla

Hola, {{1}}! Actualización de la empresa: {{2}}. {{3}} Toca el botón de abajo para leer el anuncio completo en nuestro sitio web.

Leer anuncio
  • {{1}}
    nombre del cliente
  • {{2}}
    titular o tema de la noticia de la empresa
  • {{3}}
    resumen de lo que cambió o el detalle clave
  • “Leer anuncio”
    botón — fijo en la plantilla de Meta
WhatsApp Business API for company news broadcast

Cuándo usarlo

Usa este escenario cuando el negocio necesita que toda la base opt-in escuche noticias de la empresa o del servicio — una sucursal nueva, horario extendido, rebrand, alianza o actualización de servicio — y el copy es un anuncio, no una línea de descuento ni un producto que sale al mercado. Encaja en redes retail que comparten novedades de ubicación, plataformas SaaS que difunden cambios de política o alianzas, y agencias que corren olas de noticias de empresa para marcas cliente en WhatsApp.

Mantener informada la base sin chat abierto
Una plantilla MARKETING aprobada alcanza contactos opt-in fuera de la ventana de 24 horas, así la difusión de noticias no depende de una conversación existente.
Copy de anuncio, no empuje de venta
Tres variables del cuerpo llevan el nombre del contacto, titular de noticia y resumen del cambio, así el mensaje se lee como noticia de empresa y no como línea promocional o lanzamiento de producto.
Distinto de avisos de servicio por cuenta
La difusión apunta a todo el segmento opt-in con noticias a nivel empresa, no al cambio de plan o cuenta de un solo cliente como una notificación de servicio utility.
Menos trabajo manual de listas
CRM o automatización carga el segmento el día de publicación y la plantilla sale con ese trigger, así operaciones no retipea el anuncio para cada contacto.
Alcance del anuncio medible
Los resultados de entrega vuelven al sistema emisor y los taps del botón caen en la URL del anuncio, así los reportes de alcance amarran al mismo envío de difusión.

Flujo de trabajo

  1. Disparador

    Marketing u operaciones programa una difusión de noticias de empresa y define el segmento de contactos.

    evento · disparado

  2. Capturar evento

    El sistema obtiene el teléfono de cada destinatario y los campos de personalización de la noticia.

    phone: "+…"

  3. Construir y enviar

    Se construye una plantilla de noticias personalizada con tres variables en el cuerpo y un botón URL estático.

    POST /sendTemplate

  4. Entregado

    Cada contacto recibe el mensaje de noticias de empresa en WhatsApp.

    entregado

  5. Estado registrado

    Entrega y toques en el botón se registran para reportes de alcance del anuncio.

    status: "read"

WhatsApp Business API for company news broadcast

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

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_TOPIC="___"         # {{2}} topic or subject
TEST_DETAILS="___"         # {{3}} change details

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_TOPIC=$TEST_TOPIC" \
            "TEST_DETAILS=$TEST_DETAILS"; 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}} topic or subject → ${TEST_TOPIC}
# {{3}} change details → ${TEST_DETAILS}
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_TOPIC}" },
        { "type": "text", "text": "${TEST_DETAILS}" }
      ]
    }

  ]
}
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

Campañas de marketing
Recomendaciones de productos con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada cuando un motor de recomendación o merchandiser prepara una selección curada de varios artículos para un contacto.
Campañas de marketing
Recordatorio de fin de oferta con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada como segundo contacto de una promoción que ya está activa y está por cerrar.
Campañas de marketing
Ofertas personalizadas por segmento con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada cuando el CRM divide una base con opt-in en segmentos de audiencia y asigna términos de oferta adaptados a cada uno.
Campañas de marketing
Enviar contenido (guías, artículos) con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada cuando el negocio publica contenido educativo o entretenido para contactos opt-in.
Campañas de marketing
Oferta post-compra (upsell) con WhatsApp API
El escenario envía una plantilla de marketing por WhatsApp tras una compra, cuando una oferta de seguimiento es relevante: un producto complementario.
Campañas de marketing
Recuperar clientes inactivos con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada a un cliente existente que compró o usó el servicio antes pero lleva meses inactivo.
Campañas de marketing
Campañas de temporada con WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada cuando arranca una campaña estacional ligada al calendario.
Campañas de marketing
Invitación a eventos con plantilla de WhatsApp API
El escenario envía una plantilla de marketing de WhatsApp personalizada a contactos con opt-in cuando se anuncia un evento público próximo.

Desarrolla para WhatsApp en horas
sin complicaciones de infraestructura