https://github.com/peerigon/piwik-wrap
A Promise-based wrapper for the Piwik JavaScript Tracking Client providing an enjoyable API
https://github.com/peerigon/piwik-wrap
Last synced: 6 months ago
JSON representation
A Promise-based wrapper for the Piwik JavaScript Tracking Client providing an enjoyable API
- Host: GitHub
- URL: https://github.com/peerigon/piwik-wrap
- Owner: peerigon
- Created: 2015-10-17T08:24:07.000Z (over 10 years ago)
- Default Branch: dev
- Last Pushed: 2020-08-27T13:07:10.000Z (almost 6 years ago)
- Last Synced: 2025-09-28T19:49:09.905Z (9 months ago)
- Language: JavaScript
- Size: 144 KB
- Stars: 8
- Watchers: 16
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# piwik-wrap
**A Promise-based wrapper for the Piwik JavaScript Tracking Client providing an enjoyable API**
piwik-wrap wraps the Piwik [JavaScript Tracking Client](http://developer.piwik.org/api-reference/tracking-javascript) and
provides an easy to use API for non- and Single Page Applications without polluting global namespace.
All [JavaScript Tracking Client](http://developer.piwik.org/api-reference/tracking-javascript) methods are directly
accessible through piwik-wrap.
## usage
### .init()
Before any other call Piwik must be initialized.
```javascript
// client bootstrapping
import Piwik from "piwik-wrap";
// ... some other imports and declarations
Piwik.init("https://my.piwik-instance.com", siteId);
```
### .loadScript()
`.loadScript()` returns a `Promise` and initializes the `Promise`-chain.
```javascript
Piwik.init("https://my.piwik-instance.com", siteId)
.loadScript()
.catch((err) => console.error(err));
```
### .then()
```javascript
// e.g. in a Controller
var Piwik = require("piwik-wrap");
// ...
Piwik
.init("https://my.piwik-instance.com", siteId)
.loadScript()
.then(() => Piwik.setDocumentTitle(document.title)
.then(() => Piwik.setCustomUrl(document.location.href))
.then(() => Piwik.trackPageView());
```
### .queue()
It is also possible to use `.queue()` if you are unfamiliar with Promises.
```javascript
// client bootstrapping
import Piwik from "piwik-wrap";
// ...
Piwik.init("https://my.piwik-instance.com", siteId).loadScript();
// app.js
class App {
// ...
changePage() {
Piwik.queue("Piwik.setDocumentTitle", document.title)
.queue("setCustomUrl", "document.location.href")
.queue("trackPageView");
}
// ...
}
```
### .p
```javascript
// client bootstrapping
import Piwik from "piwik-wrap";
// ...
Piwik.init("https://my.piwik-instance.com", siteId).loadScript();
// PageA.js
class Page {
// ...
initTracking() {
const link = document.querySelector("#trackThisLink");
link.addEventListener("click", (e) => {
Piwik.p.then(() => Piwik.trackLink(e.target.getAttribute("href") "linkType");
}, false)
}
// ...
}
// PageComponent.js
import React from "react";
import Piwik frtom "piwik-wrap";
const PageComponent = React.createClass({
// ...
componentDidMount() {
Piwik.p
.then(() => Piwik.setDocumentTitle(document.title))
.then(() => Piwik.setCustomUrl(document.location.href))
.then(() => Piwik.trackPageView());
}
// ...
});
```
### Piwik-API-Reference
Check: [JavaScript Tracking Client](http://developer.piwik.org/api-reference/tracking-javascript).
---
## Sponsors
[
](https://peerigon.com)