Notificaciones
El módulo de Notificaciones soporta:
- Envío manual con audiencias segmentadas (push, in_app, email).
- Automaciones event-driven con builder visual y eventos de dominio. Ver Automaciones.
- Email transaccional vía SMTP2GO con preheader, List-Unsubscribe (RFC 8058), UTM injection, Schema.org y open/click tracking. Ver Email.
- Preferencias y opt-outs por destinatario consultados antes de cada send. Ver Preferences & unsubscribe.
- Templates multi-idioma reutilizables.
- Analytics vía PostHog (
notification.sent, event.ingested, etc.) + tabla notification_email_events (delivered/opened/clicked/bounced/spam/rejected/unsubscribed).
Dashboard
Ruta: /app/notifications/dashboard
Panel de métricas principales:
| Métrica | Icono | Descripción |
|---|
| Total enviadas | Bell | Cantidad total de notificaciones enviadas |
| Tasa de entrega | CheckCircle | Porcentaje de entrega exitosa |
| Templates activos | FileText | Cantidad de templates disponibles |
| Programadas | Clock | Notificaciones pendientes de envío |
Incluye indicadores de tendencia semanal y timeline de actividad reciente.
Funcionalidades
Envío manual
Ruta: /app/notifications/send
Crear y enviar notificaciones manualmente con:
- Título y mensaje personalizado
- Contenido enriquecido e imagen/video
- Selección de audiencia (filtros)
- Estimación de audiencia antes del envío
- Opción de programar para envío futuro
- Envío de test a usuarios específicos
Templates
Ruta: /app/notifications/templates
Librería de templates reutilizables con:
- Categorías:
reminder, announcement, feedback, promotional
- Título, mensaje, contenido, imagen y video
- Asociación con deep links
- Contador de uso
- Duplicar templates existentes
Historial
Ruta: /app/notifications/history
Registro de todas las notificaciones enviadas con:
- Estado:
draft, scheduled, sending, sent, failed
- Estadísticas de entrega por notificación
- Detalle de recipients y su estado individual (
pending, sent, failed, opened, clicked)
Deep Links
Ruta: /app/notifications/deep-links
Configuración de deep links para que las notificaciones abran pantallas específicas en la app mobile:
- Nombre y patrón del deep link
- Parámetros configurables (JSON)
- Estado activo/inactivo
Canales de entrega
Las notificaciones se pueden enviar por:
| Canal | Tecnología | Audiencia |
|---|
push | Expo Server SDK | Notificaciones push nativas (iOS/Android) a end-users de la mobile app |
in_app | Firestore vivla-notifications collection | Buzón in-app de la mobile app — cohome owners, guests |
tools_inbox | Tabla inbox_messages (Supabase) | Centro de notificaciones del backoffice — CX, community managers, ops |
email | SMTP2GO | Email transaccional (ver Email) |
chat | Stream Chat | Tickets internos a equipos (ej. CX en NPS bajo) — TODO |
Todos los canales son seleccionables tanto desde el envío manual como desde el step builder de automaciones.
API endpoints
| Método | Endpoint | Descripción |
|---|
| POST | /api/notifications | Crear notificación |
| GET | /api/notifications | Listar notificaciones (filtros: status, type, page, limit) |
| GET | /api/notifications/:id | Obtener notificación por ID |
| GET | /api/notifications/:id/recipients | Recipients de una notificación |
| GET | /api/notifications/:id/stats | Estadísticas de entrega |
| POST | /api/notifications/audience/estimate | Estimar tamaño de audiencia |
| POST | /api/notifications/audience/resolve | Resolver IDs de audiencia |
| PUT | /api/notifications/:id | Actualizar notificación (solo draft) |
| DELETE | /api/notifications/:id | Eliminar notificación (solo draft) |
| POST | /api/notifications/:id/duplicate | Duplicar notificación |
| POST | /api/notifications/:id/send | Enviar notificación |
| POST | /api/notifications/:id/test | Envío de test |
| POST | /api/notifications/batch/send | Envío batch (admin) |
| POST | /api/notifications/scheduled/send | Enviar programadas pendientes (admin) |
| POST/GET | /api/notifications/templates | CRUD de templates |
Los usuarios no-admin solo pueden ver sus propias notificaciones. Los endpoints de envío batch y programado requieren rol de administrador.