Creación por API Catálogos
Los templates con botón de catálogo son mensajes pre-aprobados por Meta que permiten a los negocios mostrar su catálogo de productos directamente dentro de WhatsApp.
¿Qué es?
Los templates con botón de catálogo son mensajes pre-aprobados por Meta que permiten a los negocios mostrar su catálogo de productos directamente dentro de WhatsApp.\
Limitaciones Importantes
Creación del Catálogo desde Administrador de Ventas
⚠️ Requisito Previo: El catálogo de productos debe ser creado y configurado desde el Administrador de Ventas de Meta (Meta Commerce Manager) antes de poder crear templates con botones de catálogo.
Referencia oficial: Meta Business Help - Catalog Templates
Nota: Los templates con botones de catálogo SÍ pueden ser creados directamente a través de la API del BSP una vez que el catálogo esté configurado.
Otras Limitaciones
- Un solo botón de catálogo por template: Cada template puede contener únicamente un botón de tipo catálogo en el componente BUTTONS.
- Catálogo asociado requerido: El WhatsApp Business Account (WABA) debe tener un catálogo de productos asociado y configurado en Meta Commerce Manager antes de crear el template.
- Estado del template: El template debe estar en estado
APPROVEDantes de poder ser utilizado para enviar mensajes.
- Combinación con otros botones: El botón de catálogo no puede combinarse con otros tipos de botones (URL, QUICK_REPLY, FLOW, etc.) en el mismo componente BUTTONS.
Combinaciones Válidas de Componentes
Los templates de catálogo pueden incluir las siguientes combinaciones de componentes:
1. Body + Button (Catálogo)
Combinación mínima válida con solo el cuerpo del mensaje y el botón de catálogo.
{
"name": "catalog_template",
"language": "es",
"components": [
{
"type": "BODY",
"text": "Explora nuestro catálogo de productos:",
"parameters": []
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
2. Body + Footer + Button (Catálogo)
Combinación completa con cuerpo, pie de página y botón de catálogo.
{
"name": "catalog_template_full",
"language": "es",
"components": [
{
"type": "BODY",
"text": "Descubre nuestra amplia selección de productos",
"parameters": []
},
{
"type": "FOOTER",
"text": "Disponible 24/7"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
3. Header + Body + Footer + Button (Catálogo)
Combinación con header de imagen, cuerpo, pie de página y botón de catálogo.
{
"name": "catalog_template_with_header",
"language": "es",
"components": [
{
"type": "HEADER",
"format": "IMAGE",
"example": {
"header_handle": ["https://example.com/image.jpg"]
}
},
{
"type": "BODY",
"text": "Bienvenido a nuestra tienda. Explora nuestros productos:",
"parameters": []
},
{
"type": "FOOTER",
"text": "Ofertas limitadas"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
Combinaciones NO Válidas
❌ Body + Button (Catálogo) + Button (URL): No se pueden mezclar botones de catálogo con otros tipos de botones.
❌ Solo Button (Catálogo): El template debe incluir al menos un componente BODY.
❌ Body + Button (Catálogo) + Button (QUICK_REPLY): Solo un botón de catálogo por template.
Estructura del Botón de Catálogo
Propiedades
type: Siempre debe ser"CATALOG"
text: Texto del botón (por defecto:"View catalog"o"Ver catálogo")
Ejemplo de Botón
{
"type": "CATALOG",
"text": "View catalog"
}
Creación del Template desde BSP
Los templates con botones de catálogo pueden ser creados directamente a través de la API del BSP. Solo es necesario que el catálogo de productos esté previamente configurado en Meta Commerce Manager.
Endpoint para Crear Template
POST /api/v1/whatsapp_business_accounts/{waba_id}/message_templates
Headers
Authorization: Bearer <USER_TOKEN>
Content-Type: application/json
Request Body
{
"name": "catalog_template",
"language": "es",
"category": "MARKETING",
"components": [
{
"type": "BODY",
"text": "Explora nuestro catálogo de productos:"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
Ejemplo Completo con Footer
{
"name": "catalog_template_full",
"language": "es",
"category": "MARKETING",
"components": [
{
"type": "BODY",
"text": "Descubre nuestra amplia selección de productos"
},
{
"type": "FOOTER",
"text": "Disponible 24/7"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
Ejemplo con BODY con Variables Dinámicas
Cuando el componente BODY incluye variables dinámicas (usando {{1}}, {{2}}, etc.), es necesario proporcionar un ejemplo que muestre cómo se verán los valores reemplazados:
{
"name": "catalog_template_personalized",
"language": "es",
"category": "MARKETING",
"components": [
{
"type": "BODY",
"text": "Hola {{1}}, tenemos {{2}} productos nuevos disponibles. Explora nuestro catálogo:",
"example": {
"body_text": [
[
"María",
"15"
]
]
}
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
Explicación del ejemplo:
- El texto del BODY contiene dos variables:
{{1}}(nombre del cliente) y{{2}}(cantidad de productos)
- El campo
example.body_textes un array de arrays donde: - El array externo puede contener múltiples ejemplos (generalmente uno)
- El array interno contiene los valores de ejemplo en el mismo orden que las variables (
{{1}},{{2}}, etc.)
- En este caso,
{{1}}será reemplazado por "María" y{{2}}por "15"
- El mensaje resultante será: "Hola María, tenemos 15 productos nuevos disponibles. Explora nuestro catálogo:"
Ejemplo con Múltiples Variables y Footer
{
"name": "catalog_template_advanced",
"language": "es",
"category": "MARKETING",
"components": [
{
"type": "BODY",
"text": "¡Hola {{1}}! Tu pedido #{{2}} está listo. Tenemos {{3}} productos similares en nuestro catálogo.",
"example": {
"body_text": [
[
"Juan Pérez",
"ORD-12345",
"12"
]
]
}
},
{
"type": "FOOTER",
"text": "Ofertas válidas hasta fin de mes"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "CATALOG",
"text": "View catalog"
}
]
}
]
}
Nota importante: El número de valores en el array interno del ejemplo debe coincidir exactamente con el número de variables ({{1}}, {{2}}, {{3}}, etc.) en el texto del BODY.
Response
{
"id": "template_id_123",
"status": "PENDING",
"category": "MARKETING"
}
Nota: El template quedará en estado PENDING hasta que Meta lo apruebe. Una vez aprobado, cambiará a estado APPROVED y podrá ser utilizado para enviar mensajes.
Consideraciones Adicionales
- Parámetros dinámicos: El componente BODY puede incluir parámetros dinámicos usando la sintaxis
{{1}},{{2}}, etc., pero el botón de catálogo no admite parámetros dinámicos.
- Idioma del template: El template debe estar creado en el mismo idioma que se especifica en el request (
language: "es").
- Validación: El sistema valida automáticamente que el template existe y está aprobado antes de enviar el mensaje.
- Manejo de errores: Si el template no existe o no está aprobado, el sistema retornará un error apropiado.
Referencias
- Documentación de WhatsApp Business API: Message Templates
Consideraciones Adicionales
- Parámetros dinámicos: El componente BODY puede incluir parámetros dinámicos usando la sintaxis
{{1}},{{2}}, etc., pero el botón de catálogo no admite parámetros dinámicos.
- Idioma del template: El template debe estar creado en el mismo idioma que se especifica en el request (
language: "es").
- Validación: El sistema valida automáticamente que el template existe y está aprobado antes de enviar el mensaje.
- Manejo de errores: Si el template no existe o no está aprobado, el sistema retornará un error apropiado.
Referencias
- Documentación de WhatsApp Business API: Message Templates