> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shimli.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Templates de WhatsApp

> Plantillas de WhatsApp en Shimli: crea mensajes aprobados por Meta y escríbelos con IA para iniciar operaciones masivas.

Los **templates** son mensajes preaprobados por Meta que Shimli usa para iniciar operaciones masivas por WhatsApp fuera de la ventana de 24 horas: campañas, seguimiento, cobranza o activación comercial.

## Cuándo necesitas un template

* Para **iniciar una conversación** con un cliente que no te ha escrito recientemente.
* Para **campañas masivas** de marketing.
* Para **continuar una conversación** que pasó las 24 horas.

<Callout type="info">
  Dentro de la ventana de 24 horas (después de que el cliente te escribe), puedes responder libremente sin template. El template solo es necesario para iniciar o reabrir conversaciones. Desde el **1 de octubre de 2026** esas respuestas libres pasan a cobrarse, con 1.000 gratis por número cada mes: ve a [Cambios de precios de WhatsApp](/whatsapp/pricing-changes).
</Callout>

## Categorías de Meta

| Categoría | Uso | Costo |
| - | - | - |
| **Marketing** | Promociones, cupones, invitaciones, ofertas | Más elevado |
| **Utility** | Confirmaciones, recordatorios, notificaciones transaccionales | Más económico |
| **Authentication** | Códigos de verificación de un solo uso (OTP) para login o transacciones | Tarifa específica de autenticación |

<Callout type="warning">
  Si creas un template como **utility** pero Meta detecta que es **marketing**, puedes recibir un **strike**. A cierta cantidad de strikes, tu número puede ser bloqueado. Usa la categoría correcta. Las plantillas de **authentication** tienen reglas estructurales estrictas y no admiten contenido promocional.
</Callout>

## Crear un template con IA

No necesitas redactarla tú. En el constructor de plantillas tienes la opción de **generar con IA**: le describes en tus palabras para qué la quieres y Shimli la escribe completa.

<Steps>
  <Step title="Ve a CRM → Templates → Crear template">
    Elige la opción de generar con inteligencia artificial.
  </Step>

  <Step title="Describe qué necesitas">
    Escríbelo en lenguaje normal. Por ejemplo: *"Se me pasó la ventana de 24 horas y quiero retomar la conversación con un cliente que dejó una consulta sin responder."*

    También puedes adjuntar imágenes o documentos para que la plantilla los incluya.
  </Step>

  <Step title="Genera">
    La IA redacta el mensaje, propone los botones y arma los ejemplos de variables que Meta exige.
  </Step>

  <Step title="Ajusta lo que no te guste">
    Puedes editar cualquier parte del texto generado antes de enviarla. Si una frase no suena a tu marca — por ejemplo un *"lamentamos la demora"* que hace ver que fallaste — la cambias ahí mismo.
  </Step>

  <Step title="Envía a aprobación">
    Desde ahí sigue el mismo camino que una plantilla escrita a mano: Meta la revisa y te avisa.
  </Step>
</Steps>

<Callout type="info">
  Generar la plantilla con IA **no tiene costo adicional**: está incluido en Shimli. Lo que sí se cobra es el envío de la plantilla, y eso lo cobra Meta directamente.
</Callout>

## Crear un template manualmente

<Steps>
  <Step title="Selecciona la categoría">
    Ve a **CRM → Templates → Crear template**. Elige: **Marketing**, **Utility** o **Authentication**.

    * **Marketing o Utility**: Puedes redactar texto libre, encabezados multimedia (imagen, video, documento) y botones interactivos.
    * **Authentication**: Se activa el flujo de contraseñas de un solo uso (OTP). El texto del cuerpo queda bloqueado por Meta y se habilita la configuración de métodos de entrega de código y expiración.
  </Step>

  <Step title="Nombre, idioma e instancia">
    * Ponle un nombre descriptivo (ej: "Promo Navidad 2026").
    * Selecciona el idioma en el que escribirás el mensaje.
    * Selecciona la instancia (número de WhatsApp) por la que se enviará.
  </Step>

  <Step title="Tipo de contenido">
    Elige si el template lleva:

    * Solo texto
    * Imagen
    * Video
    * Documento

    La imagen/video/documento que subes aquí es para la aprobación de Meta. Al enviar la campaña, debes volver a seleccionar el archivo.
  </Step>

  <Step title="Escribe el mensaje">
    * Usa formato permitido por Meta: **negrita**, *cursiva*, ~~tachado~~.
    * Agrega **variables** con `{{1}}`, `{{2}}`, etc. Cada variable genera un campo de texto donde le dices a Meta un ejemplo de qué irá ahí.
    * Ejemplo: "Hola `{{1}}`, tienes un cupón de descuento de `{{2}}`" → variable 1 = nombre, variable 2 = monto.
  </Step>

  <Step title="Agrega botones (opcional)">
    * **Botones personalizados**: texto de acción.
    * **Botón con enlace**: URL externa.
    * **Botón copiar**: copia un cupón o código al portapapeles.
    * **Botón de teléfono**: número para llamar.
  </Step>

  <Step title="Envía para aprobación">
    Meta revisa el template (tarda 2-24 horas). Recibirás notificación cuando se apruebe o rechace.
  </Step>
