Skip to Content
AnalyticsEvent Taxonomy

Event Taxonomy

PostHog events

EventWhen firedProperties
track_viewedEmbed loads (once per session per URL)gpx_url, page_url, referrer_host
track_downloadedUser clicks “Descarregar el track”gpx_url, page_url, ui_surface
track_sharedUser selects a share channelgpx_url, page_url, share_channel, ui_surface
share_modal_openedUser opens the share dropdowngpx_url, page_url, ui_surface
route_start_openedUser clicks “Inici de ruta” (Google Maps)gpx_url, page_url, ui_surface
elevation_chart_expandedUser expands collapsed chartgpx_url, page_url, ui_surface
gpx_fetch_errorGPX loading failsgpx_url, error_message
shortcode_copiedHelper: user copies shortcodecontext-dependent
map_previewedHelper: user previews embedcontext-dependent
gpx_proxy_downloadedServer-side: GPX downloaded via proxy with dl=1gpx_url, filename

Event groups

Defined in lib/analytics-events.ts:

GroupEvents
engagementview
conversiondownload
shareshare, share_facebook, share_x, etc.
navigationopen_route_start
uiopen_share_modal, elevation_chart_expanded
otherAnything not matching above

Share channels

ChannelPlatform
facebookFacebook sharer
xX (Twitter)
whatsappWhatsApp
emailEmail (mailto)
garminGarmin Connect import
qrQR code generation
copy_linkClipboard copy
open_tabOpen in new tab
unknownFallback

Supabase event schema

The analytics_events table stores:

ColumnTypeDescription
gpx_urlTEXTGPX file URL
eventTEXTLegacy: view, download, or share
event_nameTEXTFine-grained: view, download, share_facebook, etc.
event_groupTEXTCategory: engagement, conversion, share, etc.
share_channelTEXTChannel identifier (nullable)
ui_surfaceTEXTWhere the action occurred: embed_bottom_bar, share_modal
session_idTEXTEphemeral per-tab session ID
referrer_hostTEXTHostname from document.referrer
meta_jsonJSONBAdditional metadata
created_atTIMESTAMPTZEvent timestamp

Summary logic

summarizeAnalyticsRows() in lib/analytics-events.ts aggregates raw event rows into:

{ views: number, downloads: number, shares: number, shareModalOpens: number, openRouteStartClicks: number, shareChannels: Record<string, number> }