> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Notificaciones

> Plataforma multi-canal con builder de automaciones event-driven, templates, email y analytics

# 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](/notifications/automations).
* **Email** transaccional vía SMTP2GO con preheader, List-Unsubscribe (RFC 8058), UTM injection, Schema.org y open/click tracking. Ver [Email](/notifications/email).
* **Preferencias y opt-outs** por destinatario consultados antes de cada send. Ver [Preferences & unsubscribe](/notifications/preferences).
* **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](/notifications/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](/notifications/automations).

## 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                                          |

<Note>
  Los usuarios no-admin solo pueden ver sus propias notificaciones. Los endpoints de envío batch y programado requieren rol de administrador.
</Note>
