{"id":160,"date":"2026-10-25T12:59:22","date_gmt":"2026-10-25T12:59:22","guid":{"rendered":"https:\/\/vectalk.com.br\/blog\/codigo-verificacion-otp-whatsapp\/"},"modified":"2026-10-25T13:10:10","modified_gmt":"2026-10-25T13:10:10","slug":"codigo-verificacion-otp-whatsapp","status":"publish","type":"post","link":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/","title":{"rendered":"C\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp con plantilla de autenticaci\u00f3n"},"content":{"rendered":"\n<p><em>Actualizado el 25\/10\/2026<\/em><\/p>\n\n\n\n<p>Para enviar un c\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp, Meta exige una <strong>plantilla de autenticaci\u00f3n<\/strong>: texto predefinido (del tipo &#8220;123456 es tu c\u00f3digo de verificaci\u00f3n.&#8221;), un bot\u00f3n de OTP (copiar c\u00f3digo, autocompletar con un toque o zero-tap) y nada de URL, multimedia ni emojis. Creas la plantilla una vez, Meta la aprueba y, en cada inicio de sesi\u00f3n, tu aplicaci\u00f3n env\u00eda el c\u00f3digo como par\u00e1metro. Para destinatarios en Brasil, cada mensaje de autenticaci\u00f3n entregado cuesta R$ 0,0350 en la tabla en reales vigente desde el 1 de octubre de 2026, con descuentos por volumen; los dem\u00e1s pa\u00edses tienen sus propias tarifas en las tablas de Meta.<\/p>\n\n\n\n<p>Esta gu\u00eda muestra los tres tipos de bot\u00f3n, los payloads de creaci\u00f3n y env\u00edo, c\u00f3mo configurar vencimiento y TTL, y las pr\u00e1cticas de seguridad que recomienda Meta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 tiene que ser una plantilla de autenticaci\u00f3n<\/h2>\n\n\n\n<p>Meta es expl\u00edcita: solo las plantillas de autenticaci\u00f3n pueden enviar contrase\u00f1as de un solo uso para verificar identidad. Las de marketing y utilidad no pueden. Si Meta detecta una plantilla de otra categor\u00eda usada para esto, avisa y cambia su estado a <code>REJECTED<\/code> el primer d\u00eda del mes siguiente, sin opci\u00f3n de revisi\u00f3n. Las reglas completas de categor\u00eda est\u00e1n en <a href=\"https:\/\/vectalk.com.br\/blog\/es\/categorias-plantillas-whatsapp\/\">c\u00f3mo Meta clasifica tu plantilla<\/a>.<\/p>\n\n\n\n<p>Para clasificarse como autenticaci\u00f3n, la plantilla debe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>usar las plantillas de autenticaci\u00f3n de la Cloud API, con texto fijo definido por Meta;<\/li>\n\n\n<li>incluir un bot\u00f3n de OTP;<\/li>\n\n\n<li>no tener URL, multimedia ni emojis, ni en el contenido ni en los par\u00e1metros;<\/li>\n\n\n<li>usar par\u00e1metros de hasta 15 caracteres.<\/li>\n\n<\/ul>\n\n\n\n<p>Casos de uso aceptados: creaci\u00f3n de cuenta, recuperaci\u00f3n o integridad del acceso y confirmaci\u00f3n de pedidos o transacciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El texto es fijo: qu\u00e9 puedes configurar<\/h2>\n\n\n\n<p>El cuerpo no lo escribes t\u00fa. Meta usa un texto predefinido, traducido al idioma de la plantilla, y ofrece dos complementos opcionales:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Opci\u00f3n<\/th><th>Campo<\/th><th>Efecto<\/th><\/tr><\/thead><tbody><tr><td>Aviso de seguridad<\/td><td><code>add_security_recommendation: true<\/code> en el cuerpo<\/td><td>Agrega una frase que pide no compartir el c\u00f3digo<\/td><\/tr><tr><td>Vencimiento del c\u00f3digo<\/td><td><code>code_expiration_minutes<\/code> en el pie (1 a 90)<\/td><td>Agrega en el pie el aviso de que el c\u00f3digo vence en N minutos<\/td><\/tr><tr><td>Tiempo de vida del mensaje<\/td><td><code>message_send_ttl_seconds<\/code> (30 a 900)<\/td><td>Si no se entrega en ese plazo, el mensaje se descarta<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>El TTL predeterminado de las plantillas de autenticaci\u00f3n es de 10 minutos (las creadas antes del 23 de octubre de 2024 ten\u00edan 30 d\u00edas). Meta recomienda un TTL igual o menor que el vencimiento del c\u00f3digo: no tiene sentido entregar un c\u00f3digo ya vencido. Como Meta solo cobra los mensajes entregados, los descartados por TTL no se facturan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Los tres tipos de bot\u00f3n<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Tipo<\/th><th>C\u00f3mo funciona<\/th><th>Plataforma<\/th><th>\u00bfRequiere integraci\u00f3n en la app?<\/th><\/tr><\/thead><tbody><tr><td>Copiar c\u00f3digo (<code>COPY_CODE<\/code>)<\/td><td>El usuario toca el bot\u00f3n, el c\u00f3digo va al portapapeles y lo pega en tu app<\/td><td>Todas<\/td><td>No<\/td><\/tr><tr><td>Un toque (<code>ONE_TAP<\/code>)<\/td><td>El bot\u00f3n abre tu app con el c\u00f3digo ya completado<\/td><td>Android<\/td><td>S\u00ed: handshake y una activity para recibir el c\u00f3digo<\/td><\/tr><tr><td>Zero-tap (<code>ZERO_TAP<\/code>)<\/td><td>Sin bot\u00f3n: tu app recibe el c\u00f3digo por broadcast y el usuario no sale de la pantalla<\/td><td>Android<\/td><td>S\u00ed: handshake, broadcast receiver y aceptaci\u00f3n de t\u00e9rminos<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>En iOS 26 o superior, el propio teclado sugiere el c\u00f3digo recibido en WhatsApp, sin integraci\u00f3n. En versiones anteriores de iOS, el usuario ve el bot\u00f3n de copiar c\u00f3digo.<\/p>\n\n\n\n<p>Un detalle importante: un toque y zero-tap tienen <strong>respaldo<\/strong>. Si no hubo handshake, si la app no coincide o si el destinatario no usa Android, WhatsApp muestra el bot\u00f3n de copiar c\u00f3digo (en zero-tap, intenta primero el de un toque). As\u00ed, una plantilla de un toque o zero-tap funciona como copiar c\u00f3digo en el peor de los casos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crear la plantilla con bot\u00f3n de copiar c\u00f3digo<\/h2>\n\n\n\n<p>Con la Cloud API directa, la plantilla se crea en el endpoint <code>message_templates<\/code> de la cuenta de WhatsApp Business:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST \"https:\/\/graph.facebook.com\/v26.0\/TU_WABA_ID\/message_templates\" \\\n  -H \"Authorization: Bearer TOKEN_DE_META\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"name\": \"codigo_verificacion\",\n    \"language\": \"es\",\n    \"category\": \"AUTHENTICATION\",\n    \"message_send_ttl_seconds\": 300,\n    \"components\": [\n      { \"type\": \"BODY\", \"add_security_recommendation\": true },\n      { \"type\": \"FOOTER\", \"code_expiration_minutes\": 5 },\n      {\n        \"type\": \"BUTTONS\",\n        \"buttons\": [\n          { \"type\": \"OTP\", \"otp_type\": \"COPY_CODE\", \"text\": \"Copiar c\u00f3digo\" }\n        ]\n      }\n    ]\n  }'<\/code><\/pre>\n\n\n\n<p>F\u00edjate en que el cuerpo no tiene campo <code>text<\/code>: lo completa Meta. La etiqueta del bot\u00f3n (<code>text<\/code>) es opcional y tiene hasta 25 caracteres; sin ella, Meta usa una etiqueta predeterminada traducida. Despu\u00e9s de crearla, el bot\u00f3n <code>OTP<\/code> aparece como tipo <code>URL<\/code> al consultar la plantilla, y eso es lo esperado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Variante de un toque (Android)<\/h3>\n\n\n\n<p>Para un toque, cambia el bot\u00f3n e indica las apps autorizadas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"type\": \"OTP\",\n  \"otp_type\": \"ONE_TAP\",\n  \"text\": \"Copiar c\u00f3digo\",\n  \"autofill_text\": \"Autocompletar\",\n  \"supported_apps\": [\n    { \"package_name\": \"com.ejemplo.app\", \"signature_hash\": \"K8a\/AINcGX7\" }\n  ]\n}<\/code><\/pre>\n\n\n\n<p>Reglas del bot\u00f3n de un toque, seg\u00fan la <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/autofill-button-authentication-templates\" target=\"_blank\" rel=\"noreferrer noopener\">documentaci\u00f3n de autocompletar<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>supported_apps<\/code> acepta hasta 5 pares de paquete y hash;<\/li>\n\n\n<li><code>package_name<\/code> tiene hasta 224 caracteres, con al menos dos segmentos separados por punto;<\/li>\n\n\n<li><code>signature_hash<\/code> tiene exactamente 11 caracteres;<\/li>\n\n\n<li><code>autofill_text<\/code> y <code>text<\/code> tienen hasta 25 caracteres;<\/li>\n\n\n<li>la app debe iniciar un <strong>handshake<\/strong> con WhatsApp antes del env\u00edo y tener una activity con la acci\u00f3n <code>com.whatsapp.otp.OTP_RETRIEVED<\/code>;<\/li>\n\n\n<li>el handshake vale 10 minutos, o el tiempo de <code>code_expiration_minutes<\/code>, si est\u00e1 definido.<\/li>\n\n<\/ul>\n\n\n\n<p>Meta recomienda el SDK oficial para el handshake. El m\u00e9todo basado en <code>PendingIntent<\/code> se descontin\u00faa el 15 de octubre de 2026.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Variante zero-tap (Android)<\/h3>\n\n\n\n<p>Zero-tap usa <code>\"otp_type\": \"ZERO_TAP\"<\/code>, los mismos <code>supported_apps<\/code> y el campo <code>zero_tap_terms_accepted: true<\/code>. Sin esa aceptaci\u00f3n, la plantilla no se crea. La app necesita un broadcast receiver para <code>com.whatsapp.otp.OTP_RETRIEVED<\/code>. Incluso con zero-tap, el usuario ve en WhatsApp el mensaje con el texto fijo.<\/p>\n\n\n\n<p>Para depurar un toque y zero-tap en Android, WhatsApp env\u00eda se\u00f1ales de error por broadcast con la acci\u00f3n <code>com.whatsapp.OTP_ERROR<\/code>, con claves como <code>otp_request_expired<\/code> y <code>missing_handshake_or_disorder<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enviar el c\u00f3digo<\/h2>\n\n\n\n<p>El env\u00edo es una plantilla com\u00fan, con una particularidad: <strong>el c\u00f3digo aparece dos veces<\/strong>, en el par\u00e1metro del cuerpo y en el del bot\u00f3n. El c\u00f3digo tiene un m\u00e1ximo de 15 caracteres.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"recipient_type\": \"individual\",\n  \"to\": \"5215512345678\",\n  \"type\": \"template\",\n  \"template\": {\n    \"name\": \"codigo_verificacion\",\n    \"language\": { \"code\": \"es\" },\n    \"components\": [\n      {\n        \"type\": \"body\",\n        \"parameters\": [{ \"type\": \"text\", \"text\": \"482913\" }]\n      },\n      {\n        \"type\": \"button\",\n        \"sub_type\": \"url\",\n        \"index\": \"0\",\n        \"parameters\": [{ \"type\": \"text\", \"text\": \"482913\" }]\n      }\n    ]\n  }\n}<\/code><\/pre>\n\n\n\n<p>Una funci\u00f3n en Node.js que genera el c\u00f3digo, guarda su hash y lo env\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-js\">import crypto from 'node:crypto';\n\nexport async function enviarOtp(telefono, db) {\n  const codigo = String(crypto.randomInt(0, 1_000_000)).padStart(6, '0');\n  const hash = crypto.createHash('sha256').update(codigo).digest('hex');\n  await db.guardarOtp(telefono, hash, Date.now() + 5 * 60 * 1000); \/\/ 5 minutos\n\n  const cuerpo = {\n    messaging_product: 'whatsapp',\n    recipient_type: 'individual',\n    to: telefono,\n    type: 'template',\n    template: {\n      name: 'codigo_verificacion',\n      language: { code: 'es' },\n      components: [\n        { type: 'body', parameters: [{ type: 'text', text: codigo }] },\n        { type: 'button', sub_type: 'url', index: '0', parameters: [{ type: 'text', text: codigo }] },\n      ],\n    },\n  };\n\n  const r = await fetch(process.env.WHATSAPP_URL, {\n    method: 'POST',\n    headers: { Authorization: `Bearer ${process.env.WHATSAPP_TOKEN}`, 'Content-Type': 'application\/json' },\n    body: JSON.stringify(cuerpo),\n  });\n  return r.json(); \/\/ guarda el wamid para cruzarlo con el webhook de estado\n}<\/code><\/pre>\n\n\n\n<p>Sigue el estado por el webhook: si el <code>delivered<\/code> no llega dentro del TTL, considera el mensaje descartado y ofrece otro canal. Los estados posibles est\u00e1n en <a href=\"https:\/\/vectalk.com.br\/blog\/es\/estado-mensaje-webhook-whatsapp\/\">estado de mensajes por webhook<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Seguridad: lo que recomienda Meta<\/h2>\n\n\n\n<p>La p\u00e1gina de <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/authentication-best-practices\" target=\"_blank\" rel=\"noreferrer noopener\">buenas pr\u00e1cticas de autenticaci\u00f3n<\/a> incluye cuidados que conviene tomar en serio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>N\u00fameros reciclados.<\/strong> WhatsApp solo verifica la titularidad del n\u00famero en el registro, y un n\u00famero puede cambiar de due\u00f1o. En la Cloud API, guarda el hash de identidad que recibes tras el primer OTP validado e incl\u00fayelo en los env\u00edos siguientes: si el n\u00famero ahora es de otra persona, la entrega falla en lugar de llegar al nuevo titular.<\/li>\n\n\n<li><strong>Desaf\u00edo extra en flujos sensibles.<\/strong> Para recuperar cuentas, combina el c\u00f3digo de WhatsApp con otra verificaci\u00f3n.<\/li>\n\n\n<li><strong>Reenv\u00edo bloqueado.<\/strong> WhatsApp desactiva el reenv\u00edo de mensajes de autenticaci\u00f3n, lo que reduce el phishing.<\/li>\n\n\n<li><strong>Elecci\u00f3n de canal.<\/strong> Pide consentimiento y ofrece opciones (WhatsApp, correo, SMS). Confirma qu\u00e9 n\u00famero usa la persona en WhatsApp, que puede ser distinto del de SMS.<\/li>\n\n\n<li><strong>WhatsApp instalado.<\/strong> En Android, verifica los paquetes <code>com.whatsapp<\/code> y <code>com.whatsapp.w4b<\/code>; en iOS, si se puede abrir el esquema <code>whatsapp:\/\/otp<\/code>.<\/li>\n\n\n<li><strong>Una cuenta por empresa.<\/strong> Cada empresa necesita su propia cuenta, cuenta de mensajer\u00eda y n\u00famero. Compartirlos entre empresas infringe la pol\u00edtica.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Cu\u00e1nto cuesta cada c\u00f3digo<\/h2>\n\n\n\n<p>Meta cobra la autenticaci\u00f3n por mensaje entregado y la tarifa depende del pa\u00eds del destinatario. Para destinatarios en Brasil, la tabla en reales vigente desde el 1 de octubre de 2026 tiene descuentos progresivos por volumen mensual, sumado en todas las cuentas del portafolio:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Mensajes de autenticaci\u00f3n por mes (Brasil)<\/th><th>Precio por mensaje (BRL)<\/th><\/tr><\/thead><tbody><tr><td>Hasta 500.000<\/td><td>R$ 0,0350<\/td><\/tr><tr><td>500.001 a 3.000.000<\/td><td>R$ 0,0333<\/td><\/tr><tr><td>3.000.001 a 5.250.000<\/td><td>R$ 0,0315<\/td><\/tr><tr><td>5.250.001 a 10.000.000<\/td><td>R$ 0,0298<\/td><\/tr><tr><td>10.000.001 a 20.000.000<\/td><td>R$ 0,0280<\/td><\/tr><tr><td>M\u00e1s de 20.000.000<\/td><td>R$ 0,0263<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Los niveles se reinician cada mes. La tarifa de autenticaci\u00f3n internacional, que se cobra en algunos mercados, no se aplica a Brasil. Los mensajes enviados dentro de una ventana de punto de entrada gratuito, abierta por anuncios que hacen clic a WhatsApp, no se cobran. Para simular vol\u00famenes, consulta <a href=\"https:\/\/vectalk.com.br\/blog\/es\/costo-campana-whatsapp\/\">cu\u00e1nto cuesta una campa\u00f1a de WhatsApp<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo hacerlo con Vectalk<\/h2>\n\n\n\n<p>En Vectalk, la plantilla de autenticaci\u00f3n se crea en <code>POST \/api\/templates<\/code> con el mismo cuerpo de Meta, usando un token de instancia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST https:\/\/apis.vectalk.com.br\/api\/templates \\\n  -H \"Authorization: Bearer TU_TOKEN_DE_INSTANCIA\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"name\": \"codigo_verificacion\",\n    \"language\": \"es\",\n    \"category\": \"AUTHENTICATION\",\n    \"components\": [\n      { \"type\": \"BODY\", \"add_security_recommendation\": true },\n      { \"type\": \"FOOTER\", \"code_expiration_minutes\": 5 },\n      { \"type\": \"BUTTONS\", \"buttons\": [ { \"type\": \"OTP\", \"otp_type\": \"COPY_CODE\", \"text\": \"Copiar c\u00f3digo\" } ] }\n    ]\n  }'<\/code><\/pre>\n\n\n\n<p>El env\u00edo usa <code>POST https:\/\/apis.vectalk.com.br\/api\/messages<\/code> con el payload de la secci\u00f3n anterior. En el c\u00f3digo Node.js de arriba, basta con apuntar <code>WHATSAPP_URL<\/code> a ese endpoint y usar el token de Vectalk. Consulta la <a href=\"https:\/\/docs.vectalk.com.br\/api-reference\/templates\/create\">documentaci\u00f3n de plantillas<\/a> y crea tu cuenta en <a href=\"https:\/\/apps.vectalk.com.br\/register\">apps.vectalk.com.br\/register<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preguntas frecuentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPuedo escribir mi propio texto para el c\u00f3digo de verificaci\u00f3n?<\/h3>\n\n\n\n<p>No. El texto de la plantilla de autenticaci\u00f3n lo define Meta. Solo eliges el idioma, si incluyes el aviso de seguridad, el vencimiento en minutos y las etiquetas de los botones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfEl c\u00f3digo puede tener letras?<\/h3>\n\n\n\n<p>S\u00ed, Meta habla de c\u00f3digos generalmente alfanum\u00e9ricos. El l\u00edmite es de 15 caracteres por par\u00e1metro, y el mismo valor va en el cuerpo y en el bot\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfEl bot\u00f3n de un toque funciona en iPhone?<\/h3>\n\n\n\n<p>No. Un toque y zero-tap son exclusivos de Android. En iPhone, el usuario ve el bot\u00f3n de copiar c\u00f3digo; en iOS 26 o superior, el teclado tambi\u00e9n sugiere el c\u00f3digo autom\u00e1ticamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfNecesito una plantilla distinta para cada idioma?<\/h3>\n\n\n\n<p>S\u00ed. Cada idioma es una plantilla. Para crearlas en bloque, el endpoint <code>upsert_message_templates<\/code> de Meta acepta una lista de idiomas a la vez.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfUna plantilla de autenticaci\u00f3n puede ser rechazada?<\/h3>\n\n\n\n<p>S\u00ed, por formato o par\u00e1metros inv\u00e1lidos. No se le aplica la regla de duplicados, porque el texto es est\u00e1ndar. Consulta <a href=\"https:\/\/vectalk.com.br\/blog\/es\/plantilla-rechazada-whatsapp\/\">plantilla rechazada en WhatsApp<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Fuentes oficiales consultadas el 25\/10\/2026:<\/strong> <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/authentication-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Plantillas de autenticaci\u00f3n<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/copy-code-button-authentication-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Bot\u00f3n de copiar c\u00f3digo<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/autofill-button-authentication-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Bot\u00f3n de un toque<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/zero-tap-authentication-templates\" target=\"_blank\" rel=\"noreferrer noopener\">Zero-tap<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/error-signals\" target=\"_blank\" rel=\"noreferrer noopener\">Se\u00f1ales de error<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/authentication-templates\/authentication-best-practices\" target=\"_blank\" rel=\"noreferrer noopener\">Buenas pr\u00e1cticas de autenticaci\u00f3n<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/time-to-live\" target=\"_blank\" rel=\"noreferrer noopener\">Time-to-live<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/templates\/template-categorization\" target=\"_blank\" rel=\"noreferrer noopener\">Categorizaci\u00f3n de plantillas<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/pricing\" target=\"_blank\" rel=\"noreferrer noopener\">Precios<\/a> y la hoja &#8220;BRL volume tiers&#8221; (vigente desde el 1\/10\/2026).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gu\u00eda de la plantilla de autenticaci\u00f3n de la API de WhatsApp para enviar OTP: tipos de bot\u00f3n, creaci\u00f3n, env\u00edo, vencimiento, seguridad y costo por c\u00f3digo.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[12],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-uncategorized-es"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk<\/title>\n<meta name=\"description\" content=\"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk\" \/>\n<meta property=\"og:description\" content=\"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Vectalk\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-25T12:59:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-25T13:10:10+00:00\" \/>\n<meta name=\"author\" content=\"wanderleyfcunha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"wanderleyfcunha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/\"},\"author\":{\"name\":\"wanderleyfcunha\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"headline\":\"C\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp con plantilla de autenticaci\u00f3n\",\"datePublished\":\"2026-10-25T12:59:22+00:00\",\"dateModified\":\"2026-10-25T13:10:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/\"},\"wordCount\":1637,\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/\",\"name\":\"C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-25T12:59:22+00:00\",\"dateModified\":\"2026-10-25T13:10:10+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"description\":\"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/es\\\/codigo-verificacion-otp-whatsapp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp con plantilla de autenticaci\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\",\"name\":\"Blog Vectalk\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\",\"name\":\"wanderleyfcunha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"caption\":\"wanderleyfcunha\"},\"sameAs\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk","description":"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/","og_locale":"en_US","og_type":"article","og_title":"C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk","og_description":"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.","og_url":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/","og_site_name":"Blog Vectalk","article_published_time":"2026-10-25T12:59:22+00:00","article_modified_time":"2026-10-25T13:10:10+00:00","author":"wanderleyfcunha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"wanderleyfcunha","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/#article","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/"},"author":{"name":"wanderleyfcunha","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"headline":"C\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp con plantilla de autenticaci\u00f3n","datePublished":"2026-10-25T12:59:22+00:00","dateModified":"2026-10-25T13:10:10+00:00","mainEntityOfPage":{"@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/"},"wordCount":1637,"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/","url":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/","name":"C\u00f3digo de verificaci\u00f3n por WhatsApp (OTP) | Vectalk","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/#website"},"datePublished":"2026-10-25T12:59:22+00:00","dateModified":"2026-10-25T13:10:10+00:00","author":{"@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"description":"C\u00f3digo de verificaci\u00f3n por WhatsApp con plantilla de autenticaci\u00f3n: botones copiar c\u00f3digo, un toque y zero-tap, reglas, payloads y precio.","breadcrumb":{"@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vectalk.com.br\/blog\/es\/codigo-verificacion-otp-whatsapp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vectalk.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"C\u00f3digo de verificaci\u00f3n (OTP) por WhatsApp con plantilla de autenticaci\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/vectalk.com.br\/blog\/#website","url":"https:\/\/vectalk.com.br\/blog\/","name":"Blog Vectalk","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vectalk.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b","name":"wanderleyfcunha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","caption":"wanderleyfcunha"},"sameAs":["https:\/\/vectalk.com.br\/blog"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/comments?post=160"}],"version-history":[{"count":2,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":401,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/160\/revisions\/401"}],"wp:attachment":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/categories?post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/tags?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}