</Steps>

## Plantillas de autenticación (OTP)

Las plantillas de la categoría **Authentication** sirven para entregar contraseñas de un solo uso (OTP), por ejemplo, durante el inicio de sesión o la confirmación de una operación.

### Crear y usar una plantilla OTP

<Steps>
  <Step title="Crea una plantilla de autenticación">
    Ve a **CRM → Templates → Crear template** y selecciona la categoría **Authentication**. El cuerpo del mensaje viene definido por Meta; no es necesario redactarlo.
  </Step>

  <Step title="Configura idioma y seguridad">
    Elige el idioma y el tiempo de expiración del código, entre **1 y 90 minutos**. Si quieres, activa la recomendación para que el usuario no comparta el código.
  </Step>

  <Step title="Elige cómo recibirá el código el usuario">
    Selecciona **Copiar código**, **Autocompletar con un toque** o **Autocompletar sin toque**. Las dos opciones de autocompletado requieren configurar tu aplicación Android; la opción sin toque también requiere aceptar los términos correspondientes de WhatsApp.
  </Step>

  <Step title="Envía la plantilla a aprobación">
    Cuando Meta la apruebe, podrás seleccionarla desde **Inbox** para enviarla al contacto. En el envío, introduce el OTP vigente generado por el sistema que autentica al usuario.
  </Step>
</Steps>

<Callout type="info">
  Shimli permite configurar y enviar la plantilla; el código debe generarlo y validarlo el sistema de autenticación de tu servicio. Usa un código vigente y respeta su tiempo de expiración.
</Callout>

### Reglas y restricciones de Meta

A diferencia de Marketing y Utility, las plantillas de autenticación tienen restricciones impuestas directamente por Meta:

1. **Texto del cuerpo no modificable**: No puedes redactar texto libre ni agregar promociones. Meta aplica automáticamente la fórmula estándar en el idioma seleccionado:
   `{{1}} es tu código de verificación.` (en inglés: `<VERIFICATION_CODE> is your verification code.`).
2. **Sin contenido multimedia ni emojis**: No se permiten encabezados de imagen, video, documento ni ubicación, ni emojis dentro del cuerpo del mensaje.
3. **Sin URLs libres**: El cuerpo no admite enlaces arbitrarios; la interacción ocurre a través del botón OTP configurado.
4. **Recomendación de seguridad opcional**: Puedes activar la casilla *"Añadir recomendación de seguridad"* (*Add security recommendation*), que incluye automáticamente la leyenda de protección:
   *"Por tu seguridad, no compartas este código."* (*For your security, do not share this code.*).
5. **Tiempo de expiración del código**: Puedes definir la caducidad del código entre **1 y 90 minutos**. Una vez vencido el tiempo, el botón de autocompletado se desactiva en el dispositivo del usuario.
6. **Período de validez del mensaje (*Message validity period*)**: Ventana recomendada dentro de la cual Meta debe entregar el mensaje antes de descartarlo. Si el mensaje no logra entregarse dentro de este lapso (por ejemplo, si el teléfono está fuera de línea), Meta no lo factura y el usuario no recibe un código obsoleto.

### Métodos de entrega de código

Al configurar una plantilla OTP en Shimli Admin, seleccionas cómo interactuará el cliente con el código en WhatsApp:

| Método de entrega | Identificador | Funcionamiento | Requisitos de configuración |
| - | - | - | - |
| **Copiar código** | `copy_code` | Muestra un botón interactivo *"Copiar código"*. El usuario toca el botón para copiar el OTP al portapapeles y pegarlo en su navegador o app. | Ninguno. Es la opción más rápida y universal. |
| **Autocompletar con un toque** | `one_tap` | Al tocar el botón en WhatsApp, el código se transmite directamente a tu app Android y se rellena el campo. Si el dispositivo no lo soporta, se degrada a copiar código. | Requiere **App setup** (nombre de paquete y hash de firma). |
| **Autocompletar sin toque** | `zero_tap` | La experiencia más fluida: WhatsApp entrega el código a la app en segundo plano sin que el usuario deba tocar ningún botón. Si no es posible, se degrada a un toque o copiar código. | Requiere **App setup** y aceptar los Términos de Servicio de WhatsApp Business para zero-tap. |

#### Configuración de la aplicación (App setup)

Para los métodos **Autocompletar con un toque** (`one_tap`) y **Autocompletar sin toque** (`zero_tap`), debes registrar los datos técnicos de tu aplicación Android (puedes agregar hasta 5 aplicaciones):

