All Projects → AmazingDreams → Vue Matomo

AmazingDreams / Vue Matomo

Licence: mit
Vue plugin for Piwik / Matomo Analytics

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vue Matomo

Typewriter
Type safety + intellisense for your Segment analytics
Stars: ✭ 146 (-13.1%)
Mutual labels:  analytics
Arcadeanalytics
Arcade Analytics is the first Open Source Graph Analytics platform. Connect your Graph Database (Neo4j, OrientDB, Amazon Neptune, Microsoft CosmosDB, etc) and RDBMS (Oracle, MySQL, Postgres, Microsoft SQLServer, MariaDB) to create powerful dashboards.
Stars: ✭ 161 (-4.17%)
Mutual labels:  analytics
Swiv
For the open source UI formerly know as Pivot
Stars: ✭ 165 (-1.79%)
Mutual labels:  analytics
Komito
🔖 Komito Analytics is a free, open-source enhancement for the most popular web analytics software.
Stars: ✭ 148 (-11.9%)
Mutual labels:  analytics
Redisgears
Dynamic execution framework for your Redis data
Stars: ✭ 152 (-9.52%)
Mutual labels:  analytics
Swiggy Analytics
Analyse your swiggy orders 🍔
Stars: ✭ 163 (-2.98%)
Mutual labels:  analytics
Vue Analytics
Google Analytics plugin for Vue
Stars: ✭ 1,780 (+959.52%)
Mutual labels:  analytics
Jekyll Analytics
Plugin to easily add webanalytics to your jekyll site. Currently Google Analytics, Piwik and mPulse are supported.
Stars: ✭ 166 (-1.19%)
Mutual labels:  analytics
Save Analytics From Content Blockers
A proxy back end for Google Tag Manager & Google Analytics
Stars: ✭ 159 (-5.36%)
Mutual labels:  analytics
Lares
R Library for Analytics and Machine Learning
Stars: ✭ 164 (-2.38%)
Mutual labels:  analytics
Spark With Python
Fundamentals of Spark with Python (using PySpark), code examples
Stars: ✭ 150 (-10.71%)
Mutual labels:  analytics
Fili
Easily make RESTful web services for time series reporting with Big Data analytics engines like Druid and SQL Databases.
Stars: ✭ 151 (-10.12%)
Mutual labels:  analytics
Wordpress Sdk
Stars: ✭ 162 (-3.57%)
Mutual labels:  analytics
Web Vitals Reporter
Report Web Vitals to your API with one POST request per session.
Stars: ✭ 147 (-12.5%)
Mutual labels:  analytics
Countly Sdk Web
Countly Product Analytics SDK for websites and web applications
Stars: ✭ 165 (-1.79%)
Mutual labels:  analytics
Analytics React
[DEPRECATED AND UNSUPPORTED] The hassle-free way to integrate analytics into your React application.
Stars: ✭ 146 (-13.1%)
Mutual labels:  analytics
Goatcounter
Easy web analytics. No tracking of personal data.
Stars: ✭ 2,270 (+1251.19%)
Mutual labels:  analytics
Angulartics
Analytics for AngularJS applications.
Stars: ✭ 1,966 (+1070.24%)
Mutual labels:  analytics
Stacks Cli
📊 Analyze website stack from the terminal 💻
Stars: ✭ 1,962 (+1067.86%)
Mutual labels:  analytics
Stats
A well tested and comprehensive Golang statistics library package with no dependencies.
Stars: ✭ 2,196 (+1207.14%)
Mutual labels:  analytics

VueMatomo

npm vue2 vue3 npm bundle-size license

Link your Piwik/Matomo installation. Compatible with vue 2.x and 3.x.

Installation

npm install --save vue-matomo

Browser

<!-- Include after Vue -->
<!-- Local files -->
<script src="vue-matomo/dist/vue-matomo.js"></script>

<!-- From CDN -->
<script src="https://unpkg.com/vue-matomo"></script>

Usage

Bundler (Webpack, Rollup)

import Vue from 'vue'
import VueMatomo from 'vue-matomo'

