Los precios basados en conversaciones han cambiado. Consulta Precios para obtener información sobre el funcionamiento del nuevo modelo de precios basados en conversaciones.

Además, la visibilidad de metric_types ha cambiado el 1 de julio de 2023. Consulta la tabla de análisis de conversaciones para obtener más información.

Mensajes de plantilla

Las plantillas de mensajes de WhatsApp son formatos de mensajes específicos que usan las empresas para enviar notificaciones o mensajes relacionados con la atención al cliente a aquellas personas que hayan activado las notificaciones. Los mensajes pueden incluir recordatorios de citas, información sobre envíos, resoluciones de problemas o notificaciones sobre un pago.

Para poder enviar un mensaje de plantilla, tienes que crear una plantilla. Consulta Crear plantillas de mensajes para tu cuenta de WhatsApp Business para obtener más información. Si tu cuenta todavía no está verificada, puedes usar una de nuestras plantillas aprobadas previamente.

Actualmente puedes enviar los siguientes tipos de plantillas:

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

Frecuencia

Las plantillas de marketing recién creadas o reactivadas están sujetas a la frecuencia de las plantillas. Consulta Frecuencia de las plantillas.

Plantillas de mensajes basadas en texto

Para enviar una plantilla de mensaje basada en texto, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un objeto de mensaje con type=template. A continuación, añade 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 contiene un objeto con un identificador con el prefijo “wamid”. Utiliza el identificador que se muestra después de “wamid” para hacer un seguimiento del estado del 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 mensaje basada en contenido multimedia, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un objeto de mensaje con type=template. A continuación, añade un objeto template. Admite el almacenamiento en caché HTTP de contenido multimedia.

Usa el extremo Número de teléfono de WhatsApp Business > Mensajes de POST para enviar un mensaje de plantilla basado en contenido multimedia. Establece la propiedad type en template y usa la propiedad template para definir el objeto de plantilla y el objeto multimedia correspondiente.

Al definir el objeto multimedia, puedes subir el activo multimedia a nuestros servidores y usar el identificador de contenido multimedia correspondiente (mediante la propiedad id) o alojar el activo en tu servidor y usar la propiedad de la URL (mediante link). Si utilizas link, el activo debe estar en un servidor al que se pueda acceder públicamente; de lo contrario, el mensaje no se podrá enviar.

Para reducir la probabilidad de errores y evitar solicitudes innecesarias al servidor público, te recomendamos que subas los activos multimedia y utilices los identificadores correspondientes al enviar mensajes.

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

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 contiene un objeto con un identificador con el prefijo “wamid”. Utiliza el identificador que se muestra después de “wamid” para hacer un seguimiento del estado del 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 multimedia. Así, podrás incluir botones interactivos mediante el objeto de componentes. Hay dos tipos de botones predefinidos:

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

Estos botones se pueden adjuntar a mensajes de texto o multimedia. Una vez creadas y aprobadas las plantillas de mensajes interactivas, puedes usarlas en los mensajes de notificaciones, así como en los mensajes del servicio de atención al cliente.

Para enviar una plantilla de mensaje interactiva, haz una llamada POST a /PHONE_NUMBER_ID/messages y adjunta un objeto de mensaje con type=template. A continuación, añade un objeto template con el valor de button 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 contiene un objeto con un identificador con el prefijo “wamid”. Utiliza el identificador que se muestra después de “wamid” para hacer un seguimiento del estado del 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 use un encabezado de ubicación, la 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

A continuación, se muestra un ejemplo de solicitud para enviar una plantilla existente que usa 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 obsoletas (plantillas sin botones de contraseña de un solo uso), se devolverá el código de error 100 en caso de que los valores de las variables superen los 15 caracteres o contengan enlaces o emoticonos o el componente del cuerpo de la plantilla contenga un enlace. En su lugar, crea y usa una plantilla de autenticación que tenga 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 varios mensajes

Al enviar varios mensajes, no se garantiza que el orden de entrega coincida con el orden de las solicitudes a la API. Si necesitas asegurarte de que los mensajes se entregan en una secuencia determinada, 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 plantilla 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 número reducido de usuarios de WhatsApp de la India, pero se aplicarán a todos los usuarios de WhatsApp con un número de teléfono indio el 13 de febrero de 2024.

Estamos implementando nuevos enfoques, empezando por los consumidores de la India, que crean experiencias de usuario de alta calidad y maximizan la interacción con los mensajes de plantilla de marketing. Esto puede incluir la limitación del número de mensajes de plantilla de marketing que una persona recibe de cualquier empresa en un periodo determinado de tiempo, comenzando con un número reducido de conversaciones que tienen menos probabilidades de que se lean. 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 empresa y no está relacionado con tu empresa en concreto.

El límite solo se aplica a los mensajes de plantilla de marketing que normalmente abrirían una nueva conversación de marketing. Si una conversación de marketing ya está abierta entre tú y un usuario de WhatsApp, los mensajes de plantilla de marketing que se envíen 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 nube devolverá el código de error 131026 y la API local devolverá el código de error 1026. Sin embargo, debes tener en cuenta que estos códigos de error abarcan una amplia variedad de problemas que pueden tener como resultado que un mensaje no se entregue y, por motivos de privacidad, no revelaremos si de hecho el mensaje no se entregó debido al límite. En el documento Solución de problemas de la API de nube y la sección “¿Por qué no tengo una frecuencia de entrega del 100 %?” de Preguntas frecuentes de la API local, consulta las descripciones de los motivos por los que no se lleva a cabo la entrega y lo que se puede hacer para determinar la causa subyacente correspondiente.

Si recibes uno de estos códigos de error y sospechas que se debe al límite, evita de inmediato volver a enviar el mensaje de plantilla, ya que solo dará como resultado otra respuesta de error. En lugar de eso, vuelve a intentar aumentar los incrementos de tiempo más largos hasta que el mensaje se entregue, ya que el límite puede estar vigente durante diferentes periodos de tiempo.

Seguiremos mejorando nuestro enfoque y agradecemos tu colaboración mientras invertimos en hacer que WhatsApp sea la mejor experiencia posible para tu empresa y tus clientes.

Solución de problemas

Si tienes problemas con la entrega de mensajes, consulta Mensaje no entregado.