Se modificaron los precios basados en conversaciones. Consulta Precios para obtener información sobre cómo funciona nuestro nuevo modelo de precios basado en conversaciones.

Además, se modificó la visibilidad de metric_types a partir del 1 de julio de 2023. Consulta la tabla Estadísticas de conversaciones para obtener más detalles.

Mensajes de plantillas

Las plantillas de mensajes de WhatsApp son formatos de mensajes específicos que las empresas usan para enviar notificaciones o mensajes de atención al cliente a las personas que hayan aceptado recibirlos. Algunos de estos mensajes pueden ser recordatorios, información sobre envíos, resolución de problemas o actualizaciones de pago.

Para poder enviar una plantilla de mensaje, primero debes crear una. Si quieres obtener más información, consulta Crear plantillas de mensajes para una cuenta de WhatsApp Business. Si tu cuenta todavía no está verificada, puedes usar una de nuestras plantillas preaprobadas.

Actualmente, puedes enviar los siguientes tipos de plantillas:

Todas las llamadas a la API mencionadas en esta guía se deben autenticar con un token de acceso. Los desarrolladores pueden autenticar sus llamadas a la API con el token de acceso generado en Panel de apps > WhatsApp > Configuración de la API. Los socios de soluciones deben autenticarse con un token de acceso mediante el permiso whatsapp_business_messaging.

Frecuencia

Las plantillas de marketing recién creadas o sin pausar están sujetas a la frecuencia de la plantilla. Consulta Frecuencia de la plantilla.

Plantillas de mensajes basadas en texto

Para enviar una plantilla de mensajes basada en texto, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un objeto de mensaje con type=template. Luego, agrega un objeto template.

Ejemplo de solicitud:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "text-string"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "DATE"
            }
          }
        ]
      }
    ]
  }
}'

Una respuesta correcta incluye un objeto con un identificador que contiene un prefijo "wamid". Usa el identificador que figura después de "wamid" para hacer un seguimiento del estado de tu mensaje.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Plantillas de mensajes basadas en contenido multimedia

Para enviar una plantilla de mensajes basada en contenido multimedia, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un objeto de mensaje con type=template. Luego, agrega un objeto template. Admite almacenamiento de contenido multimedia en caché HTTP.

Usa el punto de conexión POST Número de teléfono de WhatsApp Business > Mensajes para enviar un mensaje de plantilla basado en contenido multimedia. Configura la propiedad type en template y usa la propiedad template para definir tu objeto de plantilla y su objeto multimedia.

Cuando defines el objeto multimedia, puedes subir el recurso multimedia a nuestros servidores y usar su identificador multimedia (con la propiedad id) o alojar el recurso en tu servidor y usar la URL (con la propiedad link). Si usas link, el recurso debe encontrarse en un servidor de acceso público. De lo contrario, el mensaje no se enviará.

Para reducir la probabilidad de errores y evitar solicitudes innecesarias a tu servidor público, te recomendamos que subas tus recursos multimedia y uses sus identificadores al enviar mensajes.

Los recursos multimedia también se pueden almacenar en caché. Consulta Almacenamiento de contenido multimedia en caché HTTP.

Ejemplo de solicitud:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "https://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT-STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      }
    ]
  }
}'

Una respuesta correcta incluye un objeto con un identificador que contiene un prefijo "wamid". Usa el identificador que figura después de "wamid" para hacer un seguimiento del estado de tu mensaje.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Plantillas de mensajes interactivas

Las plantillas de mensajes interactivas amplían el contenido que puedes enviar a los destinatarios más allá de los tipos de plantillas de mensajes estándar y plantillas de mensajes basadas en contenido multimedia, ya que permiten incluir botones interactivos mediante el objeto de componentes. Existen dos tipos de botones predefinidos:

  • Llamada a la acción: permite al cliente llamar a un número de teléfono y visitar un sitio web.
  • Respuesta rápida: permite al cliente enviar un mensaje de texto sencillo.

Estos botones pueden agregarse a mensajes de texto o mensajes multimedia. Una vez que las plantillas de mensajes interactivas se hayan creado y aprobado, podrás utilizarlas en mensajes de notificación y de atención al cliente.

Para enviar una plantilla de mensajes interactiva, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un mensaje de objeto con type=template. Luego agrega un objeto template con el button que hayas elegido.

Ejemplo de solicitud:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "http(s)://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT_STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "0",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "1",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      }
    ]
  }
}'

Una respuesta correcta incluye un objeto con un identificador que contiene un prefijo "wamid". Usa el identificador que figura después de "wamid" para hacer un seguimiento del estado de tu mensaje.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Plantillas de mensajes basadas en ubicaciones

Para enviar una plantilla que usa un encabezado de ubicación, tu solicitud debe incluir un objeto de encabezado de ubicación.

Sintaxis

