A demo on how to build your own Google Analytics dashboard with R, Shiny and MySQL
Latest commit bf6b8e3 Jul 19, 2015 github@markedmondson.me add the blog post link
Failed to load latest commit information.
README.md Update README.md Jul 19, 2015
functions.R adding CI impact plot to summary Jul 19, 2015
ga-dashboard-demo1.png pictures Jul 13, 2015
ga-dashboard-demo2.png pictures Jul 13, 2015
ga-dashboard-demo3.png pictures Jul 13, 2015
server.R adding CI impact plot to summary Jul 19, 2015
ui.R add the blog post link Jul 19, 2015



A demo on how to build your own Google Analytics dashboard with R, Shiny and MySQL

A guide blogpost here: http://markedmondson.me/enhance-your-google-analytics-data-with-r-and-shiny-free-online-dashboard-template

Live demo version here: https://mark.shinyapps.io/GA-dashboard-demo


Whilst shinyga() lets you create Shiny dashboards that anyone can connect their own GA data with, the more common use case of creating a dashboard to use just your own data is better served by this example. This template lets you clone and enter your GA id to quick start your own Shiny dashboard.


  • Interactive trend graph.
  • Auto-update of GA data for last 3 years.
  • Zoomable heatmap for Day of week analysis.
  • Year on Year, Month on Month and Last Month vs same Month Last Year.
  • MySQL persistant storage for data blending your data with GA data.
  • Upload option to update MySQL data stored.
  • Analysis of impact of events on your GA data via Google's CausalImpact
  • Detection of unusual timepoints using Twitter's AnomalyDetection


Trend Upload to MySQL Analysis of data

To Use

  1. Clone this repository to your own RStudio project.
  2. Get your MySQL setup with a user and IP location, and the GA View ID you want to pull data from. You will also probably need to whitelist the IP of your Shiny Server. Add your local IP for testing too. If you will use shinyapps.io their IPs are:
  3. Create another file called secrets.r file in the same directory with the below content filled in with your details. This file is called in functions.r

    # secrets.r
    options(mysql = list(
    "host" = "YOUR SQL IP",
    "port" = 3306,
    "user" = "YOUR SQL USER",
    "password" = "YOUR USER PW",
    "databaseName" = "onlinegashiny"),
    rga = list(
    "profile_id" = "YOUR GA ID",
    "daysBackToFetch" = 356*3
    shinyMulti = list(
    "max_plots" = 10
    myCausalImpact = list(
    'test_time' = 14,
    'season' = 7
    shiny.maxRequestSize = 0.5*1024^2 ## upload only 0.5 MB
  4. Install rga() if you need to, then run the below once locally in the same folder to have the app remember your GA OAuth2 settings.

    ## Run this locally first, to store the auth token.
  5. Run locally with shiny::runApp() or upload to your shinyapps.io account or your own Shiny server.

  6. Customise your instance.