Plantillas de Mensaje

Cree Plantillas de WhatsApp Listas para la Revisión de Meta

Cree plantillas de Marketing, Utilidad y Autenticación con vista previa en vivo en el teléfono, un ejemplo para cada variable y comprobaciones de errores comunes antes de enviarlas. Meta revisa cada plantilla; una vez aprobada, envíela desde campañas, la bandeja de entrada, flujos de chatbot o la API REST.

✦ Prueba gratis de 14 días · Tu propio número de WhatsApp Business · Meta factura los mensajes directamente

Todos los Tipos de Plantilla, en 16 Idiomas

Elija una categoría (Marketing, Utilidad o Autenticación) y un tipo: estándar, oferta por tiempo limitado (un título de oferta y una cuenta regresiva opcional hasta el fin de la oferta), autenticación (un mensaje de contraseña de un solo uso con botón de copiar código y vencimiento opcional) o carrusel (2 a 10 tarjetas, cada una con su imagen o video, texto opcional de hasta 160 caracteres y hasta 2 botones). Añada un encabezado (ninguno, texto, imagen, video, documento o ubicación), un cuerpo de hasta 1.024 caracteres con variables numeradas {{1}} o con nombre {{name}} y un pie de página. Meta conserva el estilo de las variables una vez creada la plantilla. Escríbala en cualquiera de 16 idiomas, desde inglés, hindi, árabe, portugués (BR), español e indonesio hasta tamil, bengalí y más.

  • Tipos estándar, oferta por tiempo limitado, autenticación y carrusel
  • Encabezados de texto, imagen, video, documento o ubicación
  • Vista previa en vivo en el teléfono mientras escribe
Editor de plantillas de WhatsApp con vista previa en vivo en el teléfono

Ayuda Antes y Después de la Revisión de Meta

Empiece desde la galería de ejemplos o con una plantilla en blanco. El editor pide un valor de ejemplo para cada variable, señala un cuerpo que empieza o termina con una variable y avisa cuando una plantilla de Marketing no tiene una línea de baja como "Responda BAJA para darse de baja". Si Meta rechaza una plantilla, verá el motivo explicado en palabras sencillas y podrá corregirla y reenviarla. Si Meta cambia la categoría de una plantilla, un aviso se lo indica, porque la categoría define lo que cobra Meta. Cualquier miembro del equipo puede dar ese aviso por visto para todos. Si Meta pausa una plantilla porque los clientes la bloquearon o denunciaron, puede pedirle a Meta que la reactive desde la página de la plantilla.

  • Galería de ejemplos para Utilidad, Marketing y Autenticación
  • Motivos de rechazo explicados y luego reenvío
  • Métricas de Meta por plantilla: enviados, entregados, leídos y clics en botones (plan Business)
Métricas de plantilla con recuentos de enviados, entregados, leídos y clics
Botones y Herramientas

Hasta 10 Botones y Todo lo Que Los Rodea

Dé a los clientes una forma de actuar y vea lo que hicieron.

  • Botones de Respuesta y Enlace

    Respuestas rápidas, botones de URL con enlace estático o dinámico, botón de número de teléfono y botones de llamada de voz o video de WhatsApp.

  • Botones de Comercio y Cupón

    Copiar código para cupones (hasta 15 caracteres, el límite de WhatsApp) y contraseñas de un solo uso, botones de catálogo y multiproducto que abren su catálogo de productos de Meta y solicitud de datos de contacto.

  • Botones de Formulario de WhatsApp

    Adjunte a un botón Flow un Formulario de WhatsApp (Meta Flow) sincronizado desde Meta. Las respuestas llegan como campos estructurados en la bandeja de entrada, la API y los webhooks.

  • Comprobaciones Antes de Enviar

    Ejemplos obligatorios para cada variable, ninguna variable al inicio o al final del cuerpo y aviso de baja en plantillas de Marketing.

  • Métricas por Plantilla

    Vea cuántos mensajes se enviaron, entregaron y leyeron, y qué botones tocaron los clientes, en cada plantilla. Las cifras de Meta para cada plantilla están en el plan Business.

  • Panel Enviar vía API

    Cada plantilla muestra exactamente qué parámetros necesita y una solicitud que puede copiar. El webhook template.status_updated le avisa cuando Meta la aprueba, rechaza o pausa.

Categorías

Plantillas de Marketing vs. Utilidad vs. Autenticación

Meta fija el precio por categoría y lo factura directamente a su propia cuenta de WhatsApp Business. StartMessaging nunca cobra por mensaje.

Comparar Marketing Utilidad Autenticación
Úsela para Promociones, ofertas, anuncios, reactivación Actualizaciones sobre algo que inició el cliente: pedidos, reservas, pagos, alertas de cuenta Contraseñas de un solo uso y códigos de inicio de sesión
Facturado por Meta a su WABA Cada mensaje entregado Cada mensaje entregado, incluso dentro de una ventana de 24 horas abierta (desde el 1 de octubre de 2026) Cada mensaje entregado
Tipos de plantilla habituales Estándar, oferta por tiempo limitado, carrusel Estándar Autenticación (copiar código, vencimiento opcional)
Quién escribe el cuerpo Usted Usted Meta (texto fijo del código, aviso de seguridad opcional)
Línea de baja El editor avisa si falta No se comprueba No se comprueba
Enviar vía API

Compruebe que una plantilla está aprobada y luego envíela

Las plantillas se crean en el panel y son de solo lectura en la API: enumérelas con GET /api/v1/templates y envíe las aprobadas con POST /api/v1/messages.

# 1. Check that the template is approved
curl "https://waba-api.startmessaging.com/api/v1/templates?status=APPROVED&name=order_confirmation&language=en_US" \
  -H "Authorization: Bearer sm_live_your_api_key"

# 2. Send it (body: "Hi {{1}}, your order {{2}} is confirmed.")
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1042-confirmed" \
  -d '{
    "to": "+919812345678",
    "type": "template",
    "template": {
      "name": "order_confirmation",
      "language": "en_US",
      "parameters": [
        { "text": "Asha" },
        { "text": "#1042" }
      ]
    },
    "clientReference": "order-1042"
  }'
const BASE = 'https://waba-api.startmessaging.com/api/v1';
const headers = {
  'Authorization': 'Bearer ' + process.env.SM_API_KEY, // sm_live_your_api_key
  'Content-Type': 'application/json',
};

// 1. Check that the template is approved (needs the templates:read scope)
const list = await fetch(
  `${BASE}/templates?status=APPROVED&name=order_confirmation&language=en_US`,
  { headers },
);
const { data: templates } = await list.json();
if (templates.items.length === 0) throw new Error('order_confirmation is not approved yet');

// 2. Send it (needs the messages:send scope)
const res = await fetch(`${BASE}/messages`, {
  method: 'POST',
  headers: { ...headers, 'Idempotency-Key': 'order-1042-confirmed' },
  body: JSON.stringify({
    to: '+919812345678',
    type: 'template',
    template: {
      name: 'order_confirmation',
      language: 'en_US',
      parameters: [{ text: 'Asha' }, { text: '#1042' }],
    },
    clientReference: 'order-1042',
  }),
});

const { data } = await res.json();
console.log(data.id, data.status);
import os, requests

BASE = 'https://waba-api.startmessaging.com/api/v1'
HEADERS = {'Authorization': f"Bearer {os.environ['SM_API_KEY']}"}  # sm_live_your_api_key

# 1. Check that the template is approved
templates = requests.get(
    f'{BASE}/templates',
    headers=HEADERS,
    params={'status': 'APPROVED', 'name': 'order_confirmation', 'language': 'en_US'},
).json()['data']
if not templates['items']:
    raise RuntimeError('order_confirmation is not approved yet')

# 2. Send it
res = requests.post(
    f'{BASE}/messages',
    headers={**HEADERS, 'Idempotency-Key': 'order-1042-confirmed'},
    json={
        'to': '+919812345678',
        'type': 'template',
        'template': {
            'name': 'order_confirmation',
            'language': 'en_US',
            'parameters': [{'text': 'Asha'}, {'text': '#1042'}],
        },
        'clientReference': 'order-1042',
    },
)

data = res.json()['data']
print(data['id'], data['status'])
<?php
$base = 'https://waba-api.startmessaging.com/api/v1';
$auth = 'Authorization: Bearer ' . getenv('SM_API_KEY'); // sm_live_your_api_key

// 1. Check that the template is approved
$ch = curl_init($base . '/templates?status=APPROVED&name=order_confirmation&language=en_US');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [$auth]]);
$templates = json_decode(curl_exec($ch), true)['data'];
if (count($templates['items']) === 0) {
    exit('order_confirmation is not approved yet');
}

// 2. Send it
$body = json_encode([
    'to' => '+919812345678',
    'type' => 'template',
    'template' => [
        'name' => 'order_confirmation',
        'language' => 'en_US',
        'parameters' => [['text' => 'Asha'], ['text' => '#1042']],
    ],
    'clientReference' => 'order-1042',
]);

$ch = curl_init($base . '/messages');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        $auth,
        'Content-Type: application/json',
        'Idempotency-Key: order-1042-confirmed',
    ],
    CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status'];
# A carousel template: body "Hi {{1}}, picks for you", each card with text "{{1}}"
# and a link button whose URL ends in a variable. Send every card, in order,
# each with its image or video.
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: festive-picks-919812345678" \
  -d '{
    "to": "+919812345678",
    "type": "template",
    "template": {
      "name": "festive_picks",
      "language": "en",
      "parameters": [{ "text": "Asha" }],
      "carouselCards": [
        {
          "headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
          "parameters": [{ "text": "₹1,299" }],
          "buttonParameters": [{ "index": 0, "subType": "url", "text": "kurta-blue" }]
        },
        {
          "headerMediaUrl": "https://cdn.example.com/products/kurta-red.jpg",
          "parameters": [{ "text": "₹1,499" }],
          "buttonParameters": [{ "index": 0, "subType": "url", "text": "kurta-red" }]
        }
      ]
    }
  }'
Preguntas Frecuentes

Plantillas de WhatsApp — Preguntas Frecuentes

¿Cuánto tarda Meta en revisar una plantilla?

Meta revisa cada plantilla y fija el tiempo de revisión; StartMessaging no aprueba plantillas. La plantilla queda Pendiente hasta que Meta decide. Suscríbase al webhook template.status_updated, o revise la página Plantillas, para saber en cuanto cambie.

¿Qué pasa si Meta rechaza mi plantilla?

La página de la plantilla muestra el motivo de Meta, explicado en palabras sencillas. Corrija lo que lo causó y guarde para reenviar la plantilla a Meta, o duplíquela y empiece de nuevo.

¿Quién paga los mensajes de plantilla?

Meta factura cada plantilla entregada, según su categoría, directamente a su propia cuenta de WhatsApp Business (WABA). Desde el 1 de octubre de 2026 esto incluye las plantillas de utilidad enviadas dentro de una ventana de 24 horas abierta. Las respuestas de atención en formato libre son gratuitas hasta una cuota mensual por número y después se cobran. StartMessaging cobra una suscripción fija y nunca añade una tarifa por mensaje.

¿Por qué Meta cambió la categoría de mi plantilla?

Meta puede mover una plantilla aprobada entre Utilidad y Marketing cuando su contenido parece promocional, lo que cambia el costo de cada mensaje. StartMessaging muestra un aviso en la página Plantillas cuando esto ocurre o está programado, y la API siempre devuelve la categoría actual de Meta. Cualquier miembro del equipo puede dar el aviso por visto, lo que lo oculta para todos hasta el próximo cambio.

¿Puedo crear plantillas mediante la API?

No. Las plantillas se crean y envían en el panel, donde se comprueban los ejemplos y los archivos antes de llegar a Meta. La API lista las plantillas (GET /api/v1/templates, alcance templates:read) y envía las aprobadas con POST /api/v1/messages, carruseles y ofertas por tiempo limitado incluidos: un carrusel lleva template.carouselCards, una entrada por tarjeta en orden, cada una con su imagen o video en cada envío; una oferta por tiempo limitado con cuenta regresiva lleva template.offerExpiresAt, la hora de fin de la oferta. Las plantillas con encabezado de ubicación aún no se pueden enviar por la API.

¿En qué idiomas puedo crear plantillas?

16: inglés (EE. UU.), inglés (Reino Unido), hindi, árabe, portugués (BR), español, indonesio, malayo, tamil, telugu, canarés, malayalam, maratí, bengalí, guyaratí y panyabí. Un nombre de plantilla existe una vez por idioma, así que al enviarla por la API indica el nombre y el código exacto del idioma juntos.

¿Puedo cambiar una plantilla entre variables numeradas y con nombre?

No en la misma plantilla. Meta conserva el estilo de variables de una plantilla — numeradas {{1}} o con nombre {{first_name}} — una vez creada. Para cambiarlo, duplique la plantilla y escriba la copia en el otro estilo; la original sigue funcionando mientras Meta revisa la copia. Si Meta registró una plantilla sin sus variables, no se puede enviar hasta que la corrija o la duplique.

¿Qué pasa cuando Meta pausa una plantilla?

Meta pausa una plantilla cuando los clientes la bloquean o denuncian. Aparece como Pausada, las campañas que la usan también se pausan y continúan solas cuando Meta libera la plantilla, salvo que su calidad siga baja. También puede pedirle a Meta que la reactive desde la página de la plantilla; aparece como Aprobada cuando Meta lo confirma. Una plantilla que Meta desactiva tras pausas repetidas no vuelve.

WhatsApp API

Cree Su Primera Plantilla de WhatsApp

Conecte su propia cuenta de WhatsApp Business, empiece con un ejemplo y envíelo a Meta durante su prueba gratuita de 14 días.