Vue.use(VueMatomo, {
  // Configure your matomo server and site by providing
  host: 'https://matomo.example.com',
  siteId: 5,

  // Changes the default .js and .php endpoint's filename
  // Default: 'matomo'
  trackerFileName: 'matomo',

  // Overrides the autogenerated tracker endpoint entirely
  // Default: undefined
  // trackerUrl: 'https://example.com/whatever/endpoint/you/have',

  // Overrides the autogenerated tracker script path entirely
  // Default: undefined
  // trackerScriptUrl: 'https://example.com/whatever/script/path/you/have',

  // Enables automatically registering pageviews on the router
  router: router,

  // Enables link tracking on regular links. Note that this won't
  // work for routing links (ie. internal Vue router links)
  // Default: true
  enableLinkTracking: true,

  // Require consent before sending tracking information to matomo
  // Default: false
  requireConsent: false,

  // Whether to track the initial page view
  // Default: true
  trackInitialView: true,

  // Run Matomo without cookies
  // Default: false
  disableCookies: false,

  // Enable the heartbeat timer (https://developer.matomo.org/guides/tracking-javascript-guide#accurately-measure-the-time-spent-on-each-page)
  // Default: false
  enableHeartBeatTimer: false,

  // Set the heartbeat timer interval
  // Default: 15
  heartBeatTimerInterval: 15,

  // Whether or not to log debug information
  // Default: false
  debug: false,

  // UserID passed to Matomo (see https://developer.matomo.org/guides/tracking-javascript-guide#user-id)
  // Default: undefined
  userId: undefined,

  // Share the tracking cookie across subdomains (see https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains)
  // Default: undefined, example '*.example.com'
  cookieDomain: undefined,

  // Tell Matomo the website domain so that clicks on these domains are not tracked as 'Outlinks'
  // Default: undefined, example: '*.example.com'
  domains: undefined,

  // A list of pre-initialization actions that run before matomo is loaded
  // Default: []
  // Example: [
  //   ['API_method_name', parameter_list],
  //   ['setCustomVariable','1','VisitorType','Member'],
  //   ['appendToTrackingUrl', 'new_visit=1'],
  //   etc.
  // ]
  preInitActions: []
});

// Now you can access piwik api in components through
this.$matomo

// or
window._paq.push

// or through
window.Piwik.getTracker

For available operations see the matomo api docs

Note on async loading

This plugin loads the matomo.js asynchronously, which means it is possible that $matomo is not (yet) loaded. Furthermore anti-tracking plugins on browsers might block matomo.js entirely. You should always guard your calls to $matomo, or use window._paq.push:

this.$matomo && this.$matomo.trackPageView()

// Or...

window._paq.push(['trackPageView'])

Note on external link tracking

When using the option to trackExternalLinks, vue-matomo ensures the corresponding Matomo method is called after each navigation event. Matomo scans the entire DOM for external links and adds its link handling. This means that if your external links are rendered dynamically these links may not be picked up. You need to call this method manually if links might not exist after the page has finished rendering (for example if the links come from some REST call). For more information refer to https://developer.matomo.org/guides/spa-tracking#link-tracking

this.$matomo && this.$matomo.enableLinkTracking()

// Or...

window._paq.push(['enableLinkTracking'])

Nuxt

Nuxt can work by creating a plugin that will load VueMatomo with SSR disabled. Note how the router is passed in the second snippet:

// nuxt.config.js

export default {
  plugins: [
    { src: '~/plugins/vue-matomo.js', ssr: false }
  ]
}

// plugins/vue-matomo.js

import Vue from 'vue'
import VueMatomo from 'vue-matomo'

export default ({ app }) => {
  Vue.use(VueMatomo, {
    router: app.router

    /** Other configuration options **/
  })
}

Ignoring routes

It is possible to ignore routes using the route meta:

{
  path: '/page-2',
  name: 'Page2',
  component: Page2,
  meta: {
    analyticsIgnore: true
  }
}

Managing consent

First of all load the plugin with the requireConsent option enabled:

Vue.use(VueMatomo, {
  // ...
  requireConsent: true
})

Matomo has a built in way to give and remember consent. The simplest way is to simply use this method provided by Matomo:

<button @click="handleConsent()">Accept Cookies</button>

handleConsent() {
  this.$matomo.rememberConsentGiven()
}

Another option is to use your own implementation for remembering consent. In that case you can simply call this.$matomo.setConsentGiven() on each page load when you establish that the user has given consent.

Build

Bundle the js and css of to the dist folder:

npm run build

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].