a4c7fcfc6f
Trackt Foto-Uploads in Reisetagen und Crew-Profilen mit context- und role-Properties. Co-authored-by: Cursor <cursoragent@cursor.com>
3.5 KiB
3.5 KiB
Plausible Custom Events
Kapteins Daagbok nutzt Plausible Analytics mit dem Script script.tagged-events.js auf der Domain kapteins-daagbok.eu. Custom Events werden über window.plausible() ausgelöst (siehe client/src/services/analytics.ts).
Datenschutz: Es werden keine personenbezogenen Daten in Event-Properties übermittelt (keine Nutzernamen, Hafennamen, Koordinaten o.ä.).
Setup
- Script in
client/index.html(bereits eingebunden) - Nach Deploy: Goals im Plausible-Dashboard anlegen — Namen müssen exakt mit der Event-Spalte „Event name“ übereinstimmen (Title Case, Leerzeichen)
Event-Übersicht
| Event | Auslöser | Properties |
|---|---|---|
| Account Created | Erfolgreiche Registrierung (auth.ts) |
— |
| Logged In | Login oder Einladungs-Flow abgeschlossen (App.tsx) |
— |
| Logbook Created | Neues Logbuch im Dashboard (LogbookDashboard.tsx) |
— |
| Logbook Deleted | Logbuch gelöscht (logbook.ts) |
— |
| Travel Day Created | Neuer Reisetag über „+“ in der Eintragsliste (LogEntriesList.tsx) |
— |
| Travel Day Saved | Reisetag gespeichert (LogEntryEditor.tsx) |
— |
| Entry Signed | Passkey-Signatur Skipper oder Crew (LogEntryEditor.tsx) |
role: skipper | crew |
| GPS Track Uploaded | GPX/KML/GeoJSON hochgeladen (LogEntryEditor.tsx) |
— |
| Vessel Saved | Schiffsdaten gespeichert (VesselForm.tsx) |
— |
| Crew Saved | Skipper- oder Crew-Profil gespeichert (CrewForm.tsx) |
role: skipper | crew, action: create | update |
| Account Deleted | Konto erfolgreich gelöscht (auth.ts) |
— |
| Onboarding Tour Completed | Onboarding-Tour bis zum letzten Schritt durchlaufen (AppTourContext.tsx) |
— |
| Onboarding Tour Skipped | Tour vorzeitig beendet (Skip, Escape, Backdrop, stopTour) |
step: Tour-Schritt-ID (z.B. welcome, entry_track) |
| Invite Generated | Einladungslink erzeugt (SettingsForm.tsx) |
— |
| Invite Accepted | Einladung angenommen und Logbuch beigetreten (InvitationAcceptance.tsx) |
— |
| PDF Exported | PDF-Export eines Reisetags (LogEntryEditor.tsx, LogEntriesList.tsx) |
scope: entry |
| CSV Exported | CSV-Download aus der Eintragsliste (LogEntriesList.tsx) |
— |
| CSV Shared | CSV über Web Share API geteilt (LogEntriesList.tsx) |
— |
| Photo Uploaded | Foto hochgeladen (PhotoCapture.tsx, CrewForm.tsx) |
context: logbook | crew, bei Crew zusätzlich role: skipper | crew |
Bewusst nicht getrackt
- Demo-Logbuch: Beim automatischen Seed (
demoLogbook.ts) werden keine Events ausgelöst — nur echte Nutzeraktionen zählen. - Manuelle Signaturen: Nur Passkey-Signaturen lösen
Entry Signedaus. - PII: Keine Inhalte aus verschlüsselten Logbüchern in Properties.
Typische Funnels (Plausible Goals)
Empfohlene Goal-Ketten für Auswertung:
- Aktivierung: Account Created → Logbook Created → Travel Day Created → Travel Day Saved
- Onboarding: Account Created → Onboarding Tour Completed (vs. Onboarding Tour Skipped)
- Kollaboration: Invite Generated → Invite Accepted
- Export: Travel Day Saved → PDF Exported / CSV Exported
Entwicklung
import { PlausibleEvents, trackPlausibleEvent } from './services/analytics.js'
trackPlausibleEvent(PlausibleEvents.TRAVEL_DAY_SAVED)
trackPlausibleEvent(PlausibleEvents.ENTRY_SIGNED, { role: 'skipper' })
Lokal ohne Plausible-Script ist trackPlausibleEvent ein No-Op. In Production im Browser-Netzwerk-Tab auf Requests an die Plausible-Instanz prüfen.