Saltar al contenido

Plantillas paso a paso

Esta guía explica cómo estructurar una plantilla de WhatsApp usando la API BSP, desde los componentes básicos hasta botones y variables.

Estructura de una plantilla

Una plantilla se compone de hasta un HEADER, un BODY (obligatorio), un FOOTER y un BUTTONS:

ComponenteObligatorioMáximo
HEADERNo1
BODY1
FOOTERNo1
BUTTONSNo1 (hasta 10 botones)

Categorías

CategoríaUso
MARKETINGPromociones, ofertas, anuncios
UTILITYConfirmaciones de pedido, recibos, notificaciones
AUTHENTICATIONCódigos OTP, verificación
Los templates AUTHENTICATION solo pueden enviar OTP, y no permiten URLs, media ni emojis. Sus parámetros están limitados a 15 caracteres.

Ejemplo básico: texto con variable

{
  "name": "welcome_message",
  "language": "es",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "¡Hola {{1}}! Bienvenido a Chattigo.",
      "example": {
        "body_text": [["Juan"]]
      }
    }
  ]
}
Toda variable ({{1}}, {{name}}) requiere el campo example con valores de muestra. Sin él, Meta rechaza la plantilla.

Formato de parámetros

FormatoSintaxisEjemplo
positional (default){{1}}, {{2}}"example": {"body_text": [["val1", "val2"]]}
named{{first_name}}"example": {"body_text_named_params": [{"param_name": "first_name", "example": "Pablo"}]}

Ejemplo completo: header + body + footer + botones

{
  "name": "order_status",
  "language": "es",
  "category": "UTILITY",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Tu pedido {{1}}",
      "example": { "header_text": ["#12345"] }
    },
    {
      "type": "BODY",
      "text": "Tu pedido fue enviado y llegará el {{1}}.",
      "example": { "body_text": [["viernes 20"]]
      }
    },
    { "type": "FOOTER", "text": "Gracias por comprar en Chattigo Store." },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "text": "Ver seguimiento",
          "url": "https://store.example.com/track/{{1}}",
          "example": ["12345"]
        }
      ]
    }
  ]
}

Tipos de botón

TipoMáximoNotas
QUICK_REPLY10Máximo 25 caracteres de texto
URL2Máximo 2000 caracteres de URL
PHONE_NUMBER1Máximo 20 caracteres de teléfono
COPY_CODE1Requiere example con el código
VOICE_CALL1
OTP1Solo AUTHENTICATION, con otp_type
MPM1Multi-producto, con catálogo
SPM1Producto individual
FLOW1WhatsApp Flows
CATALOG1Catálogo de productos
REQUEST_CONTACT_INFO1Solicita el número del usuario, sin text ni example
Los botones QUICK_REPLY deben agruparse juntos, no intercalados con otros tipos. Por ejemplo, [URL, PHONE, QR, QR] es válido; [QR, URL, QR] no.

Límites de texto

ComponenteMáximo
HEADER TEXT60 caracteres
BODY1024 caracteres
FOOTER60 caracteres
Nombre de plantilla512 caracteres (minúsculas + guion bajo)

Checklist antes de crear

  1. La categoría coincide con el contenido del mensaje.
  2. El código de idioma es válido (es, en_US, pt_BR…).
  3. El nombre usa minúsculas, alfanumérico y guiones bajos.
  4. El BODY está presente y no excede 1024 caracteres.
  5. Cada variable tiene su campo example poblado.
  6. Los botones URL con variables tienen example poblado.
  7. COPY_CODE tiene example con el código.
  8. Header de media: el handler ya fue subido (example.header_handle).
  9. No hay QUICK_REPLY mezclado con otros tipos en el mismo grupo.