{
  "type": "header",
  "parameters": [
    {
      "type": "location",
      "location": {
        "latitude": "<LATITUDE>",
        "longitude": "<LONGITUDE>",
        "name": "<NAME>",
        "address": "<ADDRESS>"
      }
    }
  ]
}

Propiedades

Marcador de posiciónDescripciónValor de ejemplo

<ADDRESS>

¡Dirección que aparecerá después del valor <NAME>, debajo del mapa genérico en la parte superior del mensaje.

1 Hacker Way, Menlo Park, CA 94025

<LATITUDE>

Latitud de la ubicación.

37.483307

<LONGITUDE>

Longitud de la ubicación.

122.148981

<NAME>

Texto que aparecerá inmediatamente debajo del mapa genérico, en la parte superior del mensaje.

Pablo Morales

Ejemplo de solicitud

El siguiente es un ejemplo de una solicitud para enviar una plantilla existente que utiliza los siguientes componentes:

  • un encabezado de ubicación
  • un cuerpo de texto con una variable
  • un pie de página
  • un botón de respuesta rápida
curl -L 'https://graph.facebook.com/v16.0/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "12245554792",
  "type": "template",
  "template": {
    "name": "order_delivery_update",
    "language": {
      "code": "en_US"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "location",
            "location": {
              "latitude": "37.483307",
              "longitude": "122.148981",
              "name": "Pablo Morales",
              "address": "1 Hacker Way, Menlo Park, CA 94025"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Pablo"
          },
          {
            "type": "text",
            "text": "566701"
          }
        ]
      }
    ]
  }
}'

Plantillas de autenticación

Al intentar enviar plantillas de autenticación heredadas (plantillas sin botón de contraseña de un solo uso), se devuelve el código de error 100 si los valores variables superan los 15 caracteres o contienen enlaces o emojis, o si el componente del cuerpo de la plantilla incluye un enlace. En su lugar, crea y usa una plantilla de autenticación que contenga un botón de contraseña de un solo uso.

Consulta Plantillas de autenticación y Enviar plantillas de autenticación.

Secuencia de entrega de mensajes múltiples

Cuando envías una serie de mensajes, no se garantiza que el orden en que se entregan los mensajes coincida con el orden de tus solicitudes de la API. Si debes asegurarte de que los mensajes se entreguen en una secuencia determinada, cuando envíes uno, confirma la recepción del estado delivered en un webhook de mensajes antes de enviar el siguiente mensaje de la secuencia.

Límites de mensajes de plantillas de marketing por usuario

A partir del 6 de febrero de 2024, los límites de mensajes de plantilla de marketing por usuario se aplican a los mensajes de plantilla enviados a un pequeño número de usuarios de WhatsApp en la India, pero se aplicarán a todos los usuarios de WhatsApp con un número de teléfono indio desde el 13 de febrero de 2024.

Estamos implementando nuevos enfoques, empezando por los consumidores de India, que crean experiencias de usuario de alta calidad y maximizan la interacción con mensajes de plantilla de marketing. Esto puede incluir la limitación de la cantidad de mensajes de plantilla de marketing que una persona recibe de cualquier negocio en un período de tiempo determinado, comenzando con un pequeño número de conversaciones que tienen menos probabilidades de ser leídas. Ten en cuenta que el límite se determina en función del número de mensajes de plantilla de marketing que esa persona ya ha recibido de cualquier negocio, y no está relacionado con tu negocio específicamente.

El límite solo se aplica a los mensajes de plantilla de marketing que normalmente abrirían una nueva conversación de marketing. Si ya existe conversación de marketing entre tú y un usuario de WhatsApp, los mensajes de plantilla de marketing enviados al usuario no se verán afectados.

Si un mensaje de plantilla de marketing no se entrega a un usuario determinado debido al límite, la API de la nube devolverá el código de error 131026 y la API de instalaciones locales devolverá el código de error 1026. Ten en cuenta, sin embargo, que estos códigos de error abarcan una amplia variedad de problemas que pueden hacer que no se entregue un mensaje y, por razones de privacidad, no revelaremos si el mensaje se entregó por dicho motivo. Consulta el documento Solución de problemas de la API de la nube y "¿Por qué mi índice de entregas no es del 100%?", de la API de instalaciones locales. Preguntas frecuentes para descripciones de motivos de no entrega y lo que puedes hacer para determinar la causa subyacente.

Si recibes uno de estos códigos de error y sospechas que se debe al límite, evita volver a enviar inmediatamente el mensaje de plantilla, ya que solo se devolverá otro error. En cambio, aumenta progresivamente el tiempo entre los intentos hasta que el mensaje se entregue, ya que el límite puede estar en vigor por diferentes períodos de tiempo.

Seguiremos perfeccionando nuestro enfoque y agradecemos que sigas siendo nuestro socio mientras seguimos invirtiendo en hacer de WhatsApp la mejor experiencia posible para tu negocio y tus clientes.

Solución de problemas

Si tienes problemas con la entrega de mensajes, consulta No se entregó el mensaje.