Skip to content

analytics: custom event tracking in Shiny apps (tab views, queries) #48

Description

@bbest

Context

Phase 1 adds basic GA4 page-view tracking to all Shiny apps via google-analytics.html. Phase 2 adds server-side custom events for richer analytics.

Implementation

Add a Shiny custom message handler to each app's google-analytics.html:

Shiny.addCustomMessageHandler('ga_event', function(data) {
  gtag('event', data.name, data.params);
});

In server.R, fire events on key interactions:

# track tab switches
observeEvent(input$main_tab, {
  session$sendCustomMessage("ga_event", list(
    name   = "tab_view",
    params = list(tab_name = input$main_tab)
  ))
})

# track query/filter changes
observeEvent(input$run_query, {
  session$sendCustomMessage("ga_event", list(
    name   = "query_run",
    params = list(
      dataset  = input$dataset,
      lat_min  = input$lat_min,
      date_min = input$date_min
    )
  ))
})

Priority

Start with int-app (most used). Events appear in GA4 → Reports → Engagement → Events.

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions