# Catálogo: Integraciones para tu Negocio

> Curso **Crear Páginas Web con Lógica de Negocio** · Módulo 05
> Qué servicio usar para cada comunicación, sus límites gratuitos y la plantilla de secuencia de notificaciones. Verifica precios actuales en cada sitio oficial.

---

## 1. Email transaccional

| Servicio | Plan gratuito | Ideal para |
|---|---|---|
| **Resend** (el del curso) | 100 emails/día, 1 dominio | Apps Next.js: SDK simple, DX excelente |
| SendGrid | 100 emails/día | Ecosistema grande, marketing + transaccional |
| Brevo (ex Sendinblue) | 300 emails/día | Volumen gratuito mayor, interfaz en español |
| Amazon SES | 3.000/mes (con hosting AWS) | Volumen alto y barato, más configuración |

**Reglas del email transaccional:**
- Envía desde tu dominio verificado (SPF + DKIM en el DNS) o caerás a spam
- Un email por evento de negocio: confirmación, recibo, recordatorio, cambio de clave
- Nunca uses tu Gmail/Outlook personal con nodemailer para producción

## 2. WhatsApp

| Opción | Costo | Cuándo usarla |
|---|---|---|
| **Cloud API de Meta** (la del curso) | ~1.000 conversaciones de servicio gratis/mes; las de plantilla se cobran por conversación según país | Recordatorios y confirmaciones automáticas a escala |
| Enlace `wa.me` con texto pre-escrito | Gratis | Plan B sin papeleo: el cliente inicia el chat |
| Proveedores BSP (Twilio, 360dialog, Gupshup) | Tarifa Meta + margen | Si quieres soporte y panel en lugar de API cruda |

**Reglas de WhatsApp API:**
- Iniciar conversación = plantilla pre-aprobada por Meta (se aprueban en horas)
- Ventana de 24 h: si el cliente escribe, respondes libre ese día
- El número de la API no funciona en la app normal de WhatsApp
- No envíes marketing por plantillas transaccionales: suspenden el número

## 3. Tareas programadas (cron)

| Opción | Límite gratuito | Nota |
|---|---|---|
| **Vercel Cron** (el del curso) | 2 crons en plan Hobby (una invocación diaria c/u; más frecuencia requiere Pro) | Declarados en `vercel.json` |
| Supabase `pg_cron` | Incluido | El cron corre dentro de PostgreSQL; ideal para limpieza de datos |
| GitHub Actions (schedule) | Incluido en repos | Bueno para reportes; latencia variable |
| cron-job.org | Gratis | Servicio externo que llama tu URL protegida |

**Reglas del cron:**
- Toda ruta de cron verifica un `CRON_SECRET` en el header
- Todo cron es idempotente: columna `*_enviado_en` o estado que evita duplicados
- Registra cada corrida (cuántos procesó, cuántos fallaron)

## 4. Plantilla: secuencia de notificaciones de tu negocio

Completa una fila por cada comunicación automática:

| # | Evento disparador | Canal | Cuándo | Mensaje (resumen) | Idempotencia |
|---|---|---|---|---|---|
| 1 | Pago aprobado (webhook) | Email | Inmediato | Confirmación con detalle de la cita | estado del pago |
| 2 | Cita confirmada | WhatsApp | 24 h antes | Recordatorio con fecha y barbero | `recordatorio_enviado_en` |
| 3 | Cita sin pagar | — (sistema) | 15 min después de crearla | Liberar el horario | estado `cancelada` |
| 4 | | | | | |
| 5 | | | | | |

## 5. Plantilla de WhatsApp lista para aprobar

Formato que exige Meta (variables numeradas):

```
Nombre: recordatorio_cita
Categoría: UTILITY
Idioma: es_CO

Hola {{1}} 👋 Te recordamos tu cita en Don Barbas:
📅 {{2}}
✂️ Con {{3}}

Si no puedes asistir, cancela aquí con 2 horas de
anticipación para conservar tu anticipo: {{4}}
```

**Consejos de aprobación:** categoría UTILITY (no MARKETING), texto concreto, variables con ejemplo al enviarla a revisión, sin URLs acortadas.

## 6. Checklist de integraciones sanas

- [ ] Toda API key vive en variables de entorno del servidor
- [ ] Ninguna integración bloquea el flujo principal (la cita se confirma aunque el email falle)
- [ ] Todo fallo de envío queda registrado (log o tabla `notificaciones_fallidas`)
- [ ] Los envíos son idempotentes (no hay doble recordatorio si el cron corre dos veces)
- [ ] Sandbox/número de prueba en desarrollo; producción solo con el flujo probado
- [ ] Revisas los logs de envíos al menos una vez por semana

---

**Regla de oro del módulo:** integrar es delegar — pero tu negocio nunca depende de que el tercero esté disponible.
