Skip

00/Negocio

Setup WhatsApp Cloud API en Costa Rica: guía completa paso a paso 2026

Cómo implementar WhatsApp Cloud API oficial de Meta en Costa Rica: Business Manager, verificación, plantillas, webhook con Next.js + Vercel, costos USD 0.0085 por mensaje y errores comunes.

Fecha
22 de mayo de 2026
Tiempo de lectura
10 min de lectura
Autor
Por Jafeth Jiménez

WhatsApp Cloud API es el endpoint oficial de Meta para enviar mensajes automáticos a usuarios de WhatsApp. No es la app móvil de WhatsApp Business — es una API HTTP que tu servidor llama por código. En Costa Rica, el setup desde cero toma 3–7 días hábiles, cuesta USD 0.0085 por mensaje plantilla y reemplaza a los scrapers ilegales (WhatsApp Web automation, baileys, whatsapp-web.js) que terminan con tu número bloqueado. Esta guía es lo que aplicamos en cada cliente que pasa por Sirius para integrar WhatsApp: clínicas, restaurantes, ecommerce, fintech.

💡 TL;DR: Crea Business Manager, verifica empresa con cédula jurídica, agrega número dedicado, aprueba plantillas UTILITY, monta webhook en Next.js + Vercel. Costo: USD 0.0085/mensaje en CR. Tiempo: 3–7 días. No uses scrapers — Meta bloquea números y viola los TOS.

Por qué Cloud API y no scrapers ni WhatsApp Web

Antes de Cloud API, había dos opciones populares para "automatizar WhatsApp": WhatsApp Web scraping con librerías como whatsapp-web.js o baileys, y servicios grises tipo ChatAPI o Wati en sus inicios. Ambas son hoy una mala idea:

Enfoque Riesgo Costo real
Scraper de WhatsApp Web Bloqueo de número en semanas, viola los TOS de Meta USD 0 + tu negocio
API gris (no oficial) Sin SLA, pueden cerrar de un día a otro USD 50–200/mes
WhatsApp Cloud API Oficial de Meta, soportado, escalable USD 0.0085/msg
BSP (Twilio, 360dialog) Oficial vía intermediario, soporte humano USD 0.0085–0.013

Los scrapers funcionan hasta que dejan de funcionar: Meta detecta patrones automatizados y bloquea el número. Hemos visto clientes perder el número de toda la operación porque la agencia anterior montó un scraper barato — recuperarlo es casi imposible. Cloud API es gratis de configurar, oficial y con SLA de Meta. El único costo es USD 0.0085 por mensaje plantilla UTILITY en Costa Rica.

Prerequisitos antes de empezar

Antes de tocar el Business Manager, ten listos: (1) cédula jurídica de tu empresa vigente (descargas la certificación digital del Registro Nacional en 5 minutos), (2) un número de teléfono dedicado que NO esté en WhatsApp regular ni en la app de WhatsApp Business — sirve un Kolbi prepago aparte (~USD 2) o VoIP de Twilio/Vonage, (3) email corporativo (no Gmail personal) para crear Business Manager, (4) acceso a un dominio HTTPS para el webhook (Next.js + Vercel te da HTTPS automático con dominio custom). Sin estos 4, no arranques.

📊 Si vas a integrar WhatsApp como parte de un proyecto más grande, usa el cotizador interactivo — 4 preguntas, 30 segundos, rango USD para el alcance completo.

Cloud API directo vs Twilio vs 360dialog: cuándo cada uno

Hay tres formas oficiales de usar WhatsApp Cloud API:

Provider Costo por msg (CR) Setup Soporte Cuándo usarlo
Cloud API directo USD 0.0085 (UTILITY) Gratis Email Meta 80% de los proyectos: tienes equipo técnico, quieres mínimo costo
Twilio USD 0.005 + tier Gratis Humano 24/7 Ya usas Twilio para SMS o necesitas SLA empresarial
360dialog USD 0.0085 + setup USD 50 + USD 35/mes Humano CET Multi-país en Europa, panel de envíos visual

Recomendación pragmática: arranca con Cloud API directo. Si en 6 meses necesitas más control, soporte humano o features avanzadas (envíos programados desde panel, A/B testing), migrar a Twilio o 360dialog toma 2–3 días. Empezar con BSP cuando no lo necesitas es pagar overhead por nada.

