diff --git a/README.md b/README.md
index 961b004..39e071d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
[![Nuxt][nuxt-src]][nuxt-href]
[![Wide Angle][wideangle-src]][wideangle-href]
-
+
# Wide Angle Analytics module for Nuxt
@@ -52,10 +52,11 @@ option|description|required|default|example
siteId| The Site ID from the Wide Angle Site settings| :white_check_mark: | _none_ | 8D27G3B9ACA01F4241
domain| Domain hosting the script, can be found in Wide Angle Analytics Site settings | :x: | stats.wideangle.co | your.domain.com
fingerprint | Should script use browser fingerprinting; this might require collecting consent depending on the applicable laws | :x: | false | true
-supressDnt | Should script ingore Do Not Track browser setting. If not enabled, no events will be sent if user's browser has DNT enabled | :x: | false | true
+suppressDnt | Should script ingore Do Not Track browser setting. If not enabled, no events will be sent if user's browser has DNT enabled | :x: | false | true
includeParams | An array of query parameters that can be passed as part of tracking event. By default only `utm_*` and `ref` parameters are passed in the event | :x: | `[]` | `['sessionId', 'offset']`
excludePaths | An array of URL paths that should not trigger default events such as page view, page leave | :x: | `[]` | `['^/wp-admin/.*', ]`
ignoreHash | If enabled, a change in the URL fragment will not trigger page view event | :x: | false | true
+consentMarket | Name of cookie (with or without) which presence is treated as implied consent; when not defined, consent is not determined by cookie | :x: | n/a | `WAA_CONSENT=true`
You can find more details about these settings in the [Wide Angle Analytics documentation](https://wideangle.co/documentation/configure-site).
@@ -72,10 +73,11 @@ export default defineNuxtConfig({
siteId: "8D27G3B9ACA01F4241",
domain: "your.domain.com",
fingerprint: false,
- supressDnt: true,
+ suppressDnt: true,
includeParams: ['q', 'customerId'],
excludePaths: ['^/admin.*'],
- ignoreHash: true
+ ignoreHash: true,
+ consentMarker: `WAA_CONSENT=true`
}
}
}
@@ -88,7 +90,8 @@ export default defineNuxtConfig({
The Wide Angle Analytics provides an instance of `waa` which can be then injected to your component.
```javascript
-useWaaEvent('purchase', {'basket_element': 'dress'}, {'basket_item_price': 123.44});
+const waa = useWaa();
+waa.dispatchEvent('purchase', {'basket_element': 'dress'}, {'basket_item_price': 123.44});
```
You will find a fully functional example in this [repository](playground/app.vue).
@@ -129,13 +132,16 @@ Example:
```
@@ -143,6 +149,61 @@ const sendEvent = async () => {
### Module Assets
You can find a high-resolution Wide Angle Analytics logo and icon on our [media page](https://wideangle.co/media).
+# Recording consent
+
+The Wide Angle Analytics, thanks to is privacy-first, anonymous approach to web traffic analytics does not requires consent by default.
+
+However, we do offer multiple tools that support collecting consent should it be required in your use case.
+
+## Opt-Out by default
+
+If the visitors browsers has `DoNotTrack` setting enabled in the browser, it will be understood as opt-out and not tracking events will be issued.
+
+You website can't overwrite this behaviour by specifying `suppressDnt` setting.
+
+```javascript
+wideangle: {
+ siteId: "8D27G3B9ACA01F4241",
+ suppressDnt: true
+}
+```
+
+## Opt-In or Opt-Out based on Cookie
+
+Wide Angle can be configure to handle presence of a cookie, or a cookie with specific value, as an implicit consent. Lack of the cookie will be handled as implicit opt-out.
+
+Example configuration with cookie marker, expecting cookie name `WAA_CONSENT` with value `true`:
+
+```javascript
+wideangle: {
+ siteId: "8D27G3B9ACA01F4241",
+ consentMarker: "WAA_CONSENT=true"
+}
+```
+
+## Programmatic consent
+
+The Wide Angle serving offers two additional methods, which allow for recording tracking consent:
+
+- `recordConsent(subjectId: String): void`, and
+- `revokeConsent()`
+
+
+Calling above methods on `waa` service will overwrite other consent mechanism (ie. DoNotTrack, and cookie marker).
+
+Example usage:
+
+```vue
+
+```
diff --git a/assets/full_logo_color_light_transparent.png b/assets/full_logo_color_light_transparent.png
new file mode 100755
index 0000000..6f98b15
Binary files /dev/null and b/assets/full_logo_color_light_transparent.png differ
diff --git a/package.json b/package.json
index db560cb..0c1a6e1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wideangle-nuxt",
- "version": "1.2.2",
+ "version": "2.0.0",
"description": "Wide Angle Analytics module for Nuxt",
"repository": "wideangleanalytics/wideangle-nuxt",
"author": "Wide Angle Analytics ",
@@ -39,7 +39,7 @@
},
"dependencies": {
"@nuxt/kit": "^3.13.2",
- "wideangle-vuejs": "1.0.1",
+ "wideangle-vuejs": "2.0.0",
"defu": "^6.1.2"
},
"devDependencies": {
diff --git a/src/module.ts b/src/module.ts
index 2ca3082..cdd70f7 100644
--- a/src/module.ts
+++ b/src/module.ts
@@ -8,10 +8,11 @@ export interface ModuleOptions {
siteId?: string
domain: string
fingerprint: boolean
- supressDnt: boolean
+ suppressDnt: boolean
includeParams: string[]
excludePaths: string[]
ignoreHash: boolean
+ consentMarker: string
}
export default defineNuxtModule({
@@ -25,10 +26,11 @@ export default defineNuxtModule({
defaults: {
domain: "stats.wideangle.co",
fingerprint: false,
- supressDnt: false,
+ suppressDnt: false,
includeParams: [],
excludePaths: [],
- ignoreHash: false
+ ignoreHash: false,
+ consentMarker: null
},
setup (options, nuxt) {
const runtimeDir = fileURLToPath(new URL('./runtime', import.meta.url))
diff --git a/src/runtime/composables/useWaa.ts b/src/runtime/composables/useWaa.ts
new file mode 100644
index 0000000..3d6f53e
--- /dev/null
+++ b/src/runtime/composables/useWaa.ts
@@ -0,0 +1,8 @@
+import { useNuxtApp } from '#imports';
+
+function useWaa() {
+ const waa = useNuxtApp().$waa;
+ return waa.value;
+}
+
+export useWaa;
diff --git a/src/runtime/composables/useWaaEvent.ts b/src/runtime/composables/useWaaEvent.ts
deleted file mode 100644
index 6deabe0..0000000
--- a/src/runtime/composables/useWaaEvent.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { useNuxtApp } from '#imports';
-
-export function useWaaEvent (name: string, params?: Record, values?: Record) {
- const waa = useNuxtApp().$waa
- console.debug(`[WAA] Attempting to send Wide Angle event: ${name}`);
- if(waa && waa.value) {
- waa.value.dispatchEvent(name, params, values);
- } else {
- console.debug("[WAA] Wide Angle Analytics is not yest initialized");
- }
-}