Configurar WhatsApp Business
Esta guía acompaña la pantalla de configuración de WhatsApp (Ajustes → Integraciones → WhatsApp → Configurar). Los pasos van numerados igual que las ayudas que ves bajo cada campo. Cuenta con 1-3 días, porque Meta revisa a mano la verificación de la empresa y las plantillas; si quieres empezar ya, Telegram no necesita nada de esto.
Estas guías se publican de momento en castellano. Dentro de la aplicación, la misma ayuda está en castellano, catalán, gallego, euskera, inglés y francés.
1. Qué pide la pantalla
En “Configuración Básica”, un “Nombre de la Integración” y el “Entorno”. En “Credenciales”, cuatro datos de Meta: el “ID del número de teléfono” (paso 4), el “Token de acceso” (paso 5), el “Secreto de la aplicación” (paso 6) y el “Token de verificación del webhook”, que inventas tú (paso 7).
Al guardar con “Guardar Configuración” aparece “Probar Conexión”. Después, cada usuario activa WhatsApp en sus preferencias de notificación: el enlace “Ir a preferencias de notificación” lleva allí.
2. Pasos 1 a 3: cuenta de Meta Business, verificación y app
Paso 1. Entra en business.facebook.com con tu cuenta de Facebook y crea un portafolio comercial (nombre de la empresa, tu nombre y un email de empresa).
Paso 2. En “Configuración del negocio → Centro de seguridad → Verificación del negocio”, sube el CIF/NIF y un justificante de dirección. Meta tarda 2-4 días; sin verificar solo puedes enviar en modo de prueba.
Paso 3. En developers.facebook.com → “Mis apps” → “Crear app”, elige el caso de uso “Conectar con clientes por WhatsApp”, ponle nombre y asóciala a tu portafolio.
3. Pasos 4 a 6: número, token y secreto de la app
Paso 4. En “Configuración de la API”, en el desplegable “Desde”, pulsa “Añadir número de teléfono” y verifícalo por SMS o llamada. El número no puede tener ya WhatsApp instalado. Debajo aparece el ID del número: cópialo en “ID del número de teléfono”.
Paso 5. El token de “Configuración de la API” caduca en 24 h. En “Configuración del negocio → Usuarios del sistema” crea un usuario del sistema administrador, asígnale la app y la cuenta de WhatsApp, pulsa “Generar token” con caducidad “Nunca” y los permisos whatsapp_business_messaging, whatsapp_business_management y business_management. Cópialo (empieza por EAA…) en “Token de acceso”: solo se muestra una vez.
Paso 6. En la app de Meta, “Configuración → Básica”, pulsa “Mostrar” junto a la clave secreta y cópiala en “Secreto de la aplicación”.
4. Pasos 7 y 8: token de verificación y guardar
Paso 7. Inventa una cadena larga y aleatoria (32 caracteres o más) y escríbela en “Token de verificación del webhook”. La usarás otra vez en el paso 9 y tiene que coincidir.
Paso 8. Pulsa “Guardar Configuración” y luego “Probar Conexión”. Si el token y el número son correctos, la integración pasa a activa.
5. Paso 9: el webhook de estado (recomendado)
Sirve para que goPrevina sepa si cada mensaje se entregó o se leyó. En la app de Meta, “WhatsApp → Configuración → Webhooks → Editar”. En “Callback URL” escribe https://<dominio-de-tu-API>/api/v1/whatsapp/webhook y en “Verify token” el mismo valor del paso 7. Pulsa “Verificar y guardar” y, en “Campos del webhook”, suscríbete a messages.
6. Paso 10: plantillas de mensajes para copiar y pegar
WhatsApp solo deja enviar plantillas aprobadas por Meta. Créalas en WhatsApp Manager → “Plantillas de mensajes” → “Crear plantilla”, con el nombre exacto y la categoría indicada, y pega el cuerpo tal cual (los parámetros {{1}}, {{2}}… van en el orden de la lista). Meta suele aprobar las de tipo UTILITY en 24-48 h.
prl_user_invitation — Categoría: UTILITY — Parámetros: recipientName, tenantName, activationUrl
Cuerpo para copiar: Hola {{1}}, te han invitado a {{2}} en goPrevina. Activa tu cuenta aquí: {{3}}
prl_password_reset — Categoría: AUTHENTICATION — Parámetros: recipientName, resetUrl
Cuerpo para copiar: Hola {{1}}, has solicitado restablecer tu contraseña. Usa este enlace: {{2}}
prl_critical_alert — Categoría: UTILITY — Parámetros: alertTitle, alertMessage
Cuerpo para copiar: ALERTA CRÍTICA: {{1}}. {{2}}
prl_document_expiring — Categoría: UTILITY — Parámetros: documentName, expiryDate, daysRemaining
Cuerpo para copiar: El documento «{{1}}» caduca el {{2}} (quedan {{3}} días). Revísalo en goPrevina.
prl_document_expired — Categoría: UTILITY — Parámetros: documentName, expiryDate
Cuerpo para copiar: El documento «{{1}}» ha caducado el {{2}}. Actualízalo en goPrevina.
prl_incident_reported — Categoría: UTILITY — Parámetros: incidentNumber, title, location
Cuerpo para copiar: Nuevo incidente {{1}}: «{{2}}» en {{3}}. Consúltalo en goPrevina.
prl_incident_assigned — Categoría: UTILITY — Parámetros: incidentNumber, title, assignedBy
Cuerpo para copiar: Se te ha asignado el incidente {{1}}: «{{2}}» (por {{3}}). Ábrelo en goPrevina.
prl_inspection_scheduled — Categoría: UTILITY — Parámetros: inspectionTitle, scheduledDate, location
Cuerpo para copiar: Inspección programada: «{{1}}» el {{2}} en {{3}}.
prl_inspection_reminder — Categoría: UTILITY — Parámetros: inspectionTitle, dueDate
Cuerpo para copiar: Recordatorio: la inspección «{{1}}» vence el {{2}}.
prl_training_reminder — Categoría: UTILITY — Parámetros: courseName, sessionDate, location
Cuerpo para copiar: Recordatorio de formación: «{{1}}» el {{2}} en {{3}}.
prl_medical_appointment — Categoría: UTILITY — Parámetros: appointmentDate, appointmentTime, location
Cuerpo para copiar: Tienes cita de vigilancia de la salud el {{1}} a las {{2}} en {{3}}.
prl_meeting_invitation — Categoría: UTILITY — Parámetros: meetingTitle, meetingDate, organizer
Cuerpo para copiar: Reunión: «{{1}}» el {{2}}, organiza {{3}}.
prl_notification — Categoría: UTILITY — Parámetros: title, message
Cuerpo para copiar: {{1}}: {{2}}
prl_generic — Categoría: UTILITY — Parámetros: dynamic
Cuerpo para copiar: {{1}}