* **Nombre del paquete (*Package name*)**: Identificador único de tu app Android (ejemplo: `com.ejemplo.miapp`, hasta 224 caracteres).
* **Hash de firma de la app (*App signature hash*)**: Cadena de exactamente **11 caracteres** generada por el certificado de firma de Android (utilizado por la API SMS Retriever de Google).
* **Aceptación de términos para zero-tap**: Al seleccionar zero-tap, debes marcar la casilla confirmando que el uso de autenticación sin toque se rige por los Términos de Servicio de WhatsApp Business y que tu aplicación gestiona el consentimiento del usuario.

### Inyección de variables en el envío

En plantillas de autenticación, la variable `{{1}}` representa el código OTP generado por tu sistema:

* En tiempo de envío, Shimli inyecta automáticamente el valor de `{{1}}` tanto en el texto del cuerpo (`{{1}} es tu código...`) como en el parámetro dinámico del botón OTP (`sub_type: "url"` con `index: 0` en la WhatsApp Cloud API).
* Esto garantiza que el código mostrado y el código transferido a través de copiar código o autocompletado sean idénticos sin necesidad de mapeos adicionales.

## Variables

Las variables permiten personalizar el mensaje para cada contacto:

* Se definen con `{{1}}`, `{{2}}`, `{{3}}`, etc.
* Al crear una campaña, mapeas cada variable a una columna de tu base de datos.
* En el inbox, el agente humano puede rellenar las variables manualmente al enviar el template.

<Callout type="info">
  Meta requiere que proporciones un **ejemplo** del contenido de cada variable durante la creación. Esto es para que Meta sepa qué tipo de dato se enviará.
</Callout>

## Botones interactivos

Los botones facilitan la interacción del cliente:

| Tipo de botón | Función |
| - | - |
| Personalizado | Texto de acción (ej: "Más información") |
| Enlace | Abre una URL externa |
| Copiar | Copia un código/cupón al portapapeles |
| Teléfono | Inicia una llamada al número especificado |

## Aprobación de Meta

Meta evalúa cada template para asegurar que:

* No sea spam.
* No contenga contenido vulgar u ofensivo.
* Cumpla con las políticas de WhatsApp Business.

El proceso toma entre **2 y 24 horas**. Una vez aprobado, el template queda disponible para uso en campañas y en el inbox.

<Callout type="warning">
  Si Meta rechaza el template, Shimli te muestra el motivo. Puedes corregir y reenviar. La IA de Shimli también puede ayudarte a identificar y corregir el problema.
</Callout>

## Pedir el número con una plantilla

Puedes crear una plantilla cuyo botón le pida al cliente **compartir su número de teléfono**.

Sirve para el escenario que llega con los [nombres de usuario](/whatsapp/usernames): el cliente te escribe desde su @username y no ves su número. Desde el inbox puedes pedírselo, pero eso **solo funciona dentro de la ventana de 24 horas**. Si la conversación ya se enfrió, necesitas una plantilla.

| | Desde el inbox | Con una plantilla |
| - | - | - |
| **Aprobación de Meta** | No necesita | Sí, como cualquier plantilla |
| **Cuándo puedes usarlo** | Solo dentro de las 24 horas | También fuera de la ventana |
| **Costo** | Sin costo de plantilla | Costo de envío de plantilla |

Se crea igual que cualquier otra plantilla: eliges la categoría (**marketing** o **utility**), escribes el mensaje y agregas el botón de solicitud de contacto. El texto del botón lo define WhatsApp — no lo escribes tú.

Cuando el cliente lo toca, decide si comparte su número. Si acepta, el dato entra solo a su ficha de contacto.

<Callout type="info">
  Ten al menos una de estas plantillas lista antes de que empiecen a llegar conversaciones sin número. Recuerda que aprobar una plantilla toma entre 2 y 24 horas.
</Callout>

## Editar una plantilla ya aprobada

Sí puedes editarla — no necesitas crear una nueva. Pero Meta pone límites de frecuencia:

| Estado de la plantilla | Cuántas veces puedes editarla |
| - | - |
| **Aprobada** | 1 vez cada 24 horas, y máximo 10 veces en 30 días |
| **Rechazada o pausada** | Sin límite |

Cada edición manda la plantilla de vuelta a revisión de Meta, así que mientras la revisan **no puedes usarla**. Y ojo con dos cosas:

* **No puedes cambiar la categoría** de una plantilla aprobada (de marketing a utility, por ejemplo). Para eso sí necesitas una plantilla nueva.
* Al editar el contenido **se reemplaza completo**, no se edita por partes.

<Callout type="warning">
  Si tienes una campaña programada, no edites la plantilla poco antes de enviarla: si Meta todavía está revisando el cambio, el envío falla.
</Callout>

<AccordionGroup>
  <Accordion title="¿Cuánto cuesta cada template enviado?">
    El costo depende de la categoría (marketing es más caro) y del país del destinatario. Meta publica las tarifas por mercado. Consulta [Cambios de precios de WhatsApp](/whatsapp/pricing-changes) para más contexto.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.