Repository navigation
Analytics
Statut : 🟡 Brouillon · Màj : 2026-10-14 · Tickets : #165 #383 #415
PostHog (cloud UE) et crash reporting Sentry, branchés dès le premier jalon (v0.1) : les hypothèses du MVP ne se valident pas sans mesure. Consentement demandé au premier lancement ; sans consentement, seuls les événements techniques anonymes (crash, performance) sont envoyés. Identifiant anonyme d'appareil, rattaché au compte à la connexion.
app_version, platform (ios, android), city (slug de la ville explorée : paris), is_authenticated, et la session de PostHog ($session_id, ajoutée par le SDK). Le catalogue de packages/shared refuse tout événement ou propriété que cette page ne nomme pas.
Aucune position ni zone : city est le seul lieu envoyé, et map_search_zone envoie le niveau de zoom, jamais la zone. Décision (#165, D-067) : pas d'arrondissement ni de quartier dans les événements. Une lecture par secteur (H1 par arrondissement, par exemple) se fait côté données, en rattachant route_id à l'arrondissement du départ du parcours, sans rien envoyer de l'appareil qui situe l'utilisateur. Écartée : une propriété de zone de recherche, qui l'aurait situé au quartier près (Securite-et-RGPD : aucune position envoyée).
| Événement | Propriétés | Hypothèse |
|---|---|---|
app_opened |
cold_start |
|
analytics_consent_given |
envoyé seulement après « Accepter » (premier événement autorisé) ; rien n'est envoyé après un refus (décision d'Ilan du 2026-09-28, D-060) | |
map_search_zone |
zoom, results_count, trigger (initial, button, geocode) |
H1 |
filters_applied |
audiences, moods, conditions, durations, budgets, transports, results_count, source (chip, panel ; plus de weather : la météo n'applique aucun filtre, D-010, D-067) |
H2 |
filters_no_results |
filtres actifs | H2 |
weather_section_shown |
condition (rainy, sunny) |
une fois par résultats affichés, quand la section météo entre à l'écran (sheet à mi-hauteur ou pleine) ; weather_banner_shown et weather_banner_tapped sont retirés avec le bandeau (D-010, D-067) |
search_text |
kind (geo, route), has_result
|
|
result_card_viewed |
route_id, position (à partir de 0, dans le carrousel ou la liste), section, sheet_level (rest, half, full ; list dans la liste « Voir tout »), sort (dans la liste seulement : tri courant) |
H1 ; une fois par card et par résultats affichés (D-067) |
section_opened |
section, sheet_level (rest, half, full : cran d'où « Voir tout » est touché), sort (tri de la liste à l'ouverture, mémorisé pour la session), results_count (nombre annoncé par la section) |
H1 ; « Voir tout » d'une section (E-04, #62, D-067) |
list_sorted |
section, sort (recommended, distance, duration, rating), previous_sort
|
choix dans la sheet « Trier par » de la liste (E-04) ; rien si le tri ne change pas (D-067) |
route_opened |
route_id, source (marker : « Voir plus » ou « Voir le parcours » d'un parcours sélectionné sur la carte ; card : carrousel ou liste ; link, favorites, planned), step_index (seulement quand la fiche s'ouvre à une étape touchée sur la carte, #153 ; à partir de 0) |
H1 |
route_scrolled |
route_id, depth (info, timeline, steps, end) |
H1 |
route_shared |
route_id |
Règles de la découverte (#165, D-067, confirmées par Ilan le 2026-09-28, D-071, #220) :
-
section: clé technique de la section de la sheet (E-01) :nearby(À proximité),weather(section météo),signature(Les Signature Widoo). Une section ajoutée à E-01 ajoute sa clé ici avant d'être émise. - Section météo :
weather_section_shownmesure l'exposition ; son « Voir tout » émetsection_openedavecsection=weather.weather_section_opened, prévu par #31, n'est pas créé : il doubleraitsection_opened. - Pas d'événement au tap sur une étape (#153) ni à la sélection d'un parcours sur la carte : ce sont des gestes d'exploration ; ce qui compte pour H1 est l'ouverture de la fiche, portée par
route_opened(source=marker,step_indexquand la fiche s'ouvre à l'étape).
| Événement | Propriétés | Hypothèse |
|---|---|---|
auth_prompted |
intent (favorite, plan, go, create, signal) |
|
auth_completed |
provider, intent, is_new_user
|
|
favorite_added / favorite_removed
|
route_id |
H3 |
route_planned |
route_id, days_ahead, has_conflicts, bookings_count, source (route, past pour « Reprogrammer », D-038) |
H3 |
plan_checklist_item_done |
route_id, provider
|
|
plan_changed |
route_id, days_moved
|
« Modifier la sortie », D-038 |
plan_cancelled / plan_restored
|
route_id, days_ahead
|
« Annuler la sortie » et « Rétablir », D-038 |
plan_missed |
route_id |
serveur, job de 4:00 du lendemain, D-038 |
booking_link_opened |
route_id, step_id, provider, context (route, plan, go) |
monétisation |
go_started |
route_id, was_planned
|
H3 |
maps_opened |
route_id, mode (full, next_step) |
|
go_arrived |
route_id, step_index, suggested (pastille « Vous semblez être sur place » affichée) |
D-029 |
go_step_done |
route_id, step_index
|
|
go_stopped |
route_id, steps_done_ratio
|
« Arrêter le parcours », D-029 |
go_step_skipped |
route_id, step_index, reason (signaled, late, user) |
« Passer cette étape », D-033 |
go_completed |
route_id, duration_actual_min, steps_done_ratio, closed_by (user, auto) |
H3 |
route_rated |
route_id, rating, has_comment, source (go_end, past) |
qualité ; note facultative depuis D-029 |
creator_profile_opened |
creator_id, source
|
communauté |
certified_info_opened |
creator_id, own
|
communauté |
profile_updated |
fields[] (photo, bio, neighborhood, anecdotes, featured) |
communauté |
paywall_shown |
reason (premium_route, create_limit, premium_card), source (route, profile, profile_edit, settings, create, planned) |
H6 |
paywall_dismissed / purchase_started / purchase_completed
|
plan (monthly, annual), trial (essai de 7 jours, D-040) |
H6 |
purchase_failed / purchase_pending / purchase_restored
|
plan (monthly, annual), trial ; purchase_failed : reason (erreur du store, hors annulation par l'utilisateur) ; purchase_restored : found (booléen) (D-045) |
H6 |
reminder_received / reminder_tapped
|
🟡 Brouillon #383 du 2026-10-14, à valider par Ilan, voir Compte-et-Monetisation › Fin de la limite de création : proposé,
paywall_shown.reasonne garde quepremium_routeetpremium_card, et la sourcecreatesort aussi (question 3) : depuis D-073, aucun paywall ne s'ouvre plus depuis la création. Retrait côté code : #415.
| Événement | Propriétés | Hypothèse |
|---|---|---|
create_started |
H4 | |
create_step_added |
place_source (existing, new) |
H4 |
create_coherence_warning |
codes[] |
H4 |
create_saved_private / create_submitted
|
steps_count, warnings_count
|
H4 |
moderation_decision (serveur) |
decision, reason_code, hours_in_queue
|
H4 |
place_confirmed / place_reported
|
reason, context (go ou end, plus de confirmation depuis la fiche, D-056) |
H5 |
route_reported |
route_id, reason, step_index
|
D-056 |
place_flagged (serveur) |
place_id, routes_affected
|
H5 |
- Activation : part des sessions avec au moins une
route_opened; objectif 60 %. - Pertinence : taux de
filters_no_resultssous 10 % ; médiane de fiches ouvertes avant une action sous 3. - Conversion :
route_plannedougo_startedparroute_opened; objectif 8 %. - Rétention : utilisateurs revenant à J+7 et J+30 après une première programmation.
- Contenu : parcours soumis par semaine hors équipe, taux d'acceptation, délai de modération.
- Fraîcheur : part des lieux
verifiedparmi ceux utilisés par des parcours publiés ; objectif 80 %. - Notation : part des Go terminés qui donnent une note ; objectif 60 %.
- Freemium : part des utilisateurs actifs qui rencontrent un parcours Premium ou la limite de création dans le mois, conversion paywall → achat par raison, churn mensuel.
🟡 Brouillon #383 du 2026-10-14, à valider par Ilan, voir Compte-et-Monetisation › Fin de la limite de création : proposé, le KPI Freemium ne compte plus « la limite de création ».
Funnel découverte (ouverture → zone → fiche → action), funnel création (démarré → étape → soumis → publié), usage des filtres par valeur, lieux signalés par semaine.
Produit
- Vision-Produit
- Perimetre-MVP
- Personas-et-Parcours-Utilisateurs
- Ecrans
- Filtres-et-Recherche
- Orchestration
- Creation-et-Moderation
- Admin-Web
- Compte-et-Monetisation
- Direction-Artistique
Technique
- Modele-de-Donnees
- Architecture-Technique
- Site-Web
- API
- Securite-et-RGPD
- Conditions-d-utilisation
- Politique-de-confidentialite
- Analytics
Pilotage