Estructura de mensajes: sesión vs plantilla (la ventana de 24 h)

Este es el concepto más crítico de WhatsApp Cloud API y donde el 70% de los desarrolladores se equivocan:

Mensaje de sesión (Service Conversation): cuando un usuario te escribe primero, se abre una ventana de 24 horas en la que puedes responderle con cualquier tipo de mensaje (texto libre, imágenes, audio, documentos) sin que sea plantilla. Esto es gratis dentro de la ventana — perfecto para bots conversacionales o atención al cliente.

Mensaje de plantilla (Template Message): cuando TÚ inicias la conversación o respondes después de las 24 horas, debes usar una plantilla pre-aprobada por Meta. Aquí es donde paga (USD 0.0085 UTILITY en CR). Las plantillas tienen variables y se categorizan:

  • UTILITY: recordatorios, confirmaciones, OTPs, actualizaciones de estado. USD 0.0085.
  • MARKETING: promociones, ofertas, lanzamientos. USD 0.0114.
  • AUTHENTICATION: códigos 2FA exclusivamente. USD 0.0085.

Si tu app es 100% reactiva (solo responde cuando el usuario escribe), nunca usas plantillas y todo es gratis. Si tu app envía notificaciones programadas (citas, alertas, recordatorios), vives en mundo de plantillas.

Plantillas pre-aprobadas: 3 ejemplos reales

Estas son plantillas reales que aprobamos para clientes. Cópialas como punto de partida y ajusta a tu caso.

Plantilla 1 — Cita confirmada (UTILITY)

Categoría: UTILITY · Idioma: Spanish (Costa Rica) Variables: {{1}} nombre cliente, {{2}} servicio, {{3}} fecha y hora, {{4}} ubicación

Hola {{1}}, tu reserva para {{2}} está confirmada ✅

Fecha: {{3}}
Lugar: {{4}}

Si necesitas cancelar o reprogramar, escríbenos a este mismo chat.

Se aprueba en minutos. Funciona para clínicas, restaurantes, salones de belleza, talleres. Aprende más en nuestra guía de sistema de citas WhatsApp para clínicas en Costa Rica.

Plantilla 2 — Recordatorio temporal (UTILITY)

Categoría: UTILITY · Variables: {{1}} nombre, {{2}} servicio, {{3}} tiempo restante, {{4}} ubicación

{{1}}, te recordamos tu {{2}} en {{3}}. 📍 {{4}}. Cualquier imprevisto, escríbenos aquí.

Variante con botones: agrega [Confirmar] [Reprogramar] [Cancelar] y tu webhook recibe el callback con el botón presionado.

Plantilla 3 — Código de verificación (AUTHENTICATION)

Categoría: AUTHENTICATION · Variables: {{1}} código

{{1}} es tu código de verificación. No lo compartas con nadie. Expira en 10 minutos.

La categoría AUTHENTICATION fue creada por Meta para reemplazar SMS-OTP. Costo similar (USD 0.0085) pero con open rate 98% vs SMS 90%. Mudar de SMS a WhatsApp baja el bounce rate del flujo de signup en 25–40%.

Setup del webhook server con Next.js + Vercel

El webhook es la pieza que recibe eventos de Meta: mensajes entrantes, status de envío (sent → delivered → read), clicks de botones. Sin webhook, tu app es ciega.

Estructura del endpoint

En Next.js 14+ con App Router, crea app/api/whatsapp/webhook/route.ts con dos handlers:

import { NextRequest, NextResponse } from 'next/server'

const VERIFY_TOKEN = process.env.WHATSAPP_VERIFY_TOKEN!

export async function GET(req: NextRequest) {
  const params = req.nextUrl.searchParams
  if (params.get('hub.mode') === 'subscribe' && params.get('hub.verify_token') === VERIFY_TOKEN) {
    return new NextResponse(params.get('hub.challenge'), { status: 200 })
  }
  return new NextResponse('Forbidden', { status: 403 })
}

export async function POST(req: NextRequest) {
  const body = await req.json()
  processWebhookEvent(body).catch(console.error) // async — Meta espera 200 OK en < 5 s
  return NextResponse.json({ status: 'ok' })
}

Dentro de processWebhookEvent parseas body.entry[0].changes[0].value para extraer mensajes (messages[0].type === 'text' | 'button') o statuses (statuses[0].status === 'delivered' | 'read' | 'failed') y los enrutas a tu lógica de negocio.

Función sender

Crea lib/whatsapp.ts para enviar plantillas. La llamada base es un POST a https://graph.facebook.com/v20.0/{PHONE_NUMBER_ID}/messages con Authorization: Bearer {TOKEN} y un body con messaging_product: 'whatsapp', el destinatario, type: 'template', y el objeto template con nombre, idioma (es_CR) y componentes con parámetros. Devuelve un message_id que usas para correlacionar el evento del webhook.

Despliegue en Vercel

  1. Push del código a un repo Git.
  2. Conecta el repo en Vercel.
  3. En Vercel → Project → Settings → Environment Variables agrega WHATSAPP_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN.
  4. Configura un dominio custom (HTTPS automático).
  5. En Meta Business Manager → WhatsApp → Configuration → Webhook → URL: https://tudominio.com/api/whatsapp/webhook. Verify Token: el mismo valor que tu env. Suscríbete a messages y message_status.

Listo. Tu servidor ya recibe eventos en producción. Si combinas esto con un sistema de email transaccional como Resend para fallbacks, tienes cobertura completa de notificaciones.

Costos reales en Costa Rica: la matemática completa

Volumen real de un negocio promedio que usa WhatsApp para operación:

Caso de uso Mensajes/mes Costo mensual
Consultorio médico (citas) 400 USD 3.40
Restaurante (reservas) 800 USD 6.80
Ecommerce (confirmaciones + OTP) 2 000 USD 17.00
Fintech (OTPs masivos) 10 000 USD 85.00
Operador multi-cliente 50 000 USD 425.00

Compárelo contra SMS (USD 0.04–0.08 por mensaje en CR): la misma operación en SMS cuesta 5–10× más, con la mitad del open rate y sin botones interactivos.

Infraestructura recurrente típica: Vercel Pro USD 20 + Resend USD 0–20 + Supabase USD 25 + mensajes WhatsApp USD 3–85 según volumen = USD 50–150/mes.

Si tienes una vertical específica (clínicas, restaurantes, hoteles), revisa nuestros paquetes en /servicios/clinics y /servicios/restaurants — incluyen el setup completo de WhatsApp Cloud API.

Errores comunes y cómo evitarlos

Estos son los errores que vemos en cada proyecto. Léelos dos veces.

1. Número bloqueado por warm-up acelerado

A la semana 2 tu quality rating cae a "Low" y Meta limita a 250 conversaciones/día permanentemente porque empezaste enviando 1 000 mensajes/día desde el día 1 a usuarios sin opt-in claro (ratio de bloqueos >1%). Solución: arranca con 50–100 conversaciones/día la primera semana, solo a clientes activos que TE escribieron antes. Sube gradualmente: 250 → 500 → 1 000 → 5 000 en 4–6 semanas, manteniendo "High" 24 h seguidas con tráfico real para que Meta abra el siguiente tier.

2. Plantillas rechazadas por lenguaje promocional

Plantilla UTILITY rechazada con motivo "Promotional content in UTILITY category" porque usaste palabras como "oferta", "descuento", "no te lo pierdas". UTILITY debe ser estrictamente transaccional. Solución: si necesitas promocionar, usa categoría MARKETING (USD 0.0114, requiere opt-in explícito) y guarda UTILITY para recordatorios y confirmaciones. "Tu cita es mañana" → UTILITY. "Aprovecha 20% off" → MARKETING.

3. Webhook devuelve 500 y Meta deja de enviar eventos

Dejas de recibir mensajes después de un deploy porque tu handler hace operaciones síncronas (queries DB, API calls) antes de responder a Meta, que espera 200 OK en < 5 s. Solución: responde 200 OK inmediatamente y procesa el evento en background — usa waitUntil de Vercel o un queue (Upstash, Inngest, BullMQ). El patrón processWebhookEvent(body).catch(console.error); return NextResponse.json({ ok: true }) (sin await) lo arregla.

