Matomo Tracker (JavaScript)
Stand alone library for using Matamo tracking in frontend projects
Installation
npm install @datapunt/matomo-tracker-js
Usage
Before you're able to use this Matomo Tracker you need to initialize Matomo with your project specific details.
Initialize:
import MatomoTracker from '@datapunt/matomo-tracker-js'
const tracker = new MatomoTracker({
urlBase: 'https://LINK.TO.DOMAIN',
siteId: 3,
userId: 'UID76903202',
trackerUrl: 'https://LINK.TO.DOMAIN/tracking.php',
srcUrl: 'https://LINK.TO.DOMAIN/tracking.js',
disabled: false,
heartBeat: {
active: true,
seconds: 10
},
linkTracking: false,
alwaysUseSendBeacon: true,
configurations: {
disableCookies: true,
setSecureCookie: true,
setRequestMethod: 'POST'
}
})
After initialization you can use the Matomo Tracker to track events and page views like this:
import MatomoTracker from '@datapunt/matomo-tracker-js'
const tracker = new MatomoTracker({
})
tracker.trackPageView()
tracker.trackEvent({
category: 'sample-page',
action: 'click-event',
name: 'test',
value: 123,
})
tracker.trackLink({
href: 'https://link-to-other-website.org',
})
Advanced usage
By default the Matomo Tracker will send the window's document title and location, but you're able to send your own values. Also, custom dimensions can be used:
import MatomoTracker from '@datapunt/matomo-tracker-js'
const tracker = new MatomoTracker({
})
tracker.trackPageView({
documentTitle: 'Page title',
href: 'https://LINK.TO.PAGE',
customDimensions: [
{
id: 1,
value: 'loggedIn',
},
],
})
tracker.trackEvent({
category: 'sample-page',
action: 'click-event',
name: 'test',
value: 123,
documentTitle: 'Page title',
href: 'https://LINK.TO.PAGE',
customDimensions: [
{
id: 1,
value: 'loggedIn',
},
],
})
tracker.trackLink({
href: 'https://link-to-your-file.pdf',
linkType: 'download',
})
Next to the tracking of events, this project also supports tracking site searches:
import MatomoTracker from '@datapunt/matomo-tracker-js'
const tracker = new MatomoTracker({
})
tracker.trackSiteSearch({
keyword: 'test',
category: 'blog',
count: 4,
documentTitle: 'Page title',
href: 'https://LINK.TO.PAGE',
customDimensions: [
{
id: 1,
value: 'loggedIn',
},
],
})
Or if you want to stay away from inline JavaScript events, this project can be used to track events from buttons with data attributes:
HTML5 data-attributes
<button
data-matomo-event="click"
data-matomo-category="sample-page"
data-matomo-action="click-event"
data-matomo-name="test" // optional
data-matomo-value="123" // optional, numerical value
type="button">
Track me!
</button>
import MatomoTracker from '@datapunt/matomo-tracker-js'
const tracker = new MatomoTracker({
})
tracker.trackEvents()
tracker.trackPageView()
References