Skip to main content

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.

Resumen

El Home Annual Review (NPS) trackea 7 eventos con el prefijo home_nps_*. Cubren el funnel completo: exposicion (card) → apertura del survey → progreso paso a paso → finalizacion/abandono → visualizacion de resultados. Todos los eventos se definen como constantes en analyticsEvents.homeNps.* en src/core/analytics/events.ts.

Propiedades base

Todos los eventos del Home NPS incluyen estas propiedades:
PropiedadTipoDescripcion
survey_typestringSiempre "home-review" (slug de la encuesta)
survey_idstring | nullID de la encuesta en backend. Null si la definicion no ha cargado aun
home_idstring | nullMapea a propertyId internamente
Las propiedades survey_version (numero de version de la definicion) solo estan disponibles en eventos del flujo del survey (opened, step_completed, abandoned, completed).

Catalogo de eventos

1. home_nps_survey_cta_viewed

El card de review es visible en la seccion home para una propiedad tappable.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstring | nullDesde useHomeReviewStatus
home_idstringpropertyId
  • Archivo: HomeReviewCard.tsx
  • Trigger: useEffect on mount, una vez por propiedad tappable (omite status completed)
  • Multi-propiedad: Dispara un evento por cada fila de propiedad tappable.

2. home_nps_survey_opened

Usuario entra al flujo del survey desde cualquier entry point.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstringDesde definition.survey_id
survey_versionnumberDesde definition.version
home_idstring | nullpropertyId
entry_pointstring"home" | "deep_link"
  • Archivo: SurveyScreen.tsx
  • Trigger: useEffect cuando viewState transiciona a intro o questions por primera vez
  • Guard: No se dispara si engine.alreadyCompleted (survey reanudado ya completado)
Entry points:
Usuario toca CTA en el card de la home screen → URL param entryPoint=home

3. home_nps_step_completed

Usuario responde una pregunta y avanza a la siguiente.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstringDesde definition.survey_id
survey_versionnumberDesde definition.version
home_idstringSiempre disponible durante el flujo del survey
step_numbernumberPosicion secuencial 1-based tal como la experimenta el usuario
step_idstringquestion.id de la definicion backend — joinable con datos del backend
step_typestring"star_rating" | "single_choice" | "multi_choice" | "open_text" | "swipe_boolean"
has_optional_commentbooleanSi el usuario lleno una pregunta condicional inline de tipo open_text
  • Archivo: useSurveyEngine.ts (callback) → SurveyScreen.tsx (capture)
  • Trigger: Dentro de goToNextQuestion, via callback onStepCompleted
step_number es secuencial sin gaps — refleja la experiencia del usuario, no el orden de la definicion. Preguntas condicionales que no se muestran no generan eventos.

4. home_nps_survey_abandoned

Usuario sale del survey sin completarlo.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstringDesde definition.survey_id
survey_versionnumberDesde definition.version
home_idstring | nullNull si se abandono antes de seleccionar propiedad
steps_completednumberNumero de pasos completados (0 si aun en el primer paso)
  • Archivo: SurveyScreen.tsx
  • Trigger: handleClose cuando viewState !== 'completion'
  • Se dispara al cerrar explicitamente (boton back/close), NO al ir a background (background dispara flushToBackend para guardar progreso)

5. home_nps_survey_completed

Survey enviado exitosamente al backend.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstringDesde definition.survey_id
survey_versionnumberDesde definition.version
home_idstringSiempre disponible al completar
has_final_commentbooleanSi la ultima pregunta (tipo open_text) fue respondida
total_stepsnumberdefinition.steps.length — varia por condicionales
  • Archivo: SurveyScreen.tsx
  • Trigger: useEffect cuando viewState transiciona a completion
  • Guard: No se dispara si engine.alreadyCompleted (survey reanudado ya completado)
Las encuestas completadas por agentes de soporte via back office se rastrean server-side. Se pueden distinguir de las completadas en la app usando la propiedad $lib de PostHog (posthog-react-native para la app vs el SDK del backend para back office).

6. home_nps_report_cta_viewed

El card de resultados es visible para el usuario (~8 dias despues del cierre del periodo de review).
PropiedadTipoValor
survey_typestring"home-review"
survey_idstring | nullDesde useHomeReviewStatus
home_idstringpropertyId
  • Archivo: HomeReviewResultsCard.tsx (useEffect on mount)

7. home_nps_report_opened

Usuario toca el CTA para ver el reporte de resultados.
PropiedadTipoValor
survey_typestring"home-review"
survey_idstring | nullDesde useHomeReviewStatus
home_idstringpropertyId
  • Archivo: HomeReviewResultsCard.tsx (onPress antes de WebView)

Diagramas de flujo

Entry points

[Card]      survey_cta_viewed → [toca CTA] → survey_opened(entry_point="home")

[Deep Link] [sin evento de exposicion] → survey_opened(entry_point="deep_link")

Flujo del survey

survey_opened
  → step_completed(1) → step_completed(2) → ... → survey_completed

survey_opened
  → step_completed(1) → step_completed(2) → survey_abandoned(steps_completed=1)

survey_opened
  → survey_abandoned(steps_completed=0)

Resultados

report_cta_viewed → [toca CTA] → report_opened

Guia de dashboard en PostHog

Dashboard: “Home NPS - Survey Analytics”

Todas las insights deben filtrar por survey_type = "home-review".

Funnels

Survey Completion FunnelMide la conversion desde apertura hasta finalizacion del survey.
  1. Ir a Insights → New → Funnels
  2. Agregar pasos:
    • home_nps_survey_opened
    • home_nps_step_completed (filter: step_number = 1)
    • home_nps_step_completed (filter: step_number = 2)
    • …continuar por cada paso conocido
    • home_nps_survey_completed
  3. Breakdown by: entry_point
  4. Conversion window: 7 dias
  5. El drop-off entre cada paso muestra donde abandonan los usuarios
Tasa de completado
  1. Insights → New → Trends
  2. Serie A: home_nps_survey_completed (unique users)
  3. Serie B: home_nps_survey_opened (unique users)
  4. Activar Formula mode: A / B
  5. Display: Line chart, granularidad diaria o semanal

Number Insights (KPIs)

Crear 3 Number insights para la fila superior del dashboard:
KPIConfiguracion en PostHog
Tasa de completadoFormula: A (survey_completed, unique users) / B (survey_opened, unique users)
Tasa de apertura reporteFormula: A (report_opened) / B (report_cta_viewed)
Promedio pasos antes de abandonarsurvey_abandoned → Aggregation: Property average → steps_completed

Layout del dashboard

Organizar en filas:
  1. Fila superior: 3 Number insights (KPIs principales)
  2. Segunda fila: Survey Completion Funnel (ancho completo)
  3. Tercera fila: Card Conversion (izq) + Report Engagement (der)
  4. Cuarta fila: Entry Point Distribution (izq) + Abandonment by Step (der)

Joining con Data Warehouse

Los eventos envian survey_id y step_id (= question.id del backend). Para cruzar con datos backend:
SELECT
  ph.step_id,
  sq.label,
  ph.step_type,
  COUNT(*) as completions,
  SUM(CASE WHEN ph.has_optional_comment THEN 1 ELSE 0 END) as with_comment
FROM posthog_events ph
JOIN survey_questions sq ON sq.id = ph.step_id
WHERE ph.event = 'home_nps_step_completed'
  AND ph.survey_id = '<survey_id>'
GROUP BY ph.step_id, sq.label, ph.step_type
ORDER BY completions DESC;

Archivos de implementacion

ArchivoEventos
src/core/analytics/events.tsConstantes analyticsEvents.homeNps.*
src/modules/home/components/HomeReviewCard.tsxsurvey_cta_viewed
src/modules/home/components/HomeReviewResultsCard.tsxreport_cta_viewed, report_opened
src/modules/surveys/components/SurveyScreen.tsxsurvey_opened, abandoned, completed, step_completed
src/modules/surveys/hooks/useSurveyEngine.tsCallback onStepCompleted

Checklist de verificacion

  • Home screen → survey_cta_viewed se dispara para cada propiedad tappable
  • Tocar CTA card → survey_opened con entry_point: "home"
  • Deep link → survey_opened con entry_point: "deep_link"
  • Responder pregunta → step_completed con step_number, step_id, step_type correctos
  • Pregunta con comentario inline → has_optional_comment: true
  • Cerrar survey a mitad → survey_abandoned con steps_completed correcto
  • Completar survey → survey_completed con has_final_comment y total_steps
  • Reanudar survey completado → sin duplicados de survey_opened o survey_completed
  • Card de resultados visible → report_cta_viewed
  • Tocar resultados → report_opened
  • Todos los eventos incluyen survey_type, survey_id (cuando cargado), home_id
  • Habilitar PostHog debug mode para validar eventos en consola/network