4. Variables de plantilla rechazadas por contexto

Plantilla rechazada por "Insufficient context in variables" porque la registraste como {{1}} {{2}} {{3}} sin texto entre variables. Solución: cada variable necesita contexto textual: "Hola {{1}}, tu cita para {{2}} es el {{3}}". Llena los ejemplos de sample data con valores realistas — Meta los usa para validar.

5. Migrar de scraper a Cloud API con el mismo número

Quieres pasar tu número actual a Cloud API y Meta dice "Number already registered" porque el scraper dejó sesiones activas o el número está atado a WhatsApp Business app. Solución: cierra todas las sesiones (Settings → Linked devices → Log out all), desinstala la app, y desde Business Manager → Add phone number selecciona "Migrate". Meta pide código SMS — toma 5–10 minutos.

En resumen

WhatsApp Cloud API es la única forma seria de integrar WhatsApp en producción en Costa Rica. Es oficial, escalable, barato (USD 0.0085 por mensaje), y reemplaza a los scrapers grises que terminan con tu número bloqueado.

Item Detalle
Tiempo de setup 3–7 días hábiles
Costo de configuración Gratis
Costo por mensaje UTILITY en CR USD 0.0085
Costo por mensaje MARKETING en CR USD 0.0114
Tier inicial 250 conversaciones/día
Stack típico Next.js + Vercel + Supabase
Aprobación de plantillas 1 minuto a 24 horas
Verificación de empresa 24–72 horas con cédula jurídica
Bloqueos comunes Warm-up acelerado, plantillas wrong category

Las claves técnicas: Cloud API directo > BSP para 80% de los casos en CR; número dedicado (no el de WhatsApp regular); plantillas UTILITY para transaccional, MARKETING para promociones; webhook responde 200 OK en < 5 segundos; warm-up gradual del tier en 4–6 semanas; HTTPS obligatorio (Vercel lo da gratis).

Si vienes de un scraper, migra ahora — no esperes a que Meta bloquee tu número. Si arrancas desde cero, sigue los 7 pasos del HowTo en orden y vas a producción en 5–7 días. Para más sobre el lado conversacional, revisa WhatsApp con IA: bot vs humano. Para pricing completo de proyecto con WhatsApp incluido, lee cuánto cuesta desarrollar software en Costa Rica. Y si necesitas el glossary, mira WhatsApp Cloud API.

💡 Para un rango exacto de tu proyecto con WhatsApp Cloud API, usa el cotizador interactivo — 4 preguntas en 30 segundos, rango USD + scope listado.

📞 Para hablar directo: WhatsApp +506 8433 7752 o admin@siriusx.net. Lunes a viernes 8 am–5 pm, sábados 8 am–12 md, hora CR.


Posts relacionados

Jafeth Jiménez

Por

Jafeth Jiménez

Fundador · SEO y desarrollador

Co-fundador y dueño de Sirius. Lidera la estrategia de SEO de la agencia y participa en el desarrollo de cada proyecto que enviamos a producción. Atiende clientes en Costa Rica y la región.

03/Paso a paso

Cómo implementar WhatsApp Cloud API en Costa Rica en 7 pasos

Guía técnica completa para integrar el endpoint oficial de Meta en tu sistema, desde el Business Manager hasta el webhook en producción.

  1. Paso 01

    Crea el Meta Business Manager y registra tu empresa

    Entra a business.facebook.com, crea cuenta con tu email corporativo (no personal), agrega el negocio con el nombre legal exacto que aparece en la cédula jurídica del Registro Nacional. Sube documentos para verificación de empresa: certificación de personería jurídica vigente (no mayor a 3 meses) y un recibo público (ICE, AyA) a nombre de la empresa o de un representante. Meta responde en 24–72 horas. Sin verificación de empresa estás limitado a 250 conversaciones/día.

  2. Paso 02

    Consigue un número de teléfono dedicado y agrégalo a WhatsApp Business

    Compra un número que no uses en WhatsApp regular: Kolbi prepago aparte (~USD 2) o VoIP de Twilio/Vonage si necesitas que sea internacional. En Business Manager → WhatsApp Manager → Phone Numbers → Add Phone Number. Meta te envía un código SMS o llamada para verificar. Asigna un nombre comercial (display name) que coincida con tu marca — este es el nombre que ven los clientes en sus chats.

  3. Paso 03

    Genera el System User Token de acceso permanente

    En Business Settings → Users → System Users → Add. Crea un System User con rol Admin, asígnale acceso a la WhatsApp Business Account, y genera un token con scopes whatsapp_business_messaging y whatsapp_business_management. Marca "Never expires". Guarda el token en una variable de entorno (.env.local en Next.js, encrypted secrets en Vercel) — NUNCA lo commitees al repositorio. Este token es lo que tu servidor usa para llamar la API.

  4. Paso 04

    Crea y envía a aprobación tus plantillas iniciales

    En WhatsApp Manager → Message Templates → Create. Empieza con 3 plantillas UTILITY: confirmación de acción, recordatorio temporal y notificación de estado. Reglas de oro: variables con contexto ("Hola {{1}}, tu cita..." en vez de "{{1}} {{2}}"), categoría UTILITY (no MARKETING) si es transaccional, idioma "Spanish (Costa Rica)" si tu audiencia es local. Aprobación: 1 minuto a 24 horas. Si rechazan, lee el motivo en el panel y ajusta — los rechazos comunes son lenguaje promocional o variables huérfanas.

  5. Paso 05

    Monta el webhook en Next.js y despliégalo en Vercel

    Crea una API route en app/api/whatsapp/webhook/route.ts con dos handlers: GET para la verificación inicial de Meta (responde con el hub.challenge) y POST para recibir eventos. Despliega en Vercel — el dominio HTTPS es obligatorio. En Business Manager configura el Callback URL apuntando a https://tudominio.com/api/whatsapp/webhook y el Verify Token (string que tú inventas, guardado en env). Suscríbete a los webhook fields: messages, message_status. Meta valida el endpoint inmediatamente.

  6. Paso 06

    Implementa el sender HTTP y registra la primera conversación

    Crea un módulo lib/whatsapp.ts con una función sendTemplate({ to, template, components }) que hace POST a https://graph.facebook.com/v20.0/{PHONE_NUMBER_ID}/messages con el token Bearer. Prueba enviando una plantilla a tu propio número desde un script local o una API route protegida. Verifica que el webhook recibe el evento de "delivered" y "read" cuando lees el mensaje en tu WhatsApp. Si funciona end-to-end, estás listo para producción.

  7. Paso 07

    Haz warm-up del tier y monitorea el quality rating

    Meta arranca tu número en tier 250 conversaciones/día. Para subir a 1000 → 10000 → unlimited, debes mantener un quality rating "High" durante 24 horas con tráfico real. Empieza enviando solo a usuarios que opt-in claro (tu lista de clientes activos, no compras de bases de datos). Monitorea el panel de Insights: si baja a "Medium" o "Low", revisa qué plantillas tienen ratio de bloqueo alto y pausa esas. Después de 2–4 semanas tendrás tier ilimitado si todo va bien.

04/Preguntas frecuentes

Lo que la gente nos pregunta sobre esto.

¿Cuánto cuesta usar WhatsApp Cloud API en Costa Rica?

WhatsApp Cloud API es gratis para registrarse y configurar. El costo se paga por mensaje plantilla iniciado por el negocio: USD 0.0085 por conversación UTILITY (recordatorios, OTPs, confirmaciones) y USD 0.0114 por conversación MARKETING en Costa Rica. Las primeras 1 000 conversaciones por usuario único al mes son gratis. Los mensajes dentro de la ventana de servicio (24 h tras un mensaje del cliente) también son gratis. Un negocio que envía 1 000 recordatorios/mes paga ~USD 8.50.

¿Cuál es la diferencia entre WhatsApp Cloud API y WhatsApp Business app?

WhatsApp Business app es una app móvil para responder mensajes manualmente desde un teléfono — no soporta envíos automáticos masivos ni integraciones con sistemas. WhatsApp Cloud API es un endpoint HTTP de Meta que tu servidor llama por código para enviar mensajes plantilla, recibir webhooks, registrar conversaciones en base de datos. Si necesitas automatizar (citas, OTPs, recordatorios, bots) la respuesta es Cloud API. Solo se puede usar uno por número telefónico.

¿Necesito un número de teléfono dedicado para WhatsApp Cloud API?

Sí, y debe cumplir tres condiciones: (1) no estar registrado en la app de WhatsApp Business ni WhatsApp normal, (2) poder recibir SMS o llamada para verificación inicial, (3) idealmente ser un número que no usarás para llamadas — Cloud API lo usa para mensajes. En CR puedes usar un Kolbi prepago aparte (~USD 2) o un VoIP de Twilio/Vonage. Si tu número actual ya está en WhatsApp Business app, lo migras desde el Business Manager (proceso de 5 minutos).

¿Cuándo usar Cloud API directo vs un BSP como Twilio o 360dialog?

Cloud API directo conviene cuando ya tienes equipo técnico y quieres pagar solo a Meta (USD 0.0085/msg). Un BSP (Business Solution Provider) como Twilio (USD 0.005 + tier de plataforma) o 360dialog (USD 0.0085 + setup ~USD 50) conviene si necesitas SLA empresarial, soporte humano, panel de envíos, o ya usas Twilio para SMS. Para 80% de los proyectos en CR recomendamos Cloud API directo: cero intermediario, menos costos recurrentes.

¿Qué son las plantillas y por qué Meta me las puede rechazar?

Las plantillas son mensajes con variables ({{1}}, {{2}}) que Meta aprueba antes de que puedas enviarlos a usuarios que no te escribieron en las últimas 24 horas. Las categorías son UTILITY (recordatorios, OTPs, transaccionales), MARKETING (ofertas) y AUTHENTICATION (códigos 2FA). Razones comunes de rechazo: lenguaje promocional en plantilla UTILITY, variables sin contexto ({{1}}, sin texto que indique qué es), pedir información sensible (cédula, tarjetas), enlaces sospechosos, errores de ortografía. La aprobación toma de 1 minuto a 24 horas.

¿Cómo recibo respuestas de mis usuarios en mi servidor?

Configuras un webhook en Meta Business Manager apuntando a una URL HTTPS de tu servidor (por ejemplo, una API route en Next.js desplegada en Vercel: https://midominio.com/api/whatsapp/webhook). Meta envía un POST con la estructura del evento (mensaje entrante, status de envío, click de botón). Tu webhook debe responder 200 OK en menos de 5 segundos o Meta reintentará. Es la pieza que activa flujos: cuando el usuario toca "Confirmar", tu webhook actualiza la cita en base de datos.

¿Por qué Meta me bloqueó el número y cómo lo evito?

Los bloqueos pasan principalmente por tres razones: (1) ratio alto de bloqueos por usuario (>1% reporta como spam) — el calidad rating cae a "Low" y Meta limita envíos, (2) enviar plantillas MARKETING fuera de horario o sin opt-in, (3) volumen creciente muy rápido sin warm-up. Para evitarlo: arranca con tier de 250 conversaciones/día, sube gradualmente (Meta abre tiers en 24/1000/10000/unlimited), usa solo UTILITY al inicio, y pide opt-in explícito siempre. Si te bloquean, abres ticket en Business Manager — tarda 3–14 días.

¿Cuánto tarda el setup completo desde cero?

De 3 a 7 días hábiles: día 1 — crear Business Manager y agregar tu negocio (30 min), día 1–3 — verificación de empresa con cédula jurídica (Meta responde en 24–72 horas), día 2 — agregar y verificar el número de teléfono (1 hora), día 2–3 — crear plantillas iniciales y enviar a revisión (aprobación 1–24 h), día 3–5 — desarrollar y desplegar el webhook (8–16 horas de código), día 5–7 — testing end-to-end con números reales y warm-up del tier. Después está listo para producción.

05/Contacto directo

Hablar con Sirius sobre esto.

Somos una agencia de software en Costa Rica. Si lo que leíste te aplica y quieres avanzar, escríbenos por cualquiera de estas vías:

Horario
Lun a Vie 8 am – 5 pm · Sáb 8 am – 12 md
Ubicación
Pozos de Santa Ana, Santa Ana, San José, CR

02/Cuéntanos

¿Te aplica algo de esto? .

Si la nota te sonó familiar y tienes un proyecto en mente, lo conversamos directo en WhatsApp. Sin formularios.