diff --git a/frontend/app/services.js b/frontend/app/services.js index b21665f1489f178d098357df150226190717eddc..5470171acb25e2e65e188293af7346953c27daa4 100644 --- a/frontend/app/services.js +++ b/frontend/app/services.js @@ -233,9 +233,10 @@ MetabaseServices.factory('AppState', ['$rootScope', '$q', '$location', '$interva // enable / disable GA based on opt-out of anonymous tracking $rootScope.$on("appstate:site-settings", function(event, settings) { + const ga_code = MetabaseSettings.get('ga_code'); if (MetabaseSettings.isTrackingEnabled()) { // we are doing tracking - window['ga-disable-UA-60817802-1'] = null; + window['ga-disable-'+ga_code] = null; if (currentUserPromise) { currentUserPromise.then(function(user) { @@ -244,7 +245,7 @@ MetabaseServices.factory('AppState', ['$rootScope', '$q', '$location', '$interva } } else { // tracking is disabled - window['ga-disable-UA-60817802-1'] = true; + window['ga-disable-'+ga_code] = true; teardownIntercom(); } diff --git a/frontend/app/setup/components/DatabaseStep.react.js b/frontend/app/setup/components/DatabaseStep.react.js index 9650b8c1269cb64bfcd0bdd7042c52ee7b34f429..c0d648d66a12e9ee6fbf2b621a52d57a88e4f523 100644 --- a/frontend/app/setup/components/DatabaseStep.react.js +++ b/frontend/app/setup/components/DatabaseStep.react.js @@ -3,6 +3,7 @@ import _ from "underscore"; import DatabaseDetailsForm from "metabase/components/database/DatabaseDetailsForm.react"; import FormField from "metabase/components/form/FormField.react"; +import MetabaseAnalytics from "metabase/lib/analytics"; import MetabaseCore from "metabase/lib/core"; import StepTitle from './StepTitle.react' @@ -23,6 +24,8 @@ export default class DatabaseStep extends Component { this.setState({ 'engine': engine }); + + MetabaseAnalytics.trackEvent('Setup', 'Choose Database', engine); } async detailsCaptured(details) { @@ -39,6 +42,8 @@ export default class DatabaseStep extends Component { 'nextStep': ++this.props.stepNumber, 'details': details })); + + MetabaseAnalytics.trackEvent('Setup', 'Database Step', this.state.engine); } catch (error) { this.setState({ 'formError': error @@ -55,6 +60,8 @@ export default class DatabaseStep extends Component { 'nextStep': ++this.props.stepNumber, 'details': null })); + + MetabaseAnalytics.trackEvent('Setup', 'Database Step'); } renderEngineSelect() { diff --git a/frontend/app/setup/components/PreferencesStep.react.js b/frontend/app/setup/components/PreferencesStep.react.js index b7cfa626ca5f3d9c7d6a50dc5f67a50850a973b8..695bf96e7b4f3f2126837e1e928e4cf747bfa643 100644 --- a/frontend/app/setup/components/PreferencesStep.react.js +++ b/frontend/app/setup/components/PreferencesStep.react.js @@ -1,5 +1,6 @@ import React, { Component, PropTypes } from "react"; +import MetabaseAnalytics from "metabase/lib/analytics"; import Toggle from "metabase/components/Toggle.react"; import StepTitle from './StepTitle.react'; @@ -20,6 +21,8 @@ export default class PreferencesStep extends Component { // okay, this is the big one. we actually submit everything to the api now and complete the process. this.props.dispatch(submitSetup()); + + MetabaseAnalytics.trackEvent('Setup', 'Preferences Step'); } render() { diff --git a/frontend/app/setup/components/Setup.react.js b/frontend/app/setup/components/Setup.react.js index 49f147d2a198839179d44705b9b0d602aff627f2..1ba56c0c1f1a105251972b5e6349d11c0d0a148e 100644 --- a/frontend/app/setup/components/Setup.react.js +++ b/frontend/app/setup/components/Setup.react.js @@ -1,6 +1,7 @@ import React, { Component, PropTypes } from "react"; import LogoIcon from 'metabase/components/LogoIcon.react'; +import MetabaseAnalytics from "metabase/lib/analytics"; import MetabaseSettings from "metabase/lib/settings"; import UserStep from './UserStep.react'; @@ -19,6 +20,11 @@ export default class Setup extends Component { completeWelcome() { this.props.dispatch(setActiveStep(USER_STEP_NUMBER)); + MetabaseAnalytics.trackEvent('Setup', 'Welcome'); + } + + completeSetup() { + MetabaseAnalytics.trackEvent('Setup', 'Complete'); } renderFooter() { @@ -69,7 +75,7 @@ export default class Setup extends Component { <section className="SetupStep rounded SetupStep--active flex flex-column layout-centered p4"> <h1 style={{fontSize: "xx-large"}} className="text-normal pt2">You're all set up!</h1> <div className="pt4 pb2"> - <a className="Button Button--primary" href="/">Take me to Metabase</a> + <a className="Button Button--primary" href="/" onClick={this.completeSetup.bind(this)}>Take me to Metabase</a> </div> </section> : null } diff --git a/frontend/app/setup/components/UserStep.react.js b/frontend/app/setup/components/UserStep.react.js index 9eddc6d5befc7600acfc50ece206b8edc968ac46..3f403a5ac03f9e80da0618e20fceb8a4373fa116 100644 --- a/frontend/app/setup/components/UserStep.react.js +++ b/frontend/app/setup/components/UserStep.react.js @@ -5,6 +5,7 @@ import cx from "classnames"; import FormField from "metabase/components/form/FormField.react"; import FormLabel from "metabase/components/form/FormLabel.react"; import FormMessage from "metabase/components/form/FormMessage.react"; +import MetabaseAnalytics from "metabase/lib/analytics"; import MetabaseSettings from "metabase/lib/settings"; import MetabaseUtils from "metabase/lib/utils"; @@ -99,6 +100,8 @@ export default class UserStep extends Component { 'site_name': React.findDOMNode(this.refs.siteName).value } })); + + MetabaseAnalytics.trackEvent('Setup', 'User Details Step'); } render() { diff --git a/resources/frontend_client/index_template.html b/resources/frontend_client/index_template.html index ae27cbb6f651f8a3fbb287eb824c7bf44ab9602d..74dc50af68a56fcefc86a2c8adeb86f8a82b24d0 100644 --- a/resources/frontend_client/index_template.html +++ b/resources/frontend_client/index_template.html @@ -37,9 +37,13 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - // start off with tracking disabled (the angular app will re-enable this once we know the app runtime settings) - window['ga-disable-UA-60817802-1'] = true; - - ga('create', 'UA-60817802-1', 'auto'); + // if we are not doing tracking then go ahead and disable GA now so we never even track the initial pageview + const tracking = window.MetabaseBootstrap.anon_tracking_enabled; + const ga_code = window.MetabaseBootstrap.ga_code; + if (!tracking) { + window['ga-disable-'+ga_code] = true; + } + + ga('create', ga_code, 'auto'); </script> </html>