Docs

Flujo del Invitado

Journey completo del invitado desde que recibe la invitación hasta el post-evento

PublicadoMarzo 2026Equipo de desarrollo, arquitectos, stakeholders

1. Journey del Invitado

El invitado atraviesa múltiples etapas desde que recibe la invitación hasta después del evento.


2. Canales de Contacto

Nvito contacta a los invitados a traves de múltiples canales, priorizados por la configuración del organizador:

CanalServicioCuando se usaPrerequisito
EmailNodemailer (SMTP)Invitación, confirmación, recordatoriosEmail del invitado registrado
WhatsAppTwilio Business APIInvitación, recordatorios, RSVP conversacionalTelefono del invitado registrado
SMSTwilio SMSFallback cuando WhatsApp no disponibleTelefono del invitado registrado
PushFirebase/Expo PushRecordatorios, actualizaciones en tiempo realApp movil instalada con token registrado
Link directoURL públicaCompartido manualmente por el organizadorNinguno

2.1 Smart Routing

El sistema de comunicaciones incluye Smart Routing que selecciona automáticamente el mejor canal:

  1. Si el invitado tiene WhatsApp verificado y el organizador tiene crédito → WhatsApp
  2. Si tiene email → Email
  3. Si tiene teléfono sin WhatsApp → SMS
  4. Si tiene app instalada → Push notification como complemento

3. Visualización de la Invitación

Cuando el invitado abre el link de la invitación (https://nvito.mx/i/{slug} o https://nvito.mx/i/{slug}?t={shortCode}):

  1. nvito-invitations (Next.js ISR) sirve la página estática
  2. Si la URL incluye ?t={shortCode}, el JavaScript resuelve los datos del invitado via GET /invitations/public/guest/{shortCode}
  3. Se muestra la pantalla de carga (loader) con el nombre personalizado del invitado (ej: "Bienvenido, Ing. Juan") o un texto generico si no hay shortCode
  4. Se renderiza el HTML de la invitación con transiciones entre secciones
  5. La sección RSVP muestra un saludo personalizado si hay shortCode (ej: "Ing. Juan, confirma tu asistencia")
  6. El script de analiticas registra la visita (VIEW event)
  7. Si es invitación interna, las secciones se navegan con transiciones fullpage
  8. Si es invitación externa, se renderiza el HTML tal cual fue subido
  9. Un botón flotante "Agendar" permite al invitado agregar el evento a su calendario

3.1 Tracking de Analiticas

Cada interacción del invitado se registra:

EventoCuandoDatos
VIEWAl abrir la invitaciónslug, userAgent, referrer, timestamp
SECTION_VIEWAl navegar a una secciónsectionType, viewDuration
RSVP_STARTAl iniciar el formulario RSVPtimestamp
RSVP_COMPLETEAl enviar la respuestaresponse, attendeesCount
LINK_CLICKAl hacer clic en un enlacelinkType (map, gift, accommodation)

4. Flujo de RSVP

El RSVP (Repondez S'il Vous Plait) es el momento central de la interacción del invitado.

4.1 Diagrama de Flujo

4.2 Campos del RSVP

CampoTipoRequeridoDescripción
responseCONFIRMED / DECLINEDSiRespuestá del invitado
attendeesCountnumberSi (si CONFIRMED)Numero de asistentes (incluye al invitado)
attendeeNamesstring[]NoNombres de los acompanantes
dietaryRestrictionsstringNoRestricciones alimentarias
messagestringNoMensaje para los anfitriones
needsTransportationbooleanNoSi necesita transporte
accommodationPreferencestringNoPreferencia de hospedaje

4.3 Reglas de Negocio

ReglaDescripción
Un RSVP por par (guest, invitation)Un invitado solo puede tener una respuesta por invitación
ActualizableEl invitado puede cambiar su respuesta múltiples veces antes del cierre
attendeesCount no excede groupSizeNo puede confirmar más asistentes que el tamano de su grupo
groupSizeDefinido por el organizador al crear el invitado (default: 1)
Invitación cerradaNo se aceptan respuestas si la invitación está en estado CLOSED

5. Estados del Invitado

Cada invitado tiene un estado que refleja su progreso en el flujo:

EstadoDescripciónPuede cambiar?
PENDINGInvitado agregado pero no ha respondido RSVPSi (via RSVP)
CONFIRMEDEl invitado confirmo asistenciaSi (puede cambiar a DECLINED antes del cierre)
DECLINEDEl invitado rechazo la invitaciónSi (puede cambiar a CONFIRMED antes del cierre)
ATTENDEDEl invitado hizo check-in en el eventoNo (estado final)

6. Check-in

El check-in se realiza el día del evento, cuando el invitado llega al venue.

6.1 Metodos de Check-in

MetodoDescripciónActor
QR CodeEl host escanea el QR del invitado con la app movilHost (via nvito-client o nvito-pwa)
Búsqueda manualEl host busca al invitado por nombre en la listaHost (via nvito-client o nvito-pwa)
Auto check-inEl invitado escanea un QR del venue (si habilitado)Invitado

6.2 Flujo de Check-in

6.3 Check-in Offline

Para eventos en lugares con mala conectividad:

  1. Los QR passes se pre-cargan en cache (staleTime: 10min, gcTime: 7 dias)
  2. El check-in se registra localmente en la cola offline (AsyncStorage / IndexedDB)
  3. Al recuperar conexión, useOfflineSync sincroniza automáticamente con el servidor
  4. Se resuelven conflictos por timestamp (último check-in gana)

7. Acceso del Invitado a la App Movil

Los invitados pueden acceder a funcionalidades adicionales via la app movil o PWA:

nvito://guest?token={accessToken}
  1. El organizador comparte un link/QR con deep link
  2. El invitado abre el link en su dispositivo
  3. Si tiene la app: abre directamente con loginAsGuest(accessToken)
  4. Si no tiene la app: redirige a la PWA o app store

7.2 Funcionalidades para Invitados

FuncionalidadPantallaDescripción
HomehomeVista general del evento con countdown
Itinerarioitinerary-guestPrograma del evento
Galeríagallery-guestFotos compartidas del evento
InteraccióninteractMensajes, audio guestbook, encuestás
Mesa de regalosgift-registry-guestVer y contribuir a la mesa de regalos
Compartirsharing-guestCompartir fotos y momentos
HospedajeaccommodationOpciones de hospedaje cercanas

8. Post-evento

Después del evento, el invitado puede seguir interactuando:

AcciónCanalTrigger
Recibe agradecimientoEmail/WhatsAppWorkflow POST_EVENT (automático)
Ve galería compartidaApp movil / PWAAcceso persistente por 30 días
Deja mensaje en audio guestbookApp movil / PWADisponible durante y post-evento
Descarga fotosApp movil / PWAFotos del evento en alta resolución

9. Modelo de Datos del Invitado

CampoTipoDescripción
idUUIDIdentificador único
eventIdUUIDEvento al que pertenece
firstNamestringNombre
lastNamestringApellido
emailstring?Email (opcional)
phonestring?Telefono (opcional)
groupSizenumberTamano del grupo (default: 1)
statusenumPENDING, CONFIRMED, DECLINED, ATTENDED
groupIdUUID?Grupo de invitados (familia, mesa)
tableIdUUID?Mesa asignada
accessTokenstringToken único para acceso via deep link
checkedInAtDateTime?Timestamp del check-in
checkedInByUUID?Quien realizo el check-in
rsvpRespondedAtDateTime?Timestamp de la última respuesta RSVP

10. Archivos Clave

ArchivoUbicaciónResponsabilidad
rsvp.service.tssrc/modules/rsvp/Lógica de respuesta RSVP pública
rsvp.controller.tssrc/modules/rsvp/Endpoints públicos de RSVP
guests.service.tssrc/modules/guests/CRUD de invitados, estados, check-in
guests.controller.tssrc/modules/guests/Endpoints REST de invitados
guest-import.service.tssrc/modules/guests/services/Importacion masiva de invitados via Excel
check-in.service.tssrc/modules/guests/services/Lógica de check-in (QR + manual + offline)

11. Relación con Otros Flujos

Flujo relacionadoRelación
Ciclo de Vida de la InvitaciónEl invitado solo puede ver/responder invitaciones PUBLISHED
Ciclo de Vida del EventoEl check-in solo funciona para eventos ACTIVE
Flujo de ComunicacionesLos triggers RSVP_CONFIRMED y RSVP_DECLINED disparan workflows
Flujo de PagosEl invitado puede contribuir a la mesa de regalos via PaymentLink
Esta pagina fue util?