From 9b52101170e3abf817feea8695b8e74d9c0eb571 Mon Sep 17 00:00:00 2001 From: Matus Tomlein Date: Mon, 28 Oct 2024 12:35:59 +0100 Subject: [PATCH] Add docs and migration guide for JS tracker v4 (#1047) --- .../node-js-tracker/migration-guides/index.md | 11 + .../v3-to-v4-migration-guide/index.md | 32 + .../api-reference.md | 0 .../configuration/index.md | 0 .../node-js-tracker-v4/index.md | 21 + .../initialization/index.md | 127 ++ .../node-js-tracker-v4/setup/index.md | 29 + .../tracking-events/index.md | 0 .../node-js-tracker-v3/api-reference.md | 6 + .../node-js-tracker-v3/configuration/index.md | 213 ++ .../node-js-tracker-v3/index.md | 0 .../initialization/index.md | 2 +- .../node-js-tracker-v3/setup/index.md | 0 .../tracking-events/index.md | 189 ++ .../web-tracker/anonymous-tracking/index.md | 2 - .../configuring-how-events-sent/index.md | 90 +- .../configuring-cookies/index.md | 15 +- .../global-context/index.md | 97 +- .../v3-to-v4-migration-guide/index.md | 207 ++ .../creating-your-own-plugins/index.md | 53 +- .../web-tracker/plugins/index.md | 79 +- .../index.md | 23 - .../advanced-usage/index.md | 13 - .../optional-timestamp-argument/index.md | 43 - .../advanced-usage/tracker-callbacks/index.md | 143 -- .../javascript-tracker-v3/index.md | 18 - .../plugins/ad-tracking/index.md | 39 - .../plugins/browser-features/index.md | 37 - .../Screenshot-2021-03-28-at-19.57.59.png | Bin 51113 -> 0 bytes .../Screenshot-2021-03-28-at-19.58.43.png | Bin 50134 -> 0 bytes .../plugins/client-hints/index.md | 45 - .../Screenshot-2021-03-28-at-20.04.43.png | Bin 37770 -> 0 bytes .../plugins/consent/index.md | 43 - .../creating-your-own-plugins/index.md | 38 - .../plugins/debugger/index.md | 63 - .../plugins/ecommerce/index.md | 39 - .../plugins/enhanced-consent/index.md | 186 -- .../plugins/enhanced-ecommerce/index.md | 39 - .../plugins/error-tracking/index.md | 39 - .../plugins/form-tracking/index.md | 39 - .../Screenshot-2021-03-30-at-22.12.03.png | Bin 16320 -> 0 bytes .../plugins/ga-cookies/index.md | 39 - .../Screenshot-2021-03-30-at-22.25.13.png | Bin 61133 -> 0 bytes .../plugins/geolocation/index.md | 44 - .../javascript-tracker-v3/plugins/index.md | 43 - .../plugins/link-click-tracking/index.md | 39 - .../plugins/media-tracking/index.md | 290 --- .../plugins/media/index.md | 43 - .../plugins/optimizely-classic/index.md | 60 - .../plugins/optimizely-x/index.md | 39 - .../performance-navigation-timing/index.md | 51 - .../plugins/performance-timing/index.md | 39 - .../plugins/privacy-sandbox/index.md | 49 - .../plugins/site-tracking/index.md | 39 - .../plugins/snowplow-ecommerce/index.md | 726 ------ .../plugins/timezone/index.md | 35 - .../plugins/web-vitals/index.md | 56 - .../tracker-setup/additional-options/index.md | 168 -- .../tracker-setup/index.md | 15 - .../initialization-options/index.md | 496 ---- .../tracker-setup/loading/index.md | 18 - .../managing-multiple-trackers/index.md | 88 - .../Screenshot-2021-03-25-at-16.55.21.png | Bin 33031 -> 0 bytes .../tracking-events/index.md | 1992 ----------------- .../anonymous-tracking/index.md | 272 +++ .../browsers}/index.md | 69 +- .../configuring-how-events-sent/index.md | 238 ++ .../configuring-cookies/index.md | 125 ++ .../getting-cookie-values/index.md | 161 ++ .../cookies-and-local-storage/index.md | 81 + .../cross-domain-tracking/index.md | 26 + .../global-context/index.md | 341 +++ .../custom-tracking-using-schemas/index.md | 255 +++ .../web-trackers-v3/example-app.md | 6 + .../web-trackers-v3/index.md | 25 + .../browser/index.md | 97 + .../configuring-tracker-plugins/index.md | 14 + .../javascript}/index.md | 57 +- .../creating-your-own-plugins/index.md | 139 ++ .../web-trackers-v3/plugins/index.md | 111 + .../quick-start-guide/index.md | 157 ++ .../Screenshot-2021-03-28-at-20.08.35.png | Bin .../testing-debugging/index.md | 81 + .../index.md | 22 + .../images/search_snowplow_v3_settings.png | Bin 0 -> 16886 bytes .../v3-settings-variable/index.md | 40 + .../images/01_ecommerce_api.png | Bin 0 -> 16180 bytes .../images/02_ga4_tracking_parameters.png | Bin 0 -> 19184 bytes .../images/02_sp_tracking_parameters.png | Bin 0 -> 31292 bytes .../images/02_ua_tracking_parameters.png | Bin 0 -> 21037 bytes .../images/04_tracker_plugin_settings.png | Bin 0 -> 27675 bytes .../ecommerce-tag-configuration/index.md | 98 + .../v3-tags/ecommerce-tag-template/index.md | 32 + .../v3-tags/index.md | 13 + .../images/adding_parameters_manually.png | Bin 0 -> 85191 bytes .../images/additional_tracking_parameters.png | Bin 0 -> 21228 bytes .../enableAnonymousTracking_argument.png | Bin 0 -> 57382 bytes ...nableAnonymousTracking_custom_variable.png | Bin 0 -> 162642 bytes .../images/host_drop_down_no_load.png | Bin 0 -> 10925 bytes .../images/load_plugins.png | Bin 0 -> 33643 bytes .../images/modifying_breaks_gallery_link.png | Bin 0 -> 27242 bytes .../images/modifying_permissions.png | Bin 0 -> 186384 bytes .../images/search_snowplow_v3.png | Bin 0 -> 15140 bytes .../tag-template-guide/images/setUserId.png | Bin 0 -> 68566 bytes .../images/tracker_initialization.png | Bin 0 -> 26811 bytes .../v3-tags/tag-template-guide/index.md | 173 ++ .../v3-tags/tag-template-guide/plugins.md | 87 + .../creating-a-whitelabel-build/index.md | 0 .../hosting-the-javascript-tracker/index.md | 23 + .../images/s3-upload.png | Bin 0 -> 295998 bytes .../index.md | 124 + .../index.md | 101 + .../third-party-cdn-hosting/index.md | 30 + .../web-trackers-v3/tracker-setup/index.md | 66 + .../initialization-options/index.md | 200 ++ .../managing-multiple-trackers/index.md | 188 ++ .../index.md | 54 + .../activity-page-pings/index.md | 351 +++ .../tracking-events/ads/index.md | 328 +++ .../tracking-events/button-click/index.md | 325 +++ .../tracking-events/campaigns-utms/index.md | 54 + .../tracking-events/client-hints/index.md | 92 + .../tracking-events/consent-gdpr/index.md | 374 ++++ .../consent-gdpr/original/index.md | 18 +- .../ecommerce/enhanced/index.md | 368 +++ .../tracking-events/ecommerce/index.md | 1429 ++++++++++++ .../ecommerce/original/index.md | 8 +- .../tracking-events/errors/index.md | 210 ++ .../images/implement_tracking.png | Bin 0 -> 121184 bytes .../event-specifications/index.md | 104 + .../tracking-events/focalmeter/index.md | 107 + .../tracking-events/form-tracking/index.md | 477 ++++ .../tracking-events/ga-cookies/index.md | 164 ++ .../web-trackers-v3/tracking-events/index.md | 507 +++++ .../tracking-events/link-click/index.md | 423 ++++ .../tracking-events/media/html5/index.md | 473 ++++ .../tracking-events/media/index.md | 32 + .../tracking-events/media/snowplow/index.md | 81 + .../tracking-events/media/vimeo}/index.md | 224 +- .../tracking-events/media/youtube}/index.md | 188 +- .../tracking-events/optimizely/index.md | 169 ++ .../tracking-events/page-views/index.md | 247 ++ .../tracking-events/privacy-sandbox/index.md | 72 + .../tracking-events/session/index.md | 103 + .../tracking-events/site-search/index.md | 102 + .../tracking-events/social-media/index.md | 121 + .../timezone-geolocation/index.md | 138 ++ .../tracking-events/timings/generic/index.md | 102 + .../performance_navigation_timeline.png | Bin .../tracking-events/timings/index.md | 155 ++ .../tracking-events/web-vitals/index.md | 86 + .../initialization-options/index.md | 25 +- .../tracking-events/button-click/index.md | 2 +- .../tracking-events/client-hints/index.md | 2 +- .../tracking-events/consent-gdpr/index.md | 8 +- .../ecommerce/enhanced/index.md | 6 +- .../tracking-events/ecommerce/index.md | 2 +- .../tracking-events/form-tracking/index.md | 105 +- .../tracking-events/ga-cookies/index.md | 77 +- .../tracking-events/link-click/index.md | 62 +- .../tracking-events/media/html5/index.md | 400 ++-- .../tracking-events/media/index.md | 4 +- .../tracking-events/media/youtube/index.md | 387 +++- .../tracking-events/optimizely/index.md | 109 +- .../tracking-events/timings/index.md | 12 +- .../tracking-events/web-vitals/index.md | 2 +- .../ootb-data/consent-events/index.md | 2 +- .../configuration/sources/pubsub.md | 2 +- .../configuration/targets/pubsub.md | 2 +- .../tracking/cookies-and-ad-blockers/index.md | 2 +- .../dbt-configuration/ecommerce/index.mdx | 2 +- .../legacy/fractribution/index.mdx | 2 +- .../dbt-configuration/legacy/mobile/index.mdx | 2 +- .../dbt-configuration/legacy/web/index.mdx | 2 +- .../dbt-configuration/media-player/index.mdx | 2 +- .../dbt-configuration/normalize/index.mdx | 2 +- .../dbt-configuration/unified/index.mdx | 2 +- .../dbt-configuration/utils/index.mdx | 2 +- .../index.md | 5 + .../dbt-quickstart/ecommerce/index.md | 2 +- .../dbt-quickstart/media-player/index.md | 2 +- .../dbt-quickstart/unified/index.md | 2 +- src/componentVersions.js | 2 +- static/_redirects | 6 +- 184 files changed, 12712 insertions(+), 6061 deletions(-) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/v3-to-v4-migration-guide/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{node-js-tracker-v3 => node-js-tracker-v4}/api-reference.md (100%) rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{node-js-tracker-v3 => node-js-tracker-v4}/configuration/index.md (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/initialization/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{node-js-tracker-v3 => node-js-tracker-v4}/tracking-events/index.md (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/api-reference.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/configuration/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{ => node-js-tracker}/node-js-tracker-v3/index.md (100%) rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{ => node-js-tracker}/node-js-tracker-v3/initialization/index.md (98%) rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/{ => node-js-tracker}/node-js-tracker-v3/setup/index.md (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/tracking-events/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/migration-guides/v3-to-v4-migration-guide/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/getting-the-most-out-of-performance-timing/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/optional-timestamp-argument/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/tracker-callbacks/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ad-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/browser-features/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.57.59.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.58.43.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/images/Screenshot-2021-03-28-at-20.04.43.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/creating-your-own-plugins/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ecommerce/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-consent/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-ecommerce/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/error-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/form-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/images/Screenshot-2021-03-30-at-22.12.03.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/images/Screenshot-2021-03-30-at-22.25.13.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/link-click-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/media-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/media/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/optimizely-classic/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/optimizely-x/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/performance-navigation-timing/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/performance-timing/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/privacy-sandbox/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/site-tracking/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/snowplow-ecommerce/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/timezone/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/web-vitals/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/loading/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/managing-multiple-trackers/index.md delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracking-events/images/Screenshot-2021-03-25-at-16.55.21.png delete mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracking-events/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/anonymous-tracking/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/advanced-usage/using-an-id-service => web-trackers-v3/browsers}/index.md (63%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/configuring-how-events-sent/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/configuring-cookies/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/getting-cookie-values/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cross-domain-tracking/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/global-context/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/example-app.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/browser/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/plugins/bundling-a-custom-plugin-selection => web-trackers-v3/plugins/configuring-tracker-plugins/javascript}/index.md (69%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/creating-your-own-plugins/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/quick-start-guide/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/plugins/debugger => web-trackers-v3/testing-debugging}/images/Screenshot-2021-03-28-at-20.08.35.png (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/images/search_snowplow_v3_settings.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/01_ecommerce_api.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ga4_tracking_parameters.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_sp_tracking_parameters.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ua_tracking_parameters.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/04_tracker_plugin_settings.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/adding_parameters_manually.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/additional_tracking_parameters.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/enableAnonymousTracking_argument.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/enableAnonymousTracking_custom_variable.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/host_drop_down_no_load.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/load_plugins.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/modifying_breaks_gallery_link.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/modifying_permissions.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/search_snowplow_v3.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/setUserId.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/tracker_initialization.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/plugins.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/advanced-usage => web-trackers-v3/tracker-setup/hosting-the-javascript-tracker}/creating-a-whitelabel-build/index.md (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/images/s3-upload.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-on-google-cloud/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/initialization-options/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/managing-multiple-trackers/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/snowplow-plugin-for-analytics-npm-package/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/activity-page-pings/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ads/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/button-click/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/campaigns-utms/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/client-hints/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/{ => previous-versions/web-trackers-v3}/tracking-events/consent-gdpr/original/index.md (92%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/enhanced/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/{ => previous-versions/web-trackers-v3}/tracking-events/ecommerce/original/index.md (94%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/errors/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/event-specifications/images/implement_tracking.png create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/event-specifications/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/focalmeter/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/form-tracking/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ga-cookies/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/link-click/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/html5/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/snowplow/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/plugins/vimeo-tracking => web-trackers-v3/tracking-events/media/vimeo}/index.md (58%) rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/plugins/youtube-tracking => web-trackers-v3/tracking-events/media/youtube}/index.md (60%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/optimizely/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/page-views/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/privacy-sandbox/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/session/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/site-search/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/social-media/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/timezone-geolocation/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/timings/generic/index.md rename docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/{javascript-tracker-v3/plugins/performance-navigation-timing => web-trackers-v3/tracking-events/timings}/images/performance_navigation_timeline.png (100%) create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/timings/index.md create mode 100644 docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/web-vitals/index.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/index.md new file mode 100644 index 0000000000..27b702eba7 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/index.md @@ -0,0 +1,11 @@ +--- +title: "Migration guides" +date: "2021-04-12" +sidebar_position: 4800 +--- + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; + + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/v3-to-v4-migration-guide/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/v3-to-v4-migration-guide/index.md new file mode 100644 index 0000000000..0862127abf --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/migration-guides/v3-to-v4-migration-guide/index.md @@ -0,0 +1,32 @@ +--- +title: "Migrating from v3 to v4" +sidebar_position: 1100 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Version 4 is a major release with several breaking changes to defaults and behavior. + +## Behavior changes + +### Removed the use of the got library in favor of fetch + +The tracker no longer needs the got library for making HTTP requests to the collector. +This has been replaced with the [fetch API](https://nodejs.org/dist/latest-v18.x/docs/api/globals.html). +The change has an effect on the public API of the tracker which had to previously accommodate the got library – the following change results from this. + +### Removed `tracker` and `emitter` functions in favor or `newTracker` + +The initialization of a tracker instance has changed – instead of initializing an emitter (using `gotEmitter`) and tracker (using `tracker`) separately, the SDK handles initialization of both using the `newTracker` call. +The `newTracker` call now accepts configuration objects for the tracker and emitter as arguments. + +[See the new initialization options here.](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/initialization/) + +### Dropped support for older Node.JS + +The support for the following Node.JS versions has been dropped: + +* Drop Node.js <18 support diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/api-reference.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/api-reference.md similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/api-reference.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/api-reference.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/configuration/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/configuration/index.md similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/configuration/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/configuration/index.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/index.md new file mode 100644 index 0000000000..c913d4b694 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/index.md @@ -0,0 +1,21 @@ +--- +title: "Node.js Tracker v4" +date: "2021-03-24" +sidebar_position: 200 +--- + +```mdx-code-block +import Badges from '@site/src/components/Badges'; + + +``` + +The Snowplow Node.js Tracker allows you to track Snowplow events from your Node.js applications. + +The tracker should be straightforward to use if you are comfortable with JavaScript development; any prior experience with other Snowplow trackers is helpful but not necessary. + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; + + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/initialization/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/initialization/index.md new file mode 100644 index 0000000000..6c9c0e82e8 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/initialization/index.md @@ -0,0 +1,127 @@ +--- +title: "Initialization" +date: "2021-04-07" +sidebar_position: 2000 +--- + +Assuming you have completed the [Node.js Tracker Setup](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md) for your project, you are now ready to initialize the Tracker. + +Require the Node.js Tracker module into your code like so: + +```javascript +const snowplow = require('@snowplow/node-tracker'); +const tracker = snowplow.newTracker( /* ... */ ); +``` + +or, if using ES Modules, you can import the module like so: + +```javascript +import { newTracker } from '@snowplow/node-tracker'; +``` + +The `newTracker` call takes 2 arguments – the tracker and emitter configuration. The tracker configuration specifies the tracker namespace and app name. The emitter configuration specifies how events are queued locally and sent to the Snowplow collector. + +```javascript +const tracker = newTracker({ + namespace: "my-tracker", // Namespace to identify the tracker instance. It will be attached to all events which the tracker fires. + appId: "my-app", // Application identifier + encodeBase64: false, // Whether to use base64 encoding for the self-describing JSON. Defaults to true. +}, { + endpoint: "https://collector.mydomain.net", // Collector endpoint + eventMethod: "post", // Method - defaults to POST + bufferSize: 1, // Only send events once n are buffered. Defaults to 1 for GET requests and 10 for POST requests. +}); +``` + +There are a number of additional parameters that may optionally be configured. +Please refer to the following API docs for the full list: + +1. [Tracker configuration options](https://snowplow.github.io/snowplow-javascript-tracker/docs/node-tracker/markdown/node-tracker.trackerconfiguration). +2. [Emitter configuration options](https://snowplow.github.io/snowplow-javascript-tracker/docs/node-tracker/markdown/node-tracker.emitterconfigurationbase). + +### Using multiple Emitters + +In case you want to send the events to multiple Snowplow collectors, you can provide a list of emitter configurations in the `newTracker` call – one for each collector. +This may look as follows. + +```javascript +const tracker = newTracker({ + namespace: "my-tracker", // Namespace to identify the tracker instance. It will be attached to all events which the tracker fires. + appId: "my-app", // Application identifier + encodeBase64: false, // Whether to use base64 encoding for the self-describing JSON. Defaults to true. +}, [ + { + endpoint: "https://collector1.mydomain.net", // First collector endpoint + }, + { + endpoint: "https://collector2.mydomain.net", // Second collector endpoint + }, +]); +``` + +### Create your own Emitter + +Emitter is an object responsible for queuing tracked events and making requests to the Snowplow collector. + +By default, the Node tracker makes use of the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) to make the HTTP requests. +If you want to use a different library or logic for queuing and sending events, you can provide a custom `Emitter` implementation. + +Emitters must conform to an [`Emitter` interface](https://github.com/snowplow/snowplow-javascript-tracker/blob/master/trackers/node-tracker/docs/markdown/node-tracker.emitter.md), which looks like: + +```typescript +/** + * Emitter is responsible for sending events to the collector. + * It manages the event queue and sends events in batches depending on configuration. + */ +interface Emitter { + /** + * Forces the emitter to send all events in the event store to the collector. + * @returns A Promise that resolves when all events have been sent to the collector. + */ + flush: () => Promise; + /** + * Adds a payload to the event store or sends it to the collector. + * @param payload - A payload to be sent to the collector + * @returns Promise that resolves when the payload has been added to the event store or sent to the collector + */ + input: (payload: Payload) => Promise; + /** + * Updates the collector URL to which events will be sent. + * @param url - New collector URL + */ + setCollectorUrl: (url: string) => void; + /** + * Sets the server anonymization flag. + */ + setAnonymousTracking: (anonymous: boolean) => void; + /** + * Updates the buffer size of the emitter. + */ + setBufferSize: (bufferSize: number) => void; +} +``` + +Once you implement your own `Emitter`, you can pass it to the `newTracker` call as follows. + +```ts +export const expressTracker = newTracker( + { + namespace: "my-tracker", + appId: "my-app", + }, + { + customEmitter: () => ({ + input: (payload) => { + return Promise.resolve(); + }, + flush: () => { + return Promise.resolve(); + }, + setCollectorUrl: (url) => {}, + setAnonymousTracking: (anonymous) => {}, + setBufferSize: (bufferSize) => {}, + }), + } +); + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md new file mode 100644 index 0000000000..9ab79866f8 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md @@ -0,0 +1,29 @@ +--- +title: "Setup" +date: "2021-03-31" +sidebar_position: 1000 +--- + +## Compatibility + +The Snowplow Node.js Tracker is tested and compatible with Node.js versions from 18 to 20. Installation requires [npm](https://www.npmjs.org/), [pnpm](https://pnpm.js.org/) or [yarn](https://yarnpkg.com/). + +## Installation + +Setting up the tracker should be straightforward if you are familiar with npm: + +```bash +npm install @snowplow/node-tracker +``` + +alternative you can use pnpm or yarn: + +```bash +pnpm add @snowplow/node-tracker +``` + +```bash +yarn add @snowplow/node-tracker +``` + +The Snowplow Node.js Tracker is also **bundled with TypeScript types and interfaces** so will integrate easily with TypeScript applications. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/tracking-events/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/tracking-events/index.md similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/tracking-events/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/tracking-events/index.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/api-reference.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/api-reference.md new file mode 100644 index 0000000000..c9a73c6c10 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/api-reference.md @@ -0,0 +1,6 @@ +--- +type: link +title: API reference +sidebar_position: 5000 +href: https://snowplow.github.io/snowplow-javascript-tracker/docs/node-tracker/node-tracker.api +--- diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/configuration/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/configuration/index.md new file mode 100644 index 0000000000..1e30426143 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/configuration/index.md @@ -0,0 +1,213 @@ +--- +title: "Configuration" +date: "2021-04-07" +sidebar_position: 3000 +--- + +You may have additional information about your application's environment, current user and so on, which you want to send to your Snowplow pipeline with each event. + +#### Setting event properties + +The `tracker` instance has a set of `set...()` methods to attach extra data to all tracked events: + +- [`setPlatform()`](#set-the-platform-id-withsetplatform) +- [`setUserId()`](#set-user-id-withsetuserid) +- [`setDomainUserId()`](#set-domain-user-id-with-setdomainuserid) +- [`setSessionId()`](#set-session-id-with-setsessionid) +- [`setSessionIndex()`](#set-session-index-with-setsessionindex) +- [`setNetworkUserId()`](#set-network-user-id-with-setnetworkuserid) +- [`setScreenResolution()`](#set-screen-resolution-with-setscreenresolution) +- [`setViewport()`](#set-viewport-dimensions-withsetviewport) +- [`setColorDepth()`](#set-color-depth-withsetcolordepth) +- [`setTimezone()`](#set-the-timezone-withsettimezone) +- [`setLang()`](#set-the-language-withsetlang) +- [`setIpAddress()`](#set-the-ip-address-withsetipaddress)` +- [`setUseragent()`](#set-the-useragent-withsetuseragent)` + +### Set the platform ID with `setPlatform()` + +You can set the platform: + +```javascript +t.setPlatform('{{PLATFORM}}'); +``` + +Example: + +```javascript +t.setPlatform('mob'); +``` + +If the platform is not set manually, it defaults to `'srv'` (for server). + +For a full list of supported platforms, please see the [Snowplow Tracker Protocol](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md#application-parameters). + +### Set user ID with `setUserId()` + +You can set the user ID to any string: + +```javascript +t.setUserId('{{USER ID}}'); +``` + +Example: + +```javascript +t.setUserId('alexd'); +``` + +### Set domain user ID with `setDomainUserId()` + +You can set the domain user ID to any string: + +```javascript +t.setDomainUserId('{{DOMAIN USER ID}}'); +``` + +Example: + +```javascript +t.setDomainUserId('e8091074-f197-4279-a92e-71a34171d477'); +``` + +### Set session ID with `setSessionId()` + +You can set the session ID to any string: + +```javascript +t.setSessionId('{{SESSION ID}}'); +``` + +Example: + +```javascript +t.setSessionId('s8091074-f197-4279-a92e-71a34171d477'); +``` + +### Set session index with `setSessionIndex()` + +You can set the session index to any number: + +```javascript +t.setSessionIndex('{{SESSION INDEX}}'); +``` + +Example: + +```javascript +t.setSessionIndex(10); +/* t.setSessionIndex('10'); will also work as long as input string can be converted to a valid number. */ +``` + + +### Set network user ID with `setNetworkUserId()` + +You can set the network user ID to any string: + +```javascript +t.setNetworkUserId('{{NETWORK USER ID}}'); +``` + +Example: + +```javascript +t.setNetworkUserId('b98c76ad-e45c-45db-a101-224718064ac2'); +``` + +### Set screen resolution with `setScreenResolution()` + +If your code has access to the device's screen resolution, then you can pass this in to Snowplow too: + +```javascript +t.setScreenResolution( {{WIDTH}}, {{HEIGHT}} ); +``` + +Both numbers should be positive integers; note the order is width followed by height. Example: + +```javascript +t.setScreenResolution(1366, 768); +``` + +### Set viewport dimensions with `setViewport()` + +If your code has access to the device's screen resolution, then you can pass this in to Snowplow too: + +```javascript +t.setViewport( {{WIDTH}}, {{HEIGHT}} ); +``` + +Both numbers should be positive integers; note the order is width followed by height. Example: + +```javascript +t.setViewport(300, 200); +``` + +### Set color depth with `setColorDepth()` + +If your code has access to the bit depth of the device's color palette for displaying images, then you can pass this in to Snowplow too: + +```javascript +t.setColorDepth( {{BITS PER PIXEL}} ); +``` + +The number should be a positive integer, in bits per pixel. Example: + +```javascript +t.setColorDepth(32); +``` + +### Set the timezone with `setTimezone()` + +This method lets you pass a user's language in to Snowplow: + +```javascript +t.setTimezone( {{TIMEZONE}} ); +``` + +Example: + +```javascript +t.setTimezone('Europe/London'); +``` + +### Set the language with `setLang()` + +This method lets you pass a user's language in to Snowplow: + +```javascript +t.setLang( {{LANGUAGE}} ); +``` + +The number should be a positive integer, in bits per pixel. Example: + +```javascript +t.setLang('en'); +``` + +### Set the IP Address with `setIpAddress()` + +This method lets you set an IP Address on your events: + +```javascript +t.setIpAddress( {{IP ADDRESS}} ); +``` + +Example: + +```javascript +t.setIpAddress('192.168.0.1'); +``` + +### Set the Useragent with `setUseragent()` + +This method lets you override the default Useragent on your events: + +```javascript +t.setUseragent( {{USER AGENT}} ); +``` + +Example: + +```javascript +t.setUseragent('myapp/0.1.0'); +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/index.md similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/index.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/initialization/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/initialization/index.md similarity index 98% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/initialization/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/initialization/index.md index 1b3228dab4..259ce8144a 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/initialization/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/initialization/index.md @@ -4,7 +4,7 @@ date: "2021-04-07" sidebar_position: 2000 --- -Assuming you have completed the [Node.js Tracker Setup](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/setup/index.md) for your project, you are now ready to initialize the Tracker. +Assuming you have completed the [Node.js Tracker Setup](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v4/setup/index.md) for your project, you are now ready to initialize the Tracker. Require the Node.js Tracker module into your code like so: diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/setup/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/setup/index.md similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker-v3/setup/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/setup/index.md diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/tracking-events/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/tracking-events/index.md new file mode 100644 index 0000000000..7411a890e4 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/node-js-tracker/node-js-tracker/node-js-tracker-v3/tracking-events/index.md @@ -0,0 +1,189 @@ +--- +title: "Tracking Events" +date: "2021-04-07" +sidebar_position: 4000 +--- + +## Tracking specific events + +Snowplow has been built to enable you to track a wide range of events that occur when users interact with your websites and apps. + +Tracking methods supported by the Node.js Tracker at a glance: + +| **Function** | **Description** | +| --- | --- | +| [`track()`](#track-events-with-the-track-function) | Tracks an event generated from a build functions | +| [`buildScreenView()`](#track-screen-views-withbuildscreenview) | Track the user viewing a screen within the application | +| [`buildPageView()`](#track-pageviews-withbuildpageview) | Track and record views of web pages. | +| [`buildSelfDescribingEvent()`](#track-self-describing-events-withbuildselfdescribingevent) | Track a Snowplow custom self describing event | +| [`buildStructEvent()`](#track-structured-events-with-buildstructevent) | Track a Snowplow custom structured event | + +### Track events with the track() function + +All events are tracked through the `track()` function on the tracker instance. The type of event is determined by one of the event builder functions, which all begin as `build*()`. + +#### Optional arguments + +Each build method which is passed to the `track()` function has both default and optional arguments. If you don't want to provide a value for an optional argument, just ignore it in the object or pass `null` and it will be ignored. For example, if you want to track a page view event with a referrer but without a title: + +```javascript +t.track(buildPageView({ + pageUrl: 'http://www.example.com', + referrer: 'http://www.referer.com' +}); +``` + +#### Custom contexts + +In short, custom contexts let you add additional information about the circumstances surrounding an event. Each call to `track()` accepts an additional optional context parameter: + +```javascript +t.track(buildPageView({ + pageUrl: 'http://www.example.com', + referrer: 'http://www.referer.com' +}), +[]); // Array of custom contexts +``` + +The `context` argument should consist of an array of zero or more context objects. Each object should be a self-describing JSON following the same pattern as an self describing event. + +**Important:** Even if only one custom context is being attached to an event, it still needs to be wrapped in an array. + +If a visitor arrives on a page advertising a movie, the context dictionary might look like this: + +```json +{ + "schema": "iglu:com.acme_company/movie_poster/jsonschema/2-1-1", + "data": { + "movie_name": "Solaris", + "poster_country": "JP" + } +} +``` + +This is how to fire a page view event with the above custom context: + +```javascript +t.track(buildPageView({ + pageUrl: 'http://www.example.com', + referrer: 'http://www.referer.com' +}), +[{ + "schema": "iglu:com.acme_company/movie_poster/jsonschema/2-1-1", + "data": { + "movie_name": "Solaris", + "poster_country": "JP" + } +}]); +``` + +Note that even though there is only one custom context attached to the event, it still needs to be placed in an array. + +#### Timestamps + +Each `track()` call supports an optional timestamp as its final argument, after the context argument; this allows you to manually override the timestamp attached to this event. + +If you do not pass this timestamp in as an argument, then the Tracker will use the current time to be the timestamp for the event. + +Here is an example tracking a structured event and supplying the optional timestamp argument: + +```javascript +t.track(buildStructEvent({ + category: "game action", + action: "save" +}), [], 1368725287000); +``` + +Timestamp is counted in milliseconds since the Unix epoch - the same format as generated by `new Date().getTime()`. + +### Track screen views with `buildScreenView()` + +Use `buildScreenView()` to build a user viewing a screen (or equivalent) within your app. Arguments are: + +| **Argument** | **Description** | **Required?** | **Type** | +| --- | --- | --- | --- | +| `name` | Human-readable name for this screen | No | Non-empty string | +| `id` | Unique identifier for this screen | No | String | + +`name` and `id` are not individually required, but you must provide at least one of them. + +Example: + +```javascript +t.track(buildScreenView({ + name: "HUD > Save Game", + id: "screen23" +})); +``` + +### Track pageviews with `buildPageView()` + +Use `buildPageView()` to track a user viewing a page within your app. Arguments are: + +| **Argument** | **Description** | **Required?** | **Type** | +| --- | --- | --- | --- | +| `pageUrl` | The URL of the page | Yes | Non-empty string | +| `pageTitle` | The title of the page | No | String | +| `referrer` | The address which linked to the page | No | String | + +Example: + +```javascript +t.track(buildPageView({ + pageUrl: "www.example.com", + url: "example", + referrer: "www.referrer.com" +})); +``` + +### Track self describing events with `buildSelfDescribingEvent()` + +Use `buildSelfDescribingEvent()` to track a custom event which consists of a name and an unstructured set of properties. This is useful when you want to track event types which are proprietary/specific to your business (i.e. not already part of Snowplow). + +The arguments are as follows: + +| **Argument** | **Description** | **Required?** | **Type** | +| --- | --- | --- | --- | +| `event` | The self describing event definition | Yes | JSON | + +Example: + +```javascript +t.track(buildSelfDescribingEvent({ + event: { + schema: "iglu:com.example_company/save-game/jsonschema/1-0-2", + data: { + save_id: "4321", + level: 23, + difficultyLevel: "HARD", + dl_content: true + } + } +})); +``` + +The `event` property must be an object with two fields: `schema` and `data`. `data` is an object containing the properties of the self describing event. `schema` identifies the JSON schema against which `data` should be validated. + +### Track structured events with `buildStructEvent()` + +Use `buildStructEvent()` to track a custom event happening in your app which fits the Google Analytics-style structure of having up to five fields (with only the first two required): + +| **Argument** | **Description** | **Required?** | **Type** | +| --- | --- | --- | --- | +| `category` | The grouping of structured events which this `action` belongs to | Yes | Non-empty string | +| `action` | Defines the type of user interaction which this event involves | Yes | Non-empty string | +| `label` | A string to provide additional dimensions to the event data | No | String | +| `property` | A string describing the object or the action performed on it | No | String | +| `value` | A value to provide numerical data about the event | No | Number | + +Example: + +```javascript +t.track(buildStructEvent({ + category: "shop", + action: "add-to-basket", + label: "product", + property: "pcs", + value: 2 +})); +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/anonymous-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/anonymous-tracking/index.md index 387877c440..bb0b90854f 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/anonymous-tracking/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/anonymous-tracking/index.md @@ -67,8 +67,6 @@ Setting `stateStorageStrategy` to `cookieAndLocalStorage` or `localStorage` also Server Anonymisation requires the Snowplow Stream Collector v2.1.0+. Using a lower version will cause events to fail to send until Server Anonymisation is disabled. -Server Anonymisation will not work when the tracker is initialized with `eventMethod: 'beacon'` as it requires additional custom headers which beacon does not support. - ## Toggling anonymous tracking You may wish to toggle this functionality on or off during a page visit, for example when a user accepts a cookie banner you may not want to disable anonymous tracking, or when a user logs in to your site. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md index c1b2983222..f6c5125161 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md @@ -20,7 +20,9 @@ It's possible to add a fine-grained configuration for exactly how the web tracke ### Base64 encoding -By default, context entities and custom self-describing events are encoded into Base64 to ensure that no data is lost or corrupted. You can turn encoding on or off using the `encodeBase64` field of the [tracker configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). +Context entities and custom self-describing events can be encoded into Base64 to ensure that no data is lost or corrupted. You can turn encoding on or off using the `encodeBase64` field of the [tracker configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). + +This setting is enabled by default for GET requests. For POST requests, it is disabled by default as it doesn't provide the same benefits and can result in larger payload size and is more difficult to debug. ### Number of events per request @@ -63,14 +65,18 @@ customHeaders: { Set this in the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). -### Disabling `withCredentials` flag +### Disabling sending credentials with requests -From v3.2.0, it's now possible to turn off the `withCredentials` flag (in the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md)) on all requests to the collector. The default value is `true` which sets `withCredentials` to `true` on requests. Disabling this flag will have impact when using `eventMethod: "post"` and `eventMethod: "get"`. This flag has no effect on same site requests, but disabling it will prevent cookies being sent with requests to a Snowplow Collector running on a different domain. You can read more about this flag at [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials). +The `credentials` option in the tracker configuration controls whether cookies are sent with requests to a Snowplow Collector running on a different domain. +The default setting is `include` to always include the cookies. +The setting translates to the `credentials` option in the fetch API, see [the documentation here](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#including_credentials). ```json -withCredentials: false +credentials: 'omit' ``` +Before v4, this configuration was provided using the `withCredentials` flag. + ## Network protocol and method ### Setting the request protocol @@ -107,7 +113,7 @@ By default, events are sent by GET. This can be changed using the `eventMethod` If you set the `eventMethod` field of the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md) to `post`, the tracker will send events using POST requests rather than GET requests. In browsers which do not support cross-origin XMLHttpRequests (e.g. IE9), the tracker will fall back to using GET. -`eventMethod` defaults to `post`, other options available are `get` for GET requests and `beacon` for using the Beacon API (**Note**: Beacon support is not available and/or unreliable in some browsers, in these cases the tracker will fallback to POST). See below for more about Beacon API. +`eventMethod` defaults to `post`. `get` can be used for GET requests. The main advantage of POST requests is that they circumvent Internet Explorer’s maximum URL length of 2083 characters by storing the event data in the body of the request rather than the querystring. @@ -138,15 +144,25 @@ For instance, if you wish to send several events at once, you might make the API Note that if `localStorage` is inaccessible or you are not using it to store data, the buffer size will always be 1 to prevent losing events when the user leaves the page. -### Beacon API support +### `keepalive` option for Collector requests -The Beacon interface is used to schedule asynchronous and non-blocking requests to a web server. This will allow events to be sent even after a webpage is closed. This browser interface can be used to send events by setting the `eventMethod` field in the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md) to `beacon`. +The keepalive feature in the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) indicates that the request should be allowed to outlive the webpage that initiated it. +It enables requests to the Snowplow Collector to complete even if the page is closed or navigated away from. -Using Beacon will store a Session Cookie in the users browser for reliability reasons, and will always send the first request as a standard POST. This prevents data loss in a number of older browsers with broken Beacon implementations. +This option is disabled by default. -Note: the Beacon API makes POST requests. +:::note +Browsers put a limit on keepalive requests of 64KB. +You may control the size of the individual POST requests using the `maxPostBytes` option. +But in case of multiple keepalive requests in parallel (may happen in case of multiple trackers), the limit is shared between them and may cause the requests to fail. +::: -More information and documentation about the Beacon API can be found [here](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API). +```ts +let tracker = newTracker("...", "...", { + // ... + keepalive: true +}); +``` ### Custom POST path @@ -236,3 +252,57 @@ export type RequestFailure = { ``` The format of `EventBatch` is the same as the `onRequestSuccess` callback. + +## Custom tracker components and configuration + +### Custom event store + +Before events are sent to the Snowplow Collector, they are queued in an event store. +This ensures that events can be batched together and retried in case of network failures. + +By default, the tracker uses the browser local storage for the event store implementation. +It is possible to use an in memory event store or provide a custom event store implementation by setting the `eventStore` configuration option. + +```ts +import { newInMemoryEventStore } from '@snowplow/tracker-core'; + +let tracker = newTracker("...", "...", { + // ... + eventStore: newInMemoryEventStore({ + maxSize: 1000 + }) +}); +``` + +### Custom fetch function + +The tracker provides an option to override the [fetch function](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) used to make requests to the Snowplow Collector. +It may be useful in unit tests to test that requests are made without actually making them. +You may also want to wrap the fetch function to modify or monitor the requests. + +```ts +let tracker = newTracker("...", "...", { + // ... + customFetch: (input: RequestInfo, init?: RequestInit) => fetch(input, init) +}); +``` + +### Synchronous cookie writes + +Since v4 of the tracker, the tracker updates the user and session information in cookies asynchronously from the track calls (e.g., `trackPageView`). +The cookies are updated within 10ms of the track call and the read cookie values are cached for 50ms. +This strategy makes the track function take less time and avoid blocking the main thread of the app. + +It might be desirable to update cookies synchronously. +This can be useful for testing purposes to ensure that the cookies are written before the test continues. +It also has the benefit of making sure that the cookie is correctly set before session information is used in events. +The downside is that it is slower and blocks the main thread. + +To configure synchronous cookie updates, use the `synchronousCookieWrite` configuration option: + +```ts +let tracker = newTracker("...", "...", { + // ... + synchronousCookieWrite: true +}); +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/cookies-and-local-storage/configuring-cookies/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/cookies-and-local-storage/configuring-cookies/index.md index 8d34474e68..e805454f85 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/cookies-and-local-storage/configuring-cookies/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/cookies-and-local-storage/configuring-cookies/index.md @@ -33,7 +33,8 @@ If your website spans multiple subdomains e.g. You will want to track user behavior across all those subdomains, rather than within each individually. As a result, it is important that the domain for your first party cookies is set to ‘.mysite.com’ rather than ‘www.mysite.com’. By doing so, any values that are stored on the cookie on one of subdomain will be accessible on all the others. -Although it's possible to set this manually, we recommend that you enable automatic discovery and setting of the root domain, using the optional `discoverRootDomain` field of the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). If it is set to `true`, the tracker automatically discovers and sets the `configCookieDomain` value to the root domain. +Although it's possible to set this manually, we recommend that you enable automatic discovery and setting of the root domain, using the optional `discoverRootDomain` field of the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). +If it is set to `true` (the default), the tracker automatically discovers and sets the `configCookieDomain` value to the root domain. :::note If you have been setting this manually please note that the automatic detection does not prepend a ‘.’ to the domain. For example a root domain of “.mydomain.com” would become “mydomain.com”. This is because the library we use for setting cookies doesn’t care about the difference. @@ -41,7 +42,17 @@ If you have been setting this manually please note that the automatic detection **This will then result in a different domain hash, so we recommend that if you have been setting this manually with a leading ‘.’ to continue to do so manually.** ::: -To set the domain manually, use the `cookieDomain` field of the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). If this field is not set, the cookies will not be given a domain. +To set the domain manually, use the `cookieDomain` field of the [configuration object](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/initialization-options/index.md). +This will override the `discoverRootDomain` setting. + +:::warning +In earlier versions, `discoverRootDomain` was disabled by default, and enabling it would cause it to ignore the `cookieDomain` setting, if set. + +In v4 this is reversed: `discoverRootDomain` is now enabled by default, but will be ignored if `cookieDomain` is set. +When migrating from older versions, you may need to remove your `cookieDomain` configuration to maintain the earlier behavior. + +If you want the earlier default behavior where no domain at all is used, leave `cookieDomain` unset and explicitly set `discoverRootDomain` to `false`. +::: :::warning Changing the cookie domain will reset all existing cookies. As a result, it might be a major one-time disruption to data analytics because all visitors to the website will receive a new `domain_userid`. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/custom-tracking-using-schemas/global-context/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/custom-tracking-using-schemas/global-context/index.md index a7b1bdb911..a62efcac29 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/custom-tracking-using-schemas/global-context/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/custom-tracking-using-schemas/global-context/index.md @@ -255,9 +255,54 @@ And rules must meet some requirements to be considered valid: - `com.acme.*.marketing.*` is invalid - `com.acme.*.*` is valid +### Named global entities + +From version 4 onwards, you can alternatively supply the definitions as a mapping object. +This associates each global entity with a "name" or "tag" that can be used to reference it in future calls. + +For example, in the below we associate a global entity definition with the name `example`, and can then update or remove it by name in later calls. + + + + +```javascript +// add the entity defined by `globalContextDefinition` with the name "example" +var globalContextDefinition = [ruleSet, contextEntityToAdd]; +window.snowplow('addGlobalContexts', { example: globalContextDefinition }); + +// update the global entity named "example"; this replaces the entity from `globalContextDefinition` +var globalContextDefinition2 = [ruleSet, differentContextEntity]; +window.snowplow('addGlobalContexts', { example: globalContextDefinition2 }); + +// remove the global entity named "example"; it will no longer appear on subsequent events +window.snowplow('removeGlobalContexts', ["example"]); +``` + + + + +```javascript +// add the entity defined by `globalContextDefinition` with the name "example" +var globalContextDefinition = [ruleSet, contextEntityToAdd]; +addGlobalContexts({ example: globalContextDefinition }); + +// update the global entity named "example"; this replaces the entity from `globalContextDefinition` +var globalContextDefinition2 = [ruleSet, differentContextEntity]; +addGlobalContexts({ example: globalContextDefinition2 }); + +// remove the global entity named "example"; it will no longer appear on subsequent events +removeGlobalContexts(["example"]); +``` + + + + +Names can be whatever makes sense to you, but each name can only be associated with a single entity definition at a time (additions with the same name will replace the previous value). +The value for the named entity can be the same as unnamed global entities defined with the array method, including generator functions, filter functions, and rulesets and are processed equivalently. + ### Global contexts methods -These are the standard methods to add and remove global contexts: +These are the standard methods to add and remove global context entities: #### `addGlobalContexts` To add global contexts: @@ -265,12 +310,30 @@ To add global contexts: -`snowplow('addGlobalContexts', [array of global contexts])` +```javascript +// unnamed global entities +snowplow('addGlobalContexts', [array of global contexts]) + +// named global entities +snowplow('addGlobalContexts', { + name: globalContext1, + name2: globalContext2, +}) +``` - `addGlobalContexts([array of global contexts])` +```javascript +// unnamed global entities +addGlobalContexts([array of global contexts]) + +// named global entities +addGlobalContexts({ + name: globalContext1, + name2: globalContext2, +}) +``` @@ -282,17 +345,29 @@ To remove a global context: -`snowplow('removeGlobalContexts', [array of global contexts])` +```javascript +// unnamed global entities +snowplow('removeGlobalContexts', [array of global contexts]) + +// named global entities +snowplow('removeGlobalContexts', ["name", "name2"]) // array of entity names +``` -`removeGlobalContexts([array of global contexts])`. +```javascript +// unnamed global entities +removeGlobalContexts([array of global contexts]) + +// named global entities +removeGlobalContexts(["name", "name2"]) // array of entity names +``` -Global context entities are removed by doing a JSON match of the context to be removed with the added context. So the objects have to be the same in order for them to be matched. +Unnamed global context entities are removed by doing a JSON match of the context to be removed with the added context. So the objects have to be the same in order for them to be matched. For example: @@ -325,17 +400,21 @@ removeGlobalContexts([entity]); // remove the global context #### `clearGlobalContexts` -To remove all global contexts: +To remove all named and unnamed global context entities: -`snowplow('clearGlobalContexts')` +```javascript +snowplow('clearGlobalContexts'); +``` -`clearGlobalContexts()` +```javascript +clearGlobalContexts(); +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/migration-guides/v3-to-v4-migration-guide/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/migration-guides/v3-to-v4-migration-guide/index.md new file mode 100644 index 0000000000..2c54d79569 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/migration-guides/v3-to-v4-migration-guide/index.md @@ -0,0 +1,207 @@ +--- +title: "Migrating from v3 to v4" +sidebar_position: 1100 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Version 4 is a major release with several breaking changes to defaults and behavior. +We have tried to keep the APIs compatible with v3 where possible to reduce code changes required. + +:::note +These code snippets are for the Javascript (tag) tracker, but the same changes apply for the Browser (npm) tracker. +::: + +## Behavior changes + +### `cookieDomain` and `discoverRootDomain` handling + +`discoverRootDomain` is a setting to enable automatic detection of the closest-to-root domain possible to set cookies on. +This is important to allow consistent Domain User ID and Domain Session ID values between pages on different subdomains of the same domain. +Without this setting, the root domain value needs to be set explicitly with the `cookieDomain` setting in order to be shared correctly between subdomains. +If neither are set, the cookie gets set against the current domain of the page and is not shared between any other subdomains. + +In earlier versions, `discoverRootDomain` was disabled by default. +Enabling the setting caused the SDK to ignore any configured `cookieDomain` and prefer the `discoverRootDomain`-derived value instead. + +In v4, `discoverRootDomain` is now enabled by default, but will defer to the value in `cookieDomain` if it is set. +This means previously correct configurations may now use the incorrect domain for updating cookies, and you may need to update your `newTracker` code to account for this change. + +- If you previously had `discoverRootDomain: true`, you can now remove this setting and should remove any `cookieDomain` configuration. +- If you previously had `cookieDomain` configured and not `discoverRootDomain`, no change is required. +- If you previously had neither `cookieDomain` nor `discoverRootDomain` set, you will need to add `discoverRootDomain: false` to maintain the previous behavior. + + + + +```javascript +// v3: ignored cookieDomain, always used discoverRootDomain +window.snowplow('newTracker', 'sp', { + cookieDomain: 'example.com', + discoverRootDomain: true, +}); + +// v3: explicit cookieDomain, discoverRootDomain disabled +window.snowplow('newTracker', 'sp', { + cookieDomain: 'example.com', + discoverRootDomain: false, // or not set +}); + +// v3: no domain config +window.snowplow('newTracker', 'sp', {}); +``` + + + + +```javascript +// v4: remove cookieDomain, use default discoverRootDomain +window.snowplow('newTracker', 'sp', {}); + +// v4: explicit cookieDomain, preferred over discoverRootDomain +window.snowplow('newTracker', 'sp', { + cookieDomain: 'example.com', +}); + +// v4: for no domain, explicitly opt-out of discoverRootDomain +window.snowplow('newTracker', 'sp', { + discoverRootDomain: false, +}); +``` + + + + +### Async cookie access + +Whereas in v3, the tracker updated user and session information in cookies during the track call (e.g., `trackPageView`), v4 makes this asynchronous. +The cookies are updated within 10ms of the track call and the read cookie values are cached for 50ms. +This strategy makes the track function take less time and avoid blocking the main thread of the app. + +There is an option to keep the behavior from v3 and update cookies synchronously. +This can be useful for testing purposes to ensure that the cookies are written before the test continues. +It also has the benefit of making sure that the cookie is correctly set before session information is used in events. +The downside is that it is slower and blocks the main thread. + + +[Read more about the synchronous cookie write option.](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md#synchronous-cookie-writes) + +### Removed Beacon API, introduced `keepalive` + +Version 4 removes the option to set `beacon` as the method for making requests to the Snowplow Collector. +This is due to the use of the fetch API instead of the XMLHttpRequest API for making HTTP requests. + +As an alternative to the Beacon API, there is a new keepalive option available from the fetch API. +It indicates that the request should be allowed to outlive the webpage that initiated it. +It enables requests to the Snowplow Collector to complete even if the page is closed or navigated away from. + +[Read more about the option here.](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/index.md#keepalive-option-for-collector-requests) + +### `credentials` instead of `withCredentials` + +Also related to the move to fetch instead of XMLHttpRequest, we have changed the `withCredentials` configuration option. +It is now called `credentials` and has values that reflect the option in the fetch API. + +[Read more about the option here.](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/configuring-how-events-sent/#disabling-sending-credentials-with-requests). + +### `os_timezone` detection + +The JavaScript and Browser trackers will now attempt to populate the `os_timezone` field by querying the [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) API in supported browsers. + +Previously, this value was populated by heuristics in the [Timezone](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timezone-geolocation/index.md) plugin. + +The new method may produce different results and only supports more modern browsers. +The Timezone plugin is still supported, but no longer bundled in `sp.js` by default. +Using the plugin will override the new default value. + +### Dropped support for older browsers + +The support for the following browsers versions has been dropped: + +* Drop IE 11 and Safari 10 support. + +## Plugin changes + +Plugin APIs are forwards compatible with v3 plugins, so the plugins that are no longer maintained can still be used with v4 if required. +v4 plugins that don't use the new `filter` API are also backwards compatible with v3 if you only need some of the new functionality. + +### Removed plugins + +The following plugins are no longer maintained and are no longer available in v4. +The v3 plugins should still work with v4, but will no longer be officially supported. + +- [Browser Features](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/index.md#browser-features-plugin-deprecated) +- [Classic Consent](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/index.md) +- [Classic Ecommerce](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/index.md) +- [Optimizely](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/optimizely/index.md#optimizely-classic) + +### Bundled plugin changes + +The list of plugins included in the default `sp.js` JavaScript Tracker bundle has changed. + +The following plugins are no longer included by default: + +- [Client Hints](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/client-hints/index.md) +- [Classic Consent](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/index.md) +- [Classic Ecommerce](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/index.md) +- [Enhanced Ecommerce](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/enhanced/index.md) +- [Timezone Detection](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timezone-geolocation/index.md) +- [Optimizely](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/optimizely/index.md#optimizely-classic) +- [Optimizely X](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/optimizely/index.md) +- [Performance Timing](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md#performance-timing-plugin-original) + +The following plugins are now included by default: + +- [Button Click Tracking](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/index.md) +- [Enhanced Consent](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/index.md) +- [Snowplow Ecommerce](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/index.md) +- [Performance Navigation Timing](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md) +- [Web Vitals](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/web-vitals/index.md) + +To keep using old plugins, they will have to be [explicitly installed](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/configuring-tracker-plugins/javascript/index.md) using `addPlugins` or built into a custom bundle. + +### Plugin behavior updates + +#### Button click + +- The plugin now uses `capture`-phase event listeners; button clicks that were previously untracked due to ancestor elements stopping event propagation are now more likely to track correctly +- Buttons within Custom Components and open-mode shadow trees should now be trackable but were previously ignored + +#### Form tracking + +- The plugin now uses document-level event listeners rather than per-element event listeners +- Because of the above, re-calling `enableFormTracking` is no longer required to detect forms dynamically added to the page +- The plugin now uses `capture`-phase event listeners; previously it relied on `target` or `bubble`-phase events +- Forms within Custom Components and open-mode shadow trees should now be trackable but were previously ignored; field focus must first occur before `change` and `submit` can be detected correctly +- Field transform functions can now return `null` values + +#### GA cookies + +- The [GA Cookies plugin](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ga-cookies/index.md) now tracks in GA4 mode rather than Universal Analytics mode. This involves a [different schema](http://iglucentral.com/?q=cookies); the newer GA4 schema (`com.google.ga4/cookies`) is now the default, rather than the classic/Universal Analytics schema (`com.google.analytics/cookies`). +- To restore the old behavior, specify configuration for the plugin to enable UA support and disable GA4 support. + +#### HTML5 media + +- Plugin now wraps the Snowplow Media plugin, uses v2 Media Tracking schemas +- The v3 `enableMediaTracking` method has been removed, in its place is `startHtml5MediaTracking` +- Media tracking can now be stopped with the `endHtml5Tracking` method + +#### Link click + +- The plugin now uses document-level event listeners rather than per-element event listeners +- Because of the above, `refreshLinkClickTracking` is no longer required, is deprecated, and has no effect; new links will be tracked automatically +- The plugin now uses `capture`-phase event listeners; previously it relied on `target` or `bubble`-phase events +- Links within Custom Components and open-mode shadow trees should now be trackable but were previously ignored +- The manual `trackLinkClick` method can now accept an element to build a payload from, rather than requiring the called to construct the event payload +- Link click tracking now also tracks links with empty `href` attributes and assigns `about:invalid` as the `targetUrl` to avoid the event failing schema validation. Such links will also be reported as warnings in the console. + +#### YouTube media + +- Plugin now wraps the Snowplow Media plugin, uses v2 Media Tracking schemas +- New `startYouTubeTracking` and `endYouTubeTracking` methods to align with existing v2 plugins +- `enableYouTubeTracking` now wraps `startYouTubeTracking` for v3 compatibility; a new `disableYouTubeTracking` method exists as an equivalent for `endYouTubeTracking` +- The new events use new schemas, continue using v3 to maintain consistent tracking +- The plugin should now work correctly alongside other users of the iFrame API diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/creating-your-own-plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/creating-your-own-plugins/index.md index 1746d846df..05b1a99089 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/creating-your-own-plugins/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/creating-your-own-plugins/index.md @@ -44,6 +44,13 @@ interface BrowserPlugin { */ afterTrack?: (payload: Payload) => void; + /** + Called before the payload is sent to the callback to decide whether to send the payload or skip it + @param payload - The final event payload, can't be modified. + @returns True if the payload should be sent, false if it should be skipped + */ + filter?: (payload: Payload) => boolean; + /** Called when constructing the context for each event Useful for adding additional context to events @@ -82,7 +89,7 @@ The README should guide you through building, testing, publishing and using a pl You might not want to publish a package for your plugin but directly include the code in your codebase. In that case, you can pass the plugin directly into the tracker when you call `newTracker`. -### Example +### Example of adding context entities @@ -110,14 +117,14 @@ const myPlugin = { }; window.snowplow('addPlugin:sp1', myPlugin, 'SimpleContextPlugin'); -window.snowplow('trackMyEvent', { eventProp: 'value' }); ); +window.snowplow('trackMyEvent', { eventProp: 'value' }); ``` ```javascript -import { newTracker } from '@snowplow/browser-tracker'; +import { addPlugin } from '@snowplow/browser-tracker'; const myPlugin = { contexts: () => { @@ -132,6 +139,46 @@ const myPlugin = { }, }; +addPlugin(myPlugin, ['sp1']) +``` + + + + +### Example of filtering events + +The following example shows a plugin that filters the tracked events and only allows page view events – all other tracked events are discarded. + + + + +```javascript +const myPlugin = { + SimpleFilterPlugin: function () { + return { + filter: (payload) => { + return payload.e === 'pv'; + }, + }; + }, +}; + +window.snowplow('addPlugin:sp1', myPlugin, 'SimpleFilterPlugin'); +window.snowplow('trackPageView'); +``` + + + + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; + +const myPlugin = { + filter: (payload) => { + return payload.e === 'pv'; + }, +}; + newTracker('sp1', '{{COLLECTOR_URL}}', { plugins: [myPlugin] }); ``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/index.md index b51601a504..afde53ad0f 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/index.md @@ -23,90 +23,31 @@ If you are using the JavaScript tracker with the full `sp.js` and your plugin is | Plugin | Creates | Tracked | `sp.js` | `sp.lite.js` | Package name | |-------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------|----------------------|---------|--------------|------------------------------------------------| | [Ads](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ads/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-ad-tracking` | -| [Button click](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/index.md) | Events | Automatic | ❌ | ❌ | `browser-plugin-button-click-tracking` | -| [Client Hints](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/client-hints/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-client-hints` | -| [Consent (Enhanced)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-enhanced-consent` | -| [Consent (original)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/index.md) | Events and entities | Manual and automatic | ✅ | ❌ | `browser-plugin-consent` | +| [Button click](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-button-click-tracking` | +| [Client Hints](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/client-hints/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-client-hints` | +| [Consent (Enhanced)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/index.md) | Events and entities | Manual | ✅ | ❌ | `browser-plugin-enhanced-consent` | | [Debugger](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/testing-debugging/index.md) | Other | n/a | ❌ | ❌ | `browser-plugin-debugger` | -| [Ecommerce (Snowplow)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-snowplow-ecommerce` | -| [Ecommerce (Enhanced)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/enhanced/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-enhanced-ecommerce` | -| [Ecommerce (original)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-ecommerce` | +| [Ecommerce (Snowplow)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/index.md) | Events and entities | Manual | ✅ | ❌ | `browser-plugin-snowplow-ecommerce` | +| [Ecommerce (Enhanced)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/enhanced/index.md) | Events | Manual | ❌ | ❌ | `browser-plugin-enhanced-ecommerce` | | [Errors](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/errors/index.md) | Events | Manual and automatic | ✅ | ❌ | `browser-plugin-error-tracking` | | [Event Specifications](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/event-specifications/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-event-specifications` | | [Forms](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/form-tracking/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-form-tracking` | | [GA cookies](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ga-cookies/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-ga-cookies` | -| [Geolocation](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timezone-geolocation/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-geolocation` | +| [Geolocation](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timezone-geolocation/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-geolocation` | | [Kantar Focal Meter](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/focalmeter/index.md) | Other | n/a | ❌ | ❌ | `browser-plugin-focalmeter@focalmeter_plugin` | | [Link click](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/link-click/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-link-click-tracking` | | [Media (Snowplow)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/media/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-media` | | [Media (HTML)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/media/html5/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-media-tracking` | | [Media (Vimeo)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/media/vimeo/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-vimeo-tracking` | | [Media (Youtube)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/media/youtube/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-youtube-tracking` | -| [Optimizely Classic](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/optimizely/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-optimizely` | -| [Optimizely X](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/optimizely/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-optimizely-x` | -| [Performance navigation timing](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-performance-navigation-timing` | -| [Performance timing (original)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-performance-timing` | +| [Optimizely X](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/optimizely/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-optimizely-x` | +| [Performance navigation timing](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-performance-navigation-timing` | +| [Performance timing (original)](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-performance-timing` | | [Privacy Sandbox](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/privacy-sandbox/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-privacy-sandbox` | | Site* | Events | Manual | ✅ | ❌ | `browser-plugin-site-tracking` | | [Timezone](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timezone-geolocation/index.md) | Other | Automatic | ❌ | ❌ | `browser-plugin-timezone` | -| [Web vitals](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/web-vitals/index.md) | Events | Automatic | ❌ | ❌ | `browser-plugin-web-vitals` | -| ~~[Browser features](#browser-features)~~ deprecated | Events | Automatic | ❌ | ❌ | `browser-plugin-browser-features` | +| [Web vitals](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/web-vitals/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-web-vitals` | *The site tracking plugin provides events for [site search](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/site-search/index.md), [social media interactions](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/social-media/index.md), and [timing](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/timings/generic/index.md). You can find the plugins code [here](https://github.com/snowplow/snowplow-javascript-tracker/tree/master/plugins) and also search for them on [npmjs.com](https://www.npmjs.com/). - -## Browser features plugin (deprecated) - -:::caution -**Deprecated**: This plugin is deprecated. The `navigator.mimeTypes` API which this tracker uses is now deprecated and modern browsers may no longer populate these values. -::: - -### Install plugin - - - - -| Tracker Distribution | Included | -|----------------------|----------| -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -**Download:** - -
Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
Available on jsDelivrjsDelivr (latest)
Available on unpkgunpkg (latest)
- -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-browser-features@latest/dist/index.umd.min.js", - ["snowplowBrowserFeatures", "BrowserFeaturesPlugin"] -); -``` - -
- - - * `npm install @snowplow/browser-plugin-browser-features` - * `yarn add @snowplow/browser-plugin-browser-features` - * `pnpm add @snowplow/browser-plugin-browser-features` - -```javascript -import { newTracker, trackPageView } from '@snowplow/browser-tracker'; -import { BrowserFeaturesPlugin } from '@snowplow/browser-plugin-browser-features'; - -newTracker('sp1', '{{collector_url}}', { - appId: 'my-app-id', - plugins: [ BrowserFeaturesPlugin() ], -}); - -trackPageView(); -``` - - -
- -### Tracked data - -This plugin will add [MIME Type](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/mimeTypes) tracking. This allows the tracker to populate the `f_*` fields within the [canonical event model](/docs/understanding-your-pipeline/canonical-event/index.md). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/getting-the-most-out-of-performance-timing/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/getting-the-most-out-of-performance-timing/index.md deleted file mode 100644 index 7141b69ba6..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/getting-the-most-out-of-performance-timing/index.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Getting the most out of performance timing" -date: "2021-03-26" -sidebar_position: 3000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -The `domComplete`, `loadEventStart`, and `loadEventEnd` metrics in the NavigationTiming API are set to 0 until after every script on the page has finished executing, including sp.js. This means that the corresponding fields in the PerformanceTiming reported by the tracker will be 0. To get around this limitation, you can wrap all Snowplow code in a `setTimeout` call: - -```javascript -setTimeout(function () { - - // Load Snowplow and call tracking methods here - -}, 0); -``` - -This delays its execution until after those NavigationTiming fields are set. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/index.md deleted file mode 100644 index 69361d704d..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Advanced Usage" -date: "2021-03-26" -sidebar_position: 5000 ---- - -This section covers the more advanced elements of the JavaScript Tracker. - -```mdx-code-block -import DocCardList from '@theme/DocCardList'; - - -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/optional-timestamp-argument/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/optional-timestamp-argument/index.md deleted file mode 100644 index 84b8d70c76..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/optional-timestamp-argument/index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Optional timestamp argument" -date: "2021-03-26" -sidebar_position: 1000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -Each `track...()` method supports an optional timestamp property; this allows you to manually override the timestamp attached to this event. The timestamp should be in milliseconds since the Unix epoch. - -If you do not pass this timestamp in as an argument, then the JavaScript Tracker will use the current time to be the timestamp for the event. - -Here is an example tracking a self describing event and supplying the optional timestamp argument. - -```javascript -snowplow("trackSelfDescribingEvent", { - event: { - schema: "iglu:com.acme/event/jsonschema/1-0-0", - data: { type: "user_action" } - }, - timestamp: 1368725287000 -}); -``` - -Timestamp is counted in milliseconds since the Unix epoch – the same format as generated by `new Date().getTime()`. - -Also you can attach a true timestamp to the event, replacing the device timestamp. For example: - -```javascript -snowplow("trackSelfDescribingEvent", { - event: { - schema: "iglu:com.acme/event/jsonschema/1-0-0", - data: { type: "user_action" } - }, - timestamp: { type: 'ttm', value: 1368725287000 } -}); -``` - -Above will attach `ttm` ([`true_tstamp`](/docs/understanding-your-pipeline/canonical-event/index.md#date--time-fields)) parameter instead of default `dtm`. You can also use, plain number or `{ type: 'dtm', value: stamp }` to send `` `dvce_created_tstamp` ``. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/tracker-callbacks/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/tracker-callbacks/index.md deleted file mode 100644 index 3d973f6eb2..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/tracker-callbacks/index.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: "Tracker Callbacks" -date: "2021-03-26" -sidebar_position: 2000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -If you call `snowplow` with a function as the argument, the function will be executed when sp.js loads: - -```javascript -snowplow(function () { - console.log("sp.js has loaded"); -}); -``` - -Or equivalently: - -```javascript -snowplow(function (x) { - console.log(x); -}, "sp.js has loaded"); -``` - -The callback you provide is executed as a method on the internal `trackerDictionary` object. This means that you can access the `trackerDictionary` using `this`. - -```javascript -// Configure a tracker instance named "sp" -snowplow('newTracker', 'sp', '{{COLLECTOR_URL}', { - appId: 'snowplowExampleApp' -}); - -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var domainUserId = sp.getDomainUserId(); - console.log(domainUserId); -}) -``` - -The callback function should not be a method: - -```javascript -// TypeError: Illegal invocation -snowplow(console.log, "sp.js has loaded"); -``` - -This will not work because the value of `this` in the `console.log` function will be the `trackerDictionary` rather than `console`. - -You can get around this problem using `Function.prototoype.bind` as follows: - -```javascript -snowplow(console.log.bind(console), "sp.js has loaded"); -``` - -For more on execution context in JavaScript, see the [MDN page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this). - -## Methods which can be used from within a callback - -#### `getDomainUserId` - -The `getDomainUserId` method returns the user ID stored in the first-party cookie: - -```javascript -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var domainUserId = sp.getDomainUserId(); - console.log(domainUserId); -}) -``` - -#### `getDomainUserInfo` - -The `getDomainUserInfo` method returns all the information stored in first-party cookie in an array: - -```javascript -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var domainUserInfo = sp.getDomainUserInfo(); - console.log(domainUserInfo); -}) -``` - -The `domainUserInfo` variable will contain an array with 11 elements: - -1. A string set to `'1'` if this is the user's first session and `'0'` otherwise -2. The domain user ID -3. The timestamp at which the cookie was created -4. The number of times the user has visited the site -5. The timestamp for the current visit -6. The timestamp of the last visit -7. The session id -8. ID of the previous session (since version 3.5) -9. ID of the first event in the current session (since version 3.5) -10. Device created timestamp of the first event in the current session (since version 3.5) -11. Index of the last event in the session (used to inspect order of events) (since version 3.5) - -#### `getUserId` - -The `getUserId` method returns the user ID which you configured using `setUserId()`: - -```javascript -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var userId = sp.getUserId(); - console.log(userId); -}) -``` - -#### `getCookieName` - -The `getCookieName` method returns the complete cookie name for the domain or session cookie: - -```javascript -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var cookieName = sp.getCookieName('id'); - console.log(cookieName); -}) -``` - -The argument corresponds to the basename of the cookie: 'id' for the domain cookie, 'ses' for the session cookie. - -#### `getPageViewId` - -The `getPageViewId` method returns the page view id: - -```javascript -// Access the tracker instance inside a callback -snowplow(function () { - var sp = this.sp; - var pageViewId = sp.getPageViewId(); - console.log(pageViewId); -}) -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/index.md deleted file mode 100644 index dc6fbfd42a..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "JavaScript (tag) tracker v3" -sidebar_position: 1000 ---- - -```mdx-code-block -import Badges from '@site/src/components/Badges'; - - -``` - -The JavaScript Tracker supports both synchronous and asynchronous tags. We recommend the asynchronous tags in nearly all instances, as these do not slow down page load times. - -```mdx-code-block -import DocCardList from '@theme/DocCardList'; - - -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ad-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ad-tracking/index.md deleted file mode 100644 index cdfb7055b8..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ad-tracking/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Ad Tracking" -date: "2021-03-28" -sidebar_position: 1000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
Available on jsDelivrjsDelivr (latest)
Available on unpkgunpkg (latest)
- -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ad-tracking@latest/dist/index.umd.min.js", - ["snowplowAdTracking", "AdTrackingPlugin"] -); -``` - -### Functions - -
trackAdImpressionDocumentation
trackAdClickDocumentation
trackAdConversionDocumentation
- -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/browser-features/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/browser-features/index.md deleted file mode 100644 index 7d79844026..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/browser-features/index.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Browser Features" -date: "2021-03-28" -sidebar_position: 2000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -**Deprecated**: This plugin is deprecated. The `navigator.mimeTypes` API which this tracker uses is now deprecated and modern browsers may no longer populate these values. - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -## Download - -
Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
Available on jsDelivrjsDelivr (latest)
Available on unpkgunpkg (latest)
- -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-browser-features@latest/dist/index.umd.min.js", - ["snowplowBrowserFeatures", "BrowserFeaturesPlugin"] -); -``` - -### Properties - -This plugin will add [MIME Type](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/mimeTypes) tracking. This allows the tracker to populate the `f_*` fields within the [canonical event model](/docs/understanding-your-pipeline/canonical-event/index.md). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.57.59.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.57.59.png deleted file mode 100644 index d7c6ed052128fdc7a718e6127095a3657df5746e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51113 zcmZs?1zcRc@;{8b)8eu~Demr2+=~{cxVt+PTio4>dnwZ5(Bkf{#ogWC-9Gm|?eG2H z{hY&|%}FN7%w#h2%@FopK@t^-00{yD0##Z{Oc??K3J3uK`3nIKRPq)s69WPQ#nM7l z^u4sGDB!)LovDSj2?T^xSkec04V8YJZ0-2i*fFSFDa2O9iSk4YEf~nsPf@WjSTd1_ zBHhv9NMCfts`JXp!@t1Bii;nbC>{D#fBsw%(L^0SkP++uNU~obD+igl0+(BTx_8cs|!-CC5uKw~04&jUdc0_r7 z87VWjD+-!3?93Wi1@&2C%dt=s!kpjV(-e{k`P|$)WKMhtHwkqIcpa0_EIG<^Lnq~Sx?hZ$msMDj$*w=_peM%j_52k>|p&8LmI zN*IKqM2sU*Vd{Hqtm11#z%@&e;;?g`FbqQB77YNh?E87^B!%b?ckis&3ayi6{IcnY zPs>lQq_Pvbl+W5QyzaHB7@dK=(`UD_G zn3L0!8Mh6`S>oj%K+1eiPQ?)MN;z#W?F}zhm=u) zQYf3IKSoxyCk)rrNwS+}a0qx+& zPaqg*;MD13zxtEEZ5}%tTMJPUfeXh-j693 zIMZkz13^5(i0+B6a&qCrJu+WeE3nFc68t*xCbsHq`WnNHS-c^)g!tu`6hGq5n#$?? zt+F?C8(~$q;>PS*uRGUsk}w4xHW8vP44MHwSp;*^dpT-~!#6}^nE_ske`NkbNBV5KA~(!Q;vI-<-1=u&)3@SL8S z9-3O3>X@FG>arBKG_mxWiZ0hx@yeZ%oFUgvcR2JnC^$_+b{_@2(_qbe8LbpKhL#xh{|Gmdm?>=cMuPQuk25&ZPF=PI5 z9;ecY^6I!bJE0acLsYV&wnTYeR-QoKmE{;mCI>fxcN7o7Yl3eCv+R0S@f?*Ln(5da z$Q*<0=oWh8hZE#h^XApx8nkM^(bh#(Fio%I`-n7)h87s*V;6PK zYJRTO-ANo#;gzT_sNLhg_r6EF$MngE-Y4K0>xtmW>YfxO1RsVF0YwJonsABz*0_%yg>8sM z$3nyGb_{{bk(t1VecHTs96$eyK~v{r=vhb-3Lp1jHjCxqM`Lr zuzt@3mAAS@D3c#2ttUB(dgb|scTEFK$!j@GsfP4euTtqv8EZ2=(&ue#tw}5xxmHbA z3|Gtytm2H7jH_4Ib1AzgdRZqOqfBZ|>XXu@&CAo&r`2yN`ey`Z-W|Bi>{JNN%`Ftn z(btsL?tSI>x;2NhpuQ;hHGdvqh*{~VhyEu!;0e*H#A=MMp6{J6{L}NL+xh6(>c%R|gloaa z&FDBqXnLpy$VI3HsI-8+0Bz{SPeXwXB1s~OpBMt~e)0wCe?8QkuV}59C1WI;h@~JS zo%21^JS=)o&rV+VrjAmMik`+=bS~dM;mwe zY6Ht_qwL=1p3z956k)~G#IICqK88~3=UorduF~fP+s4D2XZ>pZq{{D9)C=pPh*?}` z=44AHO7o`f*_E{%7e?x`9Sk;RqOC|zc-q__D-pkA7s)p;kDD7FcNrzHQ#nu(%TN^* z7o14H3`K3JJ9@El;}fzqd04OTuF&~1`=Pe0U;s2I-Q)0M8)<7P=m1tO>cz}b8gCD= zs>KP#>}n`#>y7>T!iMLQCUY|4n}rk^m;_ErG$b=A1O?`u&+Gatu_UFd3v9wy6Thi6 z6)H_+v5IkusOMB6qhFzs zxm}aIr8me`1^9wd)$ongeCt?kp&aRhfUbb2%MrnLdOU|;WmetwyEMu9WS2yja~GSf z@vW9gg3UORdMNJwh z)MtkAIz3z8&a3Qb>?mZSbFaGpJn0yZ5X3!T^w2G9J@mNiv&(KLwm7paZC&>%d@ehg z4w;Fo?5%>;8g6~q*8ADo_TWT{L6XQn z<*9MqcdN8@a@~GncVWqQ&3$>cMTMw%EVL!yb0v3u==AVur*6lDX-H4irNM>WHN;KN zhv(Sjfv&&2?aR7Q-OJqV!tvFbP~c0;lEC-or>IN$m&L*pl+~mA!Hufz?1pT~lZ%xb zAL>1h!{w*(osC9CnjF1L`6s!1o#*an+0NOLD)jq{`v*!L8n<86{y#%ZO`%R*arvnV zpoBwjI0v}5bnS&Pww_!d0$zfWZn`1QpgzO7h8yuWBl<&sogWHbI@NUuQbd6(X?}RG z5=K9{EZ;94%tiLj&hLc}8$t>d!aMHz=Ei3Kha51}WhP0`?JOnN1836(Yk^ll0^aKgI z1tAIleU^ZvhJgNE4g~=bY5@WBpE?SlZ}2A;bc5Uc^9>yz0s#;Dg$26ZKSTYuHWctP z^nafre}UdXh^UB4OM|{uj2ul&Y@N*QoIQ+NNse9Iug`4WogvouLV%yNx}V4g|kDFX++6#MuDgZewlh#Op3V{<{V*=owthL=N~} z#o0=LTtognK-A9B1i;D2%*aeGhy(xt_#KT+d6mT^{?i=vOMu+m+1Z|#iOJ2)jnR#b z(azC~iG_!Uhl!b$iItTBRD;3E!`9irox#?L;vXXar6XqIWaMaJ?`&ab3jotKFtl@V z79b}Fcl7V)pK+SFTm0$C*6Baf0!@$!{Dz5zk(udV+MuTV;8NcA7Vak2nqn3L zfoJ{~C;nmc?@|z-1(Eof{*{>^lE@R#4J1Y)3o%7i&^JiQet$qxhoA=C;BU}v7pIqg zbpZh(3?VHhqUsKLm<8*uDv29{PS(&YO7kA6JG|KoxjQS*CRZb(x%pW`mWHH-yBkq! zskJ*-!$JBTphL(kIc=$R9u$LfW^88c?5$MuvE8)FUK|Z&vazt54m?L=2t&a9xqb-* z;9&r78T}y;{=M)Jg#iQ>05m87#D6bgP#vs)D}Wv}F#Uz=Is#z+wDO05A#a2J(*y!a z9R`3=X%B$>FA*@c0N}}AJ^A~;hC~pfBa-@?v@l?u@86C=4G-$3M+1Dw~K z$CCM6VGH^_XC^c1idXUT@1C?XO+G(`I^&c7Jz7l39|lkk>p_^R#Ur!#(h;vJg-5dm zW-Y}2?maUQ)cd+&{d|`f29LX^r}8sYVOAi7#NX`uC=Mp{*kGVqrDrqWSQUfrligf0 zEgTC0iSh4cj|PQ?4P5n^4Zpv9mKJhZ@uu9pva-vPfcZ=AKX?#8Q%Gjej^7^6D$Qxq zytsD0+(rCfm5SujGSNsKXB7oZ4~^6LX61`9A^)H5bekWAb(>ws6a~yrskOd?palx3 zzvTXl2&O{~usxiSQKnugr9WLEk;Y~=r8p!(ODUrkoIxlLgZbA4NTAkeG29yM>aare z^z@uJ`w-JPeQ>h)+{QhqKfd{!v+4e#uM|Jk&j-L0IX(TZJhxsF-03FzM zu2pYw>sFmIVvw!wee3}Z5Q2o3!nse|!Dmh&4l1-Hu5Z_HbKR;h;j=UQYfynz3NIgN=%2#&P!KYy(INF85HbR zTU^kP@L>O*-dhm4Tccjrsa7wu<+JOf<`TtKvdjIX&=JwURS2*SUIlMulM|zfT&Zwz zam$Oh=eq(!qu-aS6IY(c{XIk=9#|(I-F2J16_=afa6Z-Bt>%U&S&E}TULyUaCm;pS zg^Kgq&cA^}-xs%-C@9pZ*4bO;^W$|p#^SJCTCn^m^+#S12x2IZp~zi854rzC1w#i4 z1Nf6N*z=F7V8|l~10)h~qk3Wf)!l$!SpLE&j5Jfwe~QfCK|ryjx0v(4{lgKM6bKkY zd+A(~KSg5LpdQ9I#Wz?){sIMTVhT%T^#A0J{p7RU%C5z|JjB%$lpM*AF?Xf9Wc@SQqZfN_7 zE0Qiv?u|)&8a&G&eRvOvKty&4W7yPFw8XKXRCX9l ztnDg^ekv+@i4dj>0A23=W@xG$(`ctc?dj{I@LDe7z z*h~cM%7M%`q+Pph3go3pcX|z#9TOA5atl(ovrD1Kpj%jbV6sq<*N4Wqhj>j=BKZkb z3-ht?W%a8NE?Pw<5}~>QXZZetV zNkbRjXOSaMTMB-11QiF~)^9|wM@t_LIhxWCkJ@tKxxVZ=o0F5R-5$l#B)02tG%sI1 zlrgvZ9GTSf(<2*phsi=GA7ZQ$;?5s_F>x{<9k^31H)5hy{uVvtwegfL!BI(+yc}Ys z-OuWy5S)Pum~A+-x!E|8)Rthc(Z%Ula?C1Ld3?2JvvM_a0o$l(ZB>hs239_dWsutO z{)%$T!GUjWNiW+at*H^T&XFCQ&ny@vFN@>ivlcP0e`PP z5zw4u$9#wE63aF4=M!>rn6AFWEA~(wHI;Y?UGB(ead?y{z`x#Ob|BfJ*3eOJ^j^n! znkmzEa z%1wO z!n*$8Ga1H}mGEz41;8LaBR1!-rrn}b5qI69yH>d>RTu7|YSRCV$70xb`#f!1XS<#H z5uHl>e#r13(XL^bs4QR(3m9{*qPea84jcfVF(}L#vz%? zHQOCjOJo@4C$;VD_CM5qj#ONtfys*y2OPh8K(8Ol+V&rZasK%*k5w#1!}a3j(L!!_ zmcxSwOCF*9q54fPn`&#>c45OA_Cz0Q=oUj;o8TsGGBgj2B;b6)5Ubkm>@NRhQ$WNA z=3Cd07saZ(2Ug6m5*atmi!!Wl~ZsuDc^^SGeTcf#nBo=z6o#ojaFm7Niw>*@DOcVAzRECFr44H zlD)GVB7+!11e?Y=GKc_kcsUJIu3f=I8E>0;;}eFiA^)m~zU|%4}%7WZQLrkFjZ6=G_D*N3lCIfQKh)N*olUD)`${sn2#c^uJ=dbI1 zsD2f~#!8ExbL=uX48^}<-$y6$v|PJOo827Ueh!E^3+=ww?-_4XLk>gDm6^3+T=b-i zRK1_3f3rb)pDJj>uU4g}NdREb{vIBJg8EE<9lG%Ro`2*Rto}77qoNE5~2X)4V+~ zi!@*%VZFZEZ`Zz@t?>6#>0v#K@fR$gi=5b@kw3#K9y6TpJ$Nn9=n^pUB}c^9PEULJ z({KNr`x69A9yImr-c-!MlpT%Nx#!gnq2mCJ}SiG*@E__U|m>Vm8JH1&nS@j9-zmn|Hgi#}i3 zCB2_j8;ZqdhG@#8ECa*2BRDMU^t_)UeWlRivx!r!Fn_HX-4+w+M`;`D=-wL71$*8) zgJ717j!*fPr$#V_E38SS!OZ(gwUuS^8&}hlRP2SKKF!H{J)}5(K%er^?&sV6;5w~h9M=#Hd z{WOp%DrGTtdEf1PbEwDLeBH@*p8Fcef1%yfX)KdUs}j5M>mB-ZHY~G(O&^9qlS*!8;cr|aH=M?!p4|=D7X7ZTOtlYCRL8OT{ovrs9&^YM*2!Q z1(WkFL#sg3cIdX=0e*w8>=`)1PubxaUhBC_V9&QgmhHH-cr>UsR%PPdYYU^TKa}EF z(CBI|PK_hhDK6Oi@}s}S!)bDXL$(4*Cb{e#I;r6I0pu#Nc$E24;|GVPyQ~fEuq`$8 ztnauiqx=iyZZ0P>O*OsutI>_N=CFpjZ+&Q76b5Dd)iTys6WW=@HZUkcQVVfww__Md zi#Gb6>9=;DwSdgZU{=tut)Po zc4t04H+w`iw4x)=U2fx# z0a-kjTtPwk)p27;V)=zE^}V&<9y|SSP|k-ed;5_$l^gaC{D=w1+g~z2Nc#}i-UV%Q z_`Nsd_4|mMWHS~%m&+CUL6J0ql+48C=`*=@eMR2kd~H9iWHeF!HbWbF*}Y_v37tv~ zR`GDzqEsR;8>Lj5NO6u1pRAx=g&ETw{7~AoiZiiOPfydloNq56ABNwj&nDw16DxSt z*K(+ni)cbODV!qN^(?o{1CC_IjBZS3(k$-Gw&lM&#A1U&%{I&i80)=t_&hF}f8Smof~xT<_x@ zga+lGwSgGDvGNl+)OE52GAnX8T$%#c;1Zj8(d%QUqt-?Hnz{?Ol5*yLJhusLn%~DG z<@F654?>Z+{nfq}NjKZ^up>faer{4&q)p7)RA1-k$HHH#=q_33%f5x~(kh|1&kUXP zJzPHQ|2|b1{L3wbhoZ{-nC~F}AtL+S_wSo$4a}Cq4Z> z5jxlRccKey-;6$6!V=!#co8uOJ?kyCzJuSnL{){y|Lr8|fdYrl2y5=|gjfa_9^B8Az8GyDN2 zLdSb*3471M{wE<#Toyew0R;22o59m!~rIYQz4j4ufTRQA2Y)9X4;AVQ@{p+*)g| z257=E7$9!Fy01UL?U$O8I=_&Xk~$o)-14;<_w}cRjDDAQ9ZKK&XU7n_bh-zXAI58) z+5AYq36v*YCmb58&$A-mZ$1+{&>N}wC>qCfDP|`dcFUHKQdoqHZr%;jZp_8U8HQaY z$qdlhk-2-kG^vqLxfh+*BFT5xIQoVY3t={Pg&UPpbfr7ItU!~sC?GebzE!ES>EOJs4&g{NhZKqkpZyIN9t zDcXnAZHjD2at98$CQl&Q7{9~hRZ^i?hRwUPXSVvd*hmf+Fv+OK%Gavd<&@pIaQ%D@ zl%RT7{)TbaKJz*R`Ie-_N(wB>fzGYa_lA za1yiyr3kA+|H2=agDro*u+&Y1NcaokC2#xmvWJJa#=J!By93;K*$+J^HsEz1fD{x< zXM)1E5bU{AYtFik9`3h#o~Ak8lvZ4YiWjdZ#1AVxJ|5i+YLRo%!{m);#c0LP5Vyr# zX1`Ds_Mex^c_8FRkXX zQXLp6h$Zv}L#S#Zye7GV;l#{p^T^1i8K-6+02Bjxi_|`Cj){fuIc%sqr|V-ZElt*R zs(XpT6PVMi_ZFVjoaN~y;qilnFP(l_h=@eP27|3R$VW7M<2{`Fn)90E+d-tsebB3G zhPm2v+$Kv6gf5YeCXJ(VBhp~+fzUJa7O{TiF^n}TrD5}x)_X4b=eBGTQF|D}R@=am zDK7adfqewtECUKGt!QhOCBHNE<@Lv(y1S41$DlCR(Al0C>jV4s0&@9d5F&PLOiWB? z%mQ+h@Mgk?IdpP(uP^%V$T4bPJ%l?(6dK}p*yD4lpwZmcNv^~2JMNI?9t|P~ho=6uAjHKvnG5riLy*|qsa&pACO7A(<~HMeHwxdn zx_XZ(blg`A;Pj$vE-eGplKWD-LvYdKd;Ou3TddKFtMq2Q=HfM$w5$+#N{qYPHoMU0 znDfMnzWRZW-#@9}ZCgok6P%d1v17Zz-BN9~exk@w8yCd);AC4a=7Ao@Ab8lg&VF`_ z!9jiMFRBtX@>|2tVex@dD_563p4Vyf=0GK3<>ha#wd7-m8t1;~X@f=|CH%a&d81q~ z50Hst$QgMULoqBHMN(QTdUEj*L{1MbMrxU5cI|l6@jB{?o|1`S(P@A9=GC1mGv(l= z9z=N0&@-NjZ+c949Z_Brnf@B!F_K&TWKF2oSx<^Q$M+twQk(E=mBW6WCcE1gZK-r& zT`z# zBww6j)`*4A@X3GAQGJRT~kC}hF znCVVm{`ETwjEL`ehLjNVp}(-JdzpM|*pn|}gCT)8gT=4792}z}Q=(h-1qyxGn)mr% z#}(HAowA~mN1qL8ZlZRa9HWS13=xqns)}zcPA(ye59lGv(KLGW4au+s`fs9A+}&2z zy>@BMxTYtn_XE3E(HvwVd0ydo(Wrz8B=!7|JUG)>1#USV=Zu=UzV^kfk3?9YE_SUX zVE1tJZy@D1hhflf>zQL;|7{J)L2fKr$JXtD1a!==>o#XOQV$vUS-UYG>Ld)b#z5>_ z6n(*f&V~~PdKmJXtYT+MOO8!Hb;A++d1#_WqYRROCL=bREsJxjw=5AGZ`W7ZNj{#mK9)$-gDUIz~?g+yiXHsKl zCx=(LSYh>`0_k;ok>3ldr+&qk$lrka9OyvE96FrMBv@h&Pf_;HweQt{{uiy-n6ANr z!xXztCZoN*KreNdhejLB;?Kr$9tWn8MNd{x3bD-Un?@^hNywoYxIqC@DL>%IThOcX zxz(A(@8vw($!2%b==5Blzj;}mW08*%)od}n6H>se<>&mA-pKdWm&OKjM`{t7bZ}g~ z**nNEic`1JR9H;_$G!d9T$ZalZD9L{?3hb4TD&CmIcD(pclJw{b4^SI9vMMa`I$Tn zP+O;KMpJnv{(T4*+GLeE+{?wP`wxis--$Q0;;ZUY6c!^2hV=Z;XZL7{G>puzOBdeo1qnn*ZZXVOD?$xOBASthzLdq^S{lLR~ zKqA!@5dYBSG1k)>+Cxj5y?v2)DIRqaY$tifAHtTZ#-krYPxMaF4$j(&IoZK`Vah?Z z)>JKRxOOgQ3x%1VZC0EBeB|><6ohGWCz5+)X*jGaZ;xIKY|YI%Y=luB%xxas$pC-y zU2d)rmm8fBU6rIcZs)4v*Gd_W7Oqod6XF;Tg zzbI%69xmDTj3y{0VS(ckUr5Q2di>38kM^Y)c3WqKc8^d?bvD7!wVbBE`N0rFz zR+i37T4ht79aK{cCeWEEsN|B;9-qAXH^yz~C}Ln}*e3Ye>kaw33D0r0X&=2?Dw7{< zQ2m1q^QJVr&Yh8})qZ^VzH_%5ope>*6f^oEI)`7NTQ**%VJ1wRv7B1)YAThXGK*=zLt{kG9qf8lQV-$0;hs>|BW`ZOIy{ANC;7KQjsx{?xW& zM#6(x{7&lEVH)%+eLQXld+nCY5L80k4xIPI;8ztOdRiC4NZ@C3;()=IOpL)LM#rUP z-+j>xPMa9#QGdul2n23i&`IcyCn+8(co0EA;XEUh73;&*SdKR(|Mx(Os=60c=SNQNCCf$Van9X#e5zf=_QkBRN(G!R+|GP8e9$( z2)Lg80?y<9Iqt-`0&z{^$t{u!CO{ab$@wn3$>j)-dKGlau!(QE)bNc3+2J?&0Pum$ zc)$K-tkAV`i&)qeHP>j`y9ad!$8$`{p;Pd}UyaIO;PcygiH4hDl<{qA!(>a98lwYo z#$6hZ9LyFm0BCgZKdKf@Abd2diw^r22O}i7s@}2a>RODQ>uzGP6%DO64@51c3?Z?n zJ1maImRr%MwR?5*-(S>+1?&R?sqNARra+isRG!@xQ~%BpVHR4s)NI-yjmf=SO(P+$ z0vHmY`EXVhOxZ~tK=0!X~O5T{4Ij}ndHNpS*qcX!Gs zw0Fkd6JH{lZbbdQ6sRSH?$?D218A{C^oc1kLaX?s5V5F|0`E>{TnJXTt-wgQrQpX; zB)^!1>hrA3qW9|9Bmfv$XO$o2z&qbBey~!VGHRh_$lML6g1WeGDFkgveYava$ge0Q zQ1DmV7oui{Q8bEFJ3k4lzWLO~D+55&{T72osYnCwbhE$8e)r&+Sga~;$z~Wr@+%Py zb#KIEM=w2Cc&ZBdKPSk9piXRr5f3U%pL&#XX}=lQ+O@Wp>JNWn6?7=Z05akPG^iX3 zEwOTaM9(4!1f@UFDd;#xz0T0{YEe}a^@(CK?RtEA>Ra4UD_KMsj$&ldrM4)myF6Tj z_S`uk&3lXWMp~l9ZRB9f$z!z_p{t8V8SCQGV?!PkK*zV|JXNFU94quI7bp0vG&v_1 zxmdoNZ>N_arW&5zAO#sSPv@Ov5FF`%sf~*DRz`|R-}})ErHs@GA0{siVFJu02q+1V zgCIe$_R0=$U7UpRFvaceW> z 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 Q_ke#=;%~%?U+I7NKdm9H`Tzg` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.58.43.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/images/Screenshot-2021-03-28-at-19.58.43.png deleted file mode 100644 index 657539beddb86c80620b1b4a54aa9aab3fedcc23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50134 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
  • u(N%lehIc$F}*gV_7K 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 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/index.md deleted file mode 100644 index ecf7589763..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/client-hints/index.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Client Hints" -date: "2021-03-28" -sidebar_position: 3000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -[Client Hints](https://www.chromium.org/updates/ua-ch) are being rolled out across a number of browsers and are an alternative the tracking the User Agent, which is particularly useful in those browsers which are freezing the User Agent string. - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-client-hints@latest/dist/index.umd.min.js", - ["snowplowClientHints", "ClientHintsPlugin"] -); -``` - -### Functions - -This plugin does not contain any new functions. - -### Context - -Adding this plugin will automatically capture the following context: - -| Context | Example | -| --- | --- | -| [iglu:org.ietf/http_client_hints/jsonschema/1-0-0](https://github.com/snowplow/iglu-central/blob/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0) | ![](images/Screenshot-2021-03-28-at-19.58.43.png) | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/images/Screenshot-2021-03-28-at-20.04.43.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/images/Screenshot-2021-03-28-at-20.04.43.png deleted file mode 100644 index e7a43e4055e5a7236278912aa2f6601efcdaf13e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37770 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 QJe!um)78&qol`;+0HCaq*Z=?k diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/index.md deleted file mode 100644 index 368a4ccb81..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/consent/index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Consent" -date: "2021-03-28" -sidebar_position: 4000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-consent@latest/dist/index.umd.min.js", - ["snowplowConsent", "ConsentPlugin"] -); -``` - -### Functions - -
    enableGdprContextDocumentation
    trackConsentGrantedDocumentation
    trackConsentWithdrawnDocumentation
    - -### Context - -Adding this plugin will automatically capture the following context: - -| Context | Example | -| --- | --- | -| [iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0) | ![](images/Screenshot-2021-03-28-at-20.04.43.png) | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/creating-your-own-plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/creating-your-own-plugins/index.md deleted file mode 100644 index 24d3664e1d..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/creating-your-own-plugins/index.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Creating your own plugins" -sidebar_position: 500 ---- - -```mdx-code-block -import CreatingYourOwnPlugins from "@site/docs/reusable/creating-your-own-plugins/_index.md" - - -``` - -### Example - -```javascript -const myPlugin = { - SimpleContextPlugin: function () { - return { - contexts: () => { - return [ - { - schema: 'iglu:com.acme/my_context/jsonschema/1-0-0', - data: { - property: 'value', - }, - }, - ]; - }, - }; - }, - trackMyEvent: function (event) { - // Extend the API and track something here (see advanced-template above) - console.log(event); - } -}; - -window.snowplow('addPlugin:sp1', myPlugin, 'SimpleContextPlugin'); -window.snowplow('trackMyEvent', { eventProp: 'value' }); ); -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/index.md deleted file mode 100644 index 1e03a2b900..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/index.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: "Debugger" -date: "2021-03-28" -sidebar_position: 5000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-debugger@latest/dist/index.umd.min.js", - ["snowplowDebugger", "DebuggerPlugin"] -); -``` - -### Changing Log Level - -There are various log levels which can be used when initializing the plugin: - -```javascript -none = 0, -error = 1, -warn = 2, -debug = 3, -info = 4 -``` - -Then you can pass your chosen log level when adding the plugin: - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-debugger@latest/dist/index.umd.min.js", - ["snowplowDebugger", "DebuggerPlugin"], - [ 4 ] -); -``` - -### Debugging - -Adding this plugin will automatically start printing out `debug` logs to your Developer Tools console. This will help you debug what events are being tracked and what properties are included in each event that is being tracked and to what tracker instance. - -**Note:** You may need to enable `Verbose` logs in your Developer Tools, as this plugin uses `console.debug` to output results. - -![](images/Screenshot-2021-03-28-at-20.08.35.png) - -An example of the output from this plugin diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ecommerce/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ecommerce/index.md deleted file mode 100644 index 208403f9cf..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ecommerce/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Ecommerce" -date: "2021-03-30" -sidebar_position: 6000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ecommerce@latest/dist/index.umd.min.js", - ["snowplowEcommerce", "EcommercePlugin"] -); -``` - -### Functions - -
    addTransDocumentation
    addItemDocumentation
    trackTransDocumentation
    trackAddToCartDocumentation
    trackRemoveFromCartDocumentation
    - -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-consent/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-consent/index.md deleted file mode 100644 index 642e5c3e85..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-consent/index.md +++ /dev/null @@ -1,186 +0,0 @@ ---- -title: "Enhanced Consent" -sidebar_position: 6500 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md'; - - -``` - -This plugin is the recommended way to track marketing consent events on your website. Functions, usage and a complete setup journey is showcased on the [Consent Tracking for Marketing accelerator](https://docs.snowplow.io/accelerators/consent/). - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -:::note -The plugin is available since version 3.8 of the tracker. -::: - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -## Initialization - -```javascript -window.snowplow( - 'addPlugin', - 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-enhanced-consent@latest/dist/index.umd.min.js', - ['snowplowEnhancedConsentTracking', 'EnhancedConsentPlugin'] -); -``` - -## Functions - -API | Used for: --- | -- -`trackConsentAllow` | Track an acceptance of user consent. -`trackConsentSelected` | Track a specific selection of consented scopes. -`trackConsentPending` | Track the unconfirmed selection about user consent. -`trackConsentImplicit` | Track the implicit consent on user consent preferences. -`trackConsentDeny` | Track a denial of user consent. -`trackConsentExpired` | Track the expiration of a consent selection. -`trackConsentWithdrawn` | Track the withdrawal of user consent. -`trackCmpVisible` | Track the render time of a CMP banner. - -## Usage - -### trackConsentAllow - -To track the complete acceptance of a user consent prompt, you can use the `trackConsentAllow` method with the following attributes: - -```js -window.snowplow("trackConsentAllow:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentSelected - -To track the specific selection of scopes of a user consent preferences, you can use the `trackConsentSelected` method with the following attributes: - -```js -window.snowplow("trackConsentSelected:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentPending - -Some consent management platform installations, allow the user to take website actions or/and navigating to other pages without accepting the consent prompt. To track the unconfirmed selection of user consent, you can use the `trackConsentPending` method with the following attributes: - -```js -window.snowplow("trackConsentPending:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentImplicit - -Some consent management platforms have a configuration which allows the setting of consent implicitly after a set of user interactions like clicks, scroll etc. To track the implicit selection of a user consent, you can use the `trackConsentImplicit` method with the following attributes: - -```js -window.snowplow("trackConsentImplicit:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentDeny - -To track the complete denial of a user consent, you can use the `trackConsentDeny` method with the following attributes: - -```js -window.snowplow("trackConsentDeny:{trackerName}", { - consentScopes: ["necessary"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentExpired - -To track the expiration of a user consent, you can use the `trackConsentExpired` method with the following attributes: - -```js -window.snowplow("trackConsentExpired:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackConsentWithdrawn - -To track the withdrawal of a user consent, you can use the `trackConsentWithdrawn` method with the following attributes: - -```js -window.snowplow("trackConsentWithdrawn:{trackerName}", { - consentScopes: ["necessary", "marketing", "personalization"], - basisForProcessing: "consent", - consentUrl: "https://www.example.com/", - consentVersion: "1.0", - domainsApplied: ["https://www.example.com/"], - gdprApplies: true -}); -``` - -### trackCmpVisible - -Consent management platform banners are an important part of a website’s first impression and performance. Snowplow provides a way to track what we call `elapsedTime`, which is the timestamp of the consent management platform banner becoming visible on the user’s screen. - -```js -window.snowplow("trackCmpVisible:{trackerName}", { - /* Using the performance.now API to retrieve the elapsed time from the page navigation. */ - elapsedTime: performance.now(), -}); -``` - -## Entities - -Below is main entity used for tracking consent in the Snowplow Enhanced Consent implementation. - -### Consent Entity - -An consent entity can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| basisForProcessing | `string` | GDPR lawful basis for data collection & processing. | ✅ | -| consentUrl | `string` | URI of the privacy policy related document. | ✅ | -| consentVersion | `string` | Version of the privacy policy related document. | ✅ | -| consentScopes | `string[]` | The scopes allowed after the user finalized their selection of consent preferences. E.g ['analytics', 'functional', 'advertisement']. | ✅ | -| domainsApplied | `string[]` | The domains for which this consent allows these preferences to persist to. | ✅ | -| gdprApplies | `boolean` | Determine if GDPR applies based on the user's geo-location. | ✘ | - - -
    Relevant Iglu schema diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-ecommerce/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-ecommerce/index.md deleted file mode 100644 index 07915ca6dd..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/enhanced-ecommerce/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Enhanced Ecommerce" -date: "2021-03-30" -sidebar_position: 7000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-enhanced-ecommerce@latest/dist/index.umd.min.js", - ["snowplowEnhancedEcommerce", "EnhancedEcommercePlugin"] -); -``` - -### Functions - -
    trackEnhancedEcommerceActionDocumentation
    addEnhancedEcommerceActionContextDocumentation
    addEnhancedEcommerceImpressionContextDocumentation
    addEnhancedEcommerceProductContextDocumentation
    addEnhancedEcommercePromoContextDocumentation
    - -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/error-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/error-tracking/index.md deleted file mode 100644 index e20a146495..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/error-tracking/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Error Tracking" -date: "2021-03-30" -sidebar_position: 8000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-error-tracking@latest/dist/index.umd.min.js", - ["snowplowErrorTracking", "ErrorTrackingPlugin"] -); -``` - -### Functions - -
    trackErrorDocumentation
    enableErrorTrackingDocumentation
    - -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/form-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/form-tracking/index.md deleted file mode 100644 index 7443dcc2d7..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/form-tracking/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Form Tracking" -date: "2021-03-30" -sidebar_position: 9000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-form-tracking@latest/dist/index.umd.min.js", - ["snowplowFormTracking", "FormTrackingPlugin"] -); -``` - -### Functions - -
    enableFormTrackingDocumentation
    - -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/images/Screenshot-2021-03-30-at-22.12.03.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/images/Screenshot-2021-03-30-at-22.12.03.png deleted file mode 100644 index b30722bf5108e3a4ca806ba772bea51112fdfda2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16320 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 JLP*d5{{Vq@9vT1u diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/index.md deleted file mode 100644 index 4141ad1d21..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/ga-cookies/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "GA Cookies" -date: "2021-03-30" -sidebar_position: 10000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ga-cookies@latest/dist/index.umd.min.js", - ["snowplowGaCookies", "GaCookiesPlugin"] -); -``` - -### Context - -Adding this plugin will automatically capture the following context: - -| Context | Example | -| --- | --- | -| [iglu:com.google.analytics/cookies/jsonschema/1-0-0](https://github.com/snowplow/iglu-central/blob/master/schemas/com.google.analytics/cookies/jsonschema/1-0-0) | ![](images/Screenshot-2021-03-30-at-22.12.03.png) | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/images/Screenshot-2021-03-30-at-22.25.13.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/images/Screenshot-2021-03-30-at-22.25.13.png deleted file mode 100644 index 4addc614d2d366052fd762843ff9ea789265d0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61133 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 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/index.md deleted file mode 100644 index c39cba84f5..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/geolocation/index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Geolocation" -date: "2021-03-30" -sidebar_position: 11000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-geolocation@latest/dist/index.umd.min.js", - ["snowplowGeolocation", "GeolocationtPlugin"], - [false] // Enable at load -); -``` - -### Functions - -
    enableGeolocationContextDocumentation
    - -### Context - -Adding this plugin will automatically capture the following context: - -| Context | Example | -| --- | --- | -| [iglu:com.snowplowanalytics.snowplow/geolocation_context/jsonschema/1-1-0](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/geolocation_context/jsonschema/1-1-0) | ![](images/Screenshot-2021-03-30-at-22.25.13.png) | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md deleted file mode 100644 index 623daf520f..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: "Plugins" -date: "2021-03-28" -sidebar_position: 4000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -The JavaScript Tracker is based around a plugin architecture which allows new functionality to be added to the tracker. These plugins may already be bundled with the tracker, loaded from external locations at runtime or included in your codebase and passed into the tracker. - -There are a number of Snowplow maintained plugins, however you are also free to build your own or leverage community plugins too. This section details the Snowplow maintained plugins, whether they are bundled into any versions of the tracker, and also describes how you can build your own plugin. - -The UMD files (which work in the browser) can be downloaded from [GitHub releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) or they are available via [third party CDNs](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md). - -For other combinations of plugins not covered by `sp.js` or `sp.lite.js`, try [bundling a custom selection](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/bundling-a-custom-plugin-selection/index.md) and self hosting the tracker. - -| Plugin | `sp.js` | `sp.lite.js` | -| --- | --- | --- | -| Ad Tracking | ✅ | ❌ | -| Browser Features | ❌ | ❌ | -| Client Hints | ✅ | ❌ | -| Consent | ✅ | ❌ | -| Debugger | ❌ | ❌ | -| Ecommerce | ✅ | ❌ | -| Enhanced Consent | ❌ | ❌ | -| Enhanced Ecommerce | ✅ | ❌ | -| Error Tracking | ✅ | ❌ | -| Form Tracking | ✅ | ❌ | -| GA Cookies | ✅ | ❌ | -| Geolocation | ✅ | ❌ | -| Link Click Tracking | ✅ | ❌ | -| Media Tracking | ❌ | ❌ | -| Optimizely | ❌ | ❌ | -| Optimizely X | ✅ | ❌ | -| Performance Timing | ✅ | ❌ | -| Site Tracking | ✅ | ❌ | -| Snowplow Ecommerce | ❌ | ❌ | -| Timezone | ✅ | ❌ | -| YouTube Tracking | ❌ | ❌ | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/link-click-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/link-click-tracking/index.md deleted file mode 100644 index befe8cc68a..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/link-click-tracking/index.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: "Link Click Tracking" -date: "2021-03-30" -sidebar_position: 12000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ✅ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-link-click-tracking@latest/dist/index.umd.min.js", - ["snowplowLinkClickTracking", "LinkClickTrackingPlugin"] -); -``` - -### Functions - -
    enableLinkClickTrackingDocumentation
    refreshLinkClickTrackingDocumentation
    trackLinkClickDocumentation
    - -### Context - -This plugin does not add any additional data to context of an event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/media-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/media-tracking/index.md deleted file mode 100644 index 50bccb25fa..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/media-tracking/index.md +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: "HTML5 Media Tracking" -date: "2022-01-11" -sidebar_position: 12500 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -This plugin will allow the tracking of any HTML5 `
    Relevant Iglu schema - -### Ecommerce user entity - -An ecommerce user entity can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| id | `string` | The user ID. | ✅ | -| is_guest | `boolean` | Whether or not the user is a guest. | ✘ | -| email | `string` | The user's email address. | ✘ | - -Relevant Iglu schema - -### Product entity - -Whenever there is a product entity involved in the ecommerce interaction event, the `product` or array of `products` can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| id | `string` | SKU or product ID. | ✅ | -| currency | `string` | Currency in which the product is being priced (ISO 4217). | ✅ | -| price | `number` | Price of the product at the current time. | ✅ | -| name | `string` | Name or title of the product. | ✘ | -| category | `string` | Category the product belongs to. Use a consistent separator to express multiple levels. E.g. Woman/Shoes/Sneakers. The number of levels is defined by the user. | ✅ | -| list_price | `number` | Recommended or list price of a product. | ✘ | -| quantity | `number` | Quantity of the product taking part in the action. Used for Cart events. | ✘ | -| size | `string` | Size of the product. E.g. XL, XS, M. | ✘ | -| variant | `string` | Variant of the product. E.g. Red, Heavy, Leather. | ✘ | -| brand | `string` | Brand of the product. | ✘ | -| inventory_status | `string` | Inventory status of the product. E.g. in stock, out of stock, preorder, backorder. | ✘ | -| position | `number` | Position the product was presented in a list of products. Used in Product List events. | ✘ | -| creative_id | `string` | Identifier/Name/Url for the creative presented on a list or product view. | ✘ | - -Relevant Iglu schema - -### Internal promotion entity - -On internal promotion events, an internal promotion can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| id | `string` | The unique ID representing this promotion element. | ✅ | -| name | `string` | The friendly name for this promotion element. | ✘ | -| product_ids | `string[]` | An array of SKUs or product IDs showcased in this promotion element. | ✘ | -| position | `integer` | The position this promotion element was presented in a list of promotions E.g. banner, slider. | ✘ | -| creative_id | `string` | Identifier/Name/Url for the creative presented on this promotion element. | ✘ | -| type | `string` | The type of the promotion delivery mechanism. E.g. popup, banner, intra-content. | ✘ | -| slot | `string` | The website slot in which the promotional content was added to. E.g. Identifier for slot sidebar-1, intra-content-2. | ✘ | - - -Relevant Iglu schema - -### Cart entity - -On cart interaction ecommerce events, a cart can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| total_value | `number` | The total value of the cart after this interaction. | ✅ | -| currency | `string` | The currency used for this cart (ISO 4217). | ✅ | -| cart_id | `string` | The unique ID representing this cart. | ✘ | - -Relevant Iglu schema - -### Checkout step entity - -Whenever there is a checkout entity involved in the ecommerce interaction event, it can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| step | `number` | Checkout step index. | ✅ | -| shipping_postcode | `string` | Shipping address postcode. | ✘ | -| billing_postcode | `string` | Billing address postcode. | ✘ | -| shipping_full_address | `string` | Full shipping address. | ✘ | -| billing_full_address | `string` | Full billing address. | ✘ | -| delivery_provider | `string` | Can be used to discern delivery providers DHL, PostNL etc. | ✘ | -| delivery_method | `string` | Can be used to discern delivery methods selected E.g. store pickup, standard delivery, express delivery, international. | ✘ | -| coupon_code | `string` | Coupon applied at checkout. | ✘ | -| account_type | `string` | Type of account used on checkout. E.g. existing user, guest. | ✘ | -| payment_method | `string` | Any kind of payment method the user selected to proceed E.g. card, PayPal, Alipay etc. | ✘ | -| proof_of_payment | `string` | Invoice or receipt. | ✘ | -| marketing_opt_in | `boolean` | If opted in to marketing campaigns. | ✘ | - -Relevant Iglu schema - -### Transaction entity - -Whenever there is a transaction entity involved in the ecommerce interaction event, it can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| transaction_id | `string` | The ID of the transaction | ✅ | -| currency | `string` | The currency used for the transaction (ISO 4217). | ✅ | -| revenue | `number` | The revenue of the transaction. | ✅ | -| payment_method | `string` | The payment method used for the transaction. | ✅ | -| total_quantity | `number` | Total quantity of items in the transaction. | ✅ | -| tax | `number` | Total amount of tax on the transaction. | ✘ | -| shipping | `number` | Total cost of shipping on the transaction. | ✘ | -| discount_code | `string` | Discount code used. | ✘ | -| discount_amount | `number` | Discount amount taken off. | ✘ | -| credit_order | `boolean` | Whether the transaction is a credit order or not. | ✘ | - -Relevant Iglu schema - -### Refund entity - -Whenever there is a refund entity involved in the ecommerce interaction event, it can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| transaction_id | `string` | The ID of the transaction | ✅ | -| currency | `string` | The currency used for the transaction (ISO 4217). | ✅ | -| refund_amount | `number` | The amount refunded from the transaction. | ✅ | -| refund_reason | `string` | The reason that resulted in a refund. | ✘ | - -Relevant Iglu schema - -### Transaction Error entity - -Whenever there is a transaction error entity involved in the ecommerce interaction event, it can have the following attributes: - -| attribute | type | description | required | -| :--------------: | :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| error_code | `string` | Error-identifying code for the transaction issue. E.g. E522 | ✘ | -| error_shortcode | `string` | Shortcode for the error occurred in the transaction. E.g. declined_by_stock_api, declined_by_payment_method, card_declined, pm_card_radarBlock | ✘ | -| error_description | `number` | Longer description for the error occurred in the transaction. | ✘ | -| error_type | `Enum string` | Either `'hard'` or `'soft'`. Hard error types mean the customer must provide another form of payment e.g. an expired card. Soft errors can be the result of temporary issues where retrying might be successful e.g. processor declined the transaction. | ✘ | -| resolution | `string` | The resolution selected for the error scenario. E.g. retry_allowed, user_blacklisted, block_gateway, contact_user, default | ✘ | - -Relevant Iglu schema - -## GA4/UA Ecommerce transitional API - -:::note -Available from version 3.10. -::: - -If you already use Google Analytics 4 ecommerce or Universal Analytics Enhanced Ecommerce to collect information about the shopping behavior of your users, we have prepared a way to quickly implement Snowplow Ecommerce without making many changes on your current setup. - -The _transitional_ API that we provide, depends on the standardized [dataLayer](https://developers.google.com/tag-platform/tag-manager/web/datalayer) structure for both Google Analytics ecommerce implementations. This would make it easier for the transition to happen either through Google Tag Manager, which has more control over the dataLayer, or custom code that uses the standard ecommerce structures. - -:::info -To learn more about how to use this transitional API, you should go ahead and visit our [Ecommerce Web Accelerator](https://docs.snowplow.io/accelerators/ecommerce/tracking/ua_ga4_migration/) dedicated page which describes the usage of these methods and more. -::: - -### Universal Analytics Enhanced Ecommerce - -The standard Universal Analytics Enhanced Ecommerce implementation is based on the official [guide reference](https://developers.google.com/analytics/devguides/collection/ua/gtm/enhanced-ecommerce). - -**Important:** The `dataLayer.currencyCode` attribute must be available for all product interactions. Otherwise, almost all methods accept an `Options` object which can include the currency code as follows: - -```ts -method( {{dataLayer.ecommerce reference}} , { currency: "currency code" }); -``` - -#### trackEnhancedEcommerceProductListView - -To track an Enhanced Ecommerce product list view, you can use the `trackEnhancedEcommerceProductListView` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceProductListView:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackEnhancedEcommerceProductListClick - -To track an Enhanced Ecommerce product list click, you can use the `trackEnhancedEcommerceProductListClick` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceProductListClick:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackEnhancedEcommerceProductDetail - -To track an Enhanced Ecommerce product detail view, you can use the `trackEnhancedEcommerceProductDetail` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceProductDetail:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackEnhancedEcommercePromoView - -To track an Enhanced Ecommerce internal promotion view, you can use the `trackEnhancedEcommercePromoView` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommercePromoView:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackEnhancedEcommercePromoClick - -To track an Enhanced Ecommerce internal promotion click, you can use the `trackEnhancedEcommercePromoClick` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommercePromoClick:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackEnhancedEcommerceAddToCart - -To track an Enhanced Ecommerce add to cart event, you can use the `trackEnhancedEcommerceAddToCart` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceAddToCart:{trackerName}", {{dataLayer.ecommerce reference}}, { - finalCartValue: 20, -}); -``` - -- Where `finalCartValue` is the value of the cart after the addition. - -#### trackEnhancedEcommerceRemoveFromCart - -To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommerceRemoveFromCart` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceRemoveFromCart:{trackerName}", {{dataLayer.ecommerce reference}}, { - finalCartValue: 20, -}); -``` - -- Where `finalCartValue` is the value of the cart after the removal. - -#### trackEnhancedEcommerceCheckoutStep - -To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommerceCheckoutStep` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommerceCheckoutStep:{trackerName}", {{dataLayer.ecommerce reference}}, { - checkoutOption: { delivery_method: "express_delivery" }, -}); -``` - -- Where `checkoutOption` is a key value pair object of available [Snowplow checkout options](https://github.com/snowplow/iglu-central/tree/master/schemas/com.snowplowanalytics.snowplow.ecommerce/checkout_step), except `step` which is retrieved from the dataLayer directly. - -#### trackEnhancedEcommercePurchase - -To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommercePurchase` method with the following attributes: - -```js -window.snowplow("trackEnhancedEcommercePurchase:{trackerName}", {{dataLayer.ecommerce reference}}, { - paymentMethod: "bank_transfer", -}); -``` - -- Where `paymentMethod` is the payment method selected in this transaction. This attributes corresponds to the `payment_method` of the [transaction schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.ecommerce/transaction/jsonschema/1-0-0#L30). Defaults to `unknown`. - -### Google Analytics 4 Ecommerce - -The Google Analytics 4 ecommerce implementation is based on the official [guide reference](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm). - -**Important:** The `dataLayer.ecommerce.currency` attribute must be available for all product interactions. Otherwise, almost all methods accept an `Options` object which can include the currency code as follows: - -```ts -method( {{dataLayer.ecommerce reference}} , { currency: "currency code" }); -``` - -#### trackGA4ViewItemList - -To track an GA4 Ecommerce item list view, you can use the `trackGA4ViewItemList` method with the following attributes: - -```js -window.snowplow("trackGA4ViewItemList:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackGA4SelectItem - -To track an GA4 Ecommerce item selection from a list, you can use the `trackGA4SelectItem` method with the following attributes: - -```js -window.snowplow("trackGA4SelectItem:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackGA4ViewItem - -To track an GA4 Ecommerce item view, you can use the `trackGA4ViewItem` method with the following attributes: - -```js -window.snowplow("trackGA4ViewItem:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - - -#### trackGA4ViewPromotion - -To track an GA4 Ecommerce internal promotion view, you can use the `trackGA4ViewPromotion` method with the following attributes: - -```js -window.snowplow("trackGA4ViewPromotion:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackGA4SelectPromotion - -To track an GA4 Ecommerce internal promotion selection, you can use the `trackGA4SelectPromotion` method with the following attributes: - -```js -window.snowplow("trackGA4SelectPromotion:{trackerName}", {{dataLayer.ecommerce reference}}); -``` - -#### trackGA4AddToCart - -To track an GA4 Ecommerce add to cart event, you can use the `trackGA4AddToCart` method with the following attributes: - -```js -window.snowplow("trackGA4AddToCart:{trackerName}", {{dataLayer.ecommerce reference}}, { - finalCartValue: 20, -}); -``` - -- Where `finalCartValue` is the value of the cart after the addition. - - -#### trackGA4RemoveFromCart - -To track an GA4 Ecommerce remove from cart event, you can use the `trackGA4RemoveFromCart` method with the following attributes: - -```js -window.snowplow("trackGA4RemoveFromCart:{trackerName}", {{dataLayer.ecommerce reference}}, { - finalCartValue: 20, -}); -``` - -- Where `finalCartValue` is the value of the cart after the removal. - -#### trackGA4BeginCheckout - -To track an GA4 Ecommerce checkout beginning, you can use the `trackGA4BeginCheckout` method with the following attributes: - -```js -window.snowplow("trackGA4BeginCheckout:{trackerName}", { - step: 1, -}); -``` - -- Where `step` is a number representing the step of the checkout funnel. Defaults to 1, mimicking the `begin_checkout` GA4 event. - -#### trackGA4AddShippingInfo - -To track an GA4 Ecommerce checkout shipping info step completion, you can use the `trackGA4AddShippingInfo` method with the following attributes: - -```js -window.snowplow("trackGA4AddShippingInfo:{trackerName}", { - step: 1, -}); -``` - -- Where `step` is a number representing the step of the checkout funnel. - -#### trackGA4AddPaymentOptions - -To track an GA4 Ecommerce checkout payment option step completion, you can use the `trackGA4AddPaymentOptions` method with the following attributes: - -```js -window.snowplow("trackGA4AddPaymentOptions:{trackerName}", { - step: 1, -}); -``` - -- Where `step` is a number representing the step of the checkout funnel. - -#### trackGA4Transaction - -To track an GA4 Ecommerce checkout payment option step completion, you can use the `trackGA4Transaction` method with the following attributes: - -```js -window.snowplow("trackGA4Transaction:{trackerName}", { - paymentMethod: "bank_transfer", -}); -``` - -- Where `paymentMethod` is the payment method selected in this transaction. This attributes corresponds to the `payment_method` of the [transaction schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.ecommerce/transaction/jsonschema/1-0-0#L30). Defaults to `unknown`. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/timezone/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/timezone/index.md deleted file mode 100644 index 4045a36dc6..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/timezone/index.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: "Timezone" -date: "2021-03-31" -sidebar_position: 17000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. - -## Initialization - -```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-timezone@latest/dist/index.umd.min.js", - ["snowplowTimezone", "TimezonePlugin"] -); -``` - -### Properties - -This plugin will add Timezone tracking. This allows the tracker to populate the `` `os_timezone` `` field within the [canonical event model](/docs/understanding-your-pipeline/canonical-event/index.md). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/web-vitals/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/web-vitals/index.md deleted file mode 100644 index 77283e74c5..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/web-vitals/index.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Web Vitals" -sidebar_position: 17000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -The plugin adds the capability to track web performance metrics categorized as [Web Vitals](https://web.dev/vitals/). These metrics are tracked with an event based on the [web_vitals schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/web_vitals/jsonschema/). To make sure it collects the most complete values for the web vital metrics, the plugin uses a set of browser APIs to detect and send the event as the visitor is leaving the current page in the browser. - -To collect the web vitals data, the plugin loads the [web-vitals](https://github.com/GoogleChrome/web-vitals) open source library dynamically on your page. - -| Tracker Distribution | Included | -| --- | --- | -| `sp.js` | ❌ | -| `sp.lite.js` | ❌ | - -:::note -The plugin is available since version 3.13 of the tracker. -::: - -## Download - -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    - -## Initialization - -```javascript -window.snowplow( - 'addPlugin', - 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-web-vitals@latest/dist/index.umd.min.js', - ['snowplowWebVitals', 'WebVitalsPlugin'] -); -``` - -## Plugin options - -The Web Vitals plugin can be initialized with a couple of options allowing for customizing its behavior: - -| Option | Type | Description | Default value | -| :--------------:| :------: | :----------------------------------------------------------------------------------------------------------------: | :------: | -| loadWebVitalsScript | `boolean` | Should the plugin immediately load the Core Web Vitals measurement script from UNPKG CDN. | `true` | -| webVitalsSource | `string` | The URL endpoint the Web Vitals script should be loaded from. Defaults to the UNPKG CDN. | `https://unpkg.com/web-vitals@3/dist/web-vitals.iife.js` | - -### Using an already existing Web Vitals library source - -There could be cases where your page or one of the loaded JavaScript bundles already include the [web-vitals](https://github.com/GoogleChrome/web-vitals) library. In those cases, there is no need to load it an additional time from the plugin. If this is the case, you have to make sure that the library APIs are exposed in the `window` object properly as well. - -### Choosing a Web Vitals measurement source - -The default Web Vitals measurement script is loaded from the [UNPKG](https://www.unpkg.com/) CDN. This choice is chosen as a default but you should consider your own setup when choosing the script source. Selecting a script source from a CDN which might already be used in your website might save you from yet another connection startup time (_Queueing_,_DNS lookup_,_TCP_, _SSL_). - -Another reasonable choice could be [jsDelivr](https://cdn.jsdelivr.net/npm/web-vitals@3/dist/web-vitals.iife.js). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md deleted file mode 100644 index c0295dcc8a..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: "Additional options" -sidebar_position: 3000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -#### Toggling Anonymous Tracking - -The JavaScript Tracker can be initialized with `anonymousTracking: true` or `anonymousTracking: { withSessionTracking: true }` or `anonymousTracking: { withServerAnonymisation: true }`. You can read more about the anonymous tracking features [here](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md#anonymous-tracking). - -You may wish to toggle this functionality on or off during a page visit, for example when a user accepts a cookie banner you may not want to disable anonymous tracking, or when a user logs in to your site. - -##### Disable Anonymous Tracking - -To do this you can call the following methods: - -```javascript -snowplow('disableAnonymousTracking'); -``` - -or, if you wish to also adjust the `stateStorageStrategy` when enabling: - -```javascript -snowplow('disableAnonymousTracking', { - stateStorageStrategy: 'cookieAndLocalStorage' -}); -``` - -:::note - -If configuring the tracker with `stateStorageStrategy: 'localStorage'` and anonymous tracking using `withSessionTracking: true`, then if you change to a `stateStorageStrategy` which prefer cookies such as `cookie` or `cookieAndLocalStorage` then the session identifiers will reset. To maintain session identifiers, ensure you use the same `stateStorageStrategy`. - -::: - -##### Enable Anonymous Tracking - -:::note - -Enabling Anonymous tracking will clear all current user, session and page data from events sent to the collector. Although not sent in requests to collector, existing user and session identifiers will not be removed from cookies or local storage. See below for information on how to clear user data. - -::: - -If you wish to enable Anonymous Tracking, you can call: - -```javascript -snowplow('enableAnonymousTracking'); -``` - -which will enable client side anonymous tracking. - -For full, cookieless, anonymization, including anonymizing data within the Snowplow Collector (cookies and ip address), then you can enable server anonymization too: - -```javascript -snowplow('enableAnonymousTracking', { - options: { withServerAnonymisation: true } -}); -``` - -Server Anonymization requires the Snowplow Stream Collector v2.1.0+. Using a lower version will cause events to fail to send until Server Anonymization is disabled. - -If you want to enable anonymous tracking with session tracking, then you can use: - -```javascript -snowplow('enableAnonymousTracking', { - options: { withSessionTracking: true } -}); -``` - -From v3.1.0 it's also possible to change the `stateStorageStrategy` when enabling Anonymous Tracking, allowing you to switch off storage when turning anonymous tracking on: - -```javascript -snowplow('enableAnonymousTracking', { options: {}, stateStorageStrategy: 'none' }); // Available from v3.1.0 -``` - -##### Clear user data - -If you wish to clear all the cookies and local storage values which contain user data when switching on anonymous tracking, or triggered by other actions on your site, you can call the following: - -```javascript -snowplow('clearUserData'); -``` - -From v3.1, this will also clear in memory session and user identifiers too. This ensures all possible identifiers are cleared and even if tracking is resumed you will see new session and user identifiers. If you’d like to preserve the in-memory session and user identifiers, for future events should you continue tracking after clearing the cookies, you can do so: - -```javascript -snowplow('clearUserData', { preserveSession: true, preserveUser: true }); -``` - -#### Setting the user ID - -The JavaScript Tracker automatically sets a `domain_userid` based on a first party cookie. - -There are many situations, however, when you will want to identify a specific user using an ID generated by one of your business systems. To do this, you use one of the methods described in this section: `setUserId`, `setUserIdFromLocation`, `setUserIdFromReferrer`, and `setUserIdFromCookie`. - -Typically, companies do this at points in the customer journey where users identify themselves e.g. if they log in. - -:::note - -This will only set the user ID on further events fired while the user is on this page; if you want events on another page to record this user ID too, you must call `setUserId` on the other page as well. - -::: - -##### `setUserId` - -`setUserId` is the simplest of the four methods. It sets the business user ID to a string of your choice: - -```javascript -snowplow('setUserId', 'joe.blogs@email.com'); -``` - -:::note - -`setUserId` can also be called using the alias `identifyUser`. - -::: - -##### `setUserIdFromLocation` - -`setUserIdFromLocation` lets you set the user ID based on a querystring field of your choice. For example, if the URL is `http://www.mysite.com/home?id=user345`, then the following code would set the user ID to “user345”: - -```javascript -snowplow('setUserIdFromLocation', 'id'); -``` - -##### `setUserIdFromReferrer` - -`setUserIdFromReferrer` functions in the same way as `setUserIdFromLocation`, except that it uses the referrer querystring rather than the querystring of the current page. - -```javascript -snowplow('setUserIdFromReferrer', 'id'); -``` - -##### `setUserIdFromCookie` - -Use `setUserIdFromCookie` to set the value of a cookie as the user ID. For example, if you have a cookie called “cookieid” whose value is “user123”, the following code would set the user ID to “user123”: - -```javascript -snowplow('setUserIdFromCookie', 'cookieid'); -``` - -#### Setting a custom page URL and referrer URL - -The Snowplow JavaScript Tracker automatically tracks the page URL and referrerURL on any event tracked. However, in certain situations, you may want to override the one or both of these URLs with a custom value. (For example, this might be desirable if your CMS spits out particularly ugly URLs that are hard to unpick at analysis time.) - -To set a custom page URL, use the `setCustomUrl` method: - -```javascript -snowplow('setCustomUrl', 'http://mysite.com/checkout-page'); -``` - -To set a custom referrer, use the `setReferrerUrl` method: - -```javascript -snowplow('setReferrerUrl', 'http://custom-referrer.com'); -``` - -On a single-page app, the page URL might change without the page being reloaded. Whenever an event is fired, the Tracker checks whether the page URL has changed since the last event. If it has, the page URL is updated and the URL at the time of the last event is used as the referrer. If you use `setCustomUrl`, the page URL will no longer be updated in this way. If you use `setReferrerUrl`, the referrer URL will no longer be updated in this way. - -If you want to ensure that the original referrer is preserved even though your page URL can change without the page being reloaded, use `setReferrerUrl` like this before sending any events: - -```javascript -snowplow('setReferrerUrl', document.referrer); -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/index.md deleted file mode 100644 index 806128241f..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Tracker Setup" -date: "2021-03-25" -sidebar_position: 1000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - - -import DocCardList from '@theme/DocCardList'; - - -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md deleted file mode 100644 index 080b94e94e..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md +++ /dev/null @@ -1,496 +0,0 @@ ---- -title: "Initialization options" -date: "2021-03-25" -sidebar_position: 2000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -Tracker initialization is started by calling the `"newTracker"` function and takes three arguments: - -1. The tracker namespace -2. The collector endpoint -3. An optional configuration object containing other settings - -Here is a simple example of how to initialise a tracker: - -```javascript -snowplow('newTracker', 'sp', '{{collector_url_here}}', { - appId: 'my-app-id', - discoverRootDomain: true, - cookieSameSite: 'Lax', // Recommended - contexts: { - webPage: true // default, can be omitted - } -}); -``` - -The tracker will be named “sp” and will send events to the a collector url you specify by replacing `{{collector_url_here}}`. The final argument is the configuration object. Here it is just used to set the app ID and the common webPage context for each event. Each event the tracker sends will have an app ID field set to “my-app-id”. - -Here is a longer example in which every tracker configuration parameter is set: - -```javascript -snowplow('newTracker', 'sp', '{{collector_url_here}}', { - appId: 'my-app-id', - platform: 'web', - cookieDomain: null, - discoverRootDomain: true, - cookieName: '_sp_', - cookieSameSite: 'Lax', // Recommended - cookieSecure: true, - encodeBase64: true, - respectDoNotTrack: false, - eventMethod: 'post', - bufferSize: 1, - maxPostBytes: 40000, - maxGetBytes: 1000, // available in v3.4+ - postPath: '/custom/path', // Collector must be configured - crossDomainLinker: function (linkElement) { - return (linkElement.href === 'http://acme.de' || linkElement.id === 'crossDomainLink'); - }, - cookieLifetime: 63072000, - stateStorageStrategy: 'cookieAndLocalStorage', - maxLocalStorageQueueSize: 1000, - resetActivityTrackingOnPageView: true, - connectionTimeout: 5000, - anonymousTracking: false, - // anonymousTracking: { withSessionTracking: true }, - // anonymousTracking: { withSessionTracking: true, withServerAnonymisation: true }, - customHeaders: {}, // Use with caution. Available from v3.2.0+ - withCredentials: true, // Available from v3.2.0+ - contexts: { - webPage: true, // Default - session: false, // Adds client session context entity to events, off by default. Available in v3.5+. - browser: false, // Adds browser context entity to events, off by default. Available in v3.9+. - performanceTiming: true, - gaCookies: true, - geolocation: false, - clientHints: true, - // clientHints: { includeHighEntropy: true }, // Optional - }, - retryStatusCodes: [], - dontRetryStatusCodes: [], - onSessionUpdateCallback: function(clientSession) { }, // Allows the addition of a callback, whenever a new session is generated. Available in v3.11+. -}); -``` - -We will now go through the various configuration parameters. Note that these are all optional. In fact, you aren’t required to provide any configuration object at all. - -#### Setting the application ID - -Set the application ID using the `appId` field of the configuration object. This will be attached to every event the tracker fires. You can set different application IDs on different parts of your site. You can then distinguish events that occur on different applications by grouping results based on `application_id`. - -#### Setting the platform - -Set the application platform using the `platform` field of the configuration object. This will be attached to every event the tracker fires. Its default value is “web”. For a list of supported platforms, please see the [Snowplow Tracker Protocol](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md#application-parameters). - -#### Configuring the cookie domain - -If your website spans multiple subdomains e.g. - -- www.mysite.com -- blog.mysite.com -- application.mysite.com - -You will want to track user behavior across all those subdomains, rather than within each individually. As a result, it is important that the domain for your first party cookies is set to ‘.mysite.com’ rather than ‘www.mysite.com’. By doing so, any values that are stored on the cookie on one of subdomain will be accessible on all the others. - -It is recommended that you enable [automatic discovery and setting of the root domain.](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/initialization-options/index.md) - -Otherwise, set the cookie domain for the tracker instance using the `cookieDomain` field of the configuration object. If this field is not set, the cookies will not be given a domain. - -**WARNING**: _Changing the cookie domain will reset all existing cookies. As a result, it might be a major one-time disruption to data analytics because all visitors to the website will receive a new `domain_userid`._ - -#### Configuring the cookie name - -Set the cookie name for the tracker instance using the `cookieName` field of the configuration object. The default is “_sp_“. Snowplow uses two cookies, a domain cookie and a session cookie. In the default case, their names are “_sp_id” and “_sp_ses” respectively. If you are upgrading from an earlier version of Snowplow, you should use the default cookie name so that the cookies set by the earlier version are still remembered. Otherwise you should provide a new name to prevent clashes with other Snowplow users on the same page. - -Once set, you can retrieve a cookie name thanks to the `getCookieName(basename)` method where basename is id or ses for the domain and session cookie respectively. As an example, you can retrieve the complete name of the domain cookie with `getCookieName('id')`. - -#### Configuring the cookie samesite attribute - -Set the cookie samesite attribute for the tracker instance using the `cookieSameSite` field of the configuration object. The default is “None” for backward compatibility reasons, however ‘Lax’ is likely a better option for most use cases given the reasons below. Valid values are "Strict", "Lax", "None" or `null`. `null` will not set the SameSite attribute. - -It is recommended to set either "None" or "Lax". You must use "None" if using the tracker in a third party iframe. "Lax" is good in all other cases and must be used if not setting Secure to true. - -Safari 12 Issue with SameSite cookies - -It's been noted that Safari 12 doesn't persist cookies with `SameSite: None` as expected which can lead to rotation of the `domain_userid` from users using this browser. You should switch to `cookieSameSite: 'Lax'` in your tracker configuration to solve this, unless you are tracking inside a third party iframe. - -#### Configuring the cookie secure attribute - -Set the cookie secure attribute for the tracker instance using the `cookieSecure` field of the configuration object. The default is "true". Valid values are "true" or "false". - -It is recommended to set this to "true". This must be set to "false" if using the tracker on non-secure HTTP. - -#### Configuring base 64 encoding - -By default, self-describing events and custom contexts are encoded into Base64 to ensure that no data is lost or corrupted. You can turn encoding on or off using the `encodeBase64` field of the configuration object. - -#### Respecting Do Not Track - -Most browsers have a Do Not Track option which allows users to express a preference not to be tracked. You can respect that preference by setting the `respectDoNotTrack` field of the configuration object to `true`. This prevents cookies from being sent and events from being fired. - -#### Opt-out cookie - -It is possible to set an opt-out cookie in order not to track anything similarly to Do Not Track through `window.snowplow('setOptOutCookie', 'opt-out');` where ‘opt-out’ is the name of your opt-out cookie. If this cookie is set, cookies won’t be stored and events won’t be fired. - -#### Anonymous Tracking - -The Snowplow JavaScript tracker offers two techniques where tracking can be done anonymously. This means that no user identifiers are sent to the Snowplow Collector. By default `anonymousTracking: false`. - -Recommended configurations when using `anonymousTracking`: - -```javascript -anonymousTracking: true, -stateStorageStrategy: 'cookieAndLocalStorage' -``` - -or - -```javascript -anonymousTracking: { withSessionTracking: true }, -stateStorageStrategy: 'cookieAndLocalStorage' -``` - -or for a completely cookieless experience (from JavaScript Tracker 2.17.0+) - -```javascript -anonymousTracking: { withServerAnonymisation: true }, -stateStorageStrategy: 'none', -eventMethod: 'post' -``` - -##### Client Anonymous Tracking - -`anonymousTracking: true` - -This mode will no longer track any user identifiers or session information. Similar in behavior to setting `stateStorageStrategy: 'none'`, as it will store no values in cookies or localStorage, however by using `anonymousTracking` you can toggle this behavior on and off (useful for allowing events to be sent without user identifiers until cookie banners have been accepted). - -Setting `stateStorageStrategy` to `cookieAndLocalStorage` or `localStorage` also allows for event buffering to continue working whilst not sending user information when `anonymousTracking` is enabled. - -Anonymous tracking can be toggled on and off. The methods to control this behavior are described [here](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md). - -##### Full Anonymous/Cookieless Tracking - -`anonymousTracking: { withServerAnonymisation: true }` - -Server Anonymisation requires the Snowplow Stream Collector v2.1.0+. Using a lower version will cause events to fail to send until Server Anonymisatoin is disabled. - -Server Anonymisation will not work when the tracker is initialized with `eventMethod: 'beacon'` as it requires additional custom headers which beacon does not support. - -This mode will no longer track any user identifiers or session information, and will additionally prevent the Snowplow Collector from generating a `network_userid` cookie and capturing the users IP address. The same behavior described for above for Client side Anonymous tracking also applies. - -Setting `stateStorageStrategy` to `cookieAndLocalStorage` or `localStorage` also allows for event buffering to continue working whilst not sending user information when `anonymousTracking` is enabled. However for an experience that doesn't use any browser storage (cookieless), set `stateStorageStrategy` to `none`. This can be later toggled on, once a user accepts a cookie policy. - -Anonymous tracking can be toggled on and off. The methods to control this behavior are described [here](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/additional-options/index.md#toggling-anonymous-tracking). - -##### Anonymous Session Tracking - -`anonymousTracking: { withSessionTracking: true }` - -This mode will continue to track session information in the client side but will track no user identifiers. To achieve this, the tracker will use Cookies or local storage. For session tracking, `stateStorageStrategy` must be either `cookieAndLocalStorage` (default), `localStorage` or `cookie`. If this feature is enabled and the storage strategy is not appropriate, then full anonymous tracking will occur. - -The Snowplow JavaScript Tracker performs sessionization client side. This allows anonymous session tracking to be done using client side storage without sending any user identifier fields to the collector. - -#### Setting the event request protocol - -Normally the protocol (http or https) used by the Tracker to send events to a collector is the same as the protocol of the current page. You can force the tracker to use https by prefixing the collector endpoint with the protocol. For example: - -```javascript -newTracker('sp', 'https://{{collector_url_here}}', { - appId: 'my-app-id' -} -``` - -#### Configuring the session cookie duration - -Whenever an event fires, the Tracker creates a session cookie. If the cookie didn’t previously exist, the Tracker interprets this as the start of a new session. - -By default the session cookie expires after 30 minutes. This means that a user leaving the site and returning in under 30 minutes does not change the session. You can override this default by setting `sessionCookieTimeout` to a duration (in seconds) in the configuration object. For example, - -```javascript -{ - ... - sessionCookieTimeout: 3600 - ... -} -``` - -would set the session cookie lifespan to an hour. - -#### Configuring the storage strategy - -Three strategies are made available to store the Tracker’s state: cookies, local storage or no storage at all. You can set the strategy with the help of the `stateStorageStrategy` parameter in the configuration object to “cookieAndLocalStorage” (the default), “cookie”, “localStorage” or “none” respectively. - -When choosing local storage, the Tracker will additionally store events in local storage before sending them so that they can be recovered if the user leaves the page before they are sent. - -See also [How the Tracker uses `localStorage`](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/cookies-and-local-storage/index.md) for an explanation of how the tracker can later recover and send unsent events. - -#### Adding predefined contexts - -The JavaScript Tracker comes with many predefined contexts which you can automatically add to every event you send. To enable them, simply add them to the `contexts` field of the configuration object as above. - -##### webPage context - -When the JavaScript Tracker loads on a page, it generates a new page view UUID. If the webPage context is enabled, then a context containing this UUID is attached to every page view. - -Enabled by default - -From v3 of the JavaScript Tracker, the webPage context is enabled by default. You can disable it if you don't require it but we advise you leave this enabled so you can use the [Snowplow Web Data Model](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-models/legacy/dbt-web-data-model/index.md). - -##### session context - -If this context is enabled, the JavaScript tracker will add a context entity to events with information about the current session. The context entity repeats some of the session information stored in canonical event properties (e.g., `domain_userid`, `domain_sessionid`), but also adds new information. It adds a reference to the previous session (`previousSessionId`) and first event in the current session (`firstEventId`, `firstEventTimestamp`). It also adds an index of the event in the session useful for ordering events as they were tracked (`eventIndex`). - -Anonymous tracking has to be disabled for the session context entities to be added to events. - -The [`client_session`](http://iglucentral.com/schemas/com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2) context entity consists of the following properties: - -| Attribute | Description | Required? | -|-----------------------|---------------------------------------------------------------------------------------------------------------|-----------| -| `userId` | An identifier for the user of the session (same as `domain_userid`). | Yes | -| `sessionId` | An identifier (UUID) for the session (same as `domain_sessionid`). | Yes | -| `sessionIndex` | The index of the current session for this user (same as `domain_sessionidx`). | Yes | -| `eventIndex` | Optional index of the current event in the session. Signifies the order of events in which they were tracked. | No | -| `previousSessionId` | The previous session identifier (UUID) for this user. | No | -| `storageMechanism` | The mechanism that the session information has been stored on the device. | Yes | -| `firstEventId` | The optional identifier (UUID) of the first event id for this session. | No | -| `firstEventTimestamp` | Optional date-time timestamp of when the first event in the session was tracked. | No | - -:::note -Please note that the session context entity is only available since version 3.5 of the tracker. -::: - -##### browser context - -The [browser](https://github.com/snowplow/iglu-central/tree/master/schemas/com.snowplowanalytics.snowplow/browser_context/jsonschema) context entity consists of the following properties: - -| Attribute | Description | Required? | -| : ------: | :--------: | :-----: | -| `viewport` | Viewport dimensions of the browser. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | -| `documentSize` | Document dimensions. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | -| `resolution` | Device native resolution. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | -| `colorDepth` | The number of bits allocated to colors for a pixel in the output device, excluding the alpha channel. | Yes | -| `devicePixelRatio` | Ratio of the resolution in physical pixels to the resolution in CSS pixels for the current display device. | No | -| `cookiesEnabled` | Indicates whether cookies are enabled or not. More info and caveats at the official [documentation](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/cookieEnabled). | Yes | -| `online` | Returns the online status of the browser. Important caveats are described in [documentation](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine). | Yes | -| `browserLanguage` | The preferred language of the user, usually the language of the browser UI. Defined in [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). | No | -| `documentLanguage` | The language of the HTML document. Defined in [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). | No | -| `webdriver` | Indicates whether the user agent is controlled by automation. | No | -| `deviceMemory` | Approximate amount of device memory in gigabytes. | No | -| `hardwareConcurrency` | Number of logical processors available to run threads on the user's computer. | No | -| `tabId` | A UUID identifier for the client browser tab the event is sent from. | No | - -:::note -Please note that the browser context entity is only available since version 3.9 of the tracker. -::: - - -##### performanceTiming context - -If this context is enabled, the JavaScript Tracker will use the create a context JSON from the `window.performance.timing` object, along with the Chrome `firstPaintTime` field (renamed to `"chromeFirstPaint"`) if it exists. This data can be used to calculate page performance metrics. - -Note that if you fire a page view event as soon as the page loads, the `domComplete`, `loadEventStart`, `loadEventEnd`, and `chromeFirstPaint` metrics in the Navigation Timing API may be set to zero. This is because those properties are only known once all scripts on the page have finished executing. See the [Advanced Usage](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/getting-the-most-out-of-performance-timing/index.md) page for more information on circumventing this limitation. Additionally the `redirectStart`, `redirectEnd`, and `secureConnectionStart` are set to 0 if there is no redirect or a secure connection is not requested. - -For more information on the Navigation Timing API, see [the specification](http://www.w3.org/TR/2012/REC-navigation-timing-20121217/#sec-window.performance-attribute). - -##### gaCookies context - -If this context is enabled, the JavaScript Tracker will look for Google Analytics cookies (specifically the “__utma”, “__utmb”, “__utmc”, “__utmv”, “__utmz”, and “_ga” cookies) and combine their values into a JSON which gets sent with every event. - -##### clientHints context - -If this context is enabled, the JavaScript Tracker will capture the Client Hints data made available in the browser. See [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-CH#Browser_compatibility) for browser support. - -This is useful data to capture as browsers are moving away from high entropy User Agent strings. Client Hints offer useful information to understand browser usage without the potential to infringe on a users privacy as is often the case with the User Agent string. - -This context be enabled in two ways: - -1. `clientHints: true` - - This will capture the "basic" client hints -2. `clientHints: { includeHighEntropy: true }` - - This will capture the "basic" client hints as well as hints that are deemed "High Entropy" and could be used to fingerprint users. Browsers may choose to prompt the user before making this data available. - -To see what will be captured please see the JsonSchema file [org.ietf/http_client_hints/jsonschema/1-0-0](https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0). - -##### geolocation context - -If this context is enabled, the JavaScript Tracker will attempt to create a context from the visitor’s geolocation information. If the visitor has not already given or denied the website permission to use their geolocation information, a prompt will appear. If they give permission, then all events from that moment on will include their geolocation information. - -###### `enableGeolocationContext` - -If the geolocation context isn't enabled at tracker initialization, then it can be enabled at a later time by calling `enableGeolocationContext`. This is useful if you have other areas of your site where you require requesting geolocation access, as you can defer enabling this on your Snowplow events until you have permission to read the users geolocation for your other use case. - -For more information on the geolocation API, see [the specification](http://dev.w3.org/geo/api/spec-source.html). - -##### optimizelyXSummary context - -Support for OptimizelyX has been introduced in the tracker, you can have a look at the JsonSchema in [com.optimizely.optimizelyx/summary/jsonschema/1-0-0](https://github.com/snowplow/iglu-central/blob/master/schemas/com.optimizely.optimizelyx/summary/jsonschema/1-0-0) to see what is being captured. - -If you’re planning on leveraging the context’s variation names, you’ll have to untick ‘Mask descriptive names in project code and third-party integrations’ in the OptimizelyX menu -> Settings -> Privacy. Otherwise, all variation names will be `null`. - -#### POST support - -If you set the `eventMethod` field of the configuration object to `post`, the tracker will send events using POST requests rather than GET requests. In browsers which do not support cross-origin XMLHttpRequests (e.g. IE9), the tracker will fall back to using GET. - -`eventMethod` defaults to `post`, other options available are `get` for GET requests and `beacon` for using the Beacon API (**Note**: Beacon support is not available and/or unreliable in some browsers, in these cases the tracker will fallback to POST). - -The main advantage of POST requests is that they circumvent Internet Explorer’s maximum URL length of 2083 characters by storing the event data in the body of the request rather than the querystring. - -You can also batch events sent by POST by setting a numeric `bufferSize` field in the configuration object. This is the number of events to buffer before sending them all in a single POST. If the user navigates away from the page while the buffer is only partially full, the tracker will attempt to send all stored events immediately, but this often doesn’t happen before the page unloads. Normally the tracker will store unsent events in `localStorage`, meaning that unsent events will be resent when the user next visits a page on the same domain. The `bufferSize` defaults to 1, meaning events are sent as soon as they are created. - -We recommend leaving the `bufferSize` as the default value of 1. This ensure that events are sent as they are created, and reduces the chance of events being unsent and left in local storage, if a user closes their browser before a flush can occur (which happens on page visibility changing). - -If you have set `bufferSize` to greater than 1, you can flush the buffer using the `flushBuffer` method: - -```javascript -snowplow('flushBuffer'); -``` - -For instance, if you wish to send several events at once, you might make the API calls to create the events and store them and then and call `flushBuffer` afterwards to ensure they are all sent before the user leaves the page. - -Note that if `localStorage` is inaccessible or you are not using it to store data, the buffer size will always be 1 to prevent losing events when the user leaves the page. - -##### Beacon API support - -The Beacon interface is used to schedule asynchronous and non-blocking requests to a web server. This will allow events to be sent even after a webpage is closed. This browser interface can be used to send events by setting the `eventMethod` field in the configuration object to `beacon`. - -Using Beacon will store a Session Cookie in the users browser for reliability reasons, and will always send the first request as a standard POST. This prevents data loss in a number of older browsers with broken Beacon implementations. - -Note: the Beacon API makes POST requests. - -More information and documentation about the Beacon API can be found [here](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API). - -##### POST path - -The POST path that is used to send POST requests to a collector can be change with the configuration object value `postPath`. - -`postPath` defaults to the standard path: `/com.snowplowanalytics.snowplow/tp2` - -```mdx-code-block -import PostPath from "@site/docs/reusable/trackers-post-path-note/_index.md" - - -``` - -#### Configuring cross-domain tracking - -```mdx-code-block -import CrossDomain from "@site/docs/reusable/javascript-tracker-cross-domain/_index.md" -``` - - - -#### Configuring the maximum payload size in bytes - -**POST requests** - -Because the Snowplow Stream Collector can have a maximum request size, the Tracker limits POST requests to 40000 bytes. If the combined size of the events in `localStorage` is greater than this limit, they will be split into multiple POST requests. You can override this default using a `maxPostBytes` in the configuration object. - -**GET requests** - -By default, there is no limit on the maximum size of GET requests – the tracker will add to queue and try to emit all GET requests irrespective of their size. However (since version 3.4), there is an optional `maxGetBytes` parameter which serves two purposes: - -1. It prevents requests over the threshold in bytes to be added to event queue and retried in case sending them is not successful. -2. It sends events over the threshold as individual POST requests (same as for `maxPostBytes`). - -The size of GET requests is calculated for their full GET request URL. - -**Collector limit** - -The Snowplow Stream Collector cannot process requests bigger than 1MB because that is the maximum size of a Kinesis record. - -#### Automatically discover and set the root domain - -If the optional `discoverRootDomain` field of the configuration object is set to `true`, the Tracker automatically discovers and sets the `configCookieDomain` value to the root domain. - -**NOTE**: If you have been setting this manually please note that the automatic detection does not prepend a ‘.’ to the domain. For example a root domain of “.mydomain.com” would become “mydomain.com”. This is because the library we use for setting cookies doesn’t care about the difference. - -**This will then result in a different domain hash, so we recommend that if you have been setting this manually with a leading ‘.’ to continue to do so manually.** - -#### Configuring the cookies lifetime - -Whenever tracker initialized on your domain – it will set domain-specific visitor’s cookies. By default, these cookies will be active for 2 years. You can change this duration using `cookieLifetime` configuration object parameter or `setVisitorCookieTimeout` method. - -```javascript -snowplow('newTracker', 'cf', '{{COLLECTOR_URL}}', { - cookieLifetime: 86400 * 31, -}); -``` - -or - -```javascript -snowplow('setVisitorCookieTimeout', 86400 * 30); // 30 days -``` - -If `cookieLifetime` is set to `0`, the cookie will expire at the end of the session (when the browser closes). If set to `-1`, the first-party cookies will be disabled. - -#### Limiting local storage queue size - -Because most browsers limit local storage to around 5mb per site, you may want to limit the number of events the tracker will queue in local storage if they fail to send. The default is a max queue size of 1000, but you may wish to reduce this if your web application also makes use local storage. To do so, you should set the optional `maxLocalStorageQueueSize` field of the configuration object is set to your desired value (e.g. 500). - -#### Reset Page Ping on Page View - -By default the tracker will reset the Page Ping timers, which were configured when `enableActivityTracking` is called, as well as reset the attached Page View contexts on all future Page Pings when a new `trackPageView` event occurs. This is enabled by default as of 2.13.0 and is particularly useful for Single Page Applications (SPA), if you previously relied on this behavior, you can disable this functionality by specifying `resetActivityTrackingOnPageView: false` in the configuration object on tracker initialisation. - -#### Set connection timeout - -When events are sent using POST or GET, they are given 5 seconds to complete by default. GET requests having a timeout is only available in 2.15.0. - -`_connectionTimeout_: 5000` - -This value is configurable when initialising the tracker and is specified in milliseconds. The value specified here will effect both POST and GET requests. - -**Warning:** Setting this value too low may prevent events from successfully sending to your collector or the tracker may retry to send events that have already arrived at the collector, as the tracker will assume the request failed on timeout, leading to duplicate events in the warehouse. **We recommend 5000 milliseconds as the minimum value and 10000 as the maximum value.** - -#### Setting Custom Header values - -From v3.2.0, you are able to set custom headers with an `eventMethod: "post"` and `eventMethod: "get"` (Except for IE9). This functionality should only be used in the case where a Proxy or other Collector type is being used which allows for custom headers to be set on the request. **CAUTION:** Adding additional headers without returning the appropriate CORS Headers on the OPTIONS request will cause events to fail to send. - -```javascript -customHeaders: { - 'Content-Language': 'de-DE, en-CA', -} -``` - -#### Disabling withCredentials flag - -From v3.2.0, it's now possible to turn off the `withCredentials` flag on all requests to the collector. The default value is `true` which sets `withCredentials` to `true` on requests. Disabling this flag will have impact when using `eventMethod: "post"` and `eventMethod: "get"`. This flag has no effect on same site requests, but disabling it will prevent cookies being sent with requests to a Snowplow Collector running on a different domain. You can read more about this flag at [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials). - -```javascript -withCredentials: false -``` - -#### Setting custom retry HTTP status codes - -The tracker provides a retry functionality that sends the same events repeatedly in case GET or POST requests to the Collector fail. This may happen due to connection issues or a non-successful HTTP status code (>= 300) in Collector response. - -Prior to version 3.5 of the tracker, requests receiving all 4xx and 5xx HTTP status codes in Collector response were retried. Since version 3.5, the behavior changed and became customizable: - -By default, the tracker retries on all 3xx, 4xx, and 5xx status codes except for 400, 401, 403, 410, and 422. The set of status codes for which events should be retried or not is customizable. You can make use of the `retryStatusCodes` and `dontRetryStatusCodes` lists to specify them. Retry behavior can only be configured for non-successful status codes (i.e., >= 300). - -```javascript -retryStatusCodes: [403], // override default behavior and retry on 403 -dontRetryStatusCodes: [418] // force retry on 418 -``` - -Please note that not retrying sending events to the Collector means that the events will be dropped when they fail to be sent. Take caution when choosing the `dontRetryStatusCodes`. - -#### On session update callback - -The `onSessionUpdateCallback` option, allows you to supply a callback function to be executed whenever a new session is generated on the tracker. - -The callback's signature is: -`(clientSession: ClientSession) => void` -where clientSession includes the same values as you would expect on the [`client_session`](http://iglucentral.com/schemas/com.snowplowanalytics.snowplow/client_session/jsonschema/1-0-2) context. - -_Note:_ The callback is **not** called whenever a session is expired, but only when a new one is generated. - -:::note -Please note that the session context entity is only available since version 3.11 of the tracker. -::: diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/loading/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/loading/index.md deleted file mode 100644 index b34270ccfe..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/loading/index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Loading tracker with the Snowplow tag" -date: "2021-03-25" -sidebar_position: 1000 ---- - -There are two distributions of the JavaScript Tracker: - -- `sp.js` is fully featured and is bundled with the majority of the available plugins. -- `sp.lite.js` is a smaller distribution with no bundled plugins. Included is Page View, Self Describing and Structured Event tracking as well as Activity Tracking and Anonymous Tracking. All other features can be loaded as separate [plugins](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md). - -```mdx-code-block -import LoadWithTag from "@site/docs/reusable/javascript-tracker-load-with-tag/_index.md" - - -``` - -Once the tracker is loaded via the tag, you can move on to initializing the tracker. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/managing-multiple-trackers/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/managing-multiple-trackers/index.md deleted file mode 100644 index 78b9e9bb13..0000000000 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/managing-multiple-trackers/index.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: "Managing multiple trackers" -date: "2021-03-25" -sidebar_position: 4000 ---- - -```mdx-code-block -import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' - - -``` - -You can have more than one tracker instance running on the same page at once. This may be useful if you want to log events to different collectors. By default, any Snowplow method you call will be executed by every tracker you have created so far. - -You can override this behavior and specify which trackers will execute a Snowplow method. To do this, change the method name by adding a colon followed by a list of tracker names separated by semicolons as such: - -```javascript -/* Sending a pageview on a single tracker */ -snowplow('trackPageView:{{TRACKER_NAME}}'); -/* Sending a pageview on multiple trackers */ -snowplow('trackPageView:{{TRACKER_NAME}};{{ANOTHER_TRACKER_NAME}}'); - -/** - * Where {{TRACKER_NAME}} and {{ANOTHER_TRACKER_NAME}} are names of - * trackers initialized on the page using the `newTracker` API. -*/ -``` - -Example usage: - -```javascript -snowplow("newTracker", "sp1", "{{FIRST_COLLECTOR_URL}}", { - appId: "my-app", - platform: "mob" -}); - -snowplow("newTracker", "sp2", "{{SECOND_COLLECTOR_URL}}", { - appId: "my-app", - platform: "mob" -}); - -/* Both trackers will use this custom title */ -snowplow('setCustomUrl', 'http://mysite.com/checkout-page'); - -/* Both trackers will fire a structured event */ -snowplow('trackStructEvent', { - category: 'Mixes', - action: 'Play', - label: 'MRC/fabric-0503-mix', - property: '', - value: 0.0, -}); - -/* Only the first tracker will be affected by the plugin addition */ -snowplow( - "addPlugin:sp1", - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-web-vitals@3/dist/index.umd.min.js", - ["snowplowWebVitals", "WebVitalsPlugin"] -); - -/* Only the first tracker will fire this structured event */ -snowplow('trackStructEvent:sp1', { - category: 'Mixes', - action: 'Play', - label: 'MRC/fabric-0503-mix', - property: '', - value: 0.0, -}); - -/* Only the second tracker will fire this self-describing event */ -snowplow('trackSelfDescribingEvent:sp2', { - event: { - schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', - data: { - product_id: 'ASO01043', - category: 'Dresses', - brand: 'ACME', - returning: true, - price: 49.95, - sizes: ['xs', 's', 'l', 'xl', 'xxl'], - available_since$dt: new Date(2013,3,7) - } - } -}); - -/* Both trackers will fire a page view event */ -snowplow('trackPageView:sp1;sp2'); -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracking-events/images/Screenshot-2021-03-25-at-16.55.21.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracking-events/images/Screenshot-2021-03-25-at-16.55.21.png deleted file mode 100644 index b258fe92b06348d739d607ac86525f3d54d1e6e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33031 zcmb@tbC@Je^DaExv36{8$F^C=YywPm%wpC>cHp2xuEUtABxi zD0nF_D@Fd+5%`cQJd`pL<^v!)Qle9hu7DA4O<>w`eVfUr%SGGf^X+EmnuE>6CqQnX zEpa@wDyXldT_YnwR|Yz2PFLR}Fo-D-

    m~X0~JxEF2tQspPm%(xVF?Bll(<#^e2E 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 -``` - -Snowplow has been built to enable users to track a wide range of events that occur when consumers interact with their websites and webapps. - -Snowplow has a number of "built-in" events but offers unlimited event types through Self Describing Events. In addition to this, events can have additional data properties attached them by adding "context" to each event. - -Typical Snowplow web tracking plans often leverage the following event types: - -- [Page Views](#page-views) -- [Page Pings (Activity Tracking)](#activity-tracking-page-pings) -- [Self Describing Events](#tracking-custom-self-describing-events) -- [Event with custom context](#custom-context) - -This page goes on to discuss more advanced topics in tracking events: - -- [Global context](#global-context) -- [Link click tracking](#link-click-tracking) -- [Form tracking](#form-tracking) -- [Ecommerce tracking](#ecommerce-tracking) -- [Social tracking](#social-tracking) -- [Campaign tracking](#campaign-tracking) -- [Ad tracking methods](#ad-tracking-methods) -- [Enhanced Ecommerce tracking](#enhanced-ecommerce-tracking) -- [Consent tracking](#consent-tracking) -- [GDPR context](#gdpr-context) -- [Setting the true timestamp](#setting-the-true-timestamp) - -### Page Views - -Page views are tracked using the `trackPageView` method. This is generally part of the first Snowplow tag to fire on a particular web page. As a result, the `trackPageView` method is usually deployed straight after the tag that also invokes the Snowplow JavaScript (sp.js) e.g. - -```javascript - - - -``` - -#### `trackPageView` - -Track pageview is called using the simple: - -```javascript runnable -snowplow('trackPageView'); -``` - -This method automatically captures the URL, referrer and page title (inferred from the `Title` tag. - -If you wish, you can override the title with a custom value: - -```javascript runnable -snowplow('trackPageView', { title: 'my custom page title' }); -``` - -`trackPageView` can also be passed an array of custom context as an additional final parameter. See [custom context](#custom-context) for more information. - -Additionally, you can pass a function which returns an array of zero or more contexts to trackPageView. For the page view and for all subsequent page pings, the function will be called and the contexts it returns will be added to the event. - -For example: - -```javascript -// Turn on page pings every 10 seconds -snowplow('enableActivityTracking', { - minimumVisitLength: 10, - heartbeatDelay: 10 -}); - -snowplow('trackPageView', { - // The usual array of static contexts - context: [{ - schema: 'iglu:com.acme/static_context/jsonschema/1-0-0', - data: { - staticValue: new Date().toString() - } - }], - // Function which returns an array of custom context - // Gets called once per page view / page ping - contextCallback: function() { - return [{ - schema: 'iglu:com.acme/dynamic_context/jsonschema/1-0-0', - data: { - dynamicValue: new Date().toString() - } - }]; - } -}); -``` - -The page view and every subsequent page ping will have both a static_context and a dynamic_context attached. The static_contexts will all have the same staticValue, but the dynamic_contexts will have different dynamicValues since a new context is created for every event. - -### Activity Tracking: page pings - -As well as tracking page views, we can monitor whether users continue to engage with pages over time, and record how they digest content on each page over time. - -That is accomplished using 'page ping' events. If activity tracking is enabled, the web page is monitored to see if a user is engaging with it. (E.g. is the tab in focus, does the mouse move over the page, does the user scroll, is `updatePageActivity` called, etc.) If any of these things occur in a set period of time, a page ping event fires, and records the maximum scroll left / right and up / down in the last ping period. If there is no activity in the page (e.g. because the user is on a different browser tab), no page ping fires. - -#### `enableActivityTracking` - -Page pings are enabled by: - -```javascript -snowplow('enableActivityTracking', { - minimumVisitLength: number, - heartbeatDelay: number -}); -``` - -where `minimumVisitLength` is the time period from page load before the first page ping occurs, in seconds. `heartbeat` is the number of seconds between each page ping, once they have started. So, if you executed: - -```javascript -snowplow('enableActivityTracking', { - minimumVisitLength: 30, - heartbeatDelay: 10 -}); - -snowplow('trackPageView'); -``` - -The first ping would occur after 30 seconds, and subsequent pings every 10 seconds as long as the user continued to browse the page actively. - -Notes: - -- In general this is executed as part of the main Snowplow tracking tag. As a result, you can elect to enable this on specific pages. -- The `enableActivityTracking` method **must** be called _before_ the `trackPageView` method. -- Activity tracking will be disabled if either `minimumVisitLength` or `heartbeatDelay` is not integer. This is to prevent relentless callbacks. - -#### `enableActivityTrackingCallback` - -You can now perform edge analytics in the browser to reduce the number of events sent to you collector whilst still tracking user activity. The Snowplow JavaScript Tracker enabled this by allowing a callback to be specified in place of a page ping being sent. This is enabled by: - -```javascript -snowplow('enableActivityTrackingCallback', { - minimumVisitLength: number, - heartbeatDelay: number, - callback: (data: ActivityCallbackData) => void -}); -``` - -where `minimumVisitLength` is the time period from page load before the first page ping occurs, in seconds. `heartbeat` is the number of seconds between each page ping, once they have started. The `callback` should be a function which will receive an event object containing the page ping activity information, including pageivew_id, and any Page View contexts. - -```javascript -type ActivityCallbackData = { - /** - * All context for the activity tracking - * Often generated by the page view events context callback - */ - context: Array; - /** The current page view id */ - pageViewId: string; - /** The minimum X scroll position for the current page view */ - minXOffset: number; - /** The maximum X scroll position for the current page view */ - minYOffset: number; - /** The minimum Y scroll position for the current page view */ - maxXOffset: number; - /** The maximum Y scroll position for the current page view */ - maxYOffset: number; -}; -``` - -A full example of how this might be used to aggregate page ping information and then send an event on page unload is below: - -```javascript -snowplow('newTracker', 'sp', '{{collector_url_here}}', { - appId: 'my-app-id', - eventMethod: 'beacon' -}); -var aggregatedEvent = { - pageViewId: null, - minXOffset: 0, - maxXOffset: 0, - minYOffset: 0, - maxYOffset: 0, - numEvents: 0 -}; -snowplow('enableActivityTrackingCallback', { - minimumVisitLength: 10, - heartbeatDelay: 10, - callback: function (event) { - aggregatedEvent = { - pageViewId: event.pageViewId, - minXOffset: aggregatedEvent.minXOffset < event.minXOffset ? aggregatedEvent.minXOffset : event.minXOffset, - maxXOffset: aggregatedEvent.maxXOffset > event.maxXOffset ? aggregatedEvent.maxXOffset : event.maxXOffset, - minYOffset: aggregatedEvent.minYOffset < event.minYOffset ? aggregatedEvent.minYOffset : event.minYOffset, - maxYOffset: aggregatedEvent.maxYOffset > event.maxYOffset ? aggregatedEvent.maxYOffset : event.maxYOffset, - numEvents: aggregatedEvent.numEvents + 1 - }; -}); -document.addEventListener('visibilitychange', function() { - if (document.visibilityState == 'hidden') { - window.snowplow('trackSelfDescribingEvent', { - event: { - schema: 'iglu:com.acme_company/page_unload/jsonschema/1-0-0', - data: { - minXOffset: Math.max(0, Math.round(aggregatedEvent.minXOffset)), - maxXOffset: Math.max(0, Math.round(aggregatedEvent.maxXOffset)), - minYOffset: Math.max(0, Math.round(aggregatedEvent.minYOffset)), - maxYOffset: Math.max(0, Math.round(aggregatedEvent.maxYOffset)), - activeSeconds: aggregatedEvent.numEvents * 10 - } - } - }); - } -}); -window.snowplow('trackPageView'); -``` - -:::note - -For this technique of sending on visibility change to work reliably, we recommend initializing the Snowplow tracker with `eventMethod: 'beacon'` and/or `stateStorageStrategy: 'cookieAndLocalStorage'` (if navigating to a page that also contains the JS Tracker). Using the visibility change technique may not work as expected for Single Page Applications (SPA), you would need to send the aggregated event to the Snowplow collector on navigation within your application. - -::: - -:::caution - -The `iglu:com.acme_company/page_unload/jsonschema/1-0-0` schema used in the example is not a valid schema. Please define your own schema for these events. Otherwise, they will fail validation and go to the bad event queue. - -::: - -We are using `visibilitychange` events as `beforeunload` isn't a reliable option for mobile devices when using `beacon`. You can read more about this on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#description). An idea on the different levels of compatibility of the different Page Visibility API across browsers and mobile can here found [here](https://www.igvita.com/2015/11/20/dont-lose-user-and-app-state-use-page-visibility/). - -#### `updatePageActivity` - -You can also mark the user as active with: - -```javascript -snowplow('updatePageActivity'); -``` - -On the next interval after this call, a ping will be generated even if the user had no other activity. - -This is particularly useful when a user is passively engaging with your content, e.g. watching a video. - -#### `disableActivityTracking` - -:::note -Available since version 3.14 of the tracker. -::: - -To disable activity tracking, you can use the `disableActivityTracking` method. - -```javascript -snowplow('disableActivityTracking'); -``` - -Disabling activity tracking will stop page activity intervals and will not send additional activity tracking events. - -#### `disableActivityTrackingCallback` - -:::note -Available since version 3.14 of the tracker. -::: - -To disable the activity tracking callback, you can use the `disableActivityTrackingCallback` method. - -```javascript -snowplow('disableActivityTracking'); -``` - -This will stop any further activity tracking callback from being executed. - -### Tracking custom self-describing events - -```mdx-code-block -import DefineCustomEvent from "@site/docs/reusable/define-custom-event/_index.md" - - -``` - -#### `trackSelfDescribingEvent` - -To track a self-describing event, you make use the `trackSelfDescribingEvent` method: - -```javascript -snowplow('trackSelfDescribingEvent', {{SELF-DESCRIBING EVENT JSON}}); -``` - -For example: - -```javascript -snowplow('trackSelfDescribingEvent', { - event: { - schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', - data: { - productId: 'ASO01043', - category: 'Dresses', - brand: 'ACME', - returning: true, - price: 49.95, - sizes: ['xs', 's', 'l', 'xl', 'xxl'], - availableSince: new Date(2013,3,7) - } - } -}); -``` - -The second argument is a [self-describing JSON](http://snowplowanalytics.com/blog/2014/05/15/introducing-self-describing-jsons/). It has two fields: - -- A `data` field, containing the properties of the event -- A `schema` field, containing the location of the [JSON schema](http://json-schema.org/) against which the `data` field should be validated. - -The `data` field should be flat, not nested. - -`trackSelfDescribingEvent` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### Tracking custom structured events - -There are likely to be a large number of events that can occur on your site, for which a specific tracking method is part of Snowplow. - -Our philosophy in creating Snowplow is that users should capture important consumer interactions and design suitable data structures for this data capture. You can read more about that philosophy [here](/docs/understanding-tracking-design/index.md). Using `trackSelfDescribingEvent` captures these interactions with custom schemas, as described above. - -However, as part of a Snowplow implementation there may be interactions where custom Self Describing events are perhaps too complex or unwarranted. They are then candidates to track using `trackStructEvent`, if none of the other event-specific methods outlined above are appropriate. - -#### `trackStructEvent` - -There are five parameters can be associated with each structured event. Of them, only the first two are required: - -| **Name** | **Required?** | **Description** | -| ---------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `Category` | Yes | The name you supply for the group of objects you want to track e.g. 'media', 'ecomm' | -| `Action` | Yes | A string which defines the type of user interaction for the web object e.g. 'play-video', 'add-to-basket' | -| `Label` | No | An optional string which identifies the specific object being actioned e.g. ID of the video being played, or the SKU or the product added-to-basket | -| `Property` | No | An optional string describing the object or the action performed on it. This might be the quantity of an item added to basket | -| `Value` | No | An optional float to quantify or further describe the user action. This might be the price of an item added-to-basket, or the starting time of the video where play was just pressed | - -The async specification for the `trackStructEvent` method is: - -```javascript runnable -snowplow('trackStructEvent', { - category: 'category', - action: 'action', - label: 'label', - property: 'property', - value: 0.0 -}); -``` - -An example of tracking a user listening to a music mix: - -```javascript runnable -snowplow('trackStructEvent', { - category: 'Mixes', - action: 'Play', - label: 'MrC/fabric-0503-mix', - property: '', - value: 0.0 -}); -``` - -Note that in the above example no value is set for the `event property`. - -`trackStructEvent` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### Custom context - -```mdx-code-block -import DefineCustomEntity from "@site/docs/reusable/define-custom-entity/_index.md" - - -``` - -Custom context can be added as an extra argument to any of Snowplow's `track..()` methods and to `addItem` and `addTrans`. - -**Important:** Even if only one custom context is being attached to an event, it still needs to be wrapped in an array. - -Here are two example custom context JSONs. One describes a page: - -```javascript -{ - schema: "iglu:com.example_company/page/jsonschema/1-2-1", - data: { - pageType: 'test', - lastUpdated: new Date(2014,1,26) - } -} -``` - -and the other describes a user on that page: - -```javascript -{ - schema: "iglu:com.example_company/user/jsonschema/2-0-0", - data: { - userType: 'tester' - } -} -``` - -#### Tracking events with Custom Context - -How to track a **page view** with both of these contexts attached: - -```javascript -snowplow('trackPageView', { - context: [{ - schema: "iglu:com.example_company/page/jsonschema/1-2-1", - data: { - pageType: 'test', - lastUpdated: new Date(2021,04,01) - } - }, - { - schema: "iglu:com.example_company/user/jsonschema/2-0-0", - data: { - userType: 'tester' - } - }] -}); -``` - -How to track a **self describing event** with both of these contexts attached: - -```javascript -snowplow('trackSelfDescribingEvent', { - event: { - schema: 'iglu:com.example_company/product_viewed/jsonschema/1-0-1', - data: { - productId: '12345', - price: 10.99 - } - }, - context: [{ - schema: 'iglu:com.example_company/page/jsonschema/1-2-1', - data: { - pageType: 'test', - lastUpdated: new Date(2021,04,01) - } - }, - { - schema: "iglu:com.example_company/user/jsonschema/2-0-0", - data: { - userType: 'tester' - } - }] -}); -``` - -For more information on custom context, see [here](/docs/understanding-your-pipeline/entities/index.md#custom-entities). - -### Global context - -**Global context** lets you define your own contexts once (e.g. on tracker initialization) and then have this context sent with every single event subsequently recorded on the page. This saves having to manually build and send the context array with every single event fired. - -Here is an example that adds a global context entity to all subsequently tracked events: - -```javascript -// Create a context entity and add it to global context -let contextEntity = { - schema: 'iglu:com.acme/user_context/jsonschema/1-0-0', - data: { userid: 1234, name: 'John Doe' } -}; -window.snowplow('addGlobalContexts', [contextEntity]); - -// The global context will be added to this page view event as well -window.snowplow('trackPageView'); -``` - -You may not want to add the same context entity to all tracked events. There are several ways to make global context dynamic: - -1. Using a **[context generator](#context-generators)** that generates context entities on the fly when events are sent. -2. Using **[filter functions](#filter-functions)** that filter which events to add global context entities to. -3. Using **[rulesets](#rulesets)** that define rules which types of events to accept or reject when generating global context entities. - -#### Context generators - -Generating context on-the-fly is accomplished with **context generators**. A context generator is a callback that will be evaluated with an optional argument that contains useful information. - -A sample context generator that conditionally generates a context entity could look like this: - -```javascript -const contextGenerator = (args) => { - if (args.eventType == 'pv') { - return { - schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', - data: { test: 1 }, - }; - } -}; -window.snowplow('addGlobalContexts', [contextGenerator]); -``` - -The optional input is an associative array that contains three elements: - -- `event` : self-describing JSON -- `eventType` : string -- `eventSchema` : string (schema URI) - -Keep in mind that the arguments `eventType` and `eventSchema` are data found in `event`. `eventType` and `eventSchema` are provided for convenience, so that simple tasks don't require users to search through the event payload. - -##### `eventType` - -This argument is a string taken from the event payload field, `e`. - -`eventType` takes the following values: - -| Type | `e` | -| ------------------------------ | --------- | -| Pageview tracking | pv | -| Page pings | pp | -| Link click | ue | -| Ad impression tracking | ue | -| Ecommerce transaction tracking | tr and ti | -| Custom structured event | se | -| Custom self describing event | ue | - -Further information about the event payload can be found in the [tracker protocol documentation](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md). - -##### `eventSchema` - -Users should be aware of the behavior of the argument `eventSchema`. Since 'first-class events' (e.g. structured events, transactions, pageviews, etc.) lack a proper schema (their event type is determined by the `e` field), callbacks will be provided the upper-level schema that defines the payload of all events: - -`iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4` - -For self describing events, `eventSchema` will be the schema that describes the self describing event, not the event payload. Again, this behavior isn't necessarily uniform, but provides more utility to differentiate events. - -#### Conditional context providers - -We can augment context primitives by allowing them to be sent conditionally. While it's possible to define this functionality within context generators (with conditional logic), conditional context providers simplify common ways of sending contexts that follow certain rules. - -The general form is an array of two objects: - -`[conditional part, context primitive or [array of primitives]]` - -The conditional part is standardized into two options: - -- a filter function -- a schema ruleset - -#### Filter functions - -Filter functions take the standard callback arguments defined for context generators, but instead of returning a Self Describing JSON, return a boolean value. As should be expected: `true` will attach the context part, `false` will not attach the context part. - -#### Example - -```javascript -// A filter that will only attach contexts to structured events -function structuredEventFilter(args) { - return args['eventType'] === 'se'; -} -var globalContextDefinition = [structuredEventFilter, contextEntityToBeAdded]; -window.snowplow('addGlobalContexts', [globalContextDefinition]); -``` - -#### Rulesets - -Rulesets define when to attach context primitives based on the event schema. This follows the standard behavior for all callbacks (the schema used to evaluate is the same provided in `eventSchema`, namely the payload schema for "first-class events" and otherwise the schema found within the self describing event). - -Here's the specific structure of a ruleset, it's an object with certain optional rules that take the form of fields, each holding an array of strings: - -```javascript -{ - accept: [], - reject: [] -} -``` - -Some examples, take note that wild-card matching URI path components is defined with an asterisk, `*`, in place of the component: - -```javascript -// Only attaches contexts to this one schema -var ruleSetAcceptOne = { - accept: ['iglu:com.mailchimp/cleaned_email/jsonschema/1-0-0'] -}; - -// Only attaches contexts to these schemas -var ruleSetAcceptTwo = { - accept: ['iglu:com.mailchimp/cleaned_email/jsonschema/1-0-0', - 'iglu:com.mailchimp/subscribe/jsonschema/1-0-0'] -}; - -// Only attaches contexts to schemas with mailchimp vendor -var ruleSetAcceptVendor = { - accept: ['iglu:com.mailchimp/*/jsonschema/*-*-*'] -}; - -// Only attaches contexts to schemas that aren't mailchimp vendor -var ruleSetRejectVendor = { - reject: ['iglu:com.mailchimp/*/jsonschema/*-*-*'] -}; - -// Only attach to Snowplow first class events -var ruleSet = { - accept: ['iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4'] -}; -``` - -You can add a global context entity with a ruleset as follows: - -```javascript -var globalContextDefinition = [ruleSet, contextEntityToAdd]; -window.snowplow('addGlobalContexts', [globalContextDefinition]); -``` - -#### Rule requirements - -All rules and schemas follow a standard form: - -`protocol:vendor/event_name/format/version` - -And rules must meet some requirements to be considered valid: - -- Two parts are invariant: protocol and format. They are always `iglu` and `jsonschema` respectively. - - Wildcards can therefore be used only in `vendor`, `event_name` and `version`. -- Version matching must be specified like so: `*-*-*`, where any part of the versioning can be defined, e.g. `1-*-*`, but only sequential parts are to be wildcarded, e.g. `1-*-1` is invalid but `1-*-*` is valid. -- Vendors require the first two "larger parts": - - `com.acme.*` -- Vendors cannot be defined with non-wildcarded parts between wildcarded parts: - - `com.acme.*.marketing.*` is invalid - - `com.acme.*.*` is valid - -#### Global contexts methods - -These are the standard methods to add and remove global contexts: - -#### `addGlobalContexts` - -To add global contexts: `snowplow('addGlobalContexts', [array of global contexts])` - -#### `removeGlobalContexts` - -To remove a global context: `snowplow('removeGlobalContexts', [array of global contexts])`. - -Global context entities are removed by doing a JSON match of the context to be removed with the added context. So the objects have to be the same in order for them to be matched. - -For example: - -```javascript -var entity = { - schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', - data: { test: 1 }, -}; -window.snowplow('addGlobalContexts', [entity]); // add a global context -window.snowplow('removeGlobalContexts', [entity]); // remove the global context -``` - -#### `clearGlobalContexts` - -To remove all global contexts: `snowplow('clearGlobalContexts')` - -### Link click tracking - -Link click tracking is enabled using the `enableLinkClickTracking` method. Use this method once and the Tracker will add click event listeners to all link elements. Link clicks are tracked as self describing events. Each link click event captures the link's href attribute. The event also has fields for the link's id, classes, and target (where the linked document is opened, such as a new tab or new window). - -[Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1) is the JSON schema for a link click event. - -#### `enableLinkClickTracking` - -Turn on link click tracking like this: - -```javascript -snowplow('enableLinkClickTracking'); -``` - -This is its signature (Where `?` defines an optional property): - -```javascript -snowplow('enableLinkClickTracking', { - options?: FilterCriterion, - pseudoClicks?: boolean, - trackContent?: boolean - context?: SelfDescribingJson[] -}); -``` - -Where FilterCriterion is an object: - -```javascript -interface FilterCriterion { - /** A collection of class names to include */ - allowlist?: string[]; - /** A collector of class names to exclude */ - denylist?: string[]; - /** A callback which returns a boolean as to whether the element should be included */ - filter?: (elt: HTMLElement) => boolean; -} -``` - -You can control which links are tracked using the second argument. There are three ways to do this: a denylist, an allowlist, and a filter function. - -**Denylists** - -This is an array of CSS classes which should be ignored by link click tracking. For example, the below code will stop link click events firing for links with the class "barred" or "untracked", but will fire link click events for all other links: - -```javascript -snowplow('enableLinkClickTracking', { - options: { - denylist: ['barred', 'untracked'] - } -}); -``` - -If there is only one class name you wish to deny, you should still put it in an array: - -```javascript -snowplow('enableLinkClickTracking', { options: { 'denylist': ['barred'] } }); -``` - -**Allowlists** - -The opposite of a denylist. This is an array of the CSS classes of links which you do want to be tracked. Only clicks on links with a class in the list will be tracked. - -```javascript -snowplow('enableLinkClickTracking', { - options: { - 'allowlist': ['unbarred', 'tracked'] - } -}); -``` - -If there is only one class name you wish to whitelist, you should still put it in an array: - -```javascript -snowplow('enableLinkClickTracking', { options: { 'allowlist': ['unbarred'] } }); -``` - -**Filter functions** - -You can provide a filter function which determines which links should be tracked. The function should take one argument, the link element, and return either 'true' (in which case clicks on the link will be tracked) or 'false' (in which case they won't). - -The following code will track clicks on those and only those links whose id contains the string "interesting": - -```javascript -function myFilter (linkElement) { - return linkElement.id.indexOf('interesting') > -1; -} - -snowplow('enableLinkClickTracking', { options: { 'filter': myFilter } }); -``` - -An optional parameter is `pseudoClicks`. If this is not turned on, Firefox will not recognise middle clicks. If it is turned on, there is a small possibility of false positives (click events firing when they shouldn't). **Turning this feature on is recommended**: - -```javascript -snowplow('enableLinkClickTracking', { pseudoClicks: true }); -``` - -Another optional parameter is `trackContent`. Set it to `true` if you want link click events to capture the innerHTML of the clicked link: - -```javascript -snowplow('enableLinkClickTracking', { trackContent: true }); -``` - -The innerHTML of a link is all the text between the `a` tags. Note that if you use a base 64 encoded image as a link, the entire base 64 string will be included in the event. - -Each link click event will include (if available) the destination URL, id, classes and target of the clicked link. (The target attribute of a link specifies a window or frame where the linked document will be loaded.) - -**Contexts** - -`enableLinkClickTracking` can also be passed an array of custom context to attach to every link click event as an additional final parameter. - -Link click tracking supports dynamic contexts. Callbacks passed in the contexts argument will be evaluated with the source element passed as the only argument. The self-describing JSON context object returned by the callback will be sent with the link click event. - -A dynamic context could therefore look something like this for link click events: - -```javascript -let dynamicContext = function (element) { - // perform operations here to construct the context - return context; -}; - -snowplow('enableLinkClickTracking', { context: [dynamicContext] }); -``` - -See [custom context](#custom-context) for more information. - -#### `refreshLinkClickTracking` - -`enableLinkClickTracking` only tracks clicks on links which exist when the page has loaded. If new links can be added to the page after then which you wish to track, just use `refreshLinkClickTracking`. This will add Snowplow click listeners to all links which do not already have them (and which match the denylist, allowlist, or filter function you specified when `enableLinkClickTracking` was originally called). Use it like this: - -```javascript -snowplow('refreshLinkClickTracking'); -``` - -#### `trackLinkClick` - -You can manually track individual link click events with the `trackLinkClick` method. This is its signature: - -```javascript -snowplow('trackLinkClick, { - /** The target URL of the link */ - targetUrl: string; - /** The ID of the element clicked if present */ - elementId?: string; - /** An array of class names from the element clicked */ - elementClasses?: Array; - /** The target value of the element if present */ - elementTarget?: string; - /** The content of the element if present and enabled */ - elementContent?: string; -}); -``` - -Of these arguments, only `targetUrl` is required. This is how to use `trackLinkClick`: - -```javascript -snowplow('trackLinkClick', { - targetUrl: 'http://www.example.com', - elementId: 'first-link', - elementClasses: ['class-1', 'class-2'], - elementTarget: '', - elementContent: 'this page' -}); -``` - -`trackLinkClick` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### Form tracking - -Snowplow automatic form tracking detects three event types: - -1. [change_form](#change_form) – form field changed. -2. [submit_form](#submit_form) – form submitted. -3. [focus_form](#focus_form) – form field focused. - -By default, all three event types are tracked. However, it is possible to subscribe only to specific event types using the `options.events` option when enabling form tracking: - -```javascript -snowplow('enableFormTracking', { - options: { - events: ['submit_form', 'focus_form', 'change_form'] - }, -}); -``` - -##### `change_form` - -When a user changes the value of a `textarea`, `input`, or `select` element inside a form, a [`change_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0) event will be fired. It will capture the name, type, and new value of the element, and the id of the parent form. - -##### `submit_form` - -When a user submits a form, a [`submit_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0) event will be fired. It will capture the id and classes of the form and the name, type, and value of all `textarea`, `input`, and `select` elements inside the form. - -Note that this will only work if the original form submission event is actually fired. If you prevent it from firing, for example by using a jQuery event handler which returns `false` to handle clicks on the form's submission button, the Snowplow `submit_form` event will not be fired. - -##### `focus_form` - -When a user focuses on a form element, a [`focus_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0) event will be fired. It will capture the id and classes of the form and the name, type, and value of the `textarea`, `input`, or `select` element inside the form that received focus. - -#### `enableFormTracking` - -Use the `enableFormTracking` method to add event listeners to turn on form tracking by adding event listeners to all form elements and to all interactive elements inside forms (that is, all `input`, `textarea`, and `select` elements). - -```javascript -snowplow('enableFormTracking'); -``` - -This will only work for form elements which exist when it is called. If you are creating a form programmatically, call `enableFormTracking` again after adding it to the document to track it. You can call `enableFormTracking` multiple times without risk of duplicated events. **From v3.2.0**, if you are programmatically adding additional fields to a form after initially calling `enableFormTracking` then calling it again after the new form fields are added will include them in form tracking. - -:::note - -Events on password fields will not be tracked. - -::: - -#### Custom form tracking - -It may be that you do not want to track every field in a form, or every form on a page. You can customize form tracking by passing a configuration argument to the `enableFormTracking` method. This argument should be an object with two elements named "forms" and "fields". The "forms" element determines which forms will be tracked; the "fields" element determines which fields inside the tracked forms will be tracked. As with link click tracking, there are three ways to configure each field: a denylist, an allowlist, or a filter function. You do not have to use the same method for both fields. - -**Denylists** - -This is an array of strings used to prevent certain elements from being tracked. Any form with a CSS class in the array will be ignored. Any field whose name property is in the array will be ignored. All other elements will be tracked. - -**Allowlists** - -This is an array of strings used to turn on certail. Any form with a CSS class in the array will be tracked. Any field in a tracked form whose name property is in the array will be tracked. All other elements will be ignored. - -**Filter functions** - -This is a function used to determine which elements are tracked. The element is passed as the argument to the function and is tracked if and only if the value returned by the function is truthy. - -**Transform functions** - -This is a function used to transform data in each form field. The value and element (2.15.0+ only) are passed as arguments to the function and the tracked value is replaced by the value returned. - -**Contexts** - -Contexts can be sent with all form tracking events by supplying them in an array in the `contexts` argument. - -```javascript -snowplow('enableFormTracking', { options: {}, context: [] }); -``` - -These contexts can be dynamic, i.e. they can be traditional self-describing JSON objects, or callbacks that generate valid self-describing JSON objects. - -For form change events, context generators are passed `(elt, type, value)`, and form submission events are passed `(elt, innerElements)`. - -A dynamic context could therefore look something like this for form change events: - -```javascript -let dynamicContext = function (elt, type, value) { - // perform operations here to construct the context - return context; -}; - -snowplow('enableFormTracking', { options: {}, context: [dynamicContext] }); -``` - -**Examples** - -To track every form element and every field except those fields named "password": - -```javascript -var opts = { - forms: { - denylist: [] - }, - fields: { - denylist: ['password'] - } -}; - -snowplow('enableFormTracking', { options: opts }); -``` - -To track only the forms with CSS class "tracked", and only those fields whose ID is not "private": - -```javascript -var opts = { - forms: { - allowlist: ["tracked"] - }, - fields: { - filter: function (elt) { - return elt.id !== "private"; - } - } -}; - -snowplow('enableFormTracking', { options: opts }); -``` - -To transform the form fields with an MD5 hashing function: - -```javascript -var opts = { - forms: { - allowlist: ["tracked"] - }, - fields: { - filter: function (elt) { - return elt.id !== "private"; - }, - transform: function (value, elt) { - // can use elt to make transformation decisions - return MD5(value); - } - } -}; - -snowplow('enableFormTracking', { options: opts }); -``` - -#### Tracking forms embedded inside iframes - -The options for tracking forms inside of iframes are limited – browsers block access to contents of iframes that are from different domains than the parent page. We are not able to provide a solution to track events using trackers initialized on the parent page in such cases. However, since version 3.4, it is possible to track events from forms embedded in iframes loaded from the same domain as the parent page or iframes created using JavaScript on the parent page (e.g., HubSpot forms). - -In case you are able to access form elements inside an iframe, you can pass them in the `options.forms` argument when calling `enableFormTracking` on the parent page. This will enable form tracking for the specific form elements. The feature may also be used for forms not embedded in iframes, but it's most useful in this particular case. - -The following example shows how to identify the form elements inside an iframe and pass them to the `enableFormTracking` function: - -```javascript -let iframe = document.getElementById('form_iframe'); // find the element for the iframe -let forms = iframe.contentWindow.document.getElementsByTagName('form'); // find form elements inside the iframe -snowplow('enableFormTracking', { - options: { - forms: forms // pass the embedded forms when enabling form tracking - }, -}); -``` - -### Ecommerce tracking - -Modelled on Google Analytics ecommerce tracking capability, Snowplow uses three methods that have to be used together to track online transactions: - -1. **Create a transaction object**. Use `addTrans()` method to initialize a transaction object. This will be the object that is loaded with all the data relevant to the specific transaction that is being tracked including all the items in the order, the prices of the items, the price of shipping and the `order_id`. -2. **Add items to the transaction.** Use the `addItem()` method to add data about each individual item to the transaction object. -3. **Submit the transaction to Snowplow** using the trackTrans() method, once all the relevant data has been loaded into the object. - -#### `addTrans` - -The `addTrans` method creates a transaction object. It takes nine possible parameters, two of which are required: - -| **Parameter** | **Description** | **Required?** | **Example value** | -| ------------- | ---------------------------------------------------- | ------------- | ----------------- | -| `orderId` | Internal unique order id number for this transaction | Yes | '1234' | -| `affiliation` | Partner or store affiliation | No | 'Womens Apparel' | -| `total` | Total amount of the transaction | Yes | '19.99' | -| `tax` | Tax amount of the transaction | No | '1.00' | -| `shipping` | Shipping charge for the transaction | No | '2.99' | -| `city` | City to associate with transaction | No | 'San Jose' | -| `state` | State or province to associate with transaction | No | 'California' | -| `country` | Country to associate with transaction | No | 'USA' | -| `currency` | Currency to associate with this transaction | No | 'USD' | - -For example: - -```javascript -snowplow('addTrans', { - orderId: '1234', // required - total: 11.99, // required - affiliation: 'Acme Clothing', - tax: 1.29, - shipping: 5, - city: 'San Jose', - state: 'California', - country: 'USA', - currency: 'USD' -}); -``` - -`addTrans` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -#### `addItem` - -The `addItem` method is used to capture the details of each product item included in the transaction. It should therefore be called once for each item. - -There are six potential parameters that can be passed with each call, four of which are required: - -| **Parameter** | **Description** | **Required?** | **Example value** | -| ------------- | -------------------------------------------------- | --------------------------------------------------- | ----------------- | -| `orderId` | Order ID of the transaction to associate with item | Yes | '1234' | -| `sku` | Item's SKU code | Yes | 'pbz0001234' | -| `name` | Product name | No, but advisable (to make interpreting SKU easier) | 'Black Tarot' | -| `category` | Product category | No | 'Large' | -| `price` | Product price | Yes | 9.99 | -| `quantity` | Purchase quantity | Yes | 1 | -| `currency` | Product price currency | No | 'USD' | - -For example: - -```javascript -snowplow('addItem', { - orderId: '1234', // required - sku: 'DD44', // required - name: 'T-Shirt', - category: 'Green Medium', - price: 11.99, - quantity: 1, - currency: 'USD' -}); -``` - -`addItem` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -#### trackTrans - -Once the transaction object has been created (using `addTrans`) and the relevant item data added to it using the `addItem` method, we are ready to send the data to the collector. This is initiated using the `trackTrans` method: - -```javascript -snowplow('trackTrans'); -``` - -#### Putting the three methods together: a complete example - -```html - - -Receipt for your clothing purchase from Acme Clothing - - - - - Thank you for your order. You will receive an email containing all your order details. - - - -``` - -#### `trackAddToCart` and `trackRemoveFromCart` - -These methods let you track users adding and removing items from a cart on an ecommerce site. Their arguments are identical: - -| **Name** | **Required?** | **Description** | **Type** | -| ----------- | ------------- | -------------------------------------- | -------- | -| `sku` | Yes | Item SKU | string | -| `name` | No | Item name | string | -| `category` | No | Item category | string | -| `unitPrice` | Yes | Item price | number | -| `quantity` | Yes | Quantity added to or removed from cart | number | -| `currency` | No | Item price currency | string | - -An example: - -```javascript -snowplow('trackAddToCart', { - sku: '000345', - name: 'blue tie', - category: 'clothing', - unitPrice: 3.49, - quantity: 2, - currency: 'GBP' -}); - -snowplow('trackRemoveFromCart', { - sku: '000345', - name: 'blue tie', - category: 'clothing', - unitPrice: 3.49, - quantity: 2, - currency: 'GBP' -}); -``` - -Both methods are implemented as Snowplow self describing events. You can see schemas for the [`add_to_cart`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/add_to_cart/jsonschema/1-0-0) and [`remove_from_cart`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/remove_from_cart/jsonschema/1-0-0) events. - -Both methods can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### Social tracking - -Social tracking will be used to track the way users interact with Facebook, Twitter and Google + widgets, e.g. to capture "like this" or "tweet this" events. - -#### `trackSocialInteraction` - -The `trackSocialInteraction` method takes three parameters: - -| **Parameter** | **Description** | **Required?** | **Example value** | -| ------------- | ------------------------------------------------------------- | ------------- | --------------------- | -| `action` | Social action performed | Yes | 'like', 'retweet' | -| `network` | Social network | Yes | 'facebook', 'twitter' | -| `target` | Object social action is performed on e.g. page ID, product ID | No | '19.99' | - -The method is executed in as: - -```javascript -snowplow('trackSocialInteraction', { - action: string, - network: string, - target: string -}); -``` - -For example: - -```javascript -snowplow('trackSocialInteraction', { - action: 'like', - network: 'facebook', - target: 'pbz00123' -}); -``` - -`trackSocialInteraction` can also be passed an array of custom context as an additional parameter. See [custom context](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracking-events/index.md#custom-contexts) for more information. - -### Campaign tracking - -Campaign tracking is used to identify the source of traffic coming to a website. - -At the highest level, we can distinguish **paid** traffic (that derives from ad spend) with **non paid** traffic: visitors who come to the website by entering the URL directly, clicking on a link from a referrer site or clicking on an organic link returned in a search results, for example. - -In order to identify **paid** traffic, Snowplow users need to set five query parameters on the links used in ads. Snowplow checks for the presence of these query parameters on the web pages that users load: if it finds them, it knows that that user came from a paid source, and stores the values of those parameters so that it is possible to identify the paid source of traffic exactly. - -If the query parameters are not present, Snowplow reasons that the user is from a **non paid** source of traffic. It then checks the page referrer (the url of the web page the user was on before visiting our website), and uses that to deduce the source of traffic: - -1. If the URL is identified as a search engine, the traffic medium is set to "organic" and Snowplow tries to derive the search engine name from the referrer URL domain and the keywords from the query string. -2. If the URL is a non-search 3rd party website, the medium is set to "referrer". Snowplow derives the source from the referrer URL domain. - -#### Identifying paid sources - -Your different ad campaigns (PPC campaigns, display ads, email marketing messages, Facebook campaigns etc.) will include one or more links to your website e.g.: - -```html -Visit website -``` - -We want to be able to identify people who've clicked on ads e.g. in a marketing email as having come to the site having clicked on a link in that particular marketing email. To do that, we modify the link in the marketing email with query parameters, like so: - -```html -Visit website -``` - -For the prospective customer clicking on the link, adding the query parameters does not change the user experience. (The user is still directed to the webpage at `http://mysite.com/myproduct.html`.) But Snowplow then has access to the fields given in the query string, and uses them to identify this user as originating from the October Newsletter, an email marketing campaign with campaign id = cn0201. - -#### Anatomy of the query parameters - -Snowplow uses the same query parameters used by Google Analytics. Because of this, Snowplow users who are also using GA do not need to do any additional work to make their campaigns trackable in Snowplow as well as GA. Those parameters are: - -| **Parameter** | **Name** | **Description** | -| -------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `utm_source` | Campaign source | Identify the advertiser driving traffic to your site e.g. Google, Facebook, autumn-newsletter etc. | -| `utm_medium` | Campaign medium | The advertising / marketing medium e.g. cpc, banner, email newsletter, in-app ad, cpa | -| `utm_campaign` | Campaign id | A unique campaign id. This can be a descriptive name or a number / string that is then looked up against a campaign table as part of the analysis | -| `utm_term` | Campaign term(s) | Used for search marketing in particular, this field is used to identify the search terms that triggered the ad being displayed in the search results. | -| `utm_content` | Campaign content | Used either to differentiate similar content or two links in the same ad. (So that it is possible to identify which is generating more traffic.) | - -The parameters are described in the [Google Analytics help page](https://support.google.com/analytics/answer/1033863). Google also provides a [urlbuilder](https://support.google.com/analytics/answer/1033867?hl=en) which can be used to construct the URL incl. query parameters to use in your campaigns. - -### Ad tracking methods - -Snowplow tracking code can be included in ad tags in order to track impressions and ad clicks. This is used by e.g. ad networks to identify which sites and web pages users visit across a network, so that they can be segmented, for example. - -Each ad tracking method has a `costModel` field and a `cost` field. If you provide the `cost` field, you must also provide one of `'cpa'`, `'cpc'`, and `'cpm'` for the `costModel` field. - -It may be the case that multiple ads from the same source end up on a single page. If this happens, it is important that the different Snowplow code snippets associated with those ads not interfere with one another. The best way to prevent this is to randomly name each tracker instance you create so that the probability of a name collision is negligible. See [Managing multiple trackers](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/tracker-setup/managing-multiple-trackers/index.md) for more on having more than one tracker instance on a single page. - -Below is an example of how to achieve this when using Snowplow ad impression tracking. - -```javascript - - - -``` - -Even if several copies of the above script appear on a page, the trackers created will all (probably) have different names and so will not interfere with one another. The same technique should be used when tracking ad clicks. The below examples for `trackAdImpression` and `trackAdClick` assume that `rnd` has been defined in this way. - -#### `trackAdImpression` - -Ad impression tracking is accomplished using the `trackAdImpression` method. Here are the arguments it accepts: - -| **Name** | **Required?** | **Description** | **Type** | -| -------------- | ------------- | -------------------------------------------------------------------- | -------- | -| `impressionId` | No | Identifier for the particular impression instance | string | -| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | -| `cost` | No | Ad cost | number | -| `targetUrl` | No | The destination URL | string | -| `bannerId` | No | Adserver identifier for the ad banner (creative) being displayed | string | -| `zoneId` | No | Adserver identifier for the zone where the ad banner is located | string | -| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | -| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | - -:::note - -All properties are optional but you must specify at least 1 for this to be a valid call to `trackAdImpression`. - -::: - -An example: - -```javascript -snowplow('trackAdImpression', { - impressionId: '67965967893', - costModel: 'cpm', // 'cpa', 'cpc', or 'cpm' - cost: 5.5, - targetUrl: 'http://www.example.com', - bannerId: '23', - zoneId: '7', - advertiserId: '201', - campaignId: '12' -}); -``` - -Ad impression events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_impression/jsonschema/1-0-0) is the JSON schema for an ad impression event. - -`trackAdImpression` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -#### `trackAdClick` - -Ad click tracking is accomplished using the `trackAdClick` method. Here are the arguments it accepts: - -| **Name** | **Required?** | **Description** | **Type** | -| -------------- | ------------- | -------------------------------------------------------------------- | -------- | -| `targetUrl` | Yes | The destination URL | string | -| `clickId` | No | Identifier for the particular click instance | string | -| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | -| `cost` | No | Ad cost | number | -| `bannerId` | No | Adserver identifier for the ad banner (creative) being displayed | string | -| `zoneId` | No | Adserver identifier for the zone where the ad banner is located | string | -| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | -| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | - -An example: - -```javascript -snowplow('trackAdClick', - targetUrl: 'http://www.example.com', - clickId: '12243253', - costModel: 'cpm', - cost: 2.5, - bannerId: '23', - zoneId: '7', - impressionId: '67965967893', // the same as in trackAdImpression - advertiserId: '201', - campaignId: '12' -); -``` - -Ad click events are implemented as Snowplow self describing events.[Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_click/jsonschema/1-0-0) is the JSON schema for an ad click event. - -`trackAdClick` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -#### `trackAdConversion` - -Use the `trackAdConversion` method to track ad conversions. Here are the arguments it accepts: - -| **Name** | **Required?** | **Description** | **Type** | -| -------------- | ------------- | -------------------------------------------------------------------- | -------- | -| `conversionId` | No | Identifier for the particular conversion instance | string | -| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | -| `cost` | No | Ad cost | number | -| `category` | No | Conversion category | number | -| `action` | No | The type of user interaction, e.g. 'purchase' | string | -| `property` | No | Describes the object of the conversion | string | -| `initialValue` | No | How much the conversion is initially worth | number | -| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | -| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | - -:::note - -All properties are optional but you must specify at least 1 for this to be a valid call to `trackAdConversion`. - -::: - -An example: - -```javascript -snowplow('trackAdConversion', { - conversionId: '743560297', - costModel: 'cpa', - cost: 10, - category: 'ecommerce', - action: 'purchase', - property: '', - initialValue: 99, - advertiserId: '201', - campaignId: '12' -}); -``` - -Ad conversion events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_conversion/jsonschema/1-0-0) is the schema for an ad conversion event. - -`trackAdConversion` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### `trackSiteSearch` - -Use the `trackSiteSearch` method to track users searching your website. Here are its arguments: - -| **Name** | **Required?** | **Description** | **Type** | -| -------------- | ------------- | ------------------------------- | -------- | -| `terms` | Yes | Search terms | array | -| `filters` | No | Search filters | JSON | -| `totalResults` | No | Results found | number | -| `pageResults` | No | Results displayed on first page | number | - -An example: - -``` -snowplow('trackSiteSearch', { - terms: ['unified', 'log'], - filters: {'category': 'books', 'sub-category': 'non-fiction'}, - totalResults: 14, - pageResults: 8 -}); -``` - -Site search events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/site_search/jsonschema/1-0-0) is the schema for a `site_search` event. - -`trackSiteSearch` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### `trackTiming` - -Use the `trackTiming` method to track user timing events such as how long resources take to load. Here are its arguments: - -| **Name** | **Required?** | **Description** | **Type** | -| ---------- | ------------- | ------------------------------ | -------- | -| `category` | Yes | Timing category | string | -| `variable` | Yes | Timed variable | string | -| `timing` | Yes | Number of milliseconds elapsed | number | -| `label` | No | Label for the event | string | - -An example: - -```javascript -snowplow('trackTiming', { - category: 'load', - variable: 'map_loaded', - timing: 50, - label: 'Map loading time' -}); -``` - -Site search events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/timing/jsonschema/1-0-0) is the schema for a `timing` event. - -`trackTiming` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -### Enhanced Ecommerce tracking - -For more information on the Enhanced Ecommerce functions please see the Google Analytics [documentation](https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce). - -#### `addEnhancedEcommerceActionContext` - -Use the `addEnhancedEcommerceActionContext` method to add a GA Enhanced Ecommerce Action Context to the Tracker: - -| **Name** | **Required?** | **Type** | -| ------------- | ------------- | ----------------- | -| `id` | Yes | string | -| `affiliation` | No | string | -| `revenue` | No | number OR string | -| `tax` | No | number OR string | -| `shipping` | No | number OR string | -| `coupon` | No | string | -| `list` | No | string | -| `step` | No | integer OR string | -| `option` | No | string | -| `currency` | No | string | - -Adding an action using Google Analytics: - -```javascript -ga('ec:setAction', 'purchase', { - 'id': 'T12345', - 'affiliation': 'Google Store - Online', - 'revenue': '37.39', - 'tax': '2.85', - 'shipping': '5.34', - 'coupon': 'SUMMER2013' -}); -``` - -:::note - -The action type is passed with the action context in the Google Analytics example. We have seperated this by asking you to call the trackEnhancedEcommerceAction function to actually send the context and the action. - -::: - -Adding an action using Snowplow: - -```javascript -snowplow('addEnhancedEcommerceActionContext', { - id: 'T12345', - affiliation: 'Google Store - Online', - revenue: '37.39', // Can also pass as number - tax: '2.85', // Can also pass as number - shipping: '5.34', // Can also pass as number - coupon: 'WINTER2016' -}); -``` - -#### `addEnhancedEcommerceImpressionContext` - -Use the `addEnhancedEcommerceImpressionContext` method to add a GA Enhanced Ecommerce Impression Context to the Tracker: - -| **Name** | **Required?** | **Type** | -| ---------- | ------------- | ----------------- | -| `id` | Yes | string | -| `name` | No | string | -| `list` | No | string | -| `brand` | No | string | -| `category` | No | string | -| `variant` | No | string | -| `position` | No | integer OR string | -| `price` | No | number OR string | -| `currency` | No | string | - -Adding an impression using Google Analytics: - -```javascript -ga('ec:addImpression', { - 'id': 'P12345', - 'name': 'Android Warhol T-Shirt', - 'list': 'Search Results', - 'brand': 'Google', - 'category': 'Apparel/T-Shirts', - 'variant': 'Black', - 'position': 1 -}); -``` - -Adding an impression using Snowplow: - -```javascript -snowplow('addEnhancedEcommerceImpressionContext', { - id: 'P12345', - name: 'Android Warhol T-Shirt', - list: 'Search Results', - brand: 'Google', - category: 'Apparel/T-Shirts', - variant: 'Black', - position: 1 -}); -``` - -#### `addEnhancedEcommerceProductContext` - -Use the `addEnhancedEcommerceProductContext` method to add a GA Enhanced Ecommerce Product Field Context: - -| **Name** | **Required?** | **Type** | -| ---------- | ------------- | ----------------- | -| `id` | Yes | string | -| `name` | No | string | -| `list` | No | string | -| `brand` | No | string | -| `category` | No | string | -| `variant` | No | string | -| `price` | No | number OR string | -| `quantity` | No | integer OR string | -| `coupon` | No | string | -| `position` | No | integer OR string | -| `currency` | No | string | - -Adding a product using Google Analytics: - -```javascript -ga('ec:addProduct', { - 'id': 'P12345', - 'name': 'Android Warhol T-Shirt', - 'brand': 'Google', - 'category': 'Apparel/T-Shirts', - 'variant': 'Black', - 'position': 1 -}); -``` - -Adding a product using Snowplow: - -```javascript -snowplow('addEnhancedEcommerceProductContext', { - id: 'P12345', - name: 'Android Warhol T-Shirt', - list: 'Search Results', - brand: 'Google', - category: 'Apparel/T-Shirts', - variant: 'Black', - quantity: 1 -}); -``` - -#### `addEnhancedEcommercePromoContext` - -Use the `addEnhancedEcommercePromoContext` method to add a GA Enhanced Ecommerce Promotion Field Context: - -| **Name** | **Required?** | **Type** | -| ---------- | ------------- | -------- | -| `id` | Yes | string | -| `name` | No | string | -| `creative` | No | string | -| `position` | No | string | -| `currency` | No | string | - -Adding a promotion using Google Analytics: - -```javascript -ga('ec:addPromo', { - 'id': 'PROMO_1234', - 'name': 'Summer Sale', - 'creative': 'summer_banner2', - 'position': 'banner_slot1' -}); -``` - -Adding a promotion using Snowplow: - -```javascript -snowplow('addEnhancedEcommercePromoContext', { - id: 'PROMO_1234', // The Promotion ID - name: 'Summer Sale', // The name - creative: 'summer_banner2', // The name of the creative - position: 'banner_slot1' // The position -}); -``` - -#### `trackEnhancedEcommerceAction` - -Use the `trackEnhancedEcommerceAction` method to track a GA Enhanced Ecommerce Action. When this function is called all of the added Ecommerce Contexts are attached to this action and flushed from the Tracker. - -| **Name** | **Required?** | **Type** | -| -------- | ------------- | -------- | -| `action` | Yes | string | - -The allowed actions: - -- `click` -- `detail` -- `add` -- `remove` -- `checkout` -- `checkout_option` -- `purchase` -- `refund` -- `promo_click` -- `view` - -Adding an action using Google Analytics: - -```javascript -ga('ec:setAction', 'refund', { - 'id': 'T12345' -}); -``` - -Adding an action using Snowplow: - -```javascript -snowplow('addEnhancedEcommerceActionContext', { - id: 'T12345' -}); -snowplow('trackEnhancedEcommerceAction', { - action: 'refund' -}); -``` - -### Consent tracking - -#### `trackConsentGranted` - -Use the `trackConsentGranted` method to track a user opting into data collection. A consent document context will be attached to the event if at least the `id` and `version` arguments are supplied. The method arguments are: - -| **Name** | **Description** | **Required?** | **Type** | -| ------------- | --------------------------------------------------------- | ------------- | ---------------- | -| `id` | Identifier for the document granting consent | Yes | String | -| `version` | Version of the document granting consent | Yes | String | -| `name` | Name of the document granting consent | No | String | -| `description` | Description of the document granting consent | No | String | -| `expiry` | Date-time string specifying when consent document expires | No | String | -| `context` | Custom context for the event | No | Array | -| `tstamp` | When the event occurred | No | Positive integer | - -The `expiry` field specifies that the user consents to the attached documents until the date-time provided, after which the consent is no longer valid. - -Tracking a consent granted event: - -```javascript -snowplow('trackConsentGranted', { - id: '1234', - version: '5', - name: 'consent_document', - description: 'a document granting consent', - expiry: '2020-11-21T08:00:00.000Z' -}); -``` - -#### `trackConsentWithdrawn` - -Use the `trackConsentWithdrawn` method to track a user withdrawing consent for data collection. A consent document context will be attached to the event if at least the `id` and `version` arguments are supplied. To specify that a user opts out of all data collection, `all` should be set to `true`. - -The method arguments are: - -| **Name** | **Description** | **Required?** | **Type** | -| ------------- | ------------------------------------------------- | ------------- | ---------------- | -| `all` | Specifies whether all consent should be withdrawn | No | Boolean | -| `id` | Identifier for the document withdrawing consent | No | String | -| `version` | Version of the document withdrawing consent | No | string | -| `name` | Name of the document withdrawing consent | No | String | -| `description` | Description of the document withdrawing consent | No | String | -| `context` | Custom context for the event | No | Array | -| `tstamp` | When the event occurred | No | Positive integer | - -Tracking a consent withdrawn event: - -```javascript -snowplow('trackConsentWithdrawn', { - all: false, - id: '1234', - version: '5', - name: 'consent_document', - description: 'a document withdrawing consent' -}); -``` - -#### Consent documents - -Consent documents are stored in the context of a consent event. Each consent method adds a consent document to the event. The consent document is a custom context storing the arguments supplied to the method (in both granted and withdrawn events, this will be: id, version, name, and description). In either consent method, additional documents can be appended to the event by passing an array of consent document self-describing JSONs in the context argument. - -The fields of a consent document are: - -| **Name** | **Description** | **Required?** | **Type** | -| ------------- | --------------------------- | ------------- | -------- | -| `id` | Identifier for the document | Yes | String | -| `version` | Version of the document | Yes | String | -| `name` | Name of the document | No | String | -| `description` | Description of the document | No | String | - -A consent document self-describing JSON looks like this: - -```json -{ - schema: 'iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0', - data: { - id: '1234', - version: '5', - name: 'consent_document_name', - description: 'here is a description' - } -} -``` - -As an example, `trackConsentGranted` will store one consent document as a custom context: - -```javascript -snowplow('trackConsentGranted', - id: '1234', - version: '5', - name: 'consent_document', - description: 'a document granting consent', - expiry: '2020-11-21T08:00:00.000Z' -); -``` - -The method call will generate this event: - -```json -{ - e: 'ue', - ue_pr: { - schema: 'iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0', - data: { - schema: 'iglu:com.snowplowanalytics.snowplow/consent_granted/jsonschema/1-0-0', - data: { - expiry: '2020-11-21T08:00:00.000Z' - } - } - }, - co: { - schema: 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0', - data: { - schema: 'iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0', - data: { - id: '1234', - version: '5', - name: 'consent_document', - description: 'a document granting consent' - } - } - } -} -``` - -### GDPR context - -The GDPR context attaches a context with the GDPR basis for processing and the details of a related document (eg. a consent document) to all events which are fired after it is set. - -It takes the following arguments: - -| **Name** | **Description** | **Required?** | **Type** | -| --------------------- | --------------------------- | ------------- | ----------- | -| `basisForProcessing` | GDPR Basis for processing | Yes | Enum String | -| `documentId` | ID of a GDPR basis document | No | String | -| `documentVersion` | Version of the document | No | String | -| `documentDescription` | Description of the document | No | String | - -```json -{ - e: 'ue', - ue_pr: { - schema: 'iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0', - data: { - schema: 'iglu:com.snowplowanalytics.snowplow/consent_granted/jsonschema/1-0-0', - data: { - expiry: '2020-11-21T08:00:00.000Z' - } - } - }, - co: { - schema: 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0', - data: { - schema: 'iglu:com.snowplowanalytics.snowplow/consent_document/jsonschema/1-0-0', - data: { - id: '1234', - version: '5', - name: 'consent_document', - description: 'a document granting consent' - } - } - } -} -``` - -The required basisForProcessing accepts only the following literals: `consent`, `contract`, `legalObligation`, `vitalInterests`, `publicTask`, `legitimateInterests` - in accordance with the [five legal bases for processing](https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/lawful-basis-for-processing/) - -The GDPR context is enabled by calling the `enableGdprContext` method once the tracker has been initialized, for example: - -```javascript -snowplow('enableGdprContext', { - basisForProcessing: 'consent', - documentId: 'consentDoc-abc123', - documentVersion: '0.1.0', - documentDescription: 'this document describes consent basis for processing' -}); -``` - -#### Error tracking - -Snowplow JS tracker provides two ways of tracking exceptions: manual tracking of handled exceptions using `trackError` and automatic tracking of unhandled exceptions using `enableErrorTracking`. - -##### `trackError` - -Use the `trackError` method to track handled exceptions (application errors) in your JS code. This is its signature: - -```javascript -snowplow('trackError', { - /** The error message */ - message: string; - /** The filename where the error occurred */ - filename?: string; - /** The line number which the error occurred on */ - lineno?: number; - /** The column number which the error occurred on */ - colno?: number; - /** The error object */ - error?: Error; -}); -``` - -| **Name** | **Required?** | **Description** | **Type** | -| ---------- | ------------- | ----------------------------------- | ---------- | -| `message` | Yes | Error message | string | -| `filename` | No | Filename or URL | string | -| `lineno` | No | Line number of problem code chunk | number | -| `colno` | No | Column number of problem code chunk | number | -| `error` | No | JS `ErrorEvent` | ErrorEvent | - -Of these arguments, only `message` is required. Signature of this method defined to match `window.onerror` callback in modern browsers. - -```javascript -try { - var user = getUser() -} catch(e) { - snowplow('trackError', { - message: 'Cannot get user object', - filename: 'shop.js', - error: e - }); -} -``` - -`trackError` can also be passed an array of custom context as an additional parameter. See [custom context](#custom-context) for more information. - -Using `trackError` it's assumed that developer knows where error could happen, which is not often the case. Therefor it's recommended to use `enableErrorTracking` as it allows you to discover errors that weren't expected. - -##### `enableErrorTracking` - -Use the `enableErrorTracking` method to track unhandled exceptions (application errors) in your JS code. This is its signature: - -```javascript -snowplow('enableErrorTracking', { - /** A callback which allows on certain errors to be tracked */ - filter?: (error: ErrorEvent) => boolean; - /** A callback to dynamically add extra context based on the error */ - contextAdder?: (error: ErrorEvent) => Array; - /** Context to be added to every error */ - context?: Array; -} -``` - -| **Name** | **Required?** | **Description** | **Type** | -| -------------- | ------------- | ------------------------------- | ------------------------------------------- | -| `filter` | No | Predicate to filter exceptions | `(ErrorEvent) => Boolean` | -| `contextAdder` | No | Function to get dynamic context | `(ErrorEvent) => Array` | -| context | No | Additional custom context | `Array` | - -Unlike `trackError` you need enable error tracking only once: - -```javascript -snowplow('enableErrorTracking') -``` - -Application error events are implemented as Snowplow self describing events. [Here](https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/com.snowplowanalytics.snowplow/application_error/jsonschema/1-0-1) is the schema for a `application_error` event. - -### Setting the true timestamp - -As standard, every event tracked by the Javascript tracker will be recorded with two timestamps: - -1. A `device_created_tstamp` - set when the event occurred -2. A `device_sent_tstamp` - set when the event was sent by the tracker to the collector - -These are combined downstream in the Snowplow pipeline (with the `collector_tstamp`) to calculate the `derived_tstamp`, which is our best estimate of when the event actually occurred. - -In certain circumstances you might want to set the timestamp yourself e.g. if the JS tracker is being used to process historical event data, rather than tracking the events live. In this case you can set the `true_timestamp` for the event. When set, this will be used as the value in the `derived_tstamp` rather than a combination of the `device_created_tstamp`, `device_sent_tstamp` and `collector_tstamp`. - -To set the true timestamp add an extra argument to your track method: - -```javascript -{type: 'ttm', value: unixTimestampInMs} -``` - -e.g. to set a true timestamp with a page view event: - -```javascript -snowplow('trackPageView', { - timestamp: { type: 'ttm', value: 1361553733371 } -}); -``` - -e.g. to set a true timestamp for a self-describing event: - -```javascript -snowplow('trackSelfDescribingEvent', { - event: { - schema: 'iglu:com.acme_company/viewed_product/jsonschema/2-0-0', - data: { - productId: 'ASO01043', - category: 'Dresses', - brand: 'ACME', - returning: true, - price: 49.95, - sizes: ['xs', 's', 'l', 'xl', 'xxl'], - availableSince: new Date(2013,3,7) - } - }, - timestamp: { type: 'ttm', value: 1361553733371 } -}); -``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/anonymous-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/anonymous-tracking/index.md new file mode 100644 index 0000000000..01de37c607 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/anonymous-tracking/index.md @@ -0,0 +1,272 @@ +--- +title: "Opt-outs and anonymous tracking" +date: "2022-08-30" +sidebar_position: 2860 +--- + +# Opt-outs and anonymous tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +The Snowplow web tracker allows you to track events anonymously. It enables anonymizing various user and session identifiers to support user privacy in case consent for tracking the identifiers is not given. This means that no user identifiers are sent to the Snowplow event collector. By default, anonymous tracking is not enabled. + +Anonymous tracking can be configured on initialization, but can be reset later. You may wish to toggle this functionality on or off during a page visit, for example when a user accepts a cookie banner you may not want to disable anonymous tracking, or when a user logs in to your site. + +For information about tracking user consent interactions and GDPR basis for processing, check out [this page](../tracking-events/consent-gdpr/index.md). + +On web, the following user and session identifiers can be anonymized: + +* Client-side user identifiers: + * `userId` in the [Session](../tracking-events/session/index.md) context entity. + * `userId`, `domainUserId`, `networkUserId`, `ipAddress` if they are set. +* Client-side session identifiers: `sessionId` and `previousSessionId` in Session entity. +* Server-side user identifiers: `network_userid` and `user_ipaddress` event properties. + +## Configuring anonymous tracking + +There are several levels to the anonymisation depending on which of the three categories are affected. Set this using the [initialization configuration object](../tracker-setup/initialization-options/index.md). + +### 1. Full client-side anonymisation + +```javascript +anonymousTracking: true, +stateStorageStrategy: 'cookieAndLocalStorage' +``` + +This mode will no longer track any user identifiers or session information. Similar in behavior to setting `stateStorageStrategy: 'none'`, as it will store no values in cookies or localStorage, however by using `anonymousTracking` you can toggle this behavior on and off (useful for allowing events to be sent without user identifiers until cookie banners have been accepted). + +Setting `stateStorageStrategy` to `cookieAndLocalStorage` or `localStorage` also allows for event buffering to continue working whilst not sending user information when `anonymousTracking` is enabled. + +Anonymous tracking can be toggled on and off. + +### 2. Client-side anonymisation with session + +```javascript +anonymousTracking: { withSessionTracking: true }, +stateStorageStrategy: 'cookieAndLocalStorage' +``` + +This mode will continue to track session information in the client side but will track no user identifiers. To achieve this, the tracker will use Cookies or local storage. For session tracking, `stateStorageStrategy` must be either `cookieAndLocalStorage` (default), `localStorage` or `cookie`. If this feature is enabled and the storage strategy is not appropriate, then full anonymous tracking will occur. + +The Snowplow JavaScript Tracker performs sessionization client side. This allows anonymous session tracking to be done using client side storage without sending any user identifier fields to the collector. + +### 3. Full anonymisation/cookieless + +```javascript +anonymousTracking: { withServerAnonymisation: true }, +stateStorageStrategy: 'none', +eventMethod: 'post' +``` + +This mode will no longer track any user identifiers or session information, and will additionally prevent the Snowplow Collector from generating a `network_userid` cookie and capturing the users IP address. The same behavior described for above for Client side Anonymous tracking also applies. + +Setting `stateStorageStrategy` to `cookieAndLocalStorage` or `localStorage` also allows for event buffering to continue working whilst not sending user information when `anonymousTracking` is enabled. However for an experience that doesn't use any browser storage (cookieless), set `stateStorageStrategy` to `none`. This can be later toggled on, once a user accepts a cookie policy. + +Server Anonymisation requires the Snowplow Stream Collector v2.1.0+. Using a lower version will cause events to fail to send until Server Anonymisation is disabled. + +Server Anonymisation will not work when the tracker is initialized with `eventMethod: 'beacon'` as it requires additional custom headers which beacon does not support. + +## Toggling anonymous tracking + +You may wish to toggle this functionality on or off during a page visit, for example when a user accepts a cookie banner you may not want to disable anonymous tracking, or when a user logs in to your site. + +### Enable anonymous tracking + +:::note +Enabling Anonymous tracking will clear all current user, session and page data from events sent to the collector. Although not sent in requests to collector, existing user and session identifiers will not be removed from cookies or local storage. See below for information on how to clear user data. +::: + +If you wish to enable Anonymous Tracking, you can call: + + + + +```javascript +snowplow('enableAnonymousTracking'); +``` + + + + +```javascript +import { enableAnonymousTracking } from '@snowplow/browser-tracker'; + +enableAnonymousTracking(); +``` + + + + +which will enable client side anonymous tracking. + +For full, cookieless, anonymization, including anonymizing data within the Snowplow Collector (cookies and ip address), then you can enable server anonymization too: + + + + +```javascript +snowplow('enableAnonymousTracking', { + options: { withServerAnonymisation: true } +}); +``` + + + + +```javascript +import { enableAnonymousTracking } from '@snowplow/browser-tracker'; + +enableAnonymousTracking({ + options: { withServerAnonymisation: true } +}); +``` + + + + +Server Anonymization requires the Snowplow Stream Collector v2.1.0+. Using a lower version will cause events to fail to send until Server Anonymization is disabled. + +If you want to enable anonymous tracking with session tracking, then you can use: + + + + +```javascript +snowplow('enableAnonymousTracking', { + options: { withSessionTracking: true } +}); +``` + + + + +```javascript +import { enableAnonymousTracking } from '@snowplow/browser-tracker'; + +enableAnonymousTracking({ + options: { withSessionTracking: true } +}); +``` + + + + +From v3.1.0 it's also possible to change the `stateStorageStrategy` when enabling Anonymous Tracking, allowing you to switch off storage when turning anonymous tracking on: + + + + +```javascript +snowplow('enableAnonymousTracking', { options: {}, stateStorageStrategy: 'none' }); // Available from v3.1.0 +``` + + + + +```javascript +import { enableAnonymousTracking } from '@snowplow/browser-tracker'; + +enableAnonymousTracking({ + options: {}, + stateStorageStrategy: 'none' +}); +``` + + + + +### Disable anonymous tracking + +To do this you can call the following methods: + + + + +```javascript +snowplow('disableAnonymousTracking'); +``` + +or, if you wish to also adjust the `stateStorageStrategy` when enabling: + +```javascript +snowplow('disableAnonymousTracking', { + stateStorageStrategy: 'cookieAndLocalStorage' +}); +``` + + + + +```javascript +import { disableAnonymousTracking } from '@snowplow/browser-tracker'; + +disableAnonymousTracking(); +``` + +or, if you wish to also adjust the `stateStorageStrategy` when enabling: + +```javascript +import { disableAnonymousTracking } from '@snowplow/browser-tracker'; + +disableAnonymousTracking({ + stateStorageStrategy: 'cookieAndLocalStorage' +}); +``` + + + + +:::note +If configuring the tracker with `stateStorageStrategy: 'localStorage'` and anonymous tracking using `withSessionTracking: true`, then if you change to a `stateStorageStrategy` which prefer cookies such as `cookie` or `cookieAndLocalStorage` then the session identifiers will reset. To maintain session identifiers, ensure you use the same `stateStorageStrategy`. +::: + +### Clear user data + +If you wish to clear all the cookies and local storage values which contain user data when switching on anonymous tracking, or triggered by other actions on your site, you can call the following: + + + + +```javascript +snowplow('clearUserData'); +``` + + + + +```javascript +clearUserData(); +``` + + + + +From v3.1, this will also clear in memory session and user identifiers too. This ensures all possible identifiers are cleared and even if tracking is resumed you will see new session and user identifiers. If you'd like to preserve the in-memory session and user identifiers, for future events should you continue tracking after clearing the cookies, you can do so: + + + + +```javascript +snowplow('clearUserData', { preserveSession: true, preserveUser: true }); +``` + + + + +```javascript +clearUserData({ preserveSession: true, preserveUser: true }); +``` + + + + +## Respecting Do Not Track + +Most browsers have a Do Not Track option which allows users to express a preference not to be tracked. You can respect that preference by setting the `respectDoNotTrack` field of the [initialization configuration object](../tracker-setup/initialization-options/index.md) to `true`. This prevents cookies from being sent and events from being fired. + +## Opt-out cookie + +Similar in function to Do Not Track, it's possible to set an [opt-out cookie](../cookies-and-local-storage/#opt-out-cookie) to prevent all events being tracked. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/using-an-id-service/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/browsers/index.md similarity index 63% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/using-an-id-service/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/browsers/index.md index 7a894aa096..27a88329a0 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/advanced-usage/using-an-id-service/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/browsers/index.md @@ -1,6 +1,7 @@ --- -title: "Using an ID service" -sidebar_position: 3000 +title: "Browser support" +date: "2021-04-07" +sidebar_position: 2950 --- ```mdx-code-block @@ -11,11 +12,39 @@ import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v ``` -## What is an ID service ? +The Snowplow web tracker supports tracking in all modern browsers, including new browser features such as [Privacy Sandbox](../tracking-events/privacy-sandbox/index.md) and [Client Hints](../tracking-events/client-hints/index.md). -An _ID service_, as we chose to call it, is a process that allows for generating a unique browser identifier and enhancing the Snowplow tracking capabilities in environments where the Intelligent Tracking Prevention (ITP) feature is enabled such as on iOS browsers (Safari, Chrome, Firefox) and desktop Safari. +## Browser context entity + +Add a context entity to every tracked event that records information about the user's browser. Configure it using the `"contexts"` object within the [tracker configuration object](../tracker-setup/initialization-options/index.md). + +
    + Browser entity properties + +The [browser](https://github.com/snowplow/iglu-central/tree/master/schemas/com.snowplowanalytics.snowplow/browser_context/jsonschema) context entity consists of the following properties: + +| Attribute | Description | Required? | +| : ------: | :--------: | :-----: | +| `viewport` | Viewport dimensions of the browser. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | +| `documentSize` | Document dimensions. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | +| `resolution` | Device native resolution. Arrives in the form of WidthxHeight e.g. 1200x900. | Yes | +| `colorDepth` | The number of bits allocated to colors for a pixel in the output device, excluding the alpha channel. | Yes | +| `devicePixelRatio` | Ratio of the resolution in physical pixels to the resolution in CSS pixels for the current display device. | No | +| `cookiesEnabled` | Indicates whether cookies are enabled or not. More info and caveats at the official [documentation](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/cookieEnabled). | Yes | +| `online` | Returns the online status of the browser. Important caveats are described in [documentation](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/onLine). | Yes | +| `browserLanguage` | The preferred language of the user, usually the language of the browser UI. Defined in [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). | No | +| `documentLanguage` | The language of the HTML document. Defined in [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). | No | +| `webdriver` | Indicates whether the user agent is controlled by automation. | No | +| `deviceMemory` | Approximate amount of device memory in gigabytes. | No | +| `hardwareConcurrency` | Number of logical processors available to run threads on the user's computer. | No | +| `tabId` | A UUID identifier for the client browser tab the event is sent from. | No | -## Why you would want to use an ID service ? +:::note +Please note that the browser context entity is only available since version 3.9 of the tracker. +::: +
    + +## ITP mitigation As of Safari 16.4 released in April 2023, Safari sets the [lifetime of server-set first-party cookies](https://webkit.org/tracking-prevention/#cname-and-third-party-ip-address-cloaking-defense) to a maximum of 7 days in the following cases: @@ -26,7 +55,11 @@ This greatly limits the effectiveness of tracking a customer journey where users **The ID service can help enhance the confidence in persistent browser identifiers that Snowplow tracking provides and specifically for this guide, the `network_userid`.** -## Developing and deploying an ID service +### What is an ID service ? + +An _ID service_, as we chose to call it, is a process that allows for generating a unique browser identifier and enhancing the Snowplow tracking capabilities in environments where the Intelligent Tracking Prevention (ITP) feature is enabled such as on iOS browsers (Safari, Chrome, Firefox) and desktop Safari. + +### Developing and deploying an ID service An ID service is code that needs to be deployed on and executed from the same IP space that serves the main web document of your application. This is probably the web application system or the CDN in front of the application. @@ -37,7 +70,7 @@ This code has minimal functionality and based on our experience can either be: - **A custom middleware based on the customer’s framework**. E.g. ExpressJS middleware, Next.js middleware, Play custom action etc. which can run on every document request. - **A low-footprint application with a single endpoint**. A Go web server or something along these lines. -### Developing the ID service code +#### Developing the ID service code The responsibilities of this service are: 1. Create a unique identifier (UUID v4) for this browser, set it in a cookie and return it in a `Set-Cookie` response header on a domain accessible by the service at all times. @@ -45,7 +78,7 @@ The responsibilities of this service are: _The new unique identifier cookie for sake of simplicity in this document will have the name `spIdService`._ -### ID service business logic +#### ID service business logic The ID service code should include the following logic: @@ -54,7 +87,7 @@ The ID service code should include the following logic: - If `spIdService` and `sp` are both missing, then it generates a new ID in the `spIdService` and `sp` cookies with the same unique identifier generation algorithm with the Snowplow pipeline, currently UUID v4. - The HTTP response should have a 200 OK status code but any additional payload is not necessary. -### Code examples +### Code examples Below we showcase a couple of code samples for ID service API endpoints: @@ -76,12 +109,15 @@ https://github.com/snowplow-incubator/id-service-examples/blob/main/examples/php -## Using the ID service on the Snowplow browser tracker +### Using the ID service on the Snowplow browser tracker When the ID service has been deployed on a system with the same resolved IP as the main document, the tracker can then be configured to orchestrate the required ID service API calls. This process is opt-in by using the `idService` option during tracker initialization: + + + ```tsx window.snowplow("newTracker", "sp", "{{collector_url_here}}", { /* ...Rest of the tracker options */ @@ -89,6 +125,19 @@ window.snowplow("newTracker", "sp", "{{collector_url_here}}", { }); ``` + + + +```tsx +newTracker('sp1', 'c.customer.com', { + idService: "/id-service-endpoint", + /* ...Rest of the tracker options */ + }); +``` + + + + When the tracker detects this option it will send an HTTP request during initialization on this endpoint to have the service set the required identifiers before sending any event. ```mermaid diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/configuring-how-events-sent/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/configuring-how-events-sent/index.md new file mode 100644 index 0000000000..7bb7d851e1 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/configuring-how-events-sent/index.md @@ -0,0 +1,238 @@ +--- +title: "Configuring how events are sent" +date: "2021-04-07" +sidebar_position: 2750 +--- + +# Configuring how events are sent + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +It's possible to add a fine-grained configuration for exactly how the web tracker should track and send events. + +## Configuring the request + +### Base64 encoding + +By default, context entities and custom self-describing events are encoded into Base64 to ensure that no data is lost or corrupted. You can turn encoding on or off using the `encodeBase64` field of the [tracker configuration object](../tracker-setup/initialization-options/index.md). + +### Number of events per request + +The default `bufferSize` is 1, i.e. an event will be processed into a single request and sent as soon as it is tracked. This can be increased to send events in batches, using the [configuration object](../tracker-setup/initialization-options/index.md). + +The `bufferSize` property is only relevant when making POST requests, [see below](#post-support). + +### Maximum payload size + +**POST requests** + +Because the Snowplow Stream Collector can have a maximum request size, the Tracker limits POST requests to 40000 bytes. If the combined size of the events in `localStorage` is greater than this limit, they will be split into multiple POST requests. You can override this default using a `maxPostBytes` in the [configuration object](../tracker-setup/initialization-options/index.md). + +**GET requests** + +By default, there is no limit on the maximum size of GET requests – the tracker will add to queue and try to emit all GET requests irrespective of their size. However (since version 3.4), there is an optional `maxGetBytes` parameter which serves two purposes: + +1. It prevents requests over the threshold in bytes to be added to event queue and retried in case sending them is not successful. +2. It sends events over the threshold as individual POST requests (same as for `maxPostBytes`). + +The size of GET requests is calculated for their full GET request URL. + +**Collector limit** + +The Snowplow Stream Collector cannot process requests bigger than 1MB because that is the maximum size of a Kinesis record. + +### Custom request headers + +From v3.2.0, you are able to set custom headers with an `eventMethod: "post"` and `eventMethod: "get"` (Except for IE9). This functionality should only be used in the case where a Proxy or other Collector type is being used which allows for custom headers to be set on the request. + +:::caution +Adding additional headers without returning the appropriate CORS Headers on the OPTIONS request will cause events to fail to send. +::: + +```javascript +customHeaders: { + 'Content-Language': 'de-DE, en-CA', +} +``` + +Set this in the [configuration object](../tracker-setup/initialization-options/index.md). + +### Disabling `withCredentials` flag + +From v3.2.0, it's now possible to turn off the `withCredentials` flag (in the [configuration object](../tracker-setup/initialization-options/index.md)) on all requests to the collector. The default value is `true` which sets `withCredentials` to `true` on requests. Disabling this flag will have impact when using `eventMethod: "post"` and `eventMethod: "get"`. This flag has no effect on same site requests, but disabling it will prevent cookies being sent with requests to a Snowplow Collector running on a different domain. You can read more about this flag at [MDN](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials). + +```json +withCredentials: false +``` + +## Network protocol and method + +### Setting the request protocol + +Normally the protocol (http or https) used by the Tracker to send events to a collector is the same as the protocol of the current page. You can force the tracker to use https by prefixing the collector endpoint with the protocol. For example: + + + + +```javascript +newTracker('sp', 'https://{{collector_url_here}}', { + appId: 'my-app-id' +} +``` + + + + +```javascript +newTracker('sp', 'https://{{collector_url_here}}', { + appId: 'my-app-id' +} +``` + + + + + +### GET support + +By default, events are sent by GET. This can be changed using the `eventMethod` field of the [configuration object](../tracker-setup/initialization-options/index.md). + +### POST support + +If you set the `eventMethod` field of the [configuration object](../tracker-setup/initialization-options/index.md) to `post`, the tracker will send events using POST requests rather than GET requests. In browsers which do not support cross-origin XMLHttpRequests (e.g. IE9), the tracker will fall back to using GET. + +`eventMethod` defaults to `post`, other options available are `get` for GET requests and `beacon` for using the Beacon API (**Note**: Beacon support is not available and/or unreliable in some browsers, in these cases the tracker will fallback to POST). See below for more about Beacon API. + +The main advantage of POST requests is that they circumvent Internet Explorer’s maximum URL length of 2083 characters by storing the event data in the body of the request rather than the querystring. + +You can also batch events sent by POST by setting a numeric `bufferSize` field in the [configuration object](../tracker-setup/initialization-options/index.md). This is the number of events to buffer before sending them all in a single POST. If the user navigates away from the page while the buffer is only partially full, the tracker will attempt to send all stored events immediately, but this often doesn’t happen before the page unloads. Normally the tracker will store unsent events in `localStorage`, meaning that unsent events will be resent when the user next visits a page on the same domain. The `bufferSize` defaults to 1, meaning events are sent as soon as they are created. + +We recommend leaving the `bufferSize` as the default value of 1. This ensure that events are sent as they are created, and reduces the chance of events being unsent and left in local storage, if a user closes their browser before a flush can occur (which happens on page visibility changing). + +If you have set `bufferSize` to greater than 1, you can flush the buffer using the `flushBuffer` method: + + + + +```javascript +snowplow('flushBuffer'); +``` + + + + +```javascript +flushBuffer(); +``` + + + + +For instance, if you wish to send several events at once, you might make the API calls to create the events and store them and then and call `flushBuffer` afterwards to ensure they are all sent before the user leaves the page. + +Note that if `localStorage` is inaccessible or you are not using it to store data, the buffer size will always be 1 to prevent losing events when the user leaves the page. + +### Beacon API support + +The Beacon interface is used to schedule asynchronous and non-blocking requests to a web server. This will allow events to be sent even after a webpage is closed. This browser interface can be used to send events by setting the `eventMethod` field in the [configuration object](../tracker-setup/initialization-options/index.md) to `beacon`. + +Using Beacon will store a Session Cookie in the users browser for reliability reasons, and will always send the first request as a standard POST. This prevents data loss in a number of older browsers with broken Beacon implementations. + +Note: the Beacon API makes POST requests. + +More information and documentation about the Beacon API can be found [here](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API). + +### Custom POST path + +The POST path that is used to send POST requests to a collector can be changed with the [configuration object](../tracker-setup/initialization-options/index.md) value `postPath`. + +`postPath` defaults to the standard path: `/com.snowplowanalytics.snowplow/tp2` + +```mdx-code-block +import PostPath from "@site/docs/reusable/trackers-post-path-note/_index.md" + + +``` + +## Retries + +Unsuccessful requests are retried by default: the tracker retries on all 3xx, 4xx, and 5xx status codes except for 400, 401, 403, 410, and 422. Events in failed requests that are not retried are lost. + +Starting with version 3.17 of the tracker, it is also possible to completely disable retry functionality, using the `retryFailedRequests` boolean option in the [configuration object](../tracker-setup/initialization-options/index.md). This option takes precedence over `retryStatusCodes` and `dontRetryStatusCodes` (see below). + +### Connection timeout + +When events are sent using POST or GET, they are given 5 seconds to complete by default. GET requests having a timeout is only available in 2.15.0. + +`_connectionTimeout_: 5000` + +This value is configurable when initialising the tracker ([configuration object](../tracker-setup/initialization-options/index.md)) and is specified in milliseconds. The value specified here will effect both POST and GET requests. + +**Warning:** Setting this value too low may prevent events from successfully sending to your collector or the tracker may retry to send events that have already arrived at the collector, as the tracker will assume the request failed on timeout, leading to duplicate events in the warehouse. **We recommend 5000 milliseconds as the minimum value and 10000 as the maximum value.** + +### Custom retry HTTP codes + +The tracker provides a retry functionality that sends the same events repeatedly in case GET or POST requests to the Collector fail. This may happen due to connection issues or a non-successful HTTP status code in Collector response. + +Prior to version 3.5 of the tracker, requests receiving all 4xx and 5xx HTTP status codes in Collector response were retried. Since version 3.5, the behavior changed and became customizable: + +By default, the tracker retries on all 3xx, 4xx, and 5xx status codes except for 400, 401, 403, 410, and 422. The set of status codes for which events should be retried or not is customizable. You can make use of the `retryStatusCodes` and `dontRetryStatusCodes` lists to specify them ([configuration object](../tracker-setup/initialization-options/index.md)). Retry behavior can only be configured for non-successful status codes (i.e., >= 300). + +```json +retryStatusCodes: [403], // override default behavior and retry on 403 +dontRetryStatusCodes: [418] // force retry on 418 +``` + +Please note that not retrying sending events to the Collector means that the events will be dropped when they fail to be sent. Take caution when choosing the `dontRetryStatusCodes`. + +## Callbacks + +Provide callbacks within the [configuration object](../tracker-setup/initialization-options/index.md). + +### `onRequestSuccess` callback + +:::note +Available from v3.18.1 +::: + +The `onRequestSuccess` option allows you to supply a callback function to be executed whenever a request is successfully sent to the collector. In practice this means any request which returns a `2xx` status code will trigger this callback. + +The callback's signature is: +`(data: EventBatch) => void` +where `EventBatch` can be either: + +- `Record[]` for POST requests +- `string[]` for GET requests + +### `onRequestFailure` callback + +:::note +Available from v3.18.1 +::: + +The `onRequestFailure` option allows you to supply a callback function to be executed whenever a request fails to be sent to the collector. This is the inverse of the `onRequestSuccess` callback, so any non `2xx` status code will trigger this callback. + +The callback's signature is: +`(data: RequestFailure) => void` +where `RequestFailure` is: + +```ts +export type RequestFailure = { + /** The batch of events that failed to send */ + events: EventBatch; + /** The status code of the failed request */ + status?: number; + /** The error message of the failed request */ + message?: string; + /** Whether the tracker will retry the request */ + willRetry: boolean; +}; +``` + +The format of `EventBatch` is the same as the `onRequestSuccess` callback. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/configuring-cookies/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/configuring-cookies/index.md new file mode 100644 index 0000000000..c18efc07a3 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/configuring-cookies/index.md @@ -0,0 +1,125 @@ +--- +title: "Configuring cookie and storage settings" +sidebar_position: 100 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Snowplow allows for a highly configurable cookie set up. This allows for you to create optimal first party tracking in a privacy-first world, including [anonymous](../../anonymous-tracking/index.md) and cookieless tracking. + +## Flow charts + +In the PDF below you'll find a flow chart to help you with your cookie configuration, guiding you through the configuration options for both your [Snowplow Collector](/docs/pipeline-components-and-applications/stream-collector/index.md) and the [Snowplow JavaScript Tracker](/docs//collecting-data/collecting-from-own-applications/javascript-trackers/index.md). + +- [Cookie configuration for Snowplow Community Edition](pathname:///assets/config-calculator-snowplow-ce.pdf) +- [Cookie configuration for Snowplow BDP](pathname:///assets/config-calculator-snowplow-bdp.pdf) + +## Cookie name + +Set the cookie name for the tracker instance using the `cookieName` field of the [configuration object](../../tracker-setup/initialization-options/index.md). The default is “_sp_“. Snowplow uses two cookies, a domain cookie and a session cookie. In the default case, their names are “_sp_id” and “_sp_ses” respectively. If you are upgrading from an earlier version of Snowplow, you should use the default cookie name so that the cookies set by the earlier version are still remembered. Otherwise you should provide a new name to prevent clashes with other Snowplow users on the same page. + +Once set, you can retrieve a cookie name thanks to the `getCookieName(basename)` method where basename is `id` or `ses` for the domain and session cookie respectively. As an example, you can retrieve the complete name of the domain cookie with `getCookieName('id')`. + +## Cookie domain + +If your website spans multiple subdomains e.g. + +- `www.mysite.com` +- `blog.mysite.com` +- `application.mysite.com` + +You will want to track user behavior across all those subdomains, rather than within each individually. As a result, it is important that the domain for your first party cookies is set to ‘.mysite.com’ rather than ‘www.mysite.com’. By doing so, any values that are stored on the cookie on one of subdomain will be accessible on all the others. + +Although it's possible to set this manually, we recommend that you enable automatic discovery and setting of the root domain, using the optional `discoverRootDomain` field of the [configuration object](../../tracker-setup/initialization-options/index.md). If it is set to `true`, the tracker automatically discovers and sets the `configCookieDomain` value to the root domain. + +:::note +If you have been setting this manually please note that the automatic detection does not prepend a ‘.’ to the domain. For example a root domain of “.mydomain.com” would become “mydomain.com”. This is because the library we use for setting cookies doesn’t care about the difference. + +**This will then result in a different domain hash, so we recommend that if you have been setting this manually with a leading ‘.’ to continue to do so manually.** +::: + +To set the domain manually, use the `cookieDomain` field of the [configuration object](../../tracker-setup/initialization-options/index.md). If this field is not set, the cookies will not be given a domain. + +:::warning +Changing the cookie domain will reset all existing cookies. As a result, it might be a major one-time disruption to data analytics because all visitors to the website will receive a new `domain_userid`. +::: + +## Cookie lifetime and duration + +Whenever a tracker is initialized on your domain, it will set domain-specific visitor’s cookies. By default, these cookies will be active for 2 years. You can change this duration using the `cookieLifetime` [configuration object](../../tracker-setup/initialization-options/index.md) parameter or `setVisitorCookieTimeout` method. + + + + +```javascript +snowplow('newTracker', 'cf', '{{COLLECTOR_URL}}', { + cookieLifetime: 86400 * 31, +}); +``` + +or + +```javascript +snowplow('setVisitorCookieTimeout', 86400 * 30); // 30 days +``` + + + + +```javascript +newTracker('cf', '{{COLLECTOR_URL}}', { + cookieLifetime: 86400 * 31, +}); +``` + +or + +```javascript +setVisitorCookieTimeout(86400 * 30); // 30 days +``` + + + + +If `cookieLifetime` is set to `0`, the cookie will expire at the end of the session (when the browser closes). If set to `-1`, the first-party cookies will be disabled. + +Whenever an event fires, the Tracker creates a session cookie. If the cookie didn’t previously exist, the Tracker interprets this as the start of a new session. + +By default the session cookie expires after 30 minutes. This means that a user leaving the site and returning in under 30 minutes does not change the session. You can override this default by setting `sessionCookieTimeout` to a duration (in seconds) in the configuration object. For example, + +```javascript +{ + ... + sessionCookieTimeout: 3600 + ... +} +``` + +would set the session cookie lifespan to an hour. + +## Cookie samesite and secure attributes + +Set the cookie samesite attribute for the tracker instance using the `cookieSameSite` field of the [configuration object](../../tracker-setup/initialization-options/index.md). The default is `None` for backward compatibility reasons, however `Lax` is likely a better option for most use cases given the reasons below. Valid values are "`Strict`", "`Lax`", "`None`" or `null`. `null` will not set the SameSite attribute. + +It is recommended to set either "`None`" or "`Lax`". You must use "`None`" if using the tracker in a third party iframe. "`Lax`" is good in all other cases and must be used if not setting Secure to true. + +:::note Safari 12 issue with SameSite cookies +It's been noted that Safari 12 doesn't persist cookies with `SameSite: None` as expected which can lead to rotation of the `domain_userid` from users using this browser. You should switch to `cookieSameSite: 'Lax'` in your tracker configuration to solve this, unless you are tracking inside a third party iframe. +::: + +Set the cookie secure attribute for the tracker instance using the `cookieSecure` field of the configuration object. The default is "`true`". Valid values are "`true`" or "`false`". + +It is recommended to set this to "`true`". This must be set to "`false`" if using the tracker on non-secure HTTP. + +## Storage strategy + +Three strategies are made available to store the Tracker’s state: cookies, local storage or no storage at all. You can set the strategy with the help of the `stateStorageStrategy` parameter in the configuration object to `“cookieAndLocalStorage”` (the default), `“cookie”`, `“localStorage”` or `“none”` respectively. + +When choosing local storage, the Tracker will additionally store events in local storage before sending them so that they can be recovered if the user leaves the page before they are sent. + +## Local storage queue size + +Because most browsers limit local storage to around 5mb per site, you may want to limit the number of events the tracker will queue in local storage if they fail to send. The default is a max queue size of 1000, but you may wish to reduce this if your web application also makes use local storage. To do so, you should set the optional `maxLocalStorageQueueSize` field of the [configuration object](../../tracker-setup/initialization-options/index.md) is set to your desired value (e.g. 500). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/getting-cookie-values/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/getting-cookie-values/index.md new file mode 100644 index 0000000000..781a5f1a70 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/getting-cookie-values/index.md @@ -0,0 +1,161 @@ +--- +title: "Getting cookie information" +sidebar_position: 500 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +## Domain user information + +You can use the following function to extract the Domain User Information from the ID cookie: + +```javascript +/* +* Function to extract the Snowplow Domain User Information from the first-party cookie set by the Snowplow JavaScript Tracker +* +* @param string cookieName (optional) The value used for "cookieName" in the tracker constructor argmap +* (leave blank if you did not set a custom cookie name) +* +* @return string or bool The ID string if the cookie exists or false if the cookie has not been set yet +*/ +function getSnowplowDuid(cookieName) { + var cookieName = cookieName || '_sp_'; + var matcher = new RegExp(cookieName + 'id\\.[a-f0-9]+=([^;]+);?'); + var match = document.cookie.match(matcher); + var split = match[1].split('.'); + if (match && match[1]) { + return { + 'domain_userid': split[0], + 'domain_sessionidx': split[2], + 'domain_sessionid': split[5] + } + } else { + return false; + } +} +``` + +If you set a custom `cookieName` field in the argmap, pass that name into the function; otherwise call the function without arguments. Note that if the function is called before the cookie exists (i.e. when the user is visiting the page for the first time and sp.js has not yet loaded) if will return `false`. + + +## Retrieving cookie properties from the tracker + +It's possible to retrieve cookie properties for use in your code (as well as the [page view UUID](../../tracking-events/page-views/index.md) and [user ID](../../tracking-events/index.md#getting-user-id-once-set)) using a tracker callback. This is an advanced usage of the tracker. + +```mdx-code-block +import RetrieveValuesJs from "@site/docs/reusable/javascript-tracker-retrieve-values/_javascript.md" +import RetrieveValuesBrowser from "@site/docs/reusable/javascript-tracker-retrieve-values/_browser.md" +``` + + + + + + + + + + + + + + +### `getDomainUserId` + +The `getDomainUserId` method returns the user ID stored in the first-party cookie: + + + + +```javascript +// Access the tracker instance inside a callback +snowplow(function () { + var sp = this.sp; + var domainUserId = sp.getDomainUserId(); + console.log(domainUserId); +}) +``` + + + + +```javascript +const domainUserId = sp.getDomainUserId(); +console.log(domainUserId); +``` + + + + +### `getDomainUserInfo` + +The `getDomainUserInfo` method returns all the information stored in first-party cookie in an array: + + + + +```javascript +// Access the tracker instance inside a callback +snowplow(function () { + var sp = this.sp; + var domainUserInfo = sp.getDomainUserInfo(); + console.log(domainUserInfo); +}) +``` + + + + +```javascript +const domainUserInfo = sp.getDomainUserInfo(); +console.log(domainUserInfo); +``` + + + + +The `domainUserInfo` variable will contain an array with 11 elements: + +1. A string set to `'1'` if this is the user's first session and `'0'` otherwise +2. The domain user ID +3. The timestamp at which the cookie was created +4. The number of times the user has visited the site +5. The timestamp for the current visit +6. The timestamp of the last visit +7. The session id +8. ID of the previous session (since version 3.5) +9. ID of the first event in the current session (since version 3.5) +10. Device created timestamp of the first event in the current session (since version 3.5) +11. Index of the last event in the session (used to inspect order of events) (since version 3.5) + +### `getCookieName` + +The `getCookieName` method returns the complete cookie name for the domain or session cookie: + + + + +```javascript +// Access the tracker instance inside a callback +snowplow(function () { + var sp = this.sp; + var cookieName = sp.getCookieName('id'); + console.log(cookieName); +}) +``` + + + + +```javascript +const cookieName = sp.getCookieName('id'); +console.log(cookieName); +``` + + + + +The argument corresponds to the basename of the cookie: 'id' for the domain cookie, 'ses' for the session cookie. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/index.md new file mode 100644 index 0000000000..ea09f8cd3e --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cookies-and-local-storage/index.md @@ -0,0 +1,81 @@ +--- +title: "Cookies and local storage" +sidebar_position: 2850 +--- + +Unless you have enabled `respectDoNotTrack` during initialization, the tracker will persist information on the client. By default, the Snowplow JavaScript and Browser Tracker make use of Cookies and local storage. The behavior of each of these cookies and local storage keys are described here. + +## Cookies + +By default, information will be stored both in cookies and local storage, i.e. `stateStorageStrategy: 'cookieAndLocalStorage'` in the [configuration object](../tracker-setup/initialization-options/index.md). This setting prefers cookie storage for `_sp_id` and `_sp_ses`. + +Alternatively, you can specify `localStorage` to have the state stored only in local storage or `cookie` to only use cookies. Finally, you can set `stateStorageStrategy` to `none` in order not to store anything client-side. You may also leverage [`anonymousTracking`](../anonymous-tracking/index.md) to control when values are stored in cookies or local storage. + +The stored state takes the form of two first party cookies: the session cookie and the ID cookie. By default their names are prefixed with `_sp_`, but you can change this using the `cookieName` field in the [configuration object](../tracker-setup/initialization-options/index.md). Their names are suffixed with a hash of the current domain, so the full cookie names might look something like `_sp_ses.4209` and `_sp_id.4209`. + +| Cookie name | Expires | Description | +|-------------|--------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| `_sp_id` | 2 years or `cookieLifetime` set on tracker initialization | Stores user information that is created when a user first visits a site and updated on subsequent visits. | +| `_sp_ses` | 30 minutes or `sessionCookieTimeout` set on tracker initialization | Used to identify if the user is in an active session on a site or if this is a new session for a user (i.e. cookie doesn't exist or has expired). | +| `sp` | 1 year or `collector.cookie.expiration` set in collector config | Stores a server-side collector generated unique identifier for a user that is sent with all subsequent tracking event events. | + +### Domain ID cookie `_sp_id` + +This cookie is called `_sp_id.{{DOMAIN HASH}}` by default. It is used to persist information about a user’s activity on the domain between sessions. It contains the following information: + +- An ID for the user (`domainUserId`) based on a v4 (random) UUID. Generated by the [uuid](https://www.npmjs.com/package/uuid) library. +- The timestamp of the user’s first visit +- How many times the user has visited the domain +- The timestamp of the current visit +- The timestamp of the last visit +- The ID of the current session +- ID of the previous session (since version 3.5) +- ID of the first event in the current session (since version 3.5) +- Device created timestamp of the first event in the current session (since version 3.5) +- Index of the last event in the session (used to inspect order of events) (since version 3.5) + +`_sp_id` is stored in the format: `{domainUserId}.{createdTime}.{visitCount}.{nowTime}.{lastVisitTime}.{sessionId}.{previousSessionId}.{firstEventId}.{firstEventTsInMs}.{eventIndex}`. Please note that the last 4 parts of the cookie (`previousSessionId`, `firstEventId`, `firstEventTsInMs`, `eventIndex`) are only available since version 3.5 of the tracker. + +### Session cookie `_sp_ses` + +Called `_sp_ses.{{DOMAIN HASH}}` by default, the only purpose of this cookie is to differentiate between different visits. Whenever an event is fired, the session cookie is set to expire in 30 minutes. (This value can be altered using `setSessionCookieTimeout`) + +If no session cookie is already present when an event fires, the tracker treats this as an indication that long enough has passed since the user last visited that this session should be treated as a new session rather than a continuation of the previous session. The `visitCount` (how many times the user has visited) is increased by one and the `lastVisitTs` (the timestamp for the last session) is updated. + +Note: A new session can be started at any time by calling the function `newSession`. + +When using [anonymous tracking](../anonymous-tracking/index.md) with session (`anonymousTracking: { withSessionTracking: true }`; available from v2.15.0+) this key will contain a _salt_ value which is used to stitch page views into a session. The value is never sent to the collector. + +### Collector cookie `sp` + +There is a third sort of Snowplow-related cookie: the cookie set by the Collector, independently of the JavaScript Tracker. The Collector cookie is called “sp”. It is either a first or third-party cookie, depending on the collector URL (it can be used as a first party cookie is the collector is on the same domain as the site), used to track users over multiple domains. + +This cookie can be disabled by setting `collector.cookie.enabled` to false (See [here](/docs/pipeline-components-and-applications/stream-collector/configure/index.md) for more information). + +### Opt-out cookie + +A fourth cookie can be set that overrides all other settings. + +It is possible to set an opt-out cookie in order not to track anything, similarly to Do Not Track, through `setOptOutCookie('opt-out');` where ‘opt-out’ is the name of your opt-out cookie. If this cookie is set, cookies won’t be stored and events won’t be fired. + +## Local storage + +Local storage will only be used if `stateStorageStrategy` is set to `localStorage` or `cookieAndLocalStorage` (default). Both the ID and session cookies listed above can be stored in local storage rather than as cookies by setting `stateStorageStrategy` to `localStorage`. Local storage can be disabled by setting `stateStorageStrategy` to `cookie` or `none`. + +| Storage key | Description | +|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `snowplowOutQueue_{namespace}_post2` | Used to store a cache of unsent events. This is used to reduce the chance of events to be lost due to page navigation and events not being set to the collector before the navigation event occurs. Where GET requests are used, this key will end in `_get` rather than `_post2`. | +| `snowplowOutQueue_{namespace}_post2.expires` | Used to match the concept of cookie expiry within local storage. This ensures a consistent behavior between cookie and local storage. Where GET requests are used, this key will end in `_get` rather than `_post2`. | + +## Mapping values to tracker protocol + +The values stored in the cookies listed above are mapped into the [tracker protocol](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md) when events are sent to a Snowplow Collector. + +The below table shows which parameters the cookie values map to: + +| Request Parameter | Event Parameter | Cookie Value | +|-------------------|-------------------|---------------------| +| duid | domain_userid | _sp_id.domainUserId | +| nuid | network_userid | sp | +| vid | domain_sessionidx | _sp_id.visitCount | +| sid | domain_sessionid | _sp_id.sessionId | diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cross-domain-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cross-domain-tracking/index.md new file mode 100644 index 0000000000..9cb27363fc --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/cross-domain-tracking/index.md @@ -0,0 +1,26 @@ +--- +title: "Cross-domain tracking" +date: "2022-08-30" +sidebar_position: 2850 +--- + +# Cross-domain tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import CrossDomain from "@site/docs/reusable/javascript-tracker-cross-domain/_index.md" +``` + + + + + + + + + + + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/global-context/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/global-context/index.md new file mode 100644 index 0000000000..a7b1bdb911 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/global-context/index.md @@ -0,0 +1,341 @@ +--- +title: "Declarative entities with Global Context" +date: "2022-08-30" +sidebar_position: 20 +--- + +# Declarative entities with Global Context + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +**Global context** lets you define your own contexts once (e.g. on tracker initialization) and then have this context sent with every single event subsequently recorded on the page. This saves having to manually build and send the context array with every single event fired. + +Here is an example that adds a global context entity to all subsequently tracked events: + + + + +```javascript +// Create a context entity and add it to global context +let contextEntity = { + schema: 'iglu:com.acme/user_context/jsonschema/1-0-0', + data: { userid: 1234, name: 'John Doe' } +}; +window.snowplow('addGlobalContexts', [contextEntity]); + +// The global context will be added to this page view event as well +window.snowplow('trackPageView'); +``` + + + + +```javascript +import { addGlobalContexts } from "@snowplow/browser-tracker"; + +// Create a context entity and add it to global context +let contextEntity = { + schema: 'iglu:com.acme/user_context/jsonschema/1-0-0', + data: { userid: 1234, name: 'John Doe' } +}; +addGlobalContexts([contextEntity]); + +// The global context will be added to this page view event as well +trackPageView(); +``` + + + +You may not want to add the same context entity to all tracked events. There are several ways to make global context dynamic: + +1. Using a **[context generator](#context-generators)** that generates context entities on the fly when events are sent. +2. Using **[filter functions](#filter-functions)** that filter which events to add global context entities to. +3. Using **[rulesets](#rulesets)** that define rules which types of events to accept or reject when generating global context entities. + +### Context generators + +Generating context on-the-fly is accomplished with **context generators**. A context generator is a callback that will be evaluated with an optional argument that contains useful information. + +A sample context generator that conditionally generates a context entity could look like this: + + + + +```javascript +const contextGenerator = (args) => { + if (args.eventType == 'pv') { + return { + schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', + data: { test: 1 }, + }; + } +}; +window.snowplow('addGlobalContexts', [contextGenerator]); +``` + + + + +```javascript +const contextGenerator = (args) => { + if (args.eventType == 'pv') { + return { + schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', + data: { test: 1 }, + }; + } +}; +addGlobalContexts([contextGenerator]); +``` + + + + +The optional input is an associative array that contains three elements: + +- `event` : self-describing JSON +- `eventType` : string +- `eventSchema` : string (schema URI) + +Keep in mind that the arguments `eventType` and `eventSchema` are data found in `event`. `eventType` and `eventSchema` are provided for convenience, so that simple tasks don't require users to search through the event payload. + +#### `eventType` + +This argument is a string taken from the event payload field, `e`. + +`eventType` takes the following values: + +| Type | `e` | +|--------------------------------|-----------| +| Pageview tracking | pv | +| Page pings | pp | +| Link click | ue | +| Ad impression tracking | ue | +| Ecommerce transaction tracking | tr and ti | +| Custom structured event | se | +| Custom self describing event | ue | + +Further information about the event payload can be found in the [tracker protocol documentation](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md). + +#### `eventSchema` + +Users should be aware of the behavior of the argument `eventSchema`. Since 'first-class events' (e.g. structured events, transactions, pageviews, etc.) lack a proper schema (their event type is determined by the `e` field), callbacks will be provided the upper-level schema that defines the payload of all events: + +`iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4` + +For self describing events, `eventSchema` will be the schema that describes the self describing event, not the event payload. Again, this behavior isn't necessarily uniform, but provides more utility to differentiate events. + +### Conditional context providers + +We can augment context primitives by allowing them to be sent conditionally. While it's possible to define this functionality within context generators (with conditional logic), conditional context providers simplify common ways of sending contexts that follow certain rules. + +The general form is an array of two objects: + +`[conditional part, context primitive or [array of primitives]]` + +The conditional part is standardized into two options: + +- a filter function +- a schema ruleset + +### Filter functions + +Filter functions take the standard callback arguments defined for context generators, but instead of returning a Self Describing JSON, return a boolean value. As should be expected: `true` will attach the context part, `false` will not attach the context part. + +### Example + + + + +```javascript +// A filter that will only attach contexts to structured events +function structuredEventFilter(args) { + return args['eventType'] === 'se'; +} +var globalContextDefinition = [structuredEventFilter, contextEntityToBeAdded]; +window.snowplow('addGlobalContexts', [globalContextDefinition]); +``` + + + + +```javascript +// A filter that will only attach contexts to structured events +function structuredEventFilter(args) { + return args['eventType'] === 'se'; +} +var globalContextDefinition = [structuredEventFilter, contextEntityToBeAdded]; +addGlobalContexts([globalContextDefinition]); +``` + + + + +### Rulesets + +Rulesets define when to attach context primitives based on the event schema. This follows the standard behavior for all callbacks (the schema used to evaluate is the same provided in `eventSchema`, namely the payload schema for "first-class events" and otherwise the schema found within the self describing event). + +Here's the specific structure of a ruleset, it's an object with certain optional rules that take the form of fields, each holding an array of strings: + +```json +{ + accept: [], + reject: [] +} +``` + +Some examples, take note that wild-card matching URI path components is defined with an asterisk, `*`, in place of the component: + +```javascript +// Only attaches contexts to this one schema +var ruleSetAcceptOne = { + accept: ['iglu:com.mailchimp/cleaned_email/jsonschema/1-0-0'] +}; + +// Only attaches contexts to these schemas +var ruleSetAcceptTwo = { + accept: ['iglu:com.mailchimp/cleaned_email/jsonschema/1-0-0', + 'iglu:com.mailchimp/subscribe/jsonschema/1-0-0'] +}; + +// Only attaches contexts to schemas with mailchimp vendor +var ruleSetAcceptVendor = { + accept: ['iglu:com.mailchimp/*/jsonschema/*-*-*'] +}; + +// Only attaches contexts to schemas that aren't mailchimp vendor +var ruleSetRejectVendor = { + reject: ['iglu:com.mailchimp/*/jsonschema/*-*-*'] +}; + +// Only attach to Snowplow first class events +var ruleSet = { + accept: ['iglu:com.snowplowanalytics.snowplow/payload_data/jsonschema/1-0-4'] +}; +``` + +You can add a global context entity with a ruleset as follows: + + + + +```javascript +var globalContextDefinition = [ruleSet, contextEntityToAdd]; +window.snowplow('addGlobalContexts', [globalContextDefinition]); +``` + + + + +```javascript +var globalContextDefinition = [ruleSet, contextEntityToAdd]; +addGlobalContexts([globalContextDefinition]); +``` + + + + +### Rule requirements + +All rules and schemas follow a standard form: + +`protocol:vendor/event_name/format/version` + +And rules must meet some requirements to be considered valid: + +- Two parts are invariant: protocol and format. They are always `iglu` and `jsonschema` respectively. + - Wildcards can therefore be used only in `vendor`, `event_name` and `version`. +- Version matching must be specified like so: `*-*-*`, where any part of the versioning can be defined, e.g. `1-*-*`, but only sequential parts are to be wildcarded, e.g. `1-*-1` is invalid but `1-*-*` is valid. +- Vendors require the first two "larger parts": + - `com.acme.*` +- Vendors cannot be defined with non-wildcarded parts between wildcarded parts: + - `com.acme.*.marketing.*` is invalid + - `com.acme.*.*` is valid + +### Global contexts methods + +These are the standard methods to add and remove global contexts: + +#### `addGlobalContexts` +To add global contexts: + + + + +`snowplow('addGlobalContexts', [array of global contexts])` + + + + + `addGlobalContexts([array of global contexts])` + + + + +#### `removeGlobalContexts` + +To remove a global context: + + + + +`snowplow('removeGlobalContexts', [array of global contexts])` + + + + +`removeGlobalContexts([array of global contexts])`. + + + + +Global context entities are removed by doing a JSON match of the context to be removed with the added context. So the objects have to be the same in order for them to be matched. + +For example: + + + + +```javascript +var entity = { + schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', + data: { test: 1 }, +}; +window.snowplow('addGlobalContexts', [entity]); // add a global context +window.snowplow('removeGlobalContexts', [entity]); // remove the global context +``` + + + + +```javascript +var entity = { + schema: 'iglu:com.acme.marketing/some_event/jsonschema/1-0-0', + data: { test: 1 }, +}; +addGlobalContexts([entity]); // add a global context +removeGlobalContexts([entity]); // remove the global context +``` + + + + +#### `clearGlobalContexts` + +To remove all global contexts: + + + + +`snowplow('clearGlobalContexts')` + + + + +`clearGlobalContexts()` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/index.md new file mode 100644 index 0000000000..7d00f5387b --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/custom-tracking-using-schemas/index.md @@ -0,0 +1,255 @@ +--- +title: "Custom event tracking" +date: "2022-08-30" +sidebar_position: 2600 +--- + +# Custom event tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Self-describing (self-referential) JSON schemas are at the core of Snowplow tracking. Read more about them [here](/docs/understanding-your-pipeline/schemas/index.md). They allow you to track completely customised data, and are also used internally throughout Snowplow pipelines. + +In all our trackers, self-describing JSON are used in two places. One is in the `SelfDescribing` event type that wraps custom self-describing JSONs for sending. The second use is to attach entities to any tracked event. +The entities can describe the context in which the event happen or provide extra information to better describe the event. + + +## Tracking a custom event (self-describing) + +You may wish to track events in your app which are not directly supported by Snowplow and which structured event tracking does not adequately capture. Your event may have more than the five fields offered by Structured events, or its fields may not fit into the category-action-label-property-value model. The solution is Snowplow’s self-describing events. Self-describing events are a [data structure based on JSON Schemas](/docs/understanding-your-pipeline/schemas/index.md) and can have arbitrarily many fields. + +To track a self-describing event, you make use of the `trackSelfDescribingEvent` method: + + + + +```javascript +snowplow('trackSelfDescribingEvent', {{SELF-DESCRIBING EVENT JSON}}); +``` + +For example: + +```javascript +snowplow('trackSelfDescribingEvent', { + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', + data: { + productId: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + availableSince: new Date(2013,3,7) + } + } +}); +``` + + + +```javascript +import { trackSelfDescribingEvent } from '@snowplow/browser-tracker'; + +trackSelfDescribingEvent({ + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', + data: { + productId: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + availableSince: new Date(2013,3,7) + } + } +}); +``` + + + + +The second argument or event property, depending on tracker, is a [self-describing JSON](http://snowplowanalytics.com/blog/2014/05/15/introducing-self-describing-jsons/). It has two fields: + +- A `data` field, containing the properties of the event +- A `schema` field, containing the location of the [JSON schema](http://json-schema.org/) against which the `data` field should be validated. + +Like all `trackX` methods, `trackSelfDescribingEvent` can also be passed an array of custom context entities as an additional parameter. See the next section for more information. + +## Tracking a custom entity + +```mdx-code-block +import DefineCustomEntity from "@site/docs/reusable/define-custom-entity/_index.md" + + +``` +:::tip +Custom context entities can be added as an extra argument to any of Snowplow's `trackX()` methods, e.g. `trackPageView` or `trackLinkClick`. +::: + +:::note + +Tracker methods available through plugins do not necessarily support adding custom entities. For those please refer to the corresponding plugin documentation for details. + +::: + +Here are two examples of schema for custom entities. +One describes a screen: + +```json +{ + "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#", + "self": { + "vendor": "com.example", + "name": "screen", + "format": "jsonschema", + "version": "1-0-1" + }, + "type": "object", + "properties": { + "screenType": { + "type": "string" + }, + "lastUpdated": { + "type": "string" + } + } + "required": ["screenType", "lastUpdated"], + "additionalProperties": false +} +``` + +and the other describes a user on that screen: + +```json +{ + "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#", + "self": { + "vendor": "com.example", + "name": "user", + "format": "jsonschema", + "version": "2-0-0" + }, + "type": "object", + "properties": { + "user": { + "type": "string" + } + } + "required": ["user"], + "additionalProperties": false +} +``` + +**Important:** Even if only one custom context is being attached to an event, it still needs to be wrapped in an array. + +Tracking a **page view** with both of these example entities attached: + + + + +```javascript +snowplow('trackPageView', { + context: [{ + schema: "iglu:com.example_company/page/jsonschema/1-2-1", + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }, + { + schema: "iglu:com.example_company/user/jsonschema/2-0-0", + data: { + userType: 'tester' + } + }] +}); +``` + + + +```javascript +trackPageView({ + context: [{ + schema: 'iglu:com.example_company/page/jsonschema/1-2-1', + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }, + { + schema: 'iglu:com.example_company/user/jsonschema/2-0-0', + data: { + userType: 'tester' + } + }] +}); +``` + + + + +Tracking a **self describing event** with both of these context entities attached: + + + + +```javascript +snowplow('trackSelfDescribingEvent', { + event: { + schema: 'iglu:com.example_company/product_viewed/jsonschema/1-0-1', + data: { + productId: '12345', + price: 10.99 + } + }, + context: [{ + schema: 'iglu:com.example_company/page/jsonschema/1-2-1', + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }, + { + schema: "iglu:com.example_company/user/jsonschema/2-0-0", + data: { + userType: 'tester' + } + }] +}); +``` + + + +```javascript +trackSelfDescribingEvent({ + event: { + schema: 'iglu:com.example_company/product_viewed/jsonschema/1-0-1', + data: { + productId: '12345', + price: 10.99 + } + }, + context: [{ + schema: 'iglu:com.example_company/page/jsonschema/1-2-1', + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }, + { + schema: "iglu:com.example_company/user/jsonschema/2-0-0", + data: { + userType: 'tester' + } + }] +}); +``` + + + +For more information on custom contexts, see [here](/docs/understanding-your-pipeline/entities/index.md#custom-entities). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/example-app.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/example-app.md new file mode 100644 index 0000000000..123d9375d7 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/example-app.md @@ -0,0 +1,6 @@ +--- +type: link +title: "Example Applications" +sidebar_position: 9999 +href: https://github.com/snowplow-incubator/snowplow-javascript-tracker-examples +--- \ No newline at end of file diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/index.md new file mode 100644 index 0000000000..34f21838d9 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/index.md @@ -0,0 +1,25 @@ +--- +title: "Web trackers (v3)" +date: "2021-03-24" +sidebar_position: 100 +--- + +```mdx-code-block +import Badges from '@site/src/components/Badges'; + + +``` + +Snowplow provides two web trackers to use depending how you wish to add analytics to your webapp. + +The **JavaScript Tracker** is loaded via tag: add code snippets to your website or Tag Manager solution. Some plugins are included in the standard tag, but we also provide customization options. + +The **Browser Tracker** is available via `npm` (`@snowplow/browser-tracker`) and can be directly bundled into your application. It supports core tracking methods out of the box and can be extended through plugins (`@snowplow/browser-plugin-*`). This tracker is often used when natively integrating tracking into React, Angular and Vue applications. + +As the API is similar, we have combined the documentation for both trackers. We've marked the sections which are only relevant to one tracker or another. + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; + + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/browser/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/browser/index.md new file mode 100644 index 0000000000..0bba209edd --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/browser/index.md @@ -0,0 +1,97 @@ +--- +title: "Browser (npm) tracker" +date: "2021-04-19" +sidebar_position: 500 +--- + +The Snowplow JavaScript Trackers v3 allow extension via plugins. There a number of official Snowplow plugins, but we also encourage building your own. You can either include them directly in your codebase or tag management tool, or you could publish them to npm as public packages that the whole community can use. + +There are two ways to add plugins to the browser tracker: + +- During tracker initialization +- Dynamically after tracker initialization + +## Installation + +Plugins must first be installed. For example, to use the Performance Timing plugin, run one of the following commands: + +- `npm install @snowplow/browser-plugin-performance-timing@3` +- `yarn add @snowplow/browser-plugin-performance-timing@3` +- `pnpm add @snowplow/browser-plugin-performance-timing@3` + +## Tracker initialization + +To add the plugin at tracker initialisation, you include the plugin in the `Plugins` array: + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { PerformanceTimingPlugin } from '@snowplow/browser-plugin-performance-timing'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + contexts: { + webPage: true // default, can be omitted + }, + plugins: [ PerformanceTimingPlugin() ] +}); +``` + +## After tracker initialization + +To add a plugin after tracker initialisation, you can call `addPlugin` and pass the plugin in: + +```javascript +import { newTracker, addPlugin } from '@snowplow/browser-tracker'; +import { PerformanceTimingPlugin } from '@snowplow/browser-plugin-performance-timing'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + contexts: { + webPage: true // default, can be omitted + } +}); + +... + +addPlugin({ plugin: PerformanceTimingPlugin() }); +``` + +## Usage + +Some plugins, such as the Performance Timing plugin shown above, work automatically after being added. Others provide methods that can be called once added. + +For example, form tracking: + +```javascript +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ FormTrackingPlugin() ], +}); + +// Use the new functions which this plugin includes +enableFormTracking(); +``` + +Others may accept configuration passed directly to the constructor, such as Web Vitals or Google Analytics Cookies: + +```javascript +import { PerformanceTimingPlugin } from '@snowplow/browser-plugin-performance-timing'; +import { WebVitalsPlugin } from '@snowplow/browser-plugin-web-vitals'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + plugins: [ GaCookiesPlugin({ ga4: true, ua: false }) ] +}); + +// after initialization: +addPlugin({ + plugin: WebVitalsPlugin({ context: [ + function(vitals) { return { + schema: "iglu:com.example/page_speed/jsonschema/1-0-0", + data: { + speed: vitals.fid < 2 ? "fast" : "slow" + } + };}, + ]}) +}); +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/index.md new file mode 100644 index 0000000000..10cc01e008 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/index.md @@ -0,0 +1,14 @@ +--- +title: "Configuring tracker plugins" +sidebar_position: 750 +--- + +The Snowplow JavaScript Trackers v3 allow extension via plugins. There are a number of official Snowplow plugins, but we also encourage building your own. + +The plugin configuration is different between the Javascript (tag) and browser (npm package) versions of the Snowplow web tracker. + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; + + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/bundling-a-custom-plugin-selection/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/javascript/index.md similarity index 69% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/bundling-a-custom-plugin-selection/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/javascript/index.md index 9dd90cfa5b..cd683e35d6 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/bundling-a-custom-plugin-selection/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/configuring-tracker-plugins/javascript/index.md @@ -1,14 +1,18 @@ --- -title: "Bundling a custom plugin selection" +title: "Javascript (tag) tracker" date: "2023-03-22" -sidebar_position: 600 +sidebar_position: 400 --- -The [default releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) of the JavaScript Tracker include a full-featured `sp.js` version, and a smaller-filesize `sp.lite.js` version that includes less [Plugins](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/index.md). +The [default releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) of the JavaScript Tracker include a full-featured `sp.js` version, and a smaller-filesize `sp.lite.js` version that includes fewer [plugins](../../index.md). + +If the plugin you want to use is present in the `sp.js` version you are using, you can start using it without additional installation. While plugins can be loaded dynamically, self hosting the additional files adds complexity and the additional resource requests can negatively impact page performance. For this reason, it can be desirable to have your own version of `sp.js` that includes _just_ the features you need, to both reduce the filesize and not require loading additional script resources. +The UMD files (which work in the browser) can be downloaded from [GitHub releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) or they are available via [third party CDNs](../../../tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md). + ## Custom Plugin Selections To do this, you'll need to install [git](https://git-scm.com/) and [Node.js](https://nodejs.org/en/) 14 or 16 (at the time of writing) then open a Terminal or Command Prompt and run the following: @@ -31,7 +35,7 @@ Once complete (it might take a minute or two), you'll find your brand new `sp.js ## Including Custom Plugins The above only works for the official plugins included in the `snowplow-javascript-tracker` repository. -If you have [developed your own plugins](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/creating-your-own-plugins/index.md), or want to include plugins from third parties, the process is similar, but with some additional small code changes: +If you have [developed your own plugins](../../creating-your-own-plugins/index.md), or want to include plugins from third parties, the process is similar, but with some additional small code changes: 1. Include the plugin as a dependency in `trackers/javascript-tracker/package.json` 1. Import the plugin in `trackers/javascript-tracker/src/features.ts` @@ -103,3 +107,48 @@ index a9ec92f7..be81d785 100644 ``` In this case the resulting `sp.js` file will contain the `my_context` entity from the plugin, but the generated `sp.lite.js` will not. + +## Usage + +Some plugins are configurable and take options in as parameters. +The options available are described in each plugin's documentation. + +How you pass these options to the plugin varies by when the plugin is loaded: + +### Bundled Plugins + +Bundled plugins will automatically include any exposed methods. +Additional configuration is typically passed through via the [`contexts`](../../../tracker-setup/initialization-options/index.md#adding-predefined-contexts) configuration, which is extracted and passed to the plugin in `features.ts`, described in [Including Custom Plugins](#including-custom-plugins). + +```javascript +snowplow('newTracker', 'sp', '{{collector_url_here}}', { + appId: 'my-app-id', + contexts: { + gaCookies: { ga4: true, ua: false } + }, + plugins: +}); +``` + +### Plugins After Initialization + +After calling `addPlugin`, the third parameter is an Array of arguments that will be passed to the plugin's constructor (which is named in the second parameter). + +```javascript +snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-web-vitals@3/dist/index.umd.min.js', // may also be an inline plugin + ['snowplowWebVitals', 'WebVitalsPlugin'], + [ // must be an Array in case the plugin takes multiple parameters + { // most plugins will just take a single Object parameter with different properties for each supported option + context: [ + function(vitals) { + return { schema: "iglu:com.example/page_speed/jsonschema/1-0-0", data: { speed: vitals.fid < 2 ? "fast" : "slow" } }; + }, + ] + } + ] +); +``` + +This method can also be used for [Inline Plugins](../../creating-your-own-plugins/index.md#inline-plugins). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/creating-your-own-plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/creating-your-own-plugins/index.md new file mode 100644 index 0000000000..1746d846df --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/creating-your-own-plugins/index.md @@ -0,0 +1,139 @@ +--- +title: "Creating your own plugins" +sidebar_position: 750 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +The Snowplow JavaScript Trackers v3 allow extension via plugins. There are a number of official Snowplow plugins, but we also encourage building your own. You can either include them directly in your codebase or tag management tool, or you could publish them to npm as public packages that the whole community can use. + +## Plugin Interface + +The Browser Plugins conform to a common interface which describes a number of functions you can optionally use to create your own plugin. + +```javascript +interface BrowserPlugin { + /** + Called when the plugin is initialised during the Tracker construction + * + @remark + Use to capture the specific Tracker instance for each instance of a Browser Plugin + */ + activateBrowserPlugin?: (tracker: BrowserTracker) => void; + + /** + Called when the plugin is initialised during the trackerCore construction + * + @remark + Use to capture the specific core instance for each instance of a core plugin + */; + activateCorePlugin?: (core: TrackerCore) => void; + + /** + Called just before the trackerCore callback fires + @param payloadBuilder - The payloadBuilder which will be sent to the callback, can be modified + */ + beforeTrack?: (payloadBuilder: PayloadBuilder) => void; + + /** + Called just after the trackerCore callback fires + @param payload - The final built payload + */ + afterTrack?: (payload: Payload) => void; + + /** + Called when constructing the context for each event + Useful for adding additional context to events + */ + contexts?: () => SelfDescribingJson[]; + + /** + Passed a logger instance which can be used to send log information + to the active logger + */ + logger?: (logger: Logger) => void; +} +``` + +## Plugin Templates + +If you'd like to build your own plugins and publish them on NPM then we've created two template repositories to help you get started. + +### Simple Context Plugin Template + +This template shows how you can add a context to every single event that is emitted from a tracker which is using this plugin. The template is written in TypeScript, so you'll need to build it before using it and/or publishing. We've also included some example Jest tests to help you write tests for your plugin. + +[https://github.com/snowplow-incubator/snowplow-browser-plugin-simple-template](https://github.com/snowplow-incubator/snowplow-browser-plugin-simple-template) + +The README should guide you through building, testing, publishing and using a plugin built with this template. + +### Advanced Plugin Template + +This template shows how you can use all the available functions of a plugin, as well as how to make the plugin only respond to certain trackers in a multi-tracker setup. The template is written in TypeScript, so you'll need to build it before using it and/or publishing. We've also included some example Jest tests to help you write tests for your plugin. + +[https://github.com/snowplow-incubator/snowplow-browser-plugin-advanced-template](https://github.com/snowplow-incubator/snowplow-browser-plugin-advanced-template) + +The README should guide you through building, testing, publishing and using a plugin built with this template. + +## Inline Plugins + +You might not want to publish a package for your plugin but directly include the code in your codebase. In that case, you can pass the plugin directly into the tracker when you call `newTracker`. + +### Example + + + + +```javascript +const myPlugin = { + SimpleContextPlugin: function () { + return { + contexts: () => { + return [ + { + schema: 'iglu:com.acme/my_context/jsonschema/1-0-0', + data: { + property: 'value', + }, + }, + ]; + }, + }; + }, + trackMyEvent: function (event) { + // Extend the API and track something here (see advanced-template above) + console.log(event); + } +}; + +window.snowplow('addPlugin:sp1', myPlugin, 'SimpleContextPlugin'); +window.snowplow('trackMyEvent', { eventProp: 'value' }); ); +``` + + + + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; + +const myPlugin = { + contexts: () => { + return [ + { + schema: 'iglu:com.acme/my_context/jsonschema/1-0-0', + data: { + property: 'value', + }, + }, + ]; + }, +}; + +newTracker('sp1', '{{COLLECTOR_URL}}', { plugins: [myPlugin] }); +``` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/index.md new file mode 100644 index 0000000000..28436276d4 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/plugins/index.md @@ -0,0 +1,111 @@ +--- +title: "Plugins" +date: "2021-04-07" +sidebar_position: 2800 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +The Javascript Tracker is based around a plugin architecture which allows new functionality to be added to the tracker. There are a number of Snowplow maintained plugins, however you are also free to [build your own](./creating-your-own-plugins/index.md) or leverage community plugins too. + +## All plugins + +The following table lists the Snowplow plugins (alphabetical order), what kinds of data are created using them, and their distribution for the JavaScript (`sp.js` file or minimal version) and Browser (`npm` etc. package) trackers. Read more about configuring plugins [here](./configuring-tracker-plugins/index.md) or on the individual pages. + +If you are using the JavaScript tracker with the full `sp.js` and your plugin is included, no further installation or initialization is required. You can use it straight away. + +| Plugin | Creates | Tracked | `sp.js` | `sp.lite.js` | Package name | +|-------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------|----------------------|---------|--------------|------------------------------------------------| +| [Ads](../tracking-events/ads/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-ad-tracking` | +| [Button click](../tracking-events/button-click/index.md) | Events | Automatic | ❌ | ❌ | `browser-plugin-button-click-tracking` | +| [Client Hints](../tracking-events/client-hints/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-client-hints` | +| [Consent (Enhanced)](../tracking-events/consent-gdpr/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-enhanced-consent` | +| [Consent (original)](../tracking-events/consent-gdpr/original/index.md) | Events and entities | Manual and automatic | ✅ | ❌ | `browser-plugin-consent` | +| [Debugger](../testing-debugging/index.md) | Other | n/a | ❌ | ❌ | `browser-plugin-debugger` | +| [Ecommerce (Snowplow)](../tracking-events/ecommerce/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-snowplow-ecommerce` | +| [Ecommerce (Enhanced)](../tracking-events/ecommerce/enhanced/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-enhanced-ecommerce` | +| [Ecommerce (original)](../tracking-events/ecommerce/original/index.md) | Events | Manual | ✅ | ❌ | `browser-plugin-ecommerce` | +| [Errors](../tracking-events/errors/index.md) | Events | Manual and automatic | ✅ | ❌ | `browser-plugin-error-tracking` | +| [Event Specifications](../tracking-events/event-specifications/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-event-specifications` | +| [Forms](../tracking-events/form-tracking/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-form-tracking` | +| [GA cookies](../tracking-events/ga-cookies/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-ga-cookies` | +| [Geolocation](../tracking-events/timezone-geolocation/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-geolocation` | +| [Kantar Focal Meter](../tracking-events/focalmeter/index.md) | Other | n/a | ❌ | ❌ | `browser-plugin-focalmeter@focalmeter_plugin` | +| [Link click](../tracking-events/link-click/index.md) | Events | Automatic | ✅ | ❌ | `browser-plugin-link-click-tracking` | +| [Media (Snowplow)](../tracking-events/media/index.md) | Events and entities | Manual | ❌ | ❌ | `browser-plugin-media` | +| [Media (HTML)](../tracking-events/media/html5/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-media-tracking` | +| [Media (Vimeo)](../tracking-events/media/vimeo/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-vimeo-tracking` | +| [Media (Youtube)](../tracking-events/media/youtube/index.md) | Events and entities | Automatic | ❌ | ❌ | `browser-plugin-youtube-tracking` | +| [Optimizely X](../tracking-events/optimizely/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-optimizely-x` | +| [Performance navigation timing](../tracking-events/timings/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-performance-navigation-timing` | +| [Performance timing (original)](../tracking-events/timings/index.md) | Entities | Automatic | ✅ | ❌ | `browser-plugin-performance-timing` | +| [Privacy Sandbox](../tracking-events/privacy-sandbox/index.md) | Entities | Automatic | ❌ | ❌ | `browser-plugin-privacy-sandbox` | +| Site* | Events | Manual | ✅ | ❌ | `browser-plugin-site-tracking` | +| [Timezone](../tracking-events/timezone-geolocation/index.md) | Other | Automatic | ❌ | ❌ | `browser-plugin-timezone` | +| [Web vitals](../tracking-events/web-vitals/index.md) | Events | Automatic | ❌ | ❌ | `browser-plugin-web-vitals` | +| ~~[Browser features](#browser-features)~~ deprecated | Events | Automatic | ❌ | ❌ | `browser-plugin-browser-features` | + +*The site tracking plugin provides events for [site search](../tracking-events/site-search/index.md), [social media interactions](../tracking-events/social-media/index.md), and [timing](../tracking-events/timings/generic/index.md). + +You can find the plugins code [here](https://github.com/snowplow/snowplow-javascript-tracker/tree/master/plugins) and also search for them on [npmjs.com](https://www.npmjs.com/). + +## Browser features plugin (deprecated) + +:::caution +**Deprecated**: This plugin is deprecated. The `navigator.mimeTypes` API which this tracker uses is now deprecated and modern browsers may no longer populate these values. +::: + +### Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-browser-features@3/dist/index.umd.min.js", + ["snowplowBrowserFeatures", "BrowserFeaturesPlugin"] +); +``` + +
    + + + * `npm install @snowplow/browser-plugin-browser-features@3` + * `yarn add @snowplow/browser-plugin-browser-features@3` + * `pnpm add @snowplow/browser-plugin-browser-features@3` + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { BrowserFeaturesPlugin } from '@snowplow/browser-plugin-browser-features'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ BrowserFeaturesPlugin() ], +}); + +trackPageView(); +``` + + +
    + +### Tracked data + +This plugin will add [MIME Type](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/mimeTypes) tracking. This allows the tracker to populate the `f_*` fields within the [canonical event model](/docs/understanding-your-pipeline/canonical-event/index.md). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/quick-start-guide/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/quick-start-guide/index.md new file mode 100644 index 0000000000..99e0ac7ea5 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/quick-start-guide/index.md @@ -0,0 +1,157 @@ +--- +title: "Quick start guide" +date: "2021-03-24" +sidebar_position: 100 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +## Quick start (plus modelling!) + +We recommend looking at the [Advanced Analytics for Web accelerator](https://docs.snowplow.io/accelerators/web/) to walk through tracking and modelling web events. It's a more in depth look at how to use Snowplow than this page. + +## Quick start (basic) + +Follow these instructions to quickly implement a Snowplow web tracker with default configuration, and track a page view. + + + + +Getting started with sending events using the JavaScript tracker is very similar to other web analytics vendors like Google Analytics, Adobe Analytics, etc. + +The process involves the following high level steps: + + - Download the latest version of the Snowplow JavaScript tracker file, `sp.js`, which can be found [here](https://github.com/snowplow/snowplow-javascript-tracker/releases). + - If you are already hosting static files somewhere on your own domain, it should just be a matter of downloading and adding the `sp.js` file. Otherwise you can follow our [guides for self hosting](../tracker-setup/hosting-the-javascript-tracker/index.md), use another method of your choice, or leverage a [Third Party CDN](../tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md) (useful for evaluation or testing). + - Once you have a JS tracker available, you can add the tag snippet to your site. There are also alternative options described below for adding the tracker to your website. + - If manually inserting the tag into your website or tag management solution: Snowplow BDP users can generate a tag snippet in the Snowplow BDP Console [here](https://console.snowplowanalytics.com/tag-generator). Other users can use and edit the standard tag [here](../tracker-setup/index.md). + +```javascript + ;(function(p,l,o,w,i,n,g){if(!p[i]){p.GlobalSnowplowNamespace=p.GlobalSnowplowNamespace||[]; p.GlobalSnowplowNamespace.push(i);p[i]=function(){(p[i].q=p[i].q||[]).push(arguments) };p[i].q=p[i].q||[];n=l.createElement(o);g=l.getElementsByTagName(o)[0];n.async=1; n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","{{URL to sp.js}}","snowplow")); +``` + +- Once you’ve generated your tag add it to all the pages you’d like to track: + - Place the tag directly into your codebase. Typically this will be placed into the `` element of your page or in a similar, suitable, location if using a Single Page Application framework. + - The JavaScript Tracker supports both synchronous and asynchronous tags. We recommend the asynchronous tags in nearly all instances, as these do not slow down page load times. + - Load the tag using a Tag Management solution such as Google Tag Manager, usually triggered on page load. + +- Configure an instance of the tracker by calling `newTracker` with your desired properties. + +```javascript +window.snowplow('newTracker', 'sp1', '{{collector_url}}', { + appId: 'my-app-id' +}) +``` + +- Then you can use the track methods to send some events. You can send a Page View event to all initialised trackers with just: + +```javascript +window.snowplow('trackPageView'); +``` + +Rather than adding the tag snippet directly, you may wish to use an alternative option for loading the JavaScript Tracker. + +- Users of Google Tag Manager can use the [Snowplow Analytics Custom Template](../tracker-setup/google-tag-manager-custom-template/index.md). + +- Use the Snowplow Plugin in the [analytics npm package](../tracker-setup/snowplow-plugin-for-analytics-npm-package/index.md). + + + + + +Getting started with sending events using the Browser Tracker will be familiar for anyone who is used to installing npm packages into their web apps and is designed to work with frameworks such as React, Angular and Vue. + +The process involves the following high level steps: + +- Install the `@snowplow/browser-tracker` package using your preferred package manager + - `npm install @snowplow/browser-tracker@3` + - `yarn add @snowplow/browser-tracker@3` + - `pnpm add @snowplow/browser-tracker@3` + +- You can then import this library into your application + +```javascript +import { newTracker, trackPageView } from "@snowplow/browser-tracker"; +``` + +- Configure an instance of the tracker by calling `newTracker(...)` with your desired properties. This will create a module level instance of your tracker. You don't need to keep a reference to it. + +```javascript +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ ], +}) +``` + +- Then you can use the track methods to send some events. You can send a Page View event to all initialised trackers with just: + +```javascript +trackPageView(); +``` + + + + +## What's tracked with the default configuration? + +Using just the initialization snippets above won't result in any events, unless `trackPageView` is called. + +However, we recommend that [activity tracking](../tracking-events/activity-page-pings/index.md) (page pings) is enabled immediately following initialization. + + + + + ```javascript + + + + ``` + + + +```javascript +import { + newTracker, + trackPageView +} from '@snowplow/browser-tracker'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', +}); + +enableActivityTracking({ + minimumVisitLength: 30, + heartbeatDelay: 10 +}); + +// trackPageView() can then be called +``` + + + +Adding this code to your site will cause [page ping events](../tracking-events/activity-page-pings/index.md) to be automatically tracked and sent via POST. + +If using the Browser tracker, the events will all have the `webPage` context entity attached, containing the page view ID. If using the JavaScript tracker, the page pings will have the `webPage` as well as `performanceTiming`, `gaCookies`, and `clientHint` entities. Read more about these entities [here](../tracking-events/#auto-tracked-entities). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/images/Screenshot-2021-03-28-at-20.08.35.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/images/Screenshot-2021-03-28-at-20.08.35.png similarity index 100% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/javascript-tracker-v3/plugins/debugger/images/Screenshot-2021-03-28-at-20.08.35.png rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/images/Screenshot-2021-03-28-at-20.08.35.png diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/index.md new file mode 100644 index 0000000000..9a751c76c0 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/testing-debugging/index.md @@ -0,0 +1,81 @@ +--- +title: "Testing, debugging and troubleshooting" +date: "2021-04-07" +sidebar_position: 2950 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +## Testing your tracking implementation + +To prevent data loss and bad events, it's important to test and validate your tracking implementation. Snowplow provides two main tools for this, which work well together. + +### Snowplow Inspector for browsers + +Use our [browser extension](/docs/testing-debugging/snowplow-inspector/overview/) to inspect event requests in the browser Developer Tools window. + +### Snowplow Micro + +A [lightweight, local Snowplow pipeline](/docs/testing-debugging/snowplow-micro/what-is-micro/) ideal for sending test events into. It's used as a Docker container. + + +## Debugging + +Use the debugger plugin to automatically start printing out `debug` logs to your Developer Tools console. This will help you debug what events are being tracked and what properties are included in each event that is being tracked and to what tracker instance. + +:::note +You may need to enable `Verbose` logs in your Developer Tools, as this plugin uses `console.debug` to output results. +::: + +An example of the output from this plugin: + +![](images/Screenshot-2021-03-28-at-20.08.35.png) + +### Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-debugger@3/dist/index.umd.min.js", + ["snowplowDebugger", "DebuggerPlugin"] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-debugger@3` +- `yarn add @snowplow/browser-plugin-debugger@3` +- `pnpm add @snowplow/browser-plugin-debugger@3` + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { DebuggerPlugin } from '@snowplow/browser-plugin-debugger'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ DebuggerPlugin() ], +}); +``` + + +
    diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/index.md new file mode 100644 index 0000000000..3076b635be --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/index.md @@ -0,0 +1,22 @@ +--- +title: "Google Tag Manager" +date: "2020-08-10" +sidebar_position: 3100 +--- + + +```mdx-code-block +import Badges from '@site/src/components/Badges'; + + +``` + +Using the Snowplow GTM custom templates you can now deploy, implement, and configure the Snowplow JavaScript tracker directly on the website using Google Tag Manager. + +The main Tag template that you will need to use when setting up the JavaScript Tracker v3 in GTM is available in the [Tag Manager Template Gallery](https://tagmanager.google.com/gallery/#/owners/snowplow/templates/snowplow-gtm-tag-template-v3). To setup the Snowplow v3 Tag, you will also need the Snowplow v3 Settings Variable template. The templates you will need are: + + +1. [Snowplow v3 Settings](https://tagmanager.google.com/gallery/#/owners/snowplow/templates/snowplow-gtm-variable-template-v3): + A variable template which can be used to easily apply a set of tracker configuration parameters to tags created with the Snowplow v3 tag template. +2. [Snowplow v3](https://tagmanager.google.com/gallery/#/owners/snowplow/templates/snowplow-gtm-tag-template-v3): + Load, configure, and deploy the Snowplow JavaScript tracker library. It supports the full functionality of the JavaScript SDK. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/images/search_snowplow_v3_settings.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/images/search_snowplow_v3_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..91386dca8fee44e9641389309d5acf35bce153d4 GIT binary patch literal 16886 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/index.md new file mode 100644 index 0000000000..5d5ad3ec83 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-settings-variable/index.md @@ -0,0 +1,40 @@ +--- +title: "Snowplow v3 Settings Variable" +sidebar_position: 2000 +--- + +The **Snowplow v3 Settings** custom variable template is meant to be used with the Snowplow v3 tag template. + +With this template, you can compile a **tracker configuration object**, which you can then load into your Snowplow tags to avoid the need to manually enter the same tracker settings across all your tags. + +## Install the template + +To **install the template**, browse to **Templates** in the Google Tag Manager user interface. + +Under **Variable Templates**, click **Search Gallery**, and type `Snowplow v3` into the gallery overlay search bar. + +![search Snowplow v3 Settings in GTM gallery](images/search_snowplow_v3_settings.png) + +Click the **Snowplow v3 Settings** template name, and then click **Add to Workspace** in the next screen. Review the permissions and click **Add** to finalize the import. + +After importing the template, you can follow the normal process of creating a **new variable** in Google Tag Manager, and the **Snowplow v3 Settings** template will be listed among the **Custom** variable types you can choose from. + +## Instructions + +The fields in the template provide a UI for setting the tracker configuration parameters. You are thus encouraged to follow [this link](../../initialization-options/index.md) to understand what each individual field does. + +### Tracker Name + +It is important to set the **tracker name**. The reason you might have more than one tracker name generated on the site is if you have different configuration objects or tracking endpoints to which you want to send commands. + +When the tag runs, it first checks if a tag with this name has already been initialized. If it has, it then proceeds to send the command to this tracker name. If a tracker with this name has _not_ been initialized, a new tracker is initialized with the tracker configuration from this settings variable. + +This means that a tracker configuration is applied **only once** to the tracker. Thus if you have more than one tag running on the site, each with the same tracker name but different tracker configurations, only the configuration of the tag that fires _first_ will be applied to the tracker. + +### Collector Endpoint Hostname + +This needs to be set to the hostname/domain (e.g. `sp.domain.com`) on which you’ve [configured](/docs/collecting-data/configuring-collector/index.md) your Snowplow Collector. + +## Acknowledgements + +Thanks to [Simo Ahava](https://www.simoahava.com/) for building the intial release of this template. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/01_ecommerce_api.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/01_ecommerce_api.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf5d14bd2b6cff9cce7c7b5a8dcd9ada7823fdf GIT binary patch literal 16180 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 Ccm(4B literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ga4_tracking_parameters.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ga4_tracking_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..40321b4788c69e903c3342076dbc7875d988b30e GIT binary patch literal 19184 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_sp_tracking_parameters.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_sp_tracking_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..f8faf31e149c5aea88c7b6f9a23ae473c6c47cf6 GIT binary patch literal 31292 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ua_tracking_parameters.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/02_ua_tracking_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..055d654586358caa601fe88a21569da9fb05152a GIT binary patch literal 21037 zcmeIabx@Y;yFdDZfq^0mkp@KpgOqNUjg*K8NGS+Ncc+B`h>|KLNC*f>Bdtg%5`q%a zB@NOI=ku)Z-gAEYoV{ny+4Gw@=Z~{y)-aOqbKlo}U7xz&$Cs5Z?AgV*i$o&rk-K>I z3W-D>K_Zb|+_4>>S*PSB!-uVQr{%8hz<=&LZau=k8SKw#*sEF@**o2|H6$5ZT3HzK z*csRw8d}=jwz8kvQYu3t9VE$}{rjqO#CWHRhT34)=Co)Q<;h1|#7KAF9(}~{BsTEy z0dYemuG(+kl$w&7-VVNDVUmh$OjM1W2_AfL=A}`B_<(m-Uog#+qhjQoJ5Ex$&92^K z8?#C5$^SV%Tfm#vYL-7WRnVd&(_xnCujr^`$v}7P#EHTIx2!hvwY+!lD1*M-|8nb- z`N^9n!;c<279W>SAN1wyO%>|YDT@b>@ZS#ai3#3QXYt>p<*o>J{HL$>zw6^dUZHp4 z$9$Xqquks@;}RDxTDx50u4GW{Imzw>?F{TtH^@UE){bNJS8I#7iFN#yE zzI-JIj~)BsJkitRU0NzjC9`yJe)MPI$ok_)kE+?i$%hmha?I2($;*?qzQ4IeL`1}X zxPgo$DOsqc8}R1MVO?EaF>!ItR4OJWrUHkt?Wc5gS*NF`-KQ()idIHb@;`jgOzjRg znH&Co|Ni|ytp)*|lUIo6H+9nKQIM1Ct$u#keyVFdb4)$;`Z;TBeljvL(bW3Y$-??2 z&#I>^t-pRX=9sly$`cK*ZT)q9%F;)|Vf0UXU`5ib!ypG_cKM^Zt2fW1x}j9Zm-gcf@rUem-wx=GXrwx z{pf9KOeNeFxY<0H4lQ=rQ6(xzS2i^TJwJRQ({0hR`JLvO^XIqYF+YF)ypNUDay-vr z>{@f0j=ZHMZ%IkX++-({tZb?Lug!_P?xndVWg9!Y{trV@hdDSNm^38_SofU5Hop)y zJMiVpmky_HkIxkqH$}ot+H+GYmeyu!_{=-u6m}Nbgsi>$V9LFyfI!=(5 zeurCKym;}oVz|iXswzR-fs3Op>Gh5A@@-khRPpigLguZ{WIR?b;|WsS>`?b>JJ+TY zLehG^Utr@nc+gwetognBvaNy3xmL;@J8ld&#N@^2b{0DIPfRFYyto6~ZZO&L!P(Wd zFOtfFGuQ7U7Kz09x8TGH%Ce?0bBUC3~r?z>d==KcF;*qgxJbi56DR(h|5 zOg@eNOld3eD6EhP7q#LP5(@VAChcXFs>TA|PfX5ra_D%SGKN}ug}82Qax`AIXgv&&OnoATGL9S{%@SXx?ofBQQ- ze(CLOO>OOO8|$k(si+cN=SSb^7Qe#Ee=qTH(>E}XlasrN8f_7BM434i7Fzl=egFO( z#e33W^eVovC0H+0C(n`v=gN;+{I3fas@kt;ojtpC3&q~82M-^nqUy;>C;V41=oUECF}#l5gM3d@)kO;jLyCCp9(o zc*lpJHx~jL6BL;YqDwqh8{cUP?%K7BUe;4;eyqi~%$tmK%g~VFW?Nm|(>+Wg4fwL_ z!uU?_;$ms}Q0_w~PWb+=4L2|_xK~(MsAA{tE`W> zQvs~_NkPG5yu90AzkR#oXes5?*qE7={r-LX%Fvg&e@VK`95KpziCSS4wbVB3Ml-D( zH_kEr$-N@sG|B8R)-2qtS4;o0)~L&C)1yBpGLi+AaGpg*Muw=`4|YR=VPO~KEth!p)n9wr$(S zEam(RYkNKW`OBA&0|M$fs_cJ%V<5?_&#C$j4%J7eXHQmFU);+g@!4&v_(D^HqDfbg zI0|`JI3Ahq!-*|i8a_%rxesf*+w-j0x;++IR8&;vrn;l;hUzr6pA^4(sPfH7u&b*p zE-vm5&gJ!vO&1<>bMv(2UOLQ%{^qUNes_0w?kJ^b5er7VqPek_fLFq1#4)*|s(QkL z51W*vn%MaI?=3!iS)PQ4GodB-Ipi3Sc__;5>6aj`SuAeDTb08&2 zX7%#gOi7M8PK-(k3EPEn&9(J)e}0$IAIJJ-RF9VO#GFQ*d(YIY(njmO3Jvwi%X5lf z=hi6*#$RkKc5^ClnySO(xPYp4adByJ;3Wp=c_)XS`;vUOuf5Ihw(b4&;77V%v_F$5 z`CwKkiAB=!)~{?6g>Vu7N`EFAHa2BP$6T9I_F%o!j`sEgy${)b*YK4NRIzyt@OdrQ z2)8umT4+6G7XK8c=P8G+Z!2_~+QSm=>$^KGEp5Cli$YmhSt(kk7R@VJiVjQn34IG) zoPJUNl>(=M)NwnT8$~ZtQ+eM7mrwJD8-Z*6UTZ_|H1_RSmrdgk?FKR-$li(h9^v-ocO&^FAS2a43x&wYo_ zXSK)a6gp;Gw1>vU9m%!qG}T@JmfL#p$dUV=>nqdkR;AOk^|Ji~1D}B^_*P>^(Ri{g zJ6~bngPuLJuFbjs-~lxa4KdHP@+^go7Sk4G&T46C`RrlxDJ+ysQBP0E&JJ#9xctP| zm(S&E$?47l2bbZPht;*UhQLHyw{25-bAAsVS5>oT>u_WIZv0}=N`6_{=$JDP89(Or z8N`TKc3jldWZ>oH^3XjD7i_IY_HAlbR@Q9P zwC5S);OwWRRmro|@u6h6o0vE>!K+AA8F@h*UL8C8wfKiV`1je*$@|65{lEHg+{%fJ zeP#$F)PG=LKSqGHlT#uJ$l2AoV=@!3@Dg6(K&ZIq+SaV!-?&DG1(L7&?KeO<4?bMEe=9h0`_&JJ)kQVuy>l$Y<% zs+TeNbbn`MCN`BA02}k^UYh2sZN|~PV`DXEsHCr&xJ7#`FaWb0sKN0*v$?TuW!jn7 z{)F~~MzL#7#Yq4>U9a`|_N(6`du{vshK8!_>ZP5UR#$*c#T>`!pFe+2I&$R5dmva= zueIs$u9k``O^r)yzUjmJeumyWv-#=ekE>lTm&g+9;~KN&41B2E?oS(3@sGSwUg}ns z>7ST3z%+bss)*(~cGUX%_vP6kIc4Rcyl&4oPE%d2ZEb1=6FndAnfx4`jAkeaziW^6 z#FP__Pt_9U9jc2oXwS7c-(%kT{t#Dz-+cl85yM2qNdP`?*N6@ctt{PKw>o+9BzLo+p`n1&q&7xQ5}*Ze5HKvo z(b9p=czHUa_1M@56uT|{j&hqMJ18LVoXuVDFtq~5-a9b7^NnBjqeX-N&2p5+s znuzP-q~hhv`$+wj{%?RYiC@{+cx7d7Su?RR#vXLvMx?`*31mn96Nqo zAN<0PLD1*$g{SXLnm9LBT1v^S*OqJ!@LWHOHoCE~0SLgRtXzMh#47oUhDLRi-lBl% zfVH`Wg`B*s?;a5;;TfBvVzZv#qhE*g+|QvNCMPHD&DkoNC#DJN>qPCr9Y{L?sQ&&v z|Ml$KA2G?(3M21PP|biWPOr_@6XVO(wIE}1`1>0mwzWV9+MBmLSE{B&+#?g;6sx z)qHy?2u3Hcz{AV?J3dU8T|^`l08Jl9@P19aeAx9lJK^>Nw6p>qEB3_v-dwBSym9iS zMxkTs_e$`jk?vC2E!!#I+J0+J*Q>`qFbEn^-rK%Me`9TV|Ni~jv#nP-1qEsF;=9~u z6;XYDH8UYUf28S1Vy6`_nDG7II3{TK@8`GpB?S2RZE3oHdU4VC_qUe^+O;P=>^PE4 zM$qu?GKFjgUT$f5=%pCpo#(U%OujACLQ*k&D^pg5|6Ou%56+)`p0?D~%Lb}F*@3Ew zO3#CW&Vah@*uDGkp+hlW-wRlEN$I*x2=|ZmS-gpj{qyI~>uagkiKY1V?c0eoCZXHU zY}&G2W`9RWyEVs_Vgm`}44zP3Q}ZT2|HbFeXF-=P1aT_9&&x}6Tb!&^=)*UG7ru6! z_?2H+NJCBi_vzE*%gf6knh`Hv(1VSbbQTB$;fAmdEljlYJe>tCC5^Y|1z=-(CMG}^ zcH`Jo0GET5J&TA?2w;`AwzhsP7sR=B`}Rz$Zkac=fV22T1Z#Tt&JVw(zo+LE@v5q; z-w$t^<|-;E#GUtNyzk@Fhc5u=%U!(4|BLACf8X0qv@&rcNvFv;z*{j%$^NM+WsFxe z(N@DMLws}5bR|<|3-;{Ha zGdnA&+mf!w<}GMk*E2e5`rXr?QMmf+*W@{kl!)}x%g8NG9IsR5E$CkQ?5;9 zPFxi>qT|)Ru`u3NDSq;$LiX+NeVG%02^|g65xKd!0K_MnuZDDVXcrX~asQh8^XDM2 zzJvpJG-K%!Dph#HE8JvcM96lxP-wK6%ae7Azvv}@t0k*D35F)dC-(PFK8=j@WII6p zLF=fsE`_?fIuP119-fM>689Z;c6R=5EVV{NGdv_J8ite2xQdsk#wcdRnbr19UC*P! zAVB(jxz8SPyWf;3@ZvsC;4ToN24@}cBU97k=wqnErc^CaoFwxMWw5CS4;~OWp6yA& zs}er#{2N7eU%$rY=hNdvf~jK@KYol^OB($4O@UFw+_}?3M-C8i=dNA)1J%#f)tn3s zt`)mFY^S7$sJ7|QqHk>MRJ-{3nwqMbl(aOD(Nnx$yhg}lY8fpdKi`e`2Pm_MShbyh z^Llf4L=@|!l=SFM#_e0_YrcN{+M4Mg8B?1+p{tJ3mu0f6SAqa@P}?%i+fD)jRoB%S z{Y+LvC6f<^30at%FAd3Vekt9U=OZA*G}Ib`xA@ldHeb1Z{Su({<&Co1P#&$cQO|sw z02}bYz`#KM@Y;9RbDlt2AZv&{w_C)jOTpDu0u%-c)pMNTe%opM3`xv(;L-QR9HKkO z$VB1s!G~VTddc8Slw)YUetq!TJB>RizhlQ9gRuW~;DBSThjwaD&kce>KwQG#Il{^L z7ag5bn?(v^)}KGt*V44*JUwM_{<$?X?~jjt54vqZ#gZb_F>%4n}?T8?;* z%FMwNUcCcJO`p5i?8-f!JgSa7BN)*#0!7LY0+&LB7&V9h!83oR&|UTvF9sQ}G`w&$ z+F{quoi~9r?8llX0vCYftBPD^{aSi^dnp-C4iuQ;*v2VG%Y1t!yc@sZSFVL`P!J7N zH8tH8=q5(cOu2Q7UJz9xYWeN;-}gv6cI}D<`yjYkQIQmss9PQ6{7?zex64=N$EIgz z%PT748)b5>y6e!i{9Djm{Fp?aVqqr>r(_ZoUY=G_p=Ob==a*^l{L}N100wLQY@4qk z4N1*ZA3hM~X(d8ON9RMuR!1efR@U*sE(!2IKCBRnT^A{tg_@CB`*Q|lJyk2Oct@7rWf1)FxEb6ln$1r-~O@txDH(D?F8yl>F!g?m~Mz>9ygGW?luI zEj_90tNkO>nvHde<>CH%XZNMc>{=HZiZoRdl-HS$ZgPwy8lKQ7x^*molJ!()L5XO* z9?Dm6m~YSHYMz@XU%p(OAitKbd0~BJeuu?@yXfdpA&l$0JO+OMo~iD+WB+8*x=@~$ z`gyp*9o4gzNi>cpck9Y*|U~@DZYYT!csQ21qHIvC)k}hx7CeZzIyfB zW7VV|$(r{HN^-26#DP~*-;FaXMO>;#FG)Y0Sk3l=H%afI-#2d4pYQG@UYKv!L22pK zHocL^F>OA0Sa8fSjGbNd)SX$0fkC>X<{%yHQLH~5Rs*ZqBL1sa_dovp5YNmv!TNpl z^co}TDk|R6GE64g5<0nt;k6L27PZ8ovV0lno9yYD|q9s7}_ih*gnwlpo@ z+&N6Yrpcq3`C0$nD~yLy&-KEcWF92?R4LvN1oS;N)!c%Vb(u+3?4D8C+JG?g6iN8ds4Nz+hK76^QkJc+@nYJH+ik45M0stv z022QV(zFbn4;(2h+XM2Eg#B>Y{hc&vDQS@E!myasw6y17fG~(!GK1YzihykrD*!|d z!K~`;w%vXXYUs|{>-_<;jo3l#Zk;#Tmex|Q(u_%v3rZ#tKgb>s)ip}oKV+oE#oZS$ zsKg7s1kR>e(G!dh(!N&-l1;1irI>77M zt5;vq>2~bg*}JhiMMw*zfuSK9dirWC_QPY;6t)D|y_DdyHlW4zS-57nYSpLR2g+ivwfrke2HcJLCh zvd|h8+}+n4SXM(u2|W#5lVA|o)jPnE)5}BAf*36Zo6tVMv&tblGC44y@kry{rO{wr{9tqoAjsiXB_`&ZqbccF^m1rI&VwQ9kYVN(#ns_?-0Ug41IO?^ zFp9Rec3MGajmyjzE|c%E+iJr2hF%&+_4=ISSGf*?mHSXbW>57GZ^QB zHhpJd0kim~L$)P8kp;}8b;b8lho-&U`d%>AdMKv;kiSXwGOOHBrz@$Z;H)ra9o@Ne zC!t8>=Zi54-6oZRc(=X3dGC8voB3~S6h%+>=7v*9m>>letGSKWFK86bBk^IR_gPu} zLCP{8fdX-)6BNTMf%b+wJ_ufxp_#=xk^dnME^6Xga4?}IhE!R{=Ni|(ItS=RPmoA= zm~TD!V@EhRR8p@CAAY;Mx=O$mg1&ETES91gn4?^NGZ>s7P0j0yl@H@pd+KFqa9NE7 zFBs(KB%YX=MRqEg?ccKiEIaq^{f#1V-&h{1T!1w~2m+Fll7xkaExV2Fz>blB^|B$v z9e5JwyVHwib^+ay2=xS--V6>0c|*R9fz0Z-;9r0J^;R`;FDyNd^pch1gq%i*BM_ej zP)KDn9)=>}%YfVTf<}JSr-{Yab)PLg0WvGYdswD^ zK6&~y;q_~8m<_r!2jc*D0Y(o>NUVhZz??g+t8~>Z7FnTTquA($bOjvYTs9WN&aOzPdGC<`)(gc1{O!TcsHu z#8>_fWTVPO08u0Y7{h9lC45fgc+3r}_^!5MH2cXvBwRiYj*1-|B%p6#LY2#xPeC@K zZhb9fuOs(Ql|U*u!p;4yFD4x%m^dDXPyND@M1W7K`%XJJI&Odc{{22KE-sSqL}y0_ zuQ(f6)f+r2e$X0j4YXB0xUmq4Eu`mqhOKT*RyvV-8`3& zX;U15#tnOFS1^SVekC!>4=bE;=}Chm=MA^BLhPZB&lQxp!GWJ}&0IagU3H+KS^sz#{q@P(d+| z6(J(R0dC1G>F9?7ZcI|;B0>a(jyzaGVh~eP+mu(i3xinVtWkiTzthUA%de<{a|#Cx zVwIAnW}BL`BHhTyQyp*xWv;Ed zDXKp+@Fh&@CM;98FY$k#2z-dLDQ2dipg{M-5*o9yMISeAWMN_9)6_%01MUd8INa*X^DTPDphHBY!hN<@)P1Sq=ODvY(4F)MTpt7twSn#pOcg0%%;OUo+6=6JKseK+g#z5&`ucsQO@neG)f98e3|IU`9bmNT`8y>uZ)JPa2kig#X}wf(4TgMUG?A9pvJA z2=68nK^J0BVqE!^iC~f!x!c_olF&QNx_70GnB^_u4oE`q`FkLIcR~xv7Z;dI;h{N{H4F)(&ziu@?eZv4W&Q zsy?FjFzcY{o7tqB86Ic4mpu9wXAk_L2hd?|ye-HJ0*ln@cosn)MWr0o$EK^;h8}Z8 z^>jLQ$74^3C4us+wz9?Z$6FNwISfU6MG+Aw^!NVsD>^3HRzBFnXsB%hx2pF+n^6KS z!D@>%dqI7H;7_a48_oBTEaLxH-iLT_m-YD;24T}+0eKhU^;64+4sLF%m!g%@_Z>J;iOAU3Ko0rg zu3||x_djHCFGHu>N^ah~N$8$a6~It4w0gAVO7QYGy6$IYMY@J7@ztwN}}B8#22 zTiv|~%~yo=BL7Q;7mAz;Ml>88@xlA)3{Jj0%6&X`zBtvg_fUuHg{Q1sV%3|DVTagf z5@Woa&TX^`l^^?;lMIFXA4mCr+ea4`ZJmfOU+X?}8X{|U?3UqB&uE`}Va>khOs~sa zSc=S?XWBm~JW!&hK2h_vt~bx_rE|-lqR#k7)qDOCCa6JR`qaC_AmeyShPf2hK&LYM zP$1T?-c85FRYhnz9VEy>fI}B`x_{*rQW6%sWE5|bFQG4~9kYJ&|9|{X)}gI?l6;^t z9(f>m*gB4#IKt>x-8^Z-0cLHPhQz5UT^r=yAfhv|OV4F@ZmSFDMzjP?ssZ0ulctwrN{iSBLX91B zC0n*^f!;8tXtk(hAQGODQ@reS53}qp9;Nr@<_2n=0$Uk#)aj<_opu&)lwVFnz=Do+N zBiK4}%LIx?`=Ia!rsx?P^92eAy#X-41F9bc$_SQ;kZ{a7-vdOb6R)R@WV{h~5-~0TOtfn44j| zI>}O;-q6r95w!$H1uEGq?Y0mH0Vm|?cPJuH!2CQ`=6W$C^pPZhfb&a3_U5OpMa9K7 zwzllhdN2;d0AdM(3?}zyW+oP-gGizw<`@id$>`gQkI)fa(5<{@F0TTxG79>2yU*@< zNX3?bg)#q?{TRVah&zzZ1mKLb!_fr5frIIXybXznT|pejAnEVz{Tl{?NlO|F2^Jmk z#}NSz0Ahno4YoT-2uUz-;16u|=8z8shAzV}g)gN~#8ahR_rqi()O$GXV0ohbsa)*r zu@8MLbBULVz#X&zLeB9Yq`fJK6~oZE9zO+WgGplLJ~%YA5$OsP6+(r?W+N9!BrCz`{Br}C#ZSx0?VR|PLnK7u{$_fvyW(m8%+DJFP(m;0 zj*UX*h6X~~sZ%7-<$*T=GM^AG2F}KoXuiL3Cu0K1(oZNd1qfG&PZ4?EZxP~6vBgVE z&Uf$KOHxnoq74{n%`kvPeGkP+Lql^9Je(Nqh_r+}?M6A709q-&68hNL8Hp{{&a8#b z@uj|A^zJb9+g5-UeDM%cssv@LIkp8X=NWJZ4Fdz=SrOq_jL9STI&?3<4~Q7TB*O^+L*AF%}ZOxK+_pBrL#C&D(SRQHjVV z5t%HL?h@2F7m)t15sq;XoA>oWx)s2kxSz9DvMfgs3sHe;a`r@=8jal9J(;odsk> zD%GH}<>$|zt!dC82}l8>8F6rAi6w#Cp~F&o1I3{B*34v_(9}ME`LYucRh+cH(G&bm zIS*7*!$;c_{BRO(DsaTpfB-7!5C~nqH>lc+-PrC8h(I7GSi6K?hGNAJD54(y8FcZh z3>=pcT@bq6;0-IC)H6BxG$^P^nC;%9M;8r|s_C(fY5H}OrU&ttj2-TXDU*7j#i2X> zL*Aj16WT^b8X-Lp9Xxa#`gdNJYfWtN>`=X(IBnKT5FsL23}Gt^4G~J4nReQC#8U_({3ul|wCze~ zvK9}|6P3yO++MQRXbs%{Ey&t*DWImZvXXxGYh7&xK`?M!h~0)dbVy37qwgBUKNVPJ z!a?^?sciHn4Us<(vg%q390VTqLug!s}uSBdURxt=2JJ?g48Imb_&NXe|{igNy>e_-Z(mzK2a z91%*u8a_nSh)6oJy8rnbPF~5Fr7G?x=nYjFfH;t=zGYp za2`GS2(N&F>f_b7OI=Ga1fioWPh{28^G;@Njw55NO!*3@KQ*bKA+;hC?BFkC?je7@kak1qW%oi?V3x3dgqQ}>LXV$5B|L1D zCIyNVU%yXiBsAS&s%_jIIhIytX7Yp@`@xojP~ULm2SIEiq+DhK<;NkLaC#$A5{P&M zT!X)Xp%L=90qU^^|GRiVZvIKl2zu+MnwlC7O9O*)wErdO1$?V7Lm+<;)&;sW@&o2X zb`07OPi~T4sSFlNpUC{A>4Za4)m`^iv+WpbNgo0(;F6YRfhs_xJ?-tYZ8lBRj^CY) zl6C{tjKPc~lwt_Dc-Hfn51N{qu;#liM*{WIfyDYku*XZio$(H|V=D!Pp#J9_q1>9E zFrTJpX7nK(S5j(X!b5c7z&@dDK=dv|%Xo0JhJIj3-t|_ez&-|%7VLIVM1&t2z?p}8 zQ-$6aB23_-fH^flxY~%}zSGDcM*;)|_fh^+0&FmhdE6_|xUcAqSTIrTCOun`PUL`m zNca5*M>sx)| zwv2j*7KGA+C}e~LX4_dgxnmp^75L09-zT>{tWva`cd+LX!URNc82)5~Y~!V-KaUf{ zvHuRP2t1dSthIj9;f-jXH6#xrAc@6?#r7J@jK}VnY$QM)JyK_)kSkvy2Hw}#2hmzk zM*gbT0&XP@Yz_w&5J+AlB;h8ZQ2&1c@vXk!o|hl$S+Kll=2FN zklPAU>Dm8bw}o%_$GmPH_QQfSqN3^;L|^JkyzkxHB3z&nXvjy=-lx3#r zRV)s-eJ~ScQ`)${cGo@j*ZGsTPsyG>6D}~V7xY4Amg&5|`2oTnMcZCjOUon1_ed~C`j zXL_A6dVTRk?5}fI($n~4xi@w?EsoCl6-RSjpfsK-m5tYGsoN?-nLm<)&DK`H!_{?l zMFAeHEKJnk9+Q9BOITxY*yI!y<1wfynZ@>@D{Vko2*elQKNHF+07i(V8wV=v20#g- zp4am%6#?G4lp=17{z&>atAU8s!+|9<9qb~Kfq${F1t5|Iq{5EiI%NBjrM}&3Yik!3 z6%B#$!sc=?$cYRMX2J2}Pte!MpS^tf1qOZ%Fg&sJh;{G-xNYe{&LyGa?uwr=(Qb(h`PPT<^q$N5$-OYq96!yXhWz9Ng~x=0ecU zUFOw~s(ipy%0JjKFe`{D)VHphP&Y?x-!qzJvATB~h3C8uUQeGaMd~Ab#l0(-7chKJDfsR6>B=e=f7Z`R^kfC1{Ai-Zb7I z2C%Qr!~7;pNC2}+32$V8$+v8A>Gu}}xw`?!8vuB^S<4FQMP&e+GF})UPifyW3A(Ki;v%1$%C~s$ooJt~ z9OENymR!3gvbvY~NSuj*!D`RzQ%aFCc4`(-96EMvt1G+@3;?DBJ%0;7Knd6)8DUBT z7NpvDo3-WMg=z?u?g(xoK-uXZ8ZsVl!9wk279(kFhcoQdh?^LQM-uq*iLoqQi#015_=^q}xNaRGStNB+-e_5PJ$vO=K86^61b8{%b z)OXzNBFHCZC?LPHvoj&ZBgqZ@_alBc!ccZFVW8@!J1bqfbO}lH{9DTpBA7XgR%PZ# zR~iKuJPkfzSuh{e&DGJ)&yNJI=){8T;B`V<^qyH=CV(_>3qT~msanBQj=9#yii!tn zDc5X<8xCOzA%nzq^mGA66>;?pS6C~N5i!W{P*U0pSX5}PMQiHpVmqn5oipf5Y-Ore z|1s|41L?|7-{(6C@vL(T&+)%NWuSRFJqEDDO-g^f3^W}0luw8|ekf5}z+_y^b8TBs zGi>(-0wWwO!emC690^jN3|`3nSSoPkGsv-K_r z4H!)Ov9p(D#&C5*5C$lZ(Gqx|Ca@$}E=~|3=VWGOrMId>qi98}9>N4+z5=X6-nVgZ zsHm^6ceWluWBL{@N(D2A2=jsO6F>(-5&9+`*pK4LyBIt$7XUFD6>$@goBI}m2SlTS z<$)HDbd5N^AHW`xcWjCTm#%J9c7SP3kyR;|k1Th(5((7e<;Mg2vwjNCwZdS@D|abhB0+imaTj z3gvDK_4Bvj7x}F1{^q`Xe(NDReqQsxB)E5G$L;?mH!LEg<0z`i8N@lE6f}OnRw*%3 zNw9rSkkVJ4nEV)#c<;wswl*HwZ+_AD%%M{XJGN7n9K6|&1J`)Wy z^#blReFxY5@#|MIR{l>8uWpeB63xvZBJi0LQ1A*c4l>)fJPQ>gk*E`i_XU_(S;#9* z&CEO*5*li{^rzQ#?)wF|euK@^4vtRdHZ~d8(sg;F>l4ue)teHPsq|DeHD400Eys}~ z!;m)edkup_d3ED9ug}x0FDiQ`&<4mRjJKa3PTBo?4FAgqUYBA`)m(h_bYuQSl#3}x zsmNB+Fpa?E0p&z3u9j}O4+|^5B2#YgzrB3)NICy4dY`*KhYsI9x^MV$*;Lp~deg<_ zt718;Ubh6Se>69nLO!^j>-V5y^}4+8g;MSH6CU<`ag`n>?`$jm0)H|l&eHJ?*Lx+Y z=%2oO&3#H>(2s#-HBq2~Z|o zh{133iAy}rA%3heo-{mkB``?nh_sqwZQ8{!@*AYX*5_lIMfh;_c8|QAQr|QaiTYg6 zRuaiOX$Rg!g2YdIhXx-K*saM)q_V49mHzK9nw)qZh5zh_GS3%~Nc6YiTfIAVa9@{h z_U-5IuBH5HZ&yR3v&?IsxSnqvb0jG_`4YJ3uBj8;+*gs#?WWyB61{_U@%T10`(bB78$6UM1unwmN$ z#bkw9bPqb{HG#%MkLywxzEI=Iu)*Zvr3J3qN`aAv#3*RRZs#CagOetstLUscfm zsOYfAI_BO7XF>6^fURbb@K17O=Z_N=Dus5n~Fbokjhf4XTDK+Eom!LJUAW0>!r8J zMNfJBHvO&#r$_lI_tbwC${D^>H#TpIUV9y3TU<#De)bIGj=XrbPV#GY_2ui=UqNwx z4K9+DnRx{wRABv(s*=)E#4^$WbE*ezi3S9Bx&hbvvdvm}(d!ihiOc+{I)&Gu-l$tx zq#~yD1|USP5#CxNGENp9`6{>{qhf2Dc~UUlvl~`a1Mqzg-r)qD#RS|0?Plc4CXRTH zWv9eMTh@iz+S;$RwIOIwRsAXs4mrGfCGYU3k`fZmLrn}V?`;^Y37ZEsONom+8#plS zJon2iJ?Y&$1u)8%7Xk*sFJ2s#g9;lBZk7)As>K>`0eGuZ*Gc)f(}W7fTKDx82f4;B z*^VJDioi{Qz8_Q*3lr{}M`OvUqEsT;>#&cgXLS-1n zhpj{;+8I?|MP;QaLJ4>S7xVno;$j`*tpSKIikh0*2*3lv_n#gtH%?y%> zzeU5Ta2fwRG6EB*5ilbWO4Ts32#vUt7&|&T%9>s%=`d7xjE|42XuVprG{#D5O<1n+ zaZsXtQq125yJwEbDJ7mMKk1V^*|E$t%0%+MbH9w?L6NT2l4aLC^WKLTRORic8|>M4 z1h9o5{j!ktLmm^daVsETCMD@ms`5WoFhQ}zJ=mLTX=XBk#BLu)%xIw2=_D5 zW5(OaSu!gs9M=70Bx0i1#_6svHNch|^l7&c2`4A>`9Vfn;s)4=fsV&}NTGo7GZyvN zgt$^-R#RtvegCwxkn^9OKaS?+?~ukFwEYnL{JYEBrC%#SJ~yjJ>_?wpVEqnmIv3u( zb{-V85eiPhTz6w*ENJ?}JlIH%Ml4$r}_v{;Q|qHlGJ$ZP$gfFH! zKG9sox;W=)+8_Sva{Qn@v$`J5^m#LCXTMcTx@WOcZEaY{tChTcGR6z7n_fL`y=>5FAl%etw=f3TUY2BH^&MKUMww@uPZdeiS;Hg!|I_ z%BRJQKKPOpt8(H#Cq+-s5{{Uq?|7kNT_>C-Ow-|scz=3DKwLh6l~Q~i(`;w8ZGiVn+K=K5}T4hEhjoY zsQTQ*yD!Ke=i^g9y1x-OA+D;a#sB_ol#`d2lAV1OAvI}TC#M9($XNUfkoJJEPUf`f148U!Z8aUPzZuyKXqAl61o<~3c; zx1Zk|*EDh!6vT0=D;3uuYNKUkrR3Lf7&A4vU7jBsdW%=a>{##r3;3V%_S_kQykcr-v=qUTnw}f~vA+$sjT+n{b8?P=TER49g zZX<3;bPr8=tONd z`*)V}FTzj}7jtxQcKPRz@hfKS{yh47Z`=U#Jjx?{&Qa3rGx;NCa^w9o%WEsylXnUF za$=Tk^UHZs@z_9>ad4R6$wou_nnBC&i4JtZ((FMEI}hs9UkNy^Sj)RdPFd}e?Ugur zvWEKjBU~mIU6WtE()kCao(FqMwb1><>CF@x81cDZl*IlY`PY9`jgexc=AUiqMy{F}_sHug(QKaos*U)$is$Ft|kz`3uu!9%% zLqXkBQ;n><9-y;#O^73#8@a&XbMv|fsi7SVqk#e)C^k1&L{9zQ;5-=mQQr#o==zo< zX|%|a65YU0L%RKrh2^V&K>KNE46coktegJ%ITWuwauAk_YItLg_Q}OnHQZ*KC;{pi zh3+00hX6>mW!|Dv4Cw|r=N__CvO&SYM^Zvo$w-zg1jR5$IwK@1iWO-6bqk0J!Bi{F zNw3-7YjF3rAl`u^)SG*Qztu1nq=kl{M_VApQYo)xv`+vWTyq|IgWyauUVGpmS()M? zYw}aF*6VktW`EbJV#qnS9VR_;lq&yUnJ`Aw>u4w*m-*@a{+(krP#}>Fozd`8H$=^Z zx!t7V2Lw$#h_HJ_2N|WtfBY5y{btr39k{6QtfuoXJlWZuVTI?Oe!hP(jO<^eIQz$b zVIdJ339>n`A(b-*S)k$UI=j5d{PY-~oOUc!Y&(3CDBd#$c5yXi2S-qs>^i6Om>=&1 z`94v`-9L R@rOxr=akN-oxXAR{{TGFZ9o73 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/04_tracker_plugin_settings.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/images/04_tracker_plugin_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..d221079692f001f9a8223cb6f62f91dcecff2a57 GIT binary patch literal 27675 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/index.md new file mode 100644 index 0000000000..aaa39b9ca1 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/ecommerce-tag-configuration/index.md @@ -0,0 +1,98 @@ +--- +title: "Ecommerce Tag Configuration" +sidebar_position: 100 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +## Ecommerce API + +Use the native Snowplow Ecommerce API or [transitional GA4/UA ecommerce adapter APIs](../../../../../tracking-events/ecommerce/index.md) for existing dataLayer implementations using those formats. To get full value from the [Snowplow Ecommerce plugin](../../../../../tracking-events/ecommerce/index.md) we recommend using the native API when possible. + +![](images/01_ecommerce_api.png) + +## Tracking Parameters + + + + +![](images/02_sp_tracking_parameters.png) + +#### Snowplow Ecommerce Function + +In this section you can select the [Snowplow Ecommerce function](../../../../../tracking-events/ecommerce/index.md) to use. + +#### Snowplow Ecommerce Argument + +In this textbox you can specify the argument to the ecommerce function. This can be a Variable that evaluates to a corresponding object. + +#### Additional Tracking Parameters + +**Add Custom Context Entities** + +Use this table to attach [custom context entities](../../../../../tracking-events/index.md#custom-context) to the Snowplow event. Each row can be set to a Google Tag Manager variable that returns an array of custom contexts to add to the event hit. + +**Set Custom Timestamp** + +Set this to a UNIX timestamp in case you want to [override the default timestamp](../../../../../tracking-events/index.md#setting-the-true-timestamp) used by Snowplow. + + + + +![](images/02_ga4_tracking_parameters.png) + +#### GA4 Ecommerce Function + +In this section you can select the [Google Analytics 4 Ecommerce function](../../../../../tracking-events/ecommerce/index.md) to use. + +#### GA4 Ecommerce Arguments + +**DataLayer ecommerce** + +Here you can specify the dataLayer ecommerce variable to use, i.e. a variable that returns the `ecommerce` object itself. + +**Options object** + +Here you can specify a variable returning an object holding additional information for the ecommerce event (e.g. including `currency`, `finalCartValue`, `step`, etc). + + + + +![](images/02_ua_tracking_parameters.png) + +#### Universal Analytics Enhanced Ecommerce Function + +In this section you can select the [Universal Analytics Enhanced Ecommerce function](../../../../../tracking-events/ecommerce/index.md) to use. + +#### Universal Analytics Enhanced Ecommerce Arguments + +**DataLayer ecommerce** + +Here you can specify the dataLayer ecommerce variable to use. + +**Options object** + +Here you can specify a variable returning an object holding additional information for the ecommerce event (e.g.including currency, finalCartValue, step etc). + + + + +## Snowplow Tracker and Ecommerce Plugin Settings + +![](images/04_tracker_plugin_settings.png) + +### Tracker Settings + +The Snowplow v3 Ecommerce tag template **requires** a Snowplow v3 Settings Variable to be setup. In this section you can select the Google Tag Manager variable of type [Snowplow v3 Settings](../../../v3-settings-variable/index.md) to use. + +### Plugin Settings + +In this section you can select how the plugin will be added. The available options are: + +- **jsDelivr**: To get the plugin URL from jsDelivr CDN. Choosing this option allows you to specify the plugin version to be used. +- **unpkg**: To get the plugin URL from unpkg CDN. Choosing this option allows you to specify the plugin version to be used. +- **Self-hosted**: To get the plugin library from a specified URL. This option requires a [Permission](https://developers.google.com/tag-platform/tag-manager/templates/permissions) change to allow injecting the plugin script from the specified URL. +- **Do not add**: To not add the plugin (e.g. when using a [Custom Bundle](../../../../../plugins/configuring-tracker-plugins/index.md) with the plugin already included) diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/index.md new file mode 100644 index 0000000000..1fc727cbad --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/ecommerce-tag-template/index.md @@ -0,0 +1,32 @@ +--- +title: "Snowplow v3 Ecommerce" +sidebar_position: 2000 +--- + +This template implements the [Snowplow Ecommerce plugin](../../../../tracking-events/ecommerce/index.md) for the Snowplow JavaScript tracker v3 and is meant to be used alongside [the main Snowplow v3 tag template](../tag-template-guide/index.md). + +## Template Installation + +### Tag Manager Gallery + +_Coming soon._ + +### Manual Installation + +To manually install the tag template: + +1. Download [template.tpl](https://github.com/snowplow/snowplow-gtm-tag-template-ecommerce-v3) +2. Create a new Tag template in the Templates section of your GTM container +3. Click the More Actions menu and select Import +4. Import the `template.tpl` file downloaded in Step 1 +5. Click Save + + +## Tag Setup + +With the template installed, you can now add the Snowplow v3 Ecommerce Tag to your GTM Container. + +1. From the Tag tab, select "New", then select the Snowplow v3 Ecommerce Tag as your tag type +2. Select your desired Trigger for the ecommerce events you want to track +3. [Configure the Tag] +4. Click Save diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/index.md new file mode 100644 index 0000000000..583976deef --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/index.md @@ -0,0 +1,13 @@ +--- +title: "Snowplow v3 Tags" +sidebar_position: 1000 +--- + +Snowplow provides the following custom GTM Tag templates to use: + + +```mdx-code-block +import DocCardList from '@theme/DocCardList'; + + +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/adding_parameters_manually.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/adding_parameters_manually.png new file mode 100644 index 0000000000000000000000000000000000000000..ee919e5beb9f58c209eb7e7a2f52628c5c029262 GIT binary patch literal 85191 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 Avj6}9 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/enableAnonymousTracking_custom_variable.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/enableAnonymousTracking_custom_variable.png new file mode 100644 index 0000000000000000000000000000000000000000..146326c669bab0d1843809ab4903f6835dcf0b03 GIT binary patch literal 162642 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/host_drop_down_no_load.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/host_drop_down_no_load.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9cb5dd6826148f676ff9e671dacc6633f112cc GIT binary patch literal 10925 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 R)4VA};*;#h5@FpR{{_(M=SKhl literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/load_plugins.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/load_plugins.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffbfeb8bbbf9568859c9fb823367ef1baedb074 GIT binary patch literal 33643 zcmeFZS5#D47d1+^t)i%)wjfzllq4u3NLEB_Bq=!~IfG=$1{4$ll_VmdB0-|$P(YcG zBspi4oTW&T@2s}J@xR}Pf82+AhNBw+t4{5`*IIMVHP?A~P4UX!-3+@aC@A*I{v)kS zL9ycp1;rn(lz-woe_x?LivMkMl9E-Wq@?Wrt~7wZ(mP+)bXKu9b9OUyG^H@Nv$r)p zZ^ibv?gR#7Tt-^#tQ+MvNPiS{vqV0>fvi6>tMJK*mv`Aa)8uu98ym(nl^{>CL z9m(blwAr?&=G$qaWNi0*wCFubN~VV8$;|KHK1Z4F`|Mt~@-4@Lhc*!R`0ur7(VFq! zm$yA*>Q?=mNLTYF{`mc^f!NFTSO5DdSMzBh_W!r*-P8M;MB{SNb+RMzkj(_CGOACMAl&I=2>dw4u}@IdCum44r?4RM1k_2Ho* zoBp!WqN0_#3Rd5NJ3Cu4_Wgb-kEeL4k|Y5kAq`dXrCWH@@Ym1p^t zVM))(pq0Yy-TvQMY7>zZGQD)^^LTSox54JZc=O)9dt-crb3b-=x<3iOeVZbE$#*MT zOG|6AJyR%3exmIf<@ecHKGucFcBS4Izu)*(!MKTiHEz>ovhC2JLuwit^>LD0`NPYz z{k}iGJe(h`&(zHN)Y_Wo#P>*N*REYz^i}#A8U>!qGYbpOY|@5?->X7Tn%BL2r#!vc zes??7j(toWJw5Uo|Aj`!7+(F9PX6DA4((!7e0e_0cWX1Bs^+mW<#kQXLerXvy3(T} zUp{{x>@<(tOG)`e@&r5kI~`UwzxepUx3Zy$3ejzhGOxD%d#|rF$hRu&G=dkay4b^i zw?r-ODtr9jQia9Ebupp^PMOJ%aGf=;(=BpLC@$_Y%KEjs+K072bLNbMghYA-(REr| zSy@?MU*Fa?o#s=2zi-ETLzN`OMG`5SPuIY}cVVotCX%ncrRBV+sK38|{fl#{RNR@( z<6naqmwVm%tAv^w8X9CI+fq_e-1@yWB=k!?7GGVw7nYP^K-`SmT8Sgg5jQ7^tE;Qp zTSkhCbyyp!-MbkW8B0q`{i#_ctlQG=?WB$sbyK9A`*Ki8K2}UCq9?~(NlNPOFJkK9 zgv3Oj#a0cefIHiEX6To$e!5RpRaMoVX&}T9R904Y{rdGBvsy=I=iGPcFK-TzhHHk0 zhfjo7_4bM%KR)zvCo7Y%qseFp-S3@kX|8(CfBd*f`J+Q|-b-5DvIz<@MUKN)C)ZOW z<*r`sD)lVrv{BCw`}cY&>}1yX=JMdzpd8+wrlxG;ir}!YzbAvTy_A)k@J63MeM*bt z;^x*NxZ3LJ#jH1)@FyfC8I*YmpFdwn)qmIJZHKFTr|^|v+`>=*$=KA?R7y%pTU-0& zsvN_f2er{c<|ZZ_I@L8bgFk*aIyw2SHpg+P*zRV-h6&nq9JzNxHnZKJ*m=AuK`#DE zh|f}|xr+$xgWrKRW-LPV3zp{!AFAUwc;aq!_YKQ`B9BYRgL z%M9k*cJrS-n_k0u{^o@$j?bSzCn?5=_^jX3DtrCfusKm7C@AQvVQ5vZ;pZLf@e7NK z%p%UoL?W@%hL@Lj=9AlXHMIn>8Pa2ZadEvWj&lqO|NQfhw6tGpsEk-XeI%3q3u3b<-L1`q=d3Ac zhy>%WdxB(+`TZj&*In$A>atZUYAC=EK9p-f^wDEf(dMCL4__jYw6l!vPwlkgk8+*u zi+TC7=b`rle}6u`;+EcCJ<97^S}O&_joKThDcN}SivMP2K2@Vz=B1U{PQ~^zCdR;X z`kbl2#!N4v{-rS9NnZY?s2eXc*Y9$-8X>CSq^-bpidN3ctAwXvl>aK5w6^vOFVVWX zx~!}$e#Go84-a1bl3#qjD}m)kjgyPxst=Nj%}PTKl*&6&>%l%E~7@-){&o1U~fW-DdR#d2gWhZU0P%8f4p`vseMcI@1F zMOu1jXb3lmB4B(~NJwZh_c|pOJV++K-01pIMbn0YDih_SHCe_LT_w57WtSWs9s9iI zYjwmu`@NSHqWBXI5^OK|_>_4KjEo2xeW9F8%GFN4ckj{_x8z2Pu*b^EZJgOGe3Cal zP^`Sl&2`?|Bic84RX#3NoS+qDo@1IC%k{rl-0W3_RnqG zOy%9@M-(QfQ5|qfN}b1*Wn~{WbZh5*ZmbmFDE4dM9u+Om7^(06 zxpU`87q4A=!j#oFtlc~Pgzb_{2unl-Z z3)l5%Cp(UZdkbNUTiV-ecBU`cF8uuYggPy!68~Z^qaX*dW5;B_qpNFK{G-i#fq{W8 zKgP$##=d_)W6|)cvhttF@-o7cMhjK_V$r4k2OS+9zkdBXcv7)4id*jA3kPm+W@hu} zXKE!ZU9^$P@4#}7%b4;`JRU9;P!^5d)z#G<;_s<8>S=rN;>FN5_DmZqtFBzj&~F@T z%d?W6OH)st&`?uTr>hf?3Zl<_OplkP&+RS3VJlrH)#zoXx+?cw_I%cvF+4DE+G*t5 zJC!6eb8~}Ik8?so1-ZGZZ9~!aWjMCL1(Vy>=$^Qb7!$hfv~XUUZ+C7Z;Y-0$P#@0!QuPlVFE$TNy;V+a<*GQz z&R#y!8O-~nS1oPrmb!+9j-+Yn-5{f%10P8j5nD1c4;EF-aW@Nk?bmRN}@S> z_Ut^0e(7x48V{|UzJ6>|-c8iV>f)wjSAy49Au*^(N>1t|nT)8WE zwT;v77FI|pPU4igDyn-u@Y%-31~(U1%k+-JhYq=rbIuoP$@QOop0nF`?quBa;KvUm z(;!DipsoHwhj^MdDJc`5sU`R9-P=0ueEIU_-Y&L<@BXZ1j>C^SZR+al0cn=61ThSc zjHq9~&epz3E7b!yvbnk0tMMP1x%Y=g;%#3PAXgliTS7B)6h?FPQR9UYo_dfwRANpl1zD*J9Tvpgdt@B$43@5Qmk_()#8ly~nM$DJ=;yolOF#_N3^lj-Wdre7b^zkdB1OIlf9 zZ*OHqnwz5+_gMHAb++GgR$S|qXha+S?yRZV5p~uacm!oB`o#-fJ-wZK4$~YuwD@5g z_4)JXomaSjC(Ty`OS^M#>Be5-2H4vk2L&;Ux~3H`{@%$8vlRzK#!4PPe!RNs5gim2 z6;(YrFfb6CzW={iJ8pEoV`Pp}|+Lju`z1#B+DvD{GYP zF0faUmEA98A@Jh;`_rtfan;q;pFT+y9e64e?>?RoIYZp?$xHoR^lnRlXvCPDKAdmU z`G&{ZuC}q!;WtE_T+#l0bFcW0CVpYAs;iUm-CWPJZnv_wW@chSWyR}ka;hYD@ICmC z-}LN0^FM+dp5^!7Hz~sRtNcf$uF?OWpa1{g#Mb`bUyw02fJvG7>(kl`GQi0@?p>VL zrm#Ai_}9M&P5kw%R|CjN-|Fhr2}et>YioC1VfA+2Sar$c{xewy)LAv+$&>d07(ajh zjN4pDvTEN>(csyr-&6GRNh_JB3L0>JK6U6~zt=cImJQNiaYFRgb?qvJoyI$c7 z5|^*{t8}?9H91)mM=tq#yvJMD-qiZM*R+A`oSfrRojIt7A~AMV&)7dd*sDTNc6*3a zwK&->Dk{2j=gw5UNPR=pV<1T~N-p7j6c9iom8MfL)2d;xxV)@EaJ{{ICjWVMLc(x6 zaWk)0CS84UW<~HmCbHYl|Pt#5*`Tl9rcQMVu|<4xTlseDeJHb3ivCO-P$30&x@(9$vc8 zBzJGe-ifFe&gr0}_Pxa}Ey>r(dO(-U9}NeGI=@v_jrVVD^b?k(d-KVpQo?%`wK-0} zQn{UW<~|DKfddCf^Yf^idD^xYE_^^XPLhvu?7mfyI@OiOedf${%I`mZ{1_N`)oOLw zEx%D*W|8_qr%hkBX<(JfYG=JqTc!aqHuJ(P@#oLwWdm%(@^Epdhz9#B-MHjZtm0-e-;9pO?XmLlGiNIOn&~- zD)ubXKuKO+7lg0j^(D2m!xYKG`WAfr{QO8`Z9P3aem9+*oNnIa;3Hp3ii-NV7L7>n zgo*oIKR1^9so37Uc@x2-^lZcK7ki(1MmIM% z(>1Iqa3Cmkihe7_Lh{g%37a(Dz{+aEZ`VPODHnVVnPr|tO52tQPImnGaZvLWAc8{M z?-C!4vX~^iexV{rQ3lBXeDOLW#wlyKggRP;*ug0 z|Fqk)UcA>9JlVdlM3{qPjE?y0{-SHE9+Re5Ezh2e2X0YMSE0b~kTN zhsB9jkaHcL2*dyax~0Bei4rt;5x^%#)Xi>fX&NX1$7?1f(mEVGnU9Z7>f4KRa#bAn zX%rO|`AU9D0iZZLI~SHjA+7Xul)R|x)O$@HpbhP8lZW5%(V@o3MevZTJP_c=dpije!*=C1f;Bsr zmLop+yspQ|S|icZfP;{J@4^fUHE2#l@+?!T9z`r5KUc-d5b!o4g%z>7F79 zdrO@rd`^S;L%9;L>pAb@|1H(=d*gKoUC@kn-248cJP`SK%+k%)zFHmoHQilMZ^9oQ z9^RW0;-;n58Mn1=&h`aq`{ZQQ5oHw>;_3wVTI@W26N*le>-38%lihpvyhLuXuoyGg zBt;^9k^h%1FDqMxV{_c^79eT3LD)g#OlYQAS#up(#`o{vH_O4fw`fb#diwOK-e#YD zd3U!bPAgEFxO>!giqamvW_=TLa}6~$VNp>CkNumSU|NYuNm~et#l^+8ZBdL23`k_q z3N*E}#s>x(h`w994xV_-D5OaLt8McU_!x1qO{Y4u1e-2JIeBlsyMMFo#_9E;laf!J zzRH~l9S2(-t&hu0NpW;>f#5TSLIS$b4M>GJPGGEzH1Khs`%&)C>hmkBf+Z)T1LWqK zzP_D!ot(N0GIvo?(Ytr=^78Vy)zhw-iOMP|A$9R^aUr*pe*Qd+S3DLX_C~r`R#q10 zjmsZMxC6T^!D=l8qDmON-y}$Y##I*o2`KbnV1l< z>3EM5-A$LHWj;vl`|FZ|LXa018~OT(60uC&@=m>fNXWkLaYzUe1VTU4&B0+86;;mG zo6Ee5gF{0Lb)vJ!PmnK^9msip_wUz2O@&Y^cnF+D1nCFo2%=w3juUqOG5uNaetS=` zX?&)<++06@|8BQsCr8H@5C(9&%}q_kvkInWW_BI#FG^&jq*M1CXb~&yl-N{g(_6d<4nuOVw0!49m8y{$L3g%b z^+s+|@9fyl&#~*v^k0%GOFx5^5h3(|anaF5e)#YK=m7ZuMYtA8$jmv1=97hhU2ic| zu-1Pswaj*NQ&T;H>-1u~!Sdpw+9T)_Q@wdKT8$#YK%_3>vqRx6(o@`4@&W&o;^EYZa%7hYzmSE3a&IIBqw?rnw!AM5GE266U%;nqFNdT z2?l&YjRESm>nqW^cJ00Q+7i+d(6BD$_o1QV#J6F)>@6&kAr#mqy`E~=`L4KlmAJJ= zM12z%7l(k1pbdTY>``D~x<-j*{dSq|2YVS48!Z4q85tSrmxDa3OAo1-nVIco8?th6 zD=R?H$+kN`s&)j2_LNpOnn3Xh3GC>a0rO1vSCt3SflP>duR343as|Q>P74%SMEg=l zj4XhrIbc&tdH6@V{?>1|KGL&RR6GuHpvB0G2S#mN*kcU5gaVpTVDyK6DTRsf|Dq7GM1-=*R$)iKuel(XJ?4jp33CQ-VYgUr9 z?VZn6gRFtm2${frb7gecE;S_uI9mC4157Pdy>mfMZNrG-f@fv9lL=i8;KbU>ikiAQ z7Au(HTy^45FtaFP8G0h3iYqeXak2)3ZaE|5`BHIU2Ax6_&Kcx zNH8re4cM_-J3JyHL#IG7v;8EbIA(Mc8GRZPYxoqE$e9;W}Ksjt*i?kaO+Q_TOo09QYK`V@hW&p4KyovkFXG6X;i z@sphUX^xVs*9jTk*Mrm3-rWTajjlv-*2n5qI(1M$)|4)Lc&t7>c7=(Fi57a7>y&1Y zOmk09362+V7Eod7+*d}FxVB-`S%X{O@8fr?SrJlLWCm7NN#yl_07_K-l?-ThpAn)E z^mO=MH>U*qJhAI3+<*A+uP*D%s;wEM5P)gGZ*y~VZtu(8PInpwPo6v}DM`d}1Utcr z?8z6q*q12Su*RrAwEf8`Bu|6goHtdL7A;vlhZqc`T;T{3sfYRayN*T3T8Rr&f?1Vz(ls zQorYD+#*M&*Wc3XbLZma&3O0D5-o7a)y5DL#kY+XEFNR8{aHLJ!Nx?KD>pTU{{EV+ z4r$J@^WfxqZbk-P-T|WOO|(b(#jN{E+(lwCP(DHIFP%%v%#3W*U+YerxuwDk{QYJ< z-BgCtkCK{tYc9mMr-)fQFeoT*eA^hZBQx^`TC*H`op0QD#dL^GbjVfeWYSLgOqGTOr5|8*B?ZQ3JZ%vbb}tb;~txYL|>v8-kscC0#@Vp4ck(PX=tQ=mXkA& z#1OVMQ(0NLHcK?1d>R**88-fmYEKbMv6%CR(!q>rg_Yq*11^J>=kg~?_4(?z1HKh( zWM{>gL<^XGI~?tvi0JPo9*m|xV^Y8jIra2mo3e8g2ddG;;qfTd@7qFc%hWAu@?m17 z=%JdKS(2(F^lw^<56MqAHZ}^nRU$or$pOWnObHJDD$Zx)K6NTRHMQA7p!&GVGc;ld z1j5G~V`KZ$QDwSpo(i!EG7c+*b=n9r1jRfbkrWs2HOlh)_v)B(UH>%)yo-F4T}C`0 z?sJCX)j`y5g%c__Z@%BN&yNOB1}|AtU7Z5`n8Z96;H8H7d?Ag7R=>ExX7e3cSPjaB5*AplUHhuqGxNyPM zHQ(iJH#^;75|#Ga+rx!~-n=sj{0X@9 zQ_U{r7Ug2wfjL)PXy$~{s30%DQD?Ct*Gwq zUaMPE%n$9f0n=8LlOs3`%E0asL){!I*VM^+X)eTWf3NqRKb-yFzCF(7=c0e`@L{-D zK4AHf;cK6txzx#9Z#*5PBpZQVcj^y@SVQb$_raYtDxn*) z{1B>zg^S+5f1i;tqqut8ZK0(--99CzINsY{$J=`YX)h-`8~C6TorKX^X^p(K0`Ui= z5Yzs`n%yv!)R*nd5_=CYBom)C{Z7M_*XHzLU=Zz?$ArClq>Ilq9t-*gixNLPsd(E= zFVJwMH}88(idrfXd+{PWWVBxuMe&*MC3w&l?L|{OE-tSAhcLyAshgW8n?dfzhV+oo zQo6d@(xHh@ed6g>c6PK<&I>H@%?u0-ZRt9|cW;}=j~+c*Qd+8~tBW^2aPXjLsgirH z&R%Ad_R1NF2NcCUz?gt2=NN)&cemgea`W;k%F1R1a}K+wiC4w*bZ+af=1BjLuBd>z z9wT~=+_-`TgCXdIfPlc!qn~PP72+F@v$MMx*isp?hS1HwWbgU(XZzL%xSXx?Qi4e-%8X37W;xA%j`yOguNornMU4;l#rDilm z6&4u@My#LODgp8LO?RKFezkwaUzOihPvmwDvc5EX9roSmU^xvo}ClZ!~pxq=6O*jA}nKp*pzDJ-af*mE?LZXQD=JsJ-)&h1uMv-1KHC5HHhzPWhK@(lSzxh+V&8#Y|w#*^& zP;y2_en`IQb}w&l`!%28qi3<=F=L%w>08Whx9+eJKaXWu-n^}U_jywU&fv@Z&Jmxc z%_Zghc+kk473JiecGAPP<{)UPCsm64lGF6N!EOH&lw!p?nHT@MP0)<9-~&z(6BC1H ziMTc+x@JE7;`#UQ->(YYK?8ah%HO0Ocz8*PZc=k++D6mxpMU-db_&y^E{{%QL&J@J zW;Gv6bEm^Pr`);Wi1}paER|Xl&UNr@kL%I*cnM2^7kBUe8NC5>KvF`&F0zi>r6o>L z`Vq)*&yIVcq0O*_)EIO=r8PV? z)l<*@=tK=8O?m(LvMV}is7es+$LV*=+N~3uxp?)~ScmDkhD+3VV`u`^-SpNcLS@Z9 zk~|jp%ny+6m3$Ebc@5*}eddd)_G7g~GBb?Fo0%(5VHa zfu-60%$F039%P>mpMFVls}+tyY8b1ej~B4b#~U4x`VTA(kB-`R=POX2K^>f7aR<^e zGBWa`!SRH5Ap1^gS{i^=yf@vRq7Dl*?A6sHdQi1C!G3amv)zRaHqm-MY5x-LD@b=` zo2%9&5r zgFLj(y#+=AD8R8Hc~Y`T-?%Xlu>Tlj7#Nh&7fgf>?;*>uD|+ebqPATEY+u0a!{u`l z5=3$9~1nmj0SWFr9cLf5>b;1H((C#Nj0 zon4kD)bn+az{-t+vzB>+D4hV?lx$__{-B~J3>u=53Yr1F1|pcK7}JGncnLtv^wT1A zHNA0(XOWQwa5Sua;+Gb6nF!Opb%pXNj<8jgI+>{}`V!n`BWhpjXZGh=M>0vUU3rsmB_O;>zF)e)gF{#)c_ruJ z_JV~l;&b2d;yo!AzwZ35H=7J|rt#z{6vHxwD-e4Qwqkx*K(=u7N`&+wrYV80MId}Y6+lA58^ zwzjoZbH9d0GF%f`;AHr6C(ErP5)x%;X;VP!A(ESgiz-lhVG6mkk@?qOf0cki=*^v= zcx69%aQd=|$q+19d7xVG@VpdrZ-QL&?w#yNcyMqqR1Ie+3d)*E&2Wf9zH`yY&|Ue= zx=C~RFg&C@_Q@bd^ALjF+-&dD!1IJ3!@yXLE&#et(5c{RA^Uu+qTATX=1PPY&>Fai z?vnDm)Ko~4kY_DMnKw(^=i4&$bd;4zFbWciiXegIL%4kKpqlUkIJ47Gg#pqaI+}Q8 zZ1f5F=SPU6)~yGX#Lx*r6JrhS!gEKCe1KF&=Ee!^aEqYWhsWqrEbM|rg!|erCI9^N z>()O-Vt7SFR)?xWapI`Oe%|gWgyMJ3y3NGYbYon}7cI%t3_-%e!XkRyZuCy%r+P(vWhfNwIwAxZDE;VQ8VfLh zJZ`M7Pszbud5)bOUfWePf?yOpn-IJi3tfs#l_WVU1@ogmL()y zUYUdjcVY8TpZBt!o7*xBY&{be3z~#kT!Vuua9S!W8|4Ukpk`WHjw7>?g*s?4a8p;i ze8Z39JZFSE%XH@F=7bTk@C{+tA#V&hJV&#nHY^cR7rN9E?xZ2a4lEZxe+2UNrP%e( zU7TpxE|UuQ2jdR(4qLfD-RM13^1<)-BNkZ2ZoOAe1tX%Or2N$w;*$%-bM4tB|9#%W z;TkfJ4?_i0)zRt3N+iX4T=ijY=@nu_jAoXQsv$f3@1g&JUx0zM)e3N_vEVX^yh7y@oA$l{3CkvyWkz>Hc$zZe7XfrPGh`cguq{tGepYykceIr_6^-%>Nn7!Y7}?F`@w_zSt~*h$ZI z4f~@6;tFbStbpY+nRv8M_;`6)kjkwy zOU;PdS?Z~JP{W|=qQ#M&lLHdV58EeXF-|H{?y2+VZ=v50(+*+UU6yh`J^jk+WTxcL z58GfR1yh353pk5Cc;vG6WglvmJ2ngT%S3Dxt$iE;-_23q*wcnmnwpxU53DTn$oUkG z_M`m#P37e{xZ0_$5F+cMg=T|<`rfl{bPe05!~@<9_iHaPIJmmT;!HgY&??Y^;WAY{ z{n>14etuhPD?D89B)3-TySKEF*x-zHzjdoHK0dzDVhG`42P$Y&c3bUzx>t3Q_iR`4`SyWr1+ zWghr=51mciyE1{7;&xx)(whymA9d_YO$8W`xjJL3BLAScCgqj6?7e0LT zsS}}={bk-OD=XURu1#-cC)BAa8sr-EodaIROu(mkeZ&-MWCz*PXM|J-h>_B^kK*=L zKM)Db=dfcWrx`iV^c01jRNBo3RGenj>Jg8c?0M@J8A4=m1gN76z%1d_QBh$IB8Fb- zwLk8a%~oPVf>E6Pel9J!y10}A9afn%S>=)CNpu}sGngq}6}&37Ad*NV%vWHzV$!)7 z<&}QV4v0K{WBtS}B{<<{^sSgEZZFkTR(8Oz-Du(L;u0?RrE<38O?*5Ydf#4HE+L@F z|L{M5D%1ex)m~4-1~(_CdGk1Lbyd}c(75%tF-|Q=Y5x72O9fW#uc;Zq_P{uh?LhNf zT=G&=C!z7i`mBxvh`-Z2M{$8q%Cpf2NepM$8CBx&9_SB_AL9Vzc(rqrr!T|$GiHdk z4k`_u)Y#%`b@kPv=|pA)i3iZLR(%yz!|d@ zy{h7^>?cknzJ0rnexKP1yPljeh2QovkAGltkBehHSk%!xxd_vq&vnm%zKj1kt|=~< z^1S{%_JJ?Ig#9+VQK-uNpP&D~`DUUD;m_WLtSngr9dio{euf~jOX;Q@z=&N&oqj9} zFK=Cn>g}aJDOUgLqJkiw+^0XFNFE96avAe59X@n!RV2^)4~j7gd%lnl6k9Al*YRs( zP8M+YPrttEc}LWl?rT_iyWHNrK~j_ktb9t;ZYNJ(ffL*{f#TKYjFAy4wg)nMV4&)S zj42?*XgxWRnzATGDWnm3XWLzmsa8uqiXLVQzGBAd?Y9Zrrnh?#3APPxTJHB>ziw>2 z-Y&`Up|ewVdV+$Y>rJBtNG|?}iTButMW9VyQ_bx$BC15bqf5W<$jI{!uY<;^*UcRr z$199(?)`(pJ1{3lW$P6Mn{-fFMpo84ftYJ5)Ez$nJ{xc?b>a^CK; zC*Fwxzx+zvBdzp;Mp3HK)%ZpZznhMZs)VByx9gsqyy?zAtBzM{NNUu_r-`rVqH+!= za3zLmx=~ZCCbLM~Y1XH>z)F543u?sy?>fE1|MLot>HJ@tt8=!}`0wO>IE7yK-?X&o zogSj2gVxm2)`qbR9UfX}{pbz&`fec^V1mN`!2>G+hCJ?W_x~Nx3-+q;x1wOQw5S5x zZP~!ote=S@2ubgt)Gc>+7(NA0ocLN%kyK&bwf%n|?si}Kjnk02IfR9w!4}MGphM^7 zwGI)EY`{h%6kcT)>%9b~|2Zcc0!>Uzrh1BU%E~s?w+{{2K_=dUekD}tEyxv8+&?mfluLULYLv` zQ$uF!w)S>=80ql`LdY!lLG=Uw+m;FRt#fwZX1vr=*~8NQ&I(D59%y)jC)}r*Et#(i@m(Lx$Y5?DTSdUfyY1sn8-5}Wmcb3p zNX>Nqh5_t;RU@JW_GK$yP53(_*8xz6#>Q?{EM7Lq2D>7oM@k16@6f5rOKo1<$0GKt znmZF*7OVmNtQ5VN*fzRu>z-ZzMmlQaPV`irMiqyzpgVPlTOG%+w@RY4q(nVUa}F!Q z?ak#j(?btq`^bpv6_;tKl{9c=p+|#4p(roEu&|KpGXY0iIm89urJT48QY29|)nhs` zJbV#=8xsp)kUwC>QXz;GxNWYl#KDro!op(Uvod`9k8Ld(ib}r#<$M=Y4T7LZU|p=* zhl6wH44SFV2?(^bv~<{Om~lOYHzKthEYBt%2q3y&ZRzID*1tr?=Rxx}W_^9TjUZ{v zFD_2sS?v*pbY+11UB6JXrh?o z&_4(bTvAe>-dqmET8yUa5%SUS!T=&h{HzE=OViz#`&Xp%zN>GYqqrGTSyzX3i=?8W z3P0shDuF;gcFY(qSbI2`N`;+Ywd+s)0dSWF0>{pNdBp)>CWd9w*8aooKhRR?EU=GT z2iJ6mmI=DAm$#L1S-!KJd^SLq$PONZ*!;P$N08K}G;HFSykXga{tZ;X1X9GHHu)au zhTL_ls=YGJD3w*N?4ReM@HJ#%%^R2 z7`M(z1tcb(cp&p#M#VWtX>4Mc)%$NSfB z-wsU|^uri+Yb46NCBst5deLY$r(VL^&Mu#q-0H^A<<|II7e2i{QY?8+MFONCLglN= zYwY~-lP7C@^vrTr@T1bDjF-Z~@_~j`9_+WSwsr&OR1%wjR`j9NE;+QfI&9`(M@~3FLGg;t%F?pv=J&g#L3pdv zT3zQn+JRxQO&CE4Uq^y+LFAw{WNnZjN2Ag=xw*Maq+$bvvy7&;aCLRn)_#F;LjW+< z6owfteE1BB7XQ1mIz_F%K{P+eX$AG7HMwQWVeZG}NlRTWE-vj;m{>eFS!JXhvrmQ+ zY9#u0=>;4H3!N}My4}2a&1cW9UEkH23fF94G=eLRMrwV=jhIu%!47fUcWc=fUf`&Y zH^|Y8yHqhWi$CJo?1r82$Y?;m&eWBtjISqg2$`srVn2%FPxCz<_Rz+h3a~`$W=q>*X z|MLR;{E!}t0n*Lmn^}*N;Z1^T43UH(T{P|CvDvn5oB6lrbI5<1nXH*loFoB3$=)_$ zVW^Ih=%s`07sPUAVweu|rVvSB?CL{aFe8S-pbGE`Qz}|@U1IE_Wv4XXe*pF$c?Y6_ z0~5d{=t4x|7BIen*Ic>!RwRh4B(xWJYS0`9B>wW{OC`ICEk|Gq>^)|%0+OzQ z4o*0WL|^KCfZu|NU^g4M$7#&H1hep#quoWs(SZR8deVJAzi%+#4p)cUme|2`1qsrW z+6qh$6783-U-QkG3Tk&3A$>F_DHUk)Y|UJ4q0 zR1*b9{TS4M_nkVrx;^kXKqog<5YaeOwELsv*1RMibX1sK#F5zG%fak6#4F^1EhLGm z;+q(+oSOaxo%Jy+NSGnYrh7{uc!JzkhjWAN`q7k^mqVu##h@-G<Mk05GwbIgL!N`*mhF(tq(hul8KY7$YN zhTWCtMxhc6hDf?PIFQ2}7Ru2VZ`D!YV8OSBy$K%y27M}cYvG>6ob{E*hhK-CIlKpi z%ihk;2ZKsBB%Y$vir21P!;JW%#-B*b(CN=a$!C@>bxpLUc5BgFljO5;kjbnMbibp_ z+Y`O&Dia2=TR+hOSI^LW*PQ3$qN=I+i)>AY6jV~u)7(5yp5ephVvfwzfdAx4b1WC& zQL)3|gK{H!cy{o)fdvem7DO~canS5Lvxjkm2?+_{i|C%{XPd~5Dh{@Fb?Q@*QHBni zG{oFmEsgyL4>m(2L$fmWyu+uF`mR`|%SqIVT3Ver$B?r1H8m}=G*>Z(X<8kIW6R0I z^R4U|^k?$T=UHpOtkr12gd0fH%E8TBmewh+F}@Sb*fw0QpZS{)bOqX(mcG>o+>LZg z2+P&B#aBi~Z%A*xgn4&hxBydU8rQBJ@x{>RRbWp=#mxfWwE`q?N;V9=4WDmACCcec zYqT&a9-W%%`Kr>!*VxoVg3fA(A@S-6DDiy6bw_9luy#Ru$>uFVa7wO!r>?fdG-H+Q zBz#s&=zwq(u;Q5rNGwtTIEr};D$wq0O!(1y|2*=w3Q~S&&XwG@x%85fb=W(~0FASu zWtgC00rcRBDho7ZI{695)EA9rg%hEUhv6dIM8)fJE4wx{GE%nO=UM%lR;q((LeXOM z`?Egx(HQa&tt9!$1K9q4pS9`qy1!vf@kPrBR+^y@veg&X3tT}#-lH*YA}tR+AjH50 z0_PgcR_{YNA(r!y{l@uP5{qcJ$*uVp7i|3$Ja?{iWhA=IxGC__BeEupl1QFSN8tV~ z1r}ISpa1a&jTA=LDwSMPms@S?*&1FGJ!NFRLTbj_4Tqo_X5R!y!O6O@6}bwvo$U0| zk|hsY%)@g8Ez(sm@Nw&0Roxf>`b`S5DXOF?lMQgrnoT2G{qz-veC-aD}l*ldW+5HESdOD6o%H?jqqYqNBm( zaE*S8ng<7I6^XX1x72OiTw2|-o~;{vld&Wj9A`-TgjwqgyW5#aM>&PsQ%*`MxuoK- zDE3pl1&-q$-N$Nj(SnT>7+OxE1@;`vYH^_+w`YnK1K|-bNqxnADU~aLNM#e4Rs`aW}%?C zeQdZ3aZDU9QGm1X)t9h*B@d0FQ}njOIY@%AUIW$nzzBgyZA3|U7lV+~7y+}AKFy+j zJ*kS+m3oWVA+;m0GW`fsvBMAuE!#7Cktzl4`ReTPtOMs zaI4mdZhK-c9D5_R(fBda4mwOIDq%H`F$Ld}Y0!`MN>;AIvq%xLVYhc0=L~AMeNSOl zZ(eezjSqk>A`hk*Xt(5Np8zDFwJT`b)nb%I?#5()k`jTi3|(9uZr<^6VI)Y%hUpk# zLqIGpEbthrP66v(?Q2aKUY|K2<%O8%k55xcszU)o+?OCHz`X-z-mS0Bsh+NVh=m1R zPUKpmS?vqlxr~fVHTP&Zw?>!#cTrjOM08g8(5cEVfJ?E)q9e=M6y+J5`IyY(=NMtp zTOFue>E-6L%hR65`9@mAC(T)?=$5z$spxe5|0NQ~=<5 zS9*FDEWnU{b<*2F!O$r%LKVP9MxA$f^YI20_XVVe@Z{3VfwW*!QUT;Cbcs*cqhacY z4<992&tL)`x)>a!Rx~P~CFgnY;2|Nt8jc@Lk8$}^4p_+yV4GYhM zcOth`2LTIUJ~wWi3|#W5c@4CYTI?Ope?!?sM5DoU0MZ5O5P0<)KzOMDxYnjSvOYVk zVa#}SZ4F1=zT^FOJeb52TnRHnkn~|Uv?pj`&>CYK7#smyDM1J4w`msx>ZMo1x$w5p zrw#8Kv)`RRwSt`);>1KGxm+Oq2R(W;0UShQ1eEA{%3(x+H#~)?F3~8`CfUUR_=@M8 z*o0OnGapLm6^5@6eFie1QBUt0jq@!7g98fv`ST_e21xn{WxZhKNSGMVto6YzK{7-8 z_&m}-9=?KcsGlSfIv~JVFQ+}Fi!DzMultKbkP*$lH)cOMAl9uM{X=FZHQ4HE5|poW z-6G|xDHgAv7lDg`(4d;k0#bqR4wHDG{cJ&l2-AK~4$S21#^{(pKiR*3e|6y?ro~cQ zCq_o{F~XshbPbgVJQ0&1buZ3MW)e5Ma?C@RY8hY_hRoN~%nTHTyG+I~LkNrb)C^a~ zPg^`uhxEw|s?=55gG@|47`29F8^FpDdFHD0BI+evoG_CcmG3rfKZme%o9)Ar%PT0H z%2wNP@3og(-aMhkLI6U1l2ichy5h?hjs$t~Tt~~hW{}&|F!`$(Ib!u*cuHf0d8w=7 zsyA-jfVhUIK%JVjoBC?pr;5jbpf-DlR{hP$C<=?{@Dh2BFI_!G@g(0BTTqBJ-J)!( z)|5K2vQUBst&*ZDfprQ70Hq){p?`PH7LVPd*9`Mwb|)lkZ}BOKmcDjq0z2+9ua{Fx*o_$UDNZ(RMJT4fBZ-fGnA;?%->QN z>Y72f@|h460K8){mJO=_H(*S!^dGc=rr2CO$tddO%_Kwt`cX)FqbMv$OJu%S)CsM{ zy!HjV-&k9EH)idZ3scYLGHb#VGbHI1U1?By5uT#!HUxr&`FG5#?W1j{kro9UcY3z!smW+PS;+AKIL?oMJ|>EG$J{n_#N5F=(Qak; zwMBA-@Z+&OV=EYqX$&SO^7sVOHP^Ab-7t?tMHL}~lVLX=!c#`e_62J0eHuIvL>ujv zG~0#w`Oxho__QDe_7Z)!$h71^#5%&C)SYP_>pp_|5iYc2$BulvUJuA5;5YhtR;`#Q z(r#P4}kqHXNJKJH~f4v4x3}ZHjjq zuEn9z^=x+(YTKQnT@r=Up?zw}iO$vNo0@BAa1c+?Np<*0`Ub)rI`uUbz0T{rPc3y4 zIH*rRY$s%?0s`)Z8b(DmkJj7BxCyQBt)DjtY{hWyUj65vhRMa?bI-FGl5sd)7md_X zRG)q>1>N%e{%Jd#G{kU(G>0GM-o1IEtqO~ z7ux$=g6#|XqU5I!wOWyf(g=hhXG<)fTFRZ5Lz9!-pZ_Fqo)`|8#Z!{b>(j!?-dpup z`FyD-#+carF!~tPyA_6^8F*#x)8NQr(7}l$TOM?88fl`W{DCZpetznk-H@!-#Eu>N zoV8>Q)4S`|S~dGHb}`K)Oc|kIvPX4jPQ8a9L&-Mj!8BO&h~vnSSIE!o@^utfka$Tu z37r%$24cpQmXxUK>J)`Lbu4a*7?jM!m3uujZ5HnwHwHCK$eZa5i!&`P%s+r$?UK$j2SCJ*Z3B z8CsOr!3pb!pm?hCUo|zRcYp}fb#AcEYhPNx7&>@$uZSE`c;b?zg#ZJg{)tq;U7Z`t z*WjXEN$ht$-mG{3c@t-FPA+^Fl{J?uo?bK^(L9W4m7yM`iV#+f;L}l&AjhQ$j{HHx zdw1_9%9Cff|28+-BJOVb*VX|I%L3k zb_x}w*uhJlr_~VwIP>H)8z#bm1&$ z$y7hl;O}!kbpFn(xH|A{rnbI*Ydk4V`g*IH6lDG)G(el-RmOs*)0dx~ z_2HU4+)Pg=_i zMy4b6j6YlLA@r43_Ecc83ea zr10m1C#6p699>pI+GXOF!NRl9)03Zm7nL18A)r69S*%)pQ}rLk8K&XXFXSOqULmpq z13VM9`v=TMRV&#bpr7KM67}-*fuBDB7*Tiq6$F#^Iy-DcNRJrgS{b0rf8pJX{W=v@+SER zEZvtkubI#ce*bPL`bgnn2Y}U>NvK_l4WVnL*JZqkolP3Kn(5xXqgBO?z!71mD{SdU znx`7${V@rFqRT(y3CNgzH_>l#w_QxOCjht!#Th)31*Dd)pmd&3p)DP5HxXYi+RpdS z(6e9r^^5#?H2No+e-3{lRI22ZG|ssPdbVS-r6s}jzHniZMP3&;i~tW054r|ONa%!- zN2fu(kxar**U$%7ynVU*J?ijfyG$k*B$x2XhtNF*tlJv zTfseudfp4d0|z1s*`ubk%Yz;4!pbAOJQ=mHJdAJ4tNMv4>5C#d*iZ?S&%eW1F8T$ ziB9H4W7RfmrO3jH$j#%5JJlbw_;jCdm=I~V9N-+S3(QH_!66KZ-P};iehj4pz!FRB zDsjtUd4`3ldQq(V8Kw}djyO*dNOw(>v+Jd1`9j&sF(Eqv(=2ji5UPTn#3cDU?{RNY z!kE7LV=dq$cy8Q7Y2@bz@fwnUEJmiyi^iS@1~T*b7$s94kSW>e2Ov`&!ScR5X$&U~ z$Z^xOQkqjV_hY;cWdUjeJSmrrS~P@w?cOix|s4ucES%nK_i|l3!3ow-1YrJwbRmZXEvnSp#J|Dp2cO zgPisyG&#MLJysYkjb8aw2my{O|E{F{-o zHc)&%l)UqrWS#4${_%(QE@iJU?*Ro9HWx*aU5=!A_qWYEB=`jdhq2qpQjBi;7yErD zI#1h7qlZI-uia&-+8Tq&Oc8WGcr;|etWL!;{g}eLqPMs99HwXLitp0 zn~O?WpY0XkMj?m;(5n$z&oDnR-mBS%~9@95y zV4Cm|ew^m_kq~i4*AU6EC@7Voa)-<#C$<7tUO|5hQ6~ZUTz z@W2ser=s^-4A>!i`siztvIrxphG{xI;`Z@7EI>aJb_8k*<|%Ctvt1}S?pG)<;X>|a zD7|RXFD8K6(Bre;et3jDxPO0l+kU^`;Cy55r{}~1M$r}<51j@087^!H)f}GH&K20m z>21o<_)R(NROA^IeflSo`V=0qs-hw}TUEWG1tHn3{BxMFm z91d<@1_!GkCx=7hN{AIwPz~Y{2soQukg+icoF;3et$3rW)O*3fYM6ruhzN5AmKI1(#&z>7{WF$XB+F+M5G(v3vTLl}}FOt2UdvrT* z#sb!Yfe{290ye%gfS5OdvjWcv{k>z1brlEl8D^kAqIm^_HKucjP4=C79kdV_uGJuY zfK(aN#-LKcaD+d4H2C@RvjaC0TZYh#mjQGd9JDS}^_@PHU>>3M9MibxGTWk+6TwIv zZQTqAK>ps1Jj0-LL=N<#IN*Jg^&eF$iMn$Y>A7I3M-JM(zti*2?{KhS3y|A(xbaJR zu&^}%SOVS#Q(SHHJJ=)c9Xo7~M5D-^#g-07M8CVdkdpKmomeXfZR{BT7zsDfC}hDv zqJc4_xM&@90P}{FXOGVUSZU|5>xiA+*|TpE>I9QaS!G{dX@f#uFTE9?@v$Lgqt$y8 z28Ni^-WLq=YKZSEp?2-d)Ddc@E{=8PzLVY6VFGjZ;lw8k> z>GT35GsOn@il{JvFdF8e;)V#@LW;w-Mw1zE=NOnx#LJx0#9aFd5TnLjy_8~vM64-$ z2g&Gqn5@F+B@oR9jT^#ZF}9@%@0CRqjqM~d97q^>maz)K zSk{eaKvo0kLe1r~Ji+$WxlXh#hat6|itQt)NECKCrF_6?p&gO+?bLEHcwH?2kS3MK zH&cM4MIj8JJb2}lViws304~gaZUia6cH2;_YtMr%k05S8t&_HqTlypEQyv%F&fk9z z!F+$wwJV*U73M4JAfBqTbcTni{~|XvQY7UZE_*7Jm4m~^^((gGeG_Zg?6k+WqWINI z(-DR*>2bzR(QsTKQi++w4vUcSuYLkyo8&}ZroXGUygc`h7NEA)10+{}qsxk4Lx@QT z+=RR#lyPx|r34Yih_+XUg}h9xAb04ark>N`CsRw(w{L$9WXpsw#7GHkju=aJya>Mq z3}6A49s5cn&dK?pz{+9J;@Kx*ZlE~#SKcPBqu>7i5?tHdkX<;m3QmHB);XDmqY9a1 zhG$|y@VAZP(g4i&j$IEoR5)xQ74jwu)CSVT+`B!&;E>;4yP#C2wD2|B0rM;lZ?A8 z6FQ9H%ZF#>P%>GCpeY59JD4;{U`$I$=n8rhl(8;G6e4+myoQ3k2AdXAg&Ks}JnJS< zs?b(n2S^L%2zU+{`RnaW!bk`m@FM{>AE}%OloSk1swZ8!2D2DhxB!&qQ0T0n$w5rd zz{a<<{ED7s29-4CTL}F!0B*%wR$$KHOM;yTCqLX029wHpdC2)NHC?q69Nkg0XrDIvE$VBj1E@^=J%#gfT4NO!f5)pf#jo%i5- zo=!uY)-0YZh5*`~)c2cQW3z(tnNY?6X9Aoejr)ym1gHz<6~Jy#_7eI!(ax+3=uHW- z3c^6ce9{g455GjcfB!z{KP0m6kPe_pM6|-(RCc#X&BHVED;Avd>v@Rt#C%=AqN49o z%+N!BagauUkpKc&b<{DEIYXW{83a1PSOIC!`#J2L#c}c*ynxzlGg30%#n|EG;dSfm(Cm zv4@DTustwcf~&>jMXiN$b`C-nQNujtjFIo~rNTTJzqfW?{Oj|gFhqphqq(JpaBNV< z3^ZyPz)(P{qM$Sw-T52y_BcCf@G~d@VYx@hMSxgx9(BBg;eAC#3ei=HUbGX7B(4w9 zw%AS>d$^P-Xn768C+3BKW|#rnP*bT0vb0R3Z^G`Ck{{P>mi2Lb37fa)-XHbk)5`h{ zga#0eHD^#2h{02gO&HF`x4knW=kGP;q-jDBXbd9{`$HX=t%-_>DZ%nUA<&e;0{14E zS8En3wgb?Oao>IHm_b!2+6Q3YNV{kyT!bS|*AY`^uTw>TyKM^o7`sIZ%LmS~c#bw6 zZN${Z@sA}SFd-<5ghmwM=OpAvG#B7~fRPB>w8|3!;uxsm6_q|h>e3@`A0U`QwEv(~ z$!LMRmnQ!ltH?qoMZXE3{EG2cKn+1S?rvk*1>@N0@QOqyR2Nwo=^_M$+PLliIp?5|nMrmijd{;N1XG?5< z$Yrs8XeXJ9F?fJ)R-lg^C3z30Bw_I7Vp$`fqGuaFChz(~8Bvf5PLp(DL5Z28y!>|z zwPsn{^6fToVVa!qIz$+Z5H%rOqwUq)WqlDMLZxO|WHE#V>jEj9hB7?+&z<|LG!57U zA)+%s!j5StU}jP;-jMV%(4HXC(WKY&y$vN8I{0>)WSLcB)e(3J3R9q_G!d9WfpP@l z(=nNOSy{l)f_~!+_7ukSRv3ARnD^TE7W>8PPknTt+nl?#j+?)bmVYk3iFi=pn?QnT zHlG=S(MgDT6v?9ODf-#tFvi3k!-y-s@?19pPC>~>$xJvF6!EkiV$nD7!r8A9h3W4( zgs=|Q>qW)I7{M-volsV3mYu?#kdAx@8LWtWko^EtArZX%d|9-_<0yFO{Ae>=Wq$QFF<55F@#3yy!C zk8gs86h8ROJ0y~^PA(U3njO z3%W1dG$c9fpbnZD90*0|E%UYJ)txp@D%Usx8JYfqO_` z`-5A{=pQ<&2#+lU_pLj3p1=SsaEp=I1-LV!BW{40qCVM&}i$qF$BhMQg;#Hri=s6&y~L79I}#}b9iAHdmlArm8<5K*}R^#bzE%*gou zhod%b&pbTTiMS?t#|f#yVlWfGP=N4_@uNJO7J2S(uoePZfHLJX&ez{4Ad^|)&h%r{ z4FpaFO${JBjQHa7sA;-@HoTGBzO2!i>Lyea#Km}cKuC;^ZDyi(1u_q(u8;(B%VrPs z|3rmjClgs+RYjSKC&S?PrQ5V6tqq5Pt7v%J?TF(+U({RuM?MVY$ok4}9PYYWTdW8g z9rY8h57PT>v9u3kmvRkIJ9(jmLIi9#{BLv!RFPD98%JGU0l^bpi?emwz&onbQocck=^FR zp0tphc!!ZB30M+w4g<_}n|XZ(0ku8|v5FXNh^Y~>_I6s=l_j$Nl+?5Gf*T+-wD!%g zyXK&uKvkp_*;j-_1XUXbLFvLL?NBVCa-!LF%fbXH7{LyRSnuaIJtvtL%Kn6$jv1rJ z@l8i{;$}(sSM0^ z@C(&w83Fg0T36VxPwN8^DXh`7Zhx{mZc!873N+zld3q#9;0s=O0@yz3}05>?kJaW}cQ47tn8@OOAh-+b?yt1C>>M`SU=X^VY zUYDYyMg1|VqjRf33FGD#h~>E9wvxXxIO@i)0uZm=(9K?l;l0Kp8P|nii&i{eOEU)M zY3P#RD%zPFXaJZ1Ozf0{liQxevv(pe7`tfc0meTi(Z>K(9SYWT7a+hF&X8U=ucAhLeJ9 zU9f_(A5$Y<)dcbmmkLY?48{HFGgohQo)*!5Arhb{cYg7xp=)sE8r;Z!hZeuoLk-$NtLPM`2ULl%WSXp(RxP;?C zU1V}$j$7!)FBQhaJ<>^8WFdyo)>1cB+^w6{(Mo|&Ej{zY?ekNej84j#01X)w(5=kB^NMLx%tG5I)LPfscWS> z|LqX(%8oS#S2bze8wfEGg(2WB8hV1~3s__r&C4W=kA4w8;QG%nRz){F`zH`?C)zT5 z@#LW5a7Lj8_zENX96|CtKCdnzQ=lv$gxk0Qz%p(~D(^M0{J)<7H;)876JnyXm?vL% zt*YM7w=QUH`sauK%ae-#*`QUsb*T#lX7l`&xzyj+hFe7)4f1 z_T*e ze;nL3yZn?}iq@e7SU(5n;~g3Td|_%^8Psp#$3rwU?y#Kfc}ybZfA3VqQcsTiLAw^b z`M#DCpgQ(jXinTI?~s(;`z0s3?(CH@alriK?bDe})*ndh3~`JAKCLAzEKDMLor`px zHZaYUi>s*+hi3e7Xu&yle)cHE!qFz$2cb5x94ZO(hub_$PE0IWF%m~}{Bbn(gz^gE z)R;pFEWDzkGU7tV_e=I(HZwiRP~ZX48C@`==VEG5WgONn)2$y{gu1w)%U_Z6pE0*& zenINipDz(%5aj*m{R#|%dwx3QGsKDg?_VOt{--x2wqs*~F}9j`PPQ|78sg^;`_r_f zwvq0%0(TELc&ZT#jrh9huV9{QKqZ}-FOG4i8Cd3Zq*s)_tL_x%e{V9T^W#Stv<_lN zlw23!+b^lc*f%gTMjJ9cI0&Dwjv!eJ;OwyU)R~)|2~_6s@nFr5I-Hu)&HwYmpJ!Kw zX5Z7uY}3wU8yvP(FP19EUtO*$iEC_szT8JKK|}ayNJNBawR^|~S=NkFZYgC3x70$~tVrl1c z{^1cNy@uArxcZM)TB!uzy`Bft;T;=aolxPvHD$f}_Jy0`*n$FC8Im6=x2*oOx&f|t z^&c73vsnIFo&Wu>jR5ue?{NJ8cl4nTq>2;6-`q6IMKdT*7G(yD2041OPc+PWUU@fD zE6eD5`|AgV)2hqbT@Le&BK0h?GuEFM>Zc{$hLhM6CyrUXEN+t9v!>Ljqg7nG<*8!Q z-Mh__T&uVAZ%%6H@ZS@SZj?qtufvH0dRlhM9C|N!`C7939D6iZB2Eq!D~GhFy8L|S zr~0ienyI_XD|R@4o4~Wk^YY%E=`%L5mE;~2Vb~|LSvQEhIQ+ypN!}vmWc8 zaqWMjZP3<~*7h@$XkF6MO#M{8=uF!jvUt5mS6j&E?=g*6nGsA{_F5^_8EV7MzG?OD z*VbZR)z|VfuKjWFif%t!%5mZOD2svf@hq~L)EUy(g%Q4%XSl;uztEu)^zA0Gqv%F^NC6vY_S2!yOKw!b+hgF zv{T)ey8jSQ`P%U0dCe1VFQK@i;MTb<9iI229@@YlXL#sPVSdus7w?5Lb1~^{cUVqD z7kQmX47|d!nm#{~P93Jj<}IAcs1)>J3GQ+DMs8s)Iuv+p;nL%*xWPNtV$SLDY)QfT z;aT75OG+G;A?@xw-Ahz8so0ZcjCkwmL$RUwAU`C~&;;e93vn@vK?CeQUmYB@iyiHdbNL4GAM^5@T@NsjO8ru?lUjQtO8(Sb4|uJ&Ti;C#!DH*o+%o6kWHv3Q~6`mc+l%*;1J4 z_?CYEh_(-l@OXVteWiQj4xYCY=hr%93O`|WsAJ1oIMr8cqw#%$(lzQi^83np zT``4NoevqQv)4qWKZ=nL;I=p%Tc8KrcyZpe!J1vO>iZl$vs#30ugRjviJ2>f;co^o zr5_|O-5UCH_B+nZ{5^eV?uuy36B|n&pNQy0E6v*_PUo)Vs~v$C6)$~Y*86?^xEkAA z6PfF+d%e99&BMIsW|*hQTV$7(B8KV*>w5hoo2G(REGgRVT{BVMvvjVeGXLm{nwPe4 zZW{Q0eBa0tmCT=15^CyYWgpHpncn1UI+n`ssuEly9c!@L$B}B2I5*2R>By?48)P>< z^Qg|8eZv8rNrV1eHu`+q43&w;UDDN<#oL&1vPB@ia>4aZqA`h+Zn*qz)1AibkIArdC7+^K0Mi?-DJwsODLCuuNwN!#FEqSkM-2Rxs6zcp4hO>y3G+n`Xc{IhP? z(aDFU^EY%Bze&tzQaw`aWt24qd8=iHoxB}Ql|(Eb#c%Gfu`&_sa5d6(jl3XePtrNF zA7xdJplJFv`_dPiOCQ=__@k{hGJFra@@q?FdTZ~Bs&H75lDy}t$%WRMx1p}888t=A zj(y~hPwkg8qFxN8*_$-(?%$4pW53crkW*C~$;NZ`etxZt$8zHuu^)jky?V@Ho2;F* z#`b|(kN4?HzOTl6?%NhM#dg)cU&eDsFq&8M(=?Vadu`6Gxv$;12 z9act3?)4sO+cLIon|1E%d0*tq?H#-*V&~Zvq)x8eGhTmX*oQ?XR^n?UQ&Pp!q`Y#C zufvb^epB)0qp61Wt9xaR_X_$X({vvx3Eu5GC%lJFYwuasHRu~0RhV$4vd(%_bFxM0ju{pz4 zpQYHF>vQ)dZ7ZxF`tZkXE0y$-L0YD6CVS%bN|o~DYg@FtjYseLo0O7-=QG!oQnso! z?i!jtt0ZZDE4MKwZU4g!A?nqk2Za~+*|W+1>TWCUyupVhMV}4UaWuduJ!BGiH5Nzc?Pmv3=xk_IrapPQ2xD z$?qqsL+00RN^@zO6@B6O(%8AGHLo|8Njacp>g4x=4DP7`$?`@m#ghqlPv5c6GfXnf zqN~MojqLn1Pfueza{KKUwf@?2YLV}F&_=|X#Dfo%YhH4dUFx{e!S9ni+}E5(nh(6V zx>au$;k15D(|%EwWmH$bi@rdMJyq?k(6e#I*>#KTWtzTZx85&F_Qto3Iu^-^w15J; z;y>%f_1{Q#^z!=*u3R$h$saoRIHsDtNFx6i2yuuONY_h{HodnjtaK6zFtpEtkBrtMW_@IdbEMZcHU-PF8O!aN5Y>AEjR+aDHk4(M>r?GcN@az`mj9Ch#FXS zeKmP$SHwEo;X6phA_bwQY_c=i`aVhKzm)!&CeQfv*GxsnpYLw-zsGlV+$YRqgL$rcmP|_?nPv>7VY+T9xjMXeYICeOgbfP!V5&8%w+vm{Ved{KB@vI2RR@u_)bCK~2N2+tZUY zH(Zw2uQn;Z^jxj5&!%d*6FwmuTLxekMb(Rf+ZvhI3;LPf~)Z-?wA>+lk~k$T7PVi^nT{X zr+q@2n+qS93o4B>@|2`m>y&)T$7jXUi*@Kt!!MuR&75n$H@?1Qjk|=v+`l;2jeNdH zUvd0PH~QE@D!0gQvHPA!k=(r-cZPi5S-ZWq%4N`XG;8V68Sl+V>{tD`2IyncW#73S z(>dd=wOm;vZEQeoT}dmqdi@fvF)!YCm)tG8>tNdHek4aU-1EgyZ^(r?Qp1kk)pHH| zv&y!VYQr?aouvANRaU}QU199*r;F83e|8pvTK|)~34Ojmfpnd;4wZ@%L3>yj7-YZd zJY`^5({TRmX)Rn|+)H#yDQzQnSYS1W%X+*o_>`N(YACMY_>X{xqgseUob-;L)n_0; z6ZD--Jk8=_)6+q=`D^LPOP=QL@`(jb|KS6ioo6TKw#n{Ic>Yl9b3<*T&CXu+Lkw$-osukm-7y#&Ndg84lhPWvhOvQ`Wx2o zpnf2&=CM<98tcs!dEWjT!5EhVU~>A_vTgp)Z1P9S{|jC8Idr+Wm-dwUr{%Mom#$t6 z%J4tthK#QK>u${}*6=E&?Zl2f NFQ_3JO{|*|RDX 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/modifying_permissions.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/modifying_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..f54a976310ab926fbd5f0fe3beb7b0573f0d0bfc GIT binary patch literal 186384 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/search_snowplow_v3.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/search_snowplow_v3.png new file mode 100644 index 0000000000000000000000000000000000000000..0982ddfc8d411c8d0f1d5613b1997afb7160243f GIT binary patch literal 15140 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 literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/setUserId.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/google-tag-manager-custom-template/v3-tags/tag-template-guide/images/setUserId.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb82fa3ac401edd39cf7e443f9a8a3ae8f37ee6 GIT binary patch literal 68566 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

    W!a*$ZSgDQo3l3tW7P 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 +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/images/s3-upload.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/images/s3-upload.png new file mode 100644 index 0000000000000000000000000000000000000000..607e2d0ffd02fa878dda1c7faea6a1c141c6e102 GIT binary patch literal 295998 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

    Cxbm9@bl<5BJhWulb4#xmR~eq^vVDZ-{G*%Nnk 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 abhyBz~RYPYm*7T&o3`~LwOzao?X literal 0 HcmV?d00001 diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/index.md new file mode 100644 index 0000000000..7dc9870b16 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-aws/index.md @@ -0,0 +1,124 @@ +--- +title: "Self Hosting the JavaScript Tracker on AWS" +sidebar_position: 100 +--- + +## Pre-requisites + +For the purposes of this guide, we are going to assume that you want to serve the standard `sp.js` from CloudFront. To accomplish this, you will need the following: + +- An account with [Amazon Web Services](http://aws.amazon.com/) +- S3 and CloudFront enabled within your AWS account + +## Download the JavaScript tracker file + +Navigate to [https://github.com/snowplow/snowplow-javascript-tracker/releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) and download the latest version of the Snowplow JavaScript Tracker sp.js file + +## gzip and rename the file + +- rename `sp.js` to a random 8 character string to reduce the chance of AdBlockers preventing the script from loading e.g. `gh7rnghq.js` +- `gzip` the file to reduce the file size and reduce associated cloud storage and egress costs. + +From a terminal / command prompt window, navigate to where you have downloaded the file and run: + +`gzip -c sp.js > gh7rnghq.js` + +**N.B.** on Windows you may need to [download the gzip binaries](http://gnuwin32.sourceforge.net/packages/gzip.htm) + +We will continue referring to the file as `sp.js` throughout this guide, however where `sp.js` is mentioned we are referring to your renamed and gzipped file. + +## Uploading to Amazon Web Services + +### Create a bucket for the JavaScript Tracker + +Navigate to [S3 within AWS](https://s3.console.aws.amazon.com/s3/home) and then create a new bucket within your Amazon S3 account to store `sp.js`. + +| Option | Value | +|--------------------------------------------------|---------------------------------------------| +| **Bucket Name** | For example, `[company-name]-sp-js` | +| **AWS Region** | For example, `EU (London) eu-west-2` | +| **Block Public Access settings for this bucket** | Deselect: ****Block _all_ public access**** | + +You can leave all other settings as their defaults. + +Click **Create Bucket**. + +### Upload the JavaScript + +You want to upload the **minified** version of the Snowplow JavaScript, which is called `sp.js`, that you downloaded in an earlier step. If you haven't downloaded it yet, you can obtain the latest version of the JavaScript from [Github releases](https://github.com/snowplow/snowplow-javascript-tracker/releases). + +Now you're ready to upload the JavaScript Tracker into your S3 bucket. + +1. Navigate to your new bucket by clicking on your Buckets name +2. Click `Create folder` and create a new folder which represents the version of the JavaScript Tracker you are uploading. This will help with any browser caching issues as you update your tracker in the future. + If you downloaded Version 3.0.0 then create a folder called `3.0.0` +3. Navigate into your new folder, click **Upload**, click **Add Files** and browse to your file +4. Your file should now be present in the **Files and folders** section +5. Click on **Additoinal upload options** to drop down to extra settings +6. In the **Access control list (ACL)** pane, you must select **Read** within the **Objects** column on **Everyone (public access)** row. You may need to confirm you understand the effects of this change within the UI. +7. Before uploading, we must now we will configure the required metadata for a gzipped file and the cache control for Cloudfront. + +#### Configuring metadata + +First we will set the `Content-Encoding` header. + +1. Scroll down to the **Metadata** section within the **Addtional upload options.** +2. Click **Add Metadata** +3. Add Type: **System defined**, Key: **Content-Encoding**, Value: **gzip** + +Now we will add the `Cache-Control` header. + +1. Click **Add Metadata** +2. Add Type: **System defined**, Key: **Cache-Control**, Value: **max-age=315360000** +3. Click **Edit metadata** + +This sets your items to expire in 10 years, that is 10x365x24x60x60 = 315,360,000. + +We recommend that you set the `Cache-Control max-age` property on the file. This property determines _both_ how long Cloudfront caches `sp.js` in its edge locations, and crucially, how long individual browsers cache `sp.js` before repinging Cloudfront for a fresh copy. By setting a long expiration date, you can reduce the number of browser requests for `sp.js`, which can significantly decrease your Cloudfront costs. + +The only disadvantage of a long expiration is that you need to find a way to _force_ end users to fetch a fresh copy of `sp.js` when you upgrade to a newer version. However as you have created a versioned folder, this is easily managed by saving your new version to a new folder in your S3 bucket, and updating your Snowplow tags to point to the new version. + +Your metadata should now look something like this: + +| Type | Key | Value | +|----------------|-----------------|------------------------| +| System defined | Cache-Control | max-age=315360000 | +| System defined | Content-Type | application/javascript | +| System defined | Cotent-Encoding | gzip | + +Now scroll to the bottom and click **Upload** to upload the JavaScript file into your bucket. When done, you should have something like this: + +![](images/s3-upload.png) + +### Create your CloudFront distribution + +Now you are ready to create the CloudFront distribution which will serve your JavaScript. Navigate to [CloudFront within AWS](https://console.aws.amazon.com/cloudfront/home). + +1. Click **Create Distribution** and then **Get Started** +2. Use the table below to set all the required options + +| Option | Value | +| --- | --- | +| Origin Domain Name | **[Bucket Name].s3.amazonaws.com** +e.g. snowplow-static-js.s3.amazonaws.com | +| Other options | Leave as default | + +Click **Create Distribution** and then you should see AWS beginning to create the distribution. + +Note down your CloudFront distribution's **Domain Name** - e.g. `http://d1weib8el6blz6.cloudfront.net` +You will need this later when you integrate Snowplow into your website. + +### Testing your JavaScript file on CloudFront + +Before testing, take a 10 minute coffee break (that's how long CloudFront takes to synchronize). + +Done? Now just check that you can access your JavaScript file over both HTTP and HTTPS using a browser, `wget` or `curl`: + +```text +http://{{SUBDOMAIN}}.cloudfront.net/{{VERSION}}/sp.js +https://{{SUBDOMAIN}}.cloudfront.net/{{VERSION}}/sp.js +``` + +If you have any problems, then double-check your CloudFront distribution's URL, and check the permissions on your `sp.js` file: it must have Read permissions for Everyone. + +That's it - you now have a CloudFront distribution which will serve your Snowplow JavaScript to anybody anywhere in the world, fast. Now all that remains is to update your Snowplow tag to fetch your own version of `sp.js`. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-on-google-cloud/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-on-google-cloud/index.md new file mode 100644 index 0000000000..5592a9c850 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/self-hosting-the-javascript-tracker-on-google-cloud/index.md @@ -0,0 +1,101 @@ +--- +title: "Self Hosting the JavaScript Tracker on GCP" +date: "2020-04-28" +sidebar_position: 200 +--- + +## Pre-requisites + +For the purposes of this guide, we are going to assume that you want to serve the standard `sp.js` from Google Cloud Storage. To accomplish this, you will need the following: + +- An account with [Google Cloud](https://cloud.google.com/) +- Access to Google Cloud Storage (GCS) within your GCP account + +## Download the JavaScript tracker file + +Navigate to [https://github.com/snowplow/snowplow-javascript-tracker/releases](https://github.com/snowplow/snowplow-javascript-tracker/releases) and download the latest version of the Snowplow JavaScript Tracker sp.js file + +## gzip and rename the file + +- rename `sp.js` to a random 8 character string to reduce the chance of AdBlockers preventing the script from loading e.g. `gh7rnghq.js` +- `gzip` the file to reduce the file size and reduce associated cloud storage and egress costs. + +From a terminal / command prompt window, navigate to where you have downloaded the file and run: + +`gzip -c sp.js > gh7rnghq.js` + +**N.B.** on Windows you may need to [download the gzip binaries](http://gnuwin32.sourceforge.net/packages/gzip.htm) + +We will continue referring to the file as `sp.js` throughout this guide, however where `sp.js` is mentioned we are referring to your renamed and gzipped file. + +## Uploading to Google Cloud Storage + +### Create a storage bucket + +1. Navigate to [Google Cloud Console](https://console.cloud.google.com/) and ensure you are in the Google Cloud Project that you wish to host the Snowplow JavaScript Tracker in +2. Navigate to the [Storage section](https://console.cloud.google.com/storage/browser) of Google Cloud Console +3. Create a new bucket with the following settings + +| Option | Value | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------| +| **Name** (also see [Add DNS Record for bucket](#add-dns-record-for-bucket-optional)) | For example, `[company-name]-sp-js` | +| **Storage region** | Select a suitable region, multi-region offers the widest availability and highest SLAs | +| **Storage class** | Standard | +| Access control options | Fine grained | + +Connecting your domain to your storage bucket (optional) + +You may wish to connect your domain to your Cloud Storage bucket. In this case your bucket can be named in the format of a subdomain e.g.`spassets.acme.com`. + +See **[Add DNS Record for bucket](#add-dns-record-for-bucket-optional)** for additional step you'll need to take. + +### Upload your file + +Click _Upload Files_ and upload your tracker file. + +Make future upgrades easier + +We recommend that you create a folder for each version of the JavaScript tracker to make future updates easier. If you wish to do this then first create a folder corresponding to the version and place your tracker file in that folder. + +### Set metadata + +Open the _Edit Metadata_ popup using the file menu. + +1. Alter the `Content-Encoding` value to be `gzip` +2. Alter the `Cache-Control` to `max-age=31536000` +3. Save the meta data + +### Set permissions + +Open the [_Edit Access_ popup](https://cloud.google.com/storage/docs/access-control/making-data-public#objects) using the file menu. + +Add a new item in the table, enter the following details and click Save. + +| Option | Value | +|--------|----------| +| Entity | Public | +| Name | allUsers | +| Access | Reader | + +Click _Copy URL_ next to _Public to internet_ in the file browser to get the file's URL e.g. [https://storage.googleapis.com/company-name-sp-js/gh7rnghq.js](https://storage.googleapis.com/company-name-sp-js/gh7rnghq.js)  + +### Add DNS Record for bucket (optional) + +This will only work correctly if: + +- you earlier created your bucket with a name corresponding to the subdomain (see [Creating a storage bucket](#create-bucket)) you wish to use +- you have verified ownership of this domain in Google Cloud: [https://cloud.google.com/storage/docs/domain-name-verification](https://cloud.google.com/storage/docs/domain-name-verification). + +To connect your domain to your Cloud Storage bucket, you will need to create a `CNAME` record as below: + +| Option | Value | +|--------|---------------------------| +| Name | [your domain] | +| Type | CNAME | +| Data | c.storage.googleapis.com. | + +CNAME redirection only works on HTTP, to ensure this works on HTTPS you must follow [this troubleshooting guide](https://cloud.google.com/storage/docs/troubleshooting#https). + +## Update your tracking tags + +Update any existing tracking tags to point to your self-hosted file URL. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md new file mode 100644 index 0000000000..036a6bd653 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/hosting-the-javascript-tracker/third-party-cdn-hosting/index.md @@ -0,0 +1,30 @@ +--- +title: "Third Party CDN Hosting" +date: "2020-10-12" +sidebar_position: 4100 +--- + +## Hosting sp.js + +Whilst we’re offering CDN options, Snowplow does not recommend using third party providers in production for hosting JavaScript assets that you use on your websites. We encourage all users to host `sp.js` on their own servers, and this will always be the recommended best practice. + +If you wish to follow our recommended best practices, please follow our [self hosting guide](../index.md). + +## jsDelivr CDN + +Snowplow JavaScript Tracker v2 and v3 assets are available via the [jsDelivr](http://jsdelivr.com) CDN. Click the links below to explore the available assets: + +[JavaScript Tracker v3 on jsDelivr](https://www.jsdelivr.com/package/npm/@snowplow/javascript-tracker?path=dist) +[JavaScript Tracker v2 on jsDelivr](https://www.jsdelivr.com/package/gh/snowplow/sp-js-assets) + +## cdnjs CDN + +Snowplow JavaScript Tracker v2 is available via the [cdnjs](https://cdnjs.com/) CDN. v3 will be available soon. Click the link below to explore the available assets: + +[Snowplow JavaScript Tracker v2 on cdnjs](https://cdnjs.com/libraries/snowplow) + +## unpkg CDN + +Snowplow JavaScript Tracker v3 is available via the [unpkg](https://unpkg.com/) CDN. Click the link below to explore the available assets: + +[Snowplow JavaScript Tracker v3 on unpkg](https://unpkg.com/browse/@snowplow/javascript-tracker@3/dist/) diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/index.md new file mode 100644 index 0000000000..ccd7ab123a --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/index.md @@ -0,0 +1,66 @@ +--- +title: "Tracker setup" +date: "2021-03-31" +sidebar_position: 1000 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' +import DocCardList from '@theme/DocCardList'; +``` + + + + + + +There are two distributions of the JavaScript Tracker: + +- `sp.js` is fully featured and is bundled with the majority of the available plugins. +- `sp.lite.js` is a smaller distribution with no bundled plugins. Included is Page View, Self Describing and Structured Event tracking as well as Activity Tracking and Anonymous Tracking. All other features can be loaded as separate [plugins](../plugins/index.md). + +```mdx-code-block +import LoadWithTag from "@site/docs/reusable/javascript-tracker-load-with-tag/_index.md" + + +``` + +Once the tracker is loaded via the tag, you can move on to initializing the tracker. + + + + +Getting started with sending events using the Browser Tracker will be familiar for anyone who is used to installing npm packages into their web apps and is designed to work with frameworks such as React, Angular and Vue. + +- Install the `@snowplow/browser-tracker` package using your preferred package manager + - `npm install @snowplow/browser-tracker@3` + - `yarn add @snowplow/browser-tracker@3` + - `pnpm add @snowplow/browser-tracker@3` + +- You can then import this library into your application + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +``` + +- Configure an instance of the tracker by calling `newTracker(...)` with your desired properties. This will create a module level instance of your tracker. You don't need to keep a reference to it. + +```javascript +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ ], +}); +``` + +- Then you can use the track methods to send some events. You can send a Page View event to all initialised trackers with just: + +```javascript +trackPageView(); +``` + + + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/initialization-options/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/initialization-options/index.md new file mode 100644 index 0000000000..ff2d27ddaa --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/initialization-options/index.md @@ -0,0 +1,200 @@ +--- +title: "Initialization and configuration" +date: "2021-03-31" +sidebar_position: 2000 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +Tracker initialization is started by calling the `"newTracker"` function and takes three arguments: + +1. The tracker namespace (`sp` in the below example) +2. The collector endpoint +3. An optional configuration object containing other settings + +Here is a simple example of how to initialise a tracker, setting a few configuration options: + + + + +```javascript +snowplow('newTracker', 'sp', '{{collector_url_here}}', { + appId: 'my-app-id', + discoverRootDomain: true, + cookieSameSite: 'Lax', // Recommended + contexts: { + webPage: true // default, can be omitted + } +}); +``` + + + + +```javascript +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + discoverRootDomain: true, + cookieSameSite: 'Lax', // Recommended + contexts: { + webPage: true // default, can be omitted + } +}); +``` + + + + +The tracker will be named `sp` (tracker namespace) and will send events to the a collector url you specify by replacing `{{collector_url_here}}`. The final argument is the configuration object. Here it is just used to set the app ID and the common webPage context for each event. Each event the tracker sends will have an app ID field set to “my-app-id”. + +If `newTracker` is called multiple times with the same namespace, only the first call is taken into account. + +:::tip For Single Page Apps +Initialize one tracker per initial page load. +::: + +The following table shows all the various configuration parameters. Note that these are all optional. In fact, you aren’t required to provide any configuration object at all. + +| Property | Description | Default (if applicable) | Type | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|-------------------------|---------------| +| [`appId`](../../tracking-events/index.md#setting-application-id) | Set the application ID. | | `string` | +| [`platform`](../../tracking-events/index.md#setting-application-platform) | Set the application platform. | "web" | `string` enum | +| [`cookieDomain`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-domain) | Set the cookie domain. | | | +| [`discoverRootDomain`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-domain) | Automatic discovery and setting of the root domain, to facilitate tracking over multiple subdomains. | true | `boolean` | +| [`cookieName`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-name) | Set the cookie name. | | `string` | +| [`cookieSameSite`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-samesite-and-secure-attributes) | Set the cookie samesite attribute. | null | `string` enum | +| [`cookieSecure`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-samesite-and-secure-attributes) | Set the cookie secure attribute. | true | `boolean` | +| [`encodeBase64`](../../configuring-how-events-sent/index.md#base64-encoding) | Enable Base64 encoding for JSONs (context entities and custom self-describing events). | true | `boolean` | +| [`respectDoNotTrack`](../../anonymous-tracking/index.md#respecting-do-not-track) | Choose to respect browser Do Not Track option. | false | `boolean` | +| [`eventMethod`](../../configuring-how-events-sent/index.md#network-protocol-and-method) | Choose to send events by GET, POST, or Beacon API. | `post` | `string` enum | +| [`bufferSize`](../../configuring-how-events-sent/index.md#number-of-events-per-request) | How many events to send in one request. | 1 | `int` | +| [`maxPostBytes`](../../configuring-how-events-sent/index.md#maximum-payload-size) | Set a limit for the size of one request. | 40000 | `int` | +| [`maxGetBytes`](../../configuring-how-events-sent/index.md#maximum-payload-size) | Set a limit for the size of one request. | | `int` | +| [`postPath`](../../configuring-how-events-sent/index.md#custom-post-path) | Change the collector POST path. | | `string` | +| [`crossDomainLinker`](../../cross-domain-tracking/index.md) | Decorate links for cross-domain tracking. | | `function` | +| [`cookieLifetime`](../../cookies-and-local-storage/configuring-cookies/index.md#cookie-lifetime-and-duration) | Set the cookie lifetime. | 63072000 s (2 years) | `int` | +| [`stateStorageStrategy`](../../cookies-and-local-storage/configuring-cookies/index.md#storage-strategy) | How to store tracker state. | `cookieAndLocalStorage` | `string` enum | +| [`maxLocalStorageQueueSize`](../../cookies-and-local-storage/configuring-cookies/index.md#local-storage-queue-size) | How many events to queue in local storage when they are failing to send. | 1000 | `int` | +| [`resetActivityTrackingOnPageView`](../../tracking-events/activity-page-pings/index.md#reset-page-ping-on-page-view) | Choose to reset page ping timers when a page view is tracked. | true | `boolean` | +| [`connectionTimeout`](../../configuring-how-events-sent/index.md#connection-timeout) | Set request connection timeout. | 5000 ms | `int` | +| [`anonymousTracking`](../../anonymous-tracking/index.md) | Do not track user identifiers. | false | `boolean` | +| [`customHeaders`](../../configuring-how-events-sent/index.md#custom-request-headers) | Add custom headers to requests. | | `object` | +| [`withCredentials`](../../configuring-how-events-sent/index.md#disabling-withcredentials-flag) | Choose whether to use the `withCredentials` flag in collector requests. | true | `boolean` | +| [`contexts`](../../tracking-events/index.md#auto-tracked-entities) | Configure context entities to add to all events. | various | `object` | +| [`retryStatusCodes`](../../configuring-how-events-sent/index.md#custom-retry-http-codes) | Set HTTP response codes to retry requests on. | | `[int]` | +| [`dontRetryStatusCodes`](../../configuring-how-events-sent/index.md#custom-retry-http-codes) | Set HTTP response codes not to retry requests on. | | `[int]` | +| [`retryFailedRequests`](../../configuring-how-events-sent/index.md#retries) | Choose to retry failed requests or not. | true | `boolean` | +| [`onSessionUpdateCallback`](../../tracking-events/session/index.md#on-session-update-callback) | A callback to run every time the session updates. | | `function` | +| [`onRequestSuccess`](../../configuring-how-events-sent/index.md#onrequestsuccess-callback) | A callback to run every time a request is successfully sent to the collector. | | `function` | +| [`onRequestFailure`](../../configuring-how-events-sent/index.md#onrequestfailure-callback) | A callback to run every time a request fails to send. | | `function` | +| [`preservePageViewIdForUrl`](../../tracking-events/page-views/index.md#when-is-the-page-view-id-generated) | Option to change when a new page view ID is generated. Makes it possible to generate a new page view on URL change instead of when tracking a page view, which enables tracking events before the page view event with the same ID. | `false` | `false`, `true`, `full`, `pathname`, `pathnameAndSearch` | + +Here is a longer code example in which every tracker configuration parameter is set: + + + + +```javascript +snowplow('newTracker', 'sp', '{{collector_url_here}}', { + appId: 'my-app-id', + platform: 'web', + cookieDomain: null, + discoverRootDomain: true, + cookieName: '_sp_', + cookieSameSite: 'Lax', // Recommended + cookieSecure: true, + encodeBase64: true, + respectDoNotTrack: false, + eventMethod: 'post', + bufferSize: 1, + maxPostBytes: 40000, + maxGetBytes: 1000, // available in v3.4+ + postPath: '/custom/path', // Collector must be configured + crossDomainLinker: function (linkElement) { + return (linkElement.href === 'http://acme.de' || linkElement.id === 'crossDomainLink'); + }, + cookieLifetime: 63072000, + stateStorageStrategy: 'cookieAndLocalStorage', + maxLocalStorageQueueSize: 1000, + resetActivityTrackingOnPageView: true, + connectionTimeout: 5000, + anonymousTracking: false, + // anonymousTracking: { withSessionTracking: true }, + // anonymousTracking: { withSessionTracking: true, withServerAnonymisation: true }, + customHeaders: {}, // Use with caution. Available from v3.2.0+ + withCredentials: true, // Available from v3.2.0+ + contexts: { + webPage: true, // Default + session: false, // Adds client session context entity to events, off by default. Available in v3.5+. + browser: false, // Adds browser context entity to events, off by default. Available in v3.9+. + performanceTiming: true, + gaCookies: true, + geolocation: false, + clientHints: true, + // clientHints: { includeHighEntropy: true }, // Optional + }, + retryStatusCodes: [], + dontRetryStatusCodes: [], + retryFailedRequests: true, + onSessionUpdateCallback: function(clientSession) { }, // Allows the addition of a callback, whenever a new session is generated. Available in v3.11+. + onRequestSuccess: function(data) => { }, // Available in v3.18.1+ + onRequestFailure: function(data) => { }, // Available in v3.18.1+ +}); +``` + + + + +```javascript +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + platform: 'web', + cookieDomain: null, + discoverRootDomain: true, + cookieName: '_sp_', + cookieSameSite: 'Lax', // Recommended + cookieSecure: true, + encodeBase64: true, + respectDoNotTrack: false, + eventMethod: 'post', + bufferSize: 1, + maxPostBytes: 40000, + maxGetBytes: 1000, // available in v3.4+ + postPath: '/custom/path', // Collector must be configured + crossDomainLinker: function (linkElement) { + return (linkElement.href === 'http://acme.de' || linkElement.id === 'crossDomainLink'); + }, + cookieLifetime: 63072000, + stateStorageStrategy: 'cookieAndLocalStorage', + maxLocalStorageQueueSize: 1000, + resetActivityTrackingOnPageView: true, + connectionTimeout: 5000, + anonymousTracking: false, + // anonymousTracking: { withSessionTracking: true }, + // anonymousTracking: { withSessionTracking: true, withServerAnonymisation: true }, + customHeaders: {}, // Use with caution. Available from v3.2.0+ + withCredentials: true, // Available from v3.2.0+ + contexts: { + webPage: true, // Default + session: false, // Adds client session context entity to events, off by default. Available in v3.5+. + browser: false // Adds browser context entity to events, off by default. Available in v3.9+. + }, + retryStatusCodes: [], + dontRetryStatusCodes: [], + retryFailedRequests: true, + onSessionUpdateCallback: function(clientSession) { }, // Allows the addition of a callback, whenever a new session is generated. Available in v3.11+. + onRequestSuccess: function(data) => { }, // Available in v3.18.1+ + onRequestFailure: function(data) => { }, // Available in v3.18.1+ +}); +``` + + + + +You can further extend the tracker functionality by installing plugins. Read more about them [here](../../plugins/index.md). diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/managing-multiple-trackers/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/managing-multiple-trackers/index.md new file mode 100644 index 0000000000..f55dc52a63 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/managing-multiple-trackers/index.md @@ -0,0 +1,188 @@ +--- +title: "Managing multiple trackers" +date: "2021-03-31" +sidebar_position: 4000 +--- + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import ReleaseBadge from '@site/docs/reusable/javascript-tracker-release-badge-v3/_index.md' + + +``` + +You can have more than one tracker instance running on the same page at once. This may be useful if you want to log events to different collectors. By default, any Snowplow method you call will be executed by every tracker you have created so far. + +You can override this behavior and specify which trackers will execute a Snowplow method. + + + +To do this, change the method name by adding a colon followed by a list of tracker names separated by semicolons as such: + +```javascript +/* Sending a pageview on a single tracker */ +snowplow('trackPageView:{{TRACKER_NAME}}'); +/* Sending a pageview on multiple trackers */ +snowplow('trackPageView:{{TRACKER_NAME}};{{ANOTHER_TRACKER_NAME}}'); + +/** + * Where {{TRACKER_NAME}} and {{ANOTHER_TRACKER_NAME}} are names of + * trackers initialized on the page using the `newTracker` API. +*/ +``` + + + +To do this, there is a final parameter on each function call that accepts an array containing the tracker identifiers you wish this function to be executed against as such: + +```javascript +/* Sending a pageview on a single tracker */ +trackPageView({}, [ '{{TRACKER_NAME}}' ]); +/* Sending a pageview on multiple trackers */ +trackPageView({}, [ '{{TRACKER_NAME}}', '{{ANOTHER_TRACKER_NAME}}' ]); + +/** + * Where {{TRACKER_NAME}} and {{ANOTHER_TRACKER_NAME}} are names of + * trackers initialized on the page using the `newTracker` API. +*/ +``` + + + + +Example usage: + + + + +```javascript +snowplow("newTracker", "sp1", "{{FIRST_COLLECTOR_URL}}", { + appId: "my-app", + platform: "mob" +}); + +snowplow("newTracker", "sp2", "{{SECOND_COLLECTOR_URL}}", { + appId: "my-app", + platform: "mob" +}); + +/* Both trackers will use this custom title */ +snowplow('setCustomUrl', 'http://mysite.com/checkout-page'); + +/* Both trackers will fire a structured event */ +snowplow('trackStructEvent', { + category: 'Mixes', + action: 'Play', + label: 'MRC/fabric-0503-mix', + property: '', + value: 0.0, +}); + +/* Only the first tracker will be affected by the plugin addition */ +snowplow( + "addPlugin:sp1", + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-web-vitals@3/dist/index.umd.min.js", + ["snowplowWebVitals", "WebVitalsPlugin"] +); + +/* Only the first tracker will fire this structured event */ +snowplow('trackStructEvent:sp1', { + category: 'Mixes', + action: 'Play', + label: 'MRC/fabric-0503-mix', + property: '', + value: 0.0, +}); + +/* Only the second tracker will fire this self-describing event */ +snowplow('trackSelfDescribingEvent:sp2', { + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', + data: { + product_id: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + available_since$dt: new Date(2013,3,7) + } + } +}); + +/* Both trackers will fire a page view event */ +snowplow('trackPageView:sp1;sp2'); +``` + + + + +```javascript +import { + newTracker, + setCustomUrl, + trackStructEvent, + trackSelfDescribingEvent, + trackPageView +} from '@snowplow/browser-tracker'; +import { WebVitalsPlugin } from "@snowplow/browser-plugin-web-vitals"; + +newTracker('sp1', '{{FIRST_COLLECTOR_URL}}', { + appId: 'my-app', + platform: 'mob' +}); + +newTracker('sp2', '{{SECOND_COLLECTOR_URL}}', { + appId: 'my-app', + platform: 'web' +}); + +/* Both trackers will use this custom title */ +setCustomUrl('http://mysite.com/checkout-page'); + +/* Both trackers will fire a structured event */ +trackStructEvent({ + category: 'Mixes', + action: 'Play', + label: 'MRC/fabric-0503-mix', + property: '', + value: 0.0, +}); + +/* Only the first tracker will be affected by the plugin addition */ +addPlugin({ plugin: WebVitalsPlugin() }, ['sp1']); + +/* Only the first tracker will fire this structured event */ +trackStructEvent({ + category: 'Mixes', + action: 'Play', + label: 'MRC/fabric-0503-mix', + property: '', + value: 0.0, +}, +[ 'sp1' ]); + +/* Only the second tracker will fire this self-describing event */ +trackSelfDescribingEvent({ + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/1-0-0', + data: { + product_id: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + available_since$dt: new Date(2013,3,7) + } + } +}, +[ 'sp2' ]); + +/* Both trackers will fire a page view event */ +trackPageView({}, [ 'sp1', 'sp2' ]); +``` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/snowplow-plugin-for-analytics-npm-package/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/snowplow-plugin-for-analytics-npm-package/index.md new file mode 100644 index 0000000000..3e1f6c9824 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracker-setup/snowplow-plugin-for-analytics-npm-package/index.md @@ -0,0 +1,54 @@ +--- +title: "Snowplow Plugin for getanalytics.io" +date: "2020-08-10" +sidebar_position: 4000 +--- + +The Snowplow JavaScript tracker can now be deployed directly into your web and node applications using the `analytics` and `@analytics/snowplow` NPM packages. + +:::note +Snowplow recommends using the official Snowplow Browser Tracker or Node.js Tracker instead of this package as you will receive updates faster and install a smaller dependency into your application, unless you wish to send your events to multiple providers which is where the @analytics packages are particularly useful. +::: + +### Quick Start + +```bash +npm install analytics +npm install @analytics/snowplow +``` + +Initialise the plugin: + +```javascript +import Analytics from 'analytics' +import snowplowPlugin from '@analytics/snowplow' + +const analytics = Analytics({ + app: 'awesome-app', + plugins: [ + // Minimal recommended configuration + snowplowPlugin({ + name: 'snowplow', + collectorUrl: 'collector.mysite.com', + trackerSettings: { + appId: 'myApp', + contexts: { + webPage: true + } + } + }) + ] +}) +``` + +Then track a page view event: + +```javascript +analytics.page() +``` + +### Full documentation + +[Snowplow Plugin documentation](https://getanalytics.io/plugins/snowplow/) (getanalytics.io) + +[Analytics package documentation](https://getanalytics.io/) (getanalytics.io) diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/activity-page-pings/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/activity-page-pings/index.md new file mode 100644 index 0000000000..975fa3af57 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/activity-page-pings/index.md @@ -0,0 +1,351 @@ +--- +title: "Activity (page pings)" +sidebar_position: 30 +--- + +# Activity tracking (page pings) + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +As well as tracking page views, we can monitor whether users continue to engage with pages over time, and record how they digest content on each page over time. + +That is accomplished using 'page ping' events. If activity tracking is enabled, the web page is monitored to see if a user is engaging with it e.g. is the tab in focus, does the mouse move over the page, does the user scroll, is `updatePageActivity` called, etc. If any of these things occur in a set period of time, a page ping event fires, and records the maximum scroll left / right and up / down in the last ping period. If there is no activity in the page, e.g. because the user is on a different browser tab, no page ping fires. + +Page ping events are **automatically tracked** once configured. + +## Tracking page pings + +### Enable activity tracking + +Page pings are enabled by: + + + + +```javascript +snowplow('enableActivityTracking', { + minimumVisitLength: number, + heartbeatDelay: number +}); +``` + + + +```javascript +import { + enableActivityTracking +} from '@snowplow/browser-tracker'; + +enableActivityTracking({ + minimumVisitLength: number, + heartbeatDelay: number +}); +``` + + + +where `minimumVisitLength` is the time period from page load before the first page ping occurs, in seconds. `heartbeat` is the number of seconds between each page ping, once they have started. + +Activity tracking will be disabled if either `minimumVisitLength` or `heartbeatDelay` is not integer. This is to prevent relentless callbacks. + +You can elect to enable activity tracking on specific pages. It is executed as part of the main Snowplow tracking tag. + +The following example would generate the first ping event after 30 seconds, and subsequent pings every 10 seconds as long as the user continued to browse the page actively. + +:::warning +The `enableActivityTracking` method **must** be called _before_ the `trackPageView` method. +::: + + + + +```javascript +snowplow('enableActivityTracking', { + minimumVisitLength: 30, + heartbeatDelay: 10 +}); + +snowplow('trackPageView'); +``` + + + +```javascript +import { + enableActivityTracking, + trackPageView +} from '@snowplow/browser-tracker'; + +enableActivityTracking({ + minimumVisitLength: 30, + heartbeatDelay: 10 +}); + +trackPageView(); +``` + + + +### Disable activity tracking + +:::note + +Available since version 3.14 of the tracker. +::: + +To disable activity tracking, you can use the `disableActivityTracking` method. + + + + +```javascript +snowplow('disableActivityTracking'); +``` + + + + +```javascript +import { disableActivityTracking } from '@snowplow/browser-tracker'; + +disableActivityTracking(); +``` + + + +Disabling activity tracking will stop page activity intervals and will not send additional activity tracking events. + +### Page activity + +You can also mark the user as active with: + + + + +```javascript +snowplow('updatePageActivity'); +``` + + + + +```javascript +import { updatePageActivity } from '@snowplow/browser-tracker'; + +updatePageActivity(); +``` + + + + +On the next interval after this call, a ping will be generated even if the user had no other activity. + +This is particularly useful when a user is passively engaging with your content, e.g. watching a video. + +## Activity tracking callback + +You can now perform edge analytics in the browser to reduce the number of events sent to you collector whilst still tracking user activity. The Snowplow JavaScript Tracker enables this by allowing a callback to be specified in place of a page ping being sent. This is enabled by: + +### Enable callback + + + + +```javascript +snowplow('enableActivityTrackingCallback', { + minimumVisitLength: number, + heartbeatDelay: number, + callback: (data: ActivityCallbackData) => void +}); +``` + + + + +```javascript +import { + enableActivityTrackingCallback +} from '@snowplow/browser-tracker'; + +enableActivityTrackingCallback({ + minimumVisitLength: number, + heartbeatDelay: number, + callback: (data: ActivityCallbackData) => void +}); +``` + + + + +where `minimumVisitLength` is the time period from page load before the first page ping occurs, in seconds. `heartbeat` is the number of seconds between each page ping, once they have started. The `callback` should be a function which will receive an event object containing the page ping activity information, including pageivew_id, and any Page View contexts. + +```javascript +type ActivityCallbackData = { + /** + * All context for the activity tracking + * Often generated by the page view events context callback + */ + context: Array; + /** The current page view id */ + pageViewId: string; + /** The minimum X scroll position for the current page view */ + minXOffset: number; + /** The maximum X scroll position for the current page view */ + minYOffset: number; + /** The minimum Y scroll position for the current page view */ + maxXOffset: number; + /** The maximum Y scroll position for the current page view */ + maxYOffset: number; +}; +``` + +A full example of how this might be used to aggregate page ping information and then send an event on page unload is below: + + + + +```javascript +snowplow('newTracker', 'sp', '{{collector_url_here}}', { + appId: 'my-app-id', + eventMethod: 'beacon' +}); +var aggregatedEvent = { + pageViewId: null, + minXOffset: 0, + maxXOffset: 0, + minYOffset: 0, + maxYOffset: 0, + numEvents: 0 +}; +snowplow('enableActivityTrackingCallback', { + minimumVisitLength: 10, + heartbeatDelay: 10, + callback: function (event) { + aggregatedEvent = { + pageViewId: event.pageViewId, + minXOffset: aggregatedEvent.minXOffset < event.minXOffset ? aggregatedEvent.minXOffset : event.minXOffset, + maxXOffset: aggregatedEvent.maxXOffset > event.maxXOffset ? aggregatedEvent.maxXOffset : event.maxXOffset, + minYOffset: aggregatedEvent.minYOffset < event.minYOffset ? aggregatedEvent.minYOffset : event.minYOffset, + maxYOffset: aggregatedEvent.maxYOffset > event.maxYOffset ? aggregatedEvent.maxYOffset : event.maxYOffset, + numEvents: aggregatedEvent.numEvents + 1 + }; +}); +document.addEventListener('visibilitychange', function() { + if (document.visibilityState == 'hidden') { + window.snowplow('trackSelfDescribingEvent', { + event: { + schema: 'iglu:com.acme_company/page_unload/jsonschema/1-0-0', + data: { + minXOffset: Math.max(0, Math.round(aggregatedEvent.minXOffset)), + maxXOffset: Math.max(0, Math.round(aggregatedEvent.maxXOffset)), + minYOffset: Math.max(0, Math.round(aggregatedEvent.minYOffset)), + maxYOffset: Math.max(0, Math.round(aggregatedEvent.maxYOffset)), + activeSeconds: aggregatedEvent.numEvents * 10 + } + } + }); + } +}); +window.snowplow('trackPageView'); +``` + + + +```javascript +import { + newTracker, + enableActivityTrackingCallback, + trackPageView, + trackSelfDescribingEvent +} from '@snowplow/browser-tracker'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', + eventMethod: 'beacon' +}); +var aggregatedEvent = { + pageViewId: null, + minXOffset: 0, + maxXOffset: 0, + minYOffset: 0, + maxYOffset: 0, + numEvents: 0 +}; +enableActivityTrackingCallback({ + minimumVisitLength: 10, + heartbeatDelay: 10, + callback: function (event) { + aggregatedEvent = { + pageViewId: event.pageViewId, + minXOffset: aggregatedEvent.minXOffset < event.minXOffset ? aggregatedEvent.minXOffset : event.minXOffset, + maxXOffset: aggregatedEvent.maxXOffset > event.maxXOffset ? aggregatedEvent.maxXOffset : event.maxXOffset, + minYOffset: aggregatedEvent.minYOffset < event.minYOffset ? aggregatedEvent.minYOffset : event.minYOffset, + maxYOffset: aggregatedEvent.maxYOffset > event.maxYOffset ? aggregatedEvent.maxYOffset : event.maxYOffset, + numEvents: aggregatedEvent.numEvents + 1 + }; +}); +document.addEventListener('visibilitychange', function() { + if (document.visibilityState == 'hidden') { + trackSelfDescribingEvent({ + event: { + schema: 'iglu:com.acme_company/page_unload/jsonschema/1-0-0', + data: { + minXOffset: Math.max(0, Math.round(aggregatedEvent.minXOffset)), + maxXOffset: Math.max(0, Math.round(aggregatedEvent.maxXOffset)), + minYOffset: Math.max(0, Math.round(aggregatedEvent.minYOffset)), + maxYOffset: Math.max(0, Math.round(aggregatedEvent.maxYOffset)), + activeSeconds: aggregatedEvent.numEvents * 10 + } + } + }); + } +}); +trackPageView(); +``` + + + + +:::note +For this technique of sending on visibility change to work reliably, we recommend initialising the Snowplow tracker with `eventMethod: 'beacon'` and/or `stateStorageStrategy: 'cookieAndLocalStorage'` (if navigating to a page that also contains the JS Tracker). Using the visibility change technique may not work as expected for Single Page Applications (SPA), you would need to send the aggregated event to the Snowplow collector on navigation within your application. +::: + +:::caution +The `iglu:com.acme_company/page_unload/jsonschema/1-0-0` schema used in the example is not a valid schema. Please define your own schema for these events. Otherwise, they will fail validation and go to the bad event queue. +::: + +We are using `visibilitychange` events as `beforeunload` isn't a reliable option for mobile devices when using `beacon`. You can read more about this on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon#description). An idea on the different levels of compatibility of the different Page Visiblity API across browsers and mobile can here found [here](https://www.igvita.com/2015/11/20/dont-lose-user-and-app-state-use-page-visibility/). + +### Disable callback + +:::note +Available since version 3.14 of the tracker. +::: + +To disable the activity tracking callback, you can use the `disableActivityTrackingCallback` method. + + + + +```javascript +snowplow('disableActivityTrackingCallback'); +``` + + + +```javascript +import { disableActivityTrackingCallback } from '@snowplow/browser-tracker'; + +disableActivityTrackingCallback(); +``` + + + +This will stop any further activity tracking callback from being executed. + +## Reset page ping on page view + +By default the tracker will reset the Page Ping timers, which were configured when `enableActivityTracking` is called, as well as reset the attached webPage context entities on all future Page Pings when a new [`trackPageView`](../page-views/index.md) event occurs. This is enabled by default as of 2.13.0 and is particularly useful for Single Page Applications (SPA). If you previously relied on this behavior, you can disable this functionality by specifying `resetActivityTrackingOnPageView: false` in the configuration object on tracker initialisation. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ads/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ads/index.md new file mode 100644 index 0000000000..f5ad52997e --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ads/index.md @@ -0,0 +1,328 @@ +--- +title: "Ads" +sidebar_position: 95 +--- + +# Ad tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Snowplow tracking code can be included in ad tags in order to track impressions and ad clicks. This is used by e.g. ad networks to identify which sites and web pages users visit across a network, so that they can be segmented, for example. + +Each ad tracking method has a `costModel` field and a `cost` field. If you provide the `cost` field, you must also provide one of `'cpa'`, `'cpc'`, and `'cpm'` for the `costModel` field. + +It may be the case that multiple ads from the same source end up on a single page. If this happens, it is important that the different Snowplow code snippets associated with those ads not interfere with one another. The best way to prevent this is to randomly name each tracker instance you create so that the probability of a name collision is negligible. See [Managing multiple trackers](../../tracker-setup/managing-multiple-trackers/index.md) for more on having more than one tracker instance on a single page. + +Snowplow ad events must be **manually tracked**. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ad-tracking@3/dist/index.umd.min.js", + ["snowplowAdTracking", "AdTrackingPlugin"] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-ad-tracking@3` +- `yarn add @snowplow/browser-plugin-ad-tracking@3` +- `pnpm add @snowplow/browser-plugin-ad-tracking@3` + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { AdTrackingPlugin, trackAdClick } from '@snowplow/browser-plugin-ad-tracking'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ AdTrackingPlugin() ], +}); +``` + + +
    + +## Events + +The ad tracking plugin includes three event types: ad impression, ad click, and ad conversion. + +### Impression + +Ad impression tracking is accomplished using the `trackAdImpression` method. Here are the arguments it accepts: + +| **Name** | **Required?** | **Description** | **Type** | +|----------------|---------------|----------------------------------------------------------------------|----------| +| `impressionId` | No | Identifier for the particular impression instance | string | +| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | +| `cost` | No | Ad cost | number | +| `targetUrl` | No | The destination URL | string | +| `bannerId` | No | Adserver identifier for the ad banner (creative) being displayed | string | +| `zoneId` | No | Adserver identifier for the zone where the ad banner is located | string | +| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | +| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | + +:::note +All properties are optional but you must specify at least 1 for this to be a valid call to `trackAdImpression`. +::: + +An example: + + + + +```javascript +snowplow('trackAdImpression', { + impressionId: '67965967893', + costModel: 'cpm', // 'cpa', 'cpc', or 'cpm' + cost: 5.5, + targetUrl: 'http://www.example.com', + bannerId: '23', + zoneId: '7', + advertiserId: '201', + campaignId: '12' +}); +``` + + + +Example usage: +```javascript +import { trackAdImpression } from '@snowplow/browser-plugin-ad-tracking'; + +trackAdImpression({ + impressionId: '67965967893', + costModel: 'cpm', // 'cpa', 'cpc', or 'cpm' + cost: 5.5, + targetUrl: 'http://www.example.com', + bannerId: '23', + zoneId: '7', + advertiserId: '201', + campaignId: '12' +}); +``` + + + + +Ad impression events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_impression/jsonschema/1-0-0) is the JSON schema for an ad impression event. + +### Click + +Ad click tracking is accomplished using the `trackAdClick` method. Here are the arguments it accepts: + +| **Name** | **Required?** | **Description** | **Type** | +|----------------|---------------|----------------------------------------------------------------------|----------| +| `targetUrl` | Yes | The destination URL | string | +| `clickId` | No | Identifier for the particular click instance | string | +| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | +| `cost` | No | Ad cost | number | +| `bannerId` | No | Adserver identifier for the ad banner (creative) being displayed | string | +| `zoneId` | No | Adserver identifier for the zone where the ad banner is located | string | +| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | +| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | + +An example: + + + + +```javascript +snowplow('trackAdClick', + targetUrl: 'http://www.example.com', + clickId: '12243253', + costModel: 'cpm', + cost: 2.5, + bannerId: '23', + zoneId: '7', + impressionId: '67965967893', // the same as in trackAdImpression + advertiserId: '201', + campaignId: '12' +); +``` + + + + +```javascript +import { trackAdClick } from '@snowplow/browser-plugin-ad-tracking'; + +trackAdClick({ + targetUrl: 'http://www.example.com', + clickId: '12243253', + costModel: 'cpm', + cost: 2.5, + bannerId: '23', + zoneId: '7', + impressionId: '67965967893', // the same as in trackAdImpression + advertiserId: '201', + campaignId: '12' +}); +``` + + + + +Ad click events are implemented as Snowplow self describing events.[Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_click/jsonschema/1-0-0) is the JSON schema for an ad click event. + +### Conversion + +Use the `trackAdConversion` method to track ad conversions. Here are the arguments it accepts: + +| **Name** | **Required?** | **Description** | **Type** | +|----------------|---------------|----------------------------------------------------------------------|----------| +| `conversionId` | No | Identifier for the particular conversion instance | string | +| `costModel` | No | The cost model for the campaign: 'cpc', 'cpm', or 'cpa' | string | +| `cost` | No | Ad cost | number | +| `category` | No | Conversion category | number | +| `action` | No | The type of user interaction, e.g. 'purchase' | string | +| `property` | No | Describes the object of the conversion | string | +| `initialValue` | No | How much the conversion is initially worth | number | +| `advertiserID` | No | Adserver identifier for the advertiser which the campaign belongs to | string | +| `campaignId` | No | Adserver identifier for the ad campaign which the banner belongs to | string | + +:::note +All properties are optional but you must specify at least one for this to be a valid call to `trackAdConversion`. +::: + +An example: + + + + +```javascript +snowplow('trackAdConversion', { + conversionId: '743560297', + costModel: 'cpa', + cost: 10, + category: 'ecommerce', + action: 'purchase', + property: '', + initialValue: 99, + advertiserId: '201', + campaignId: '12' +}); +``` + + + + +```javascript +import { trackAdConversion } from '@snowplow/browser-plugin-ad-tracking'; + +trackAdConversion({ + conversionId: '743560297', + costModel: 'cpa', + cost: 10, + category: 'ecommerce', + action: 'purchase', + property: '', + initialValue: 99, + advertiserId: '201', + campaignId: '12' +}); +``` + + + + +Ad conversion events are implemented as Snowplow self describing events. [Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/ad_conversion/jsonschema/1-0-0) is the schema for an ad conversion event. + +## Avoiding name collisions + +It may be the case that multiple ads from the same source end up on a single page. If this happens, it is important that the different Snowplow code snippets associated with those ads not interfere with one another. The best way to prevent this is to randomly name each tracker instance you create so that the probability of a name collision is negligible. See [Managing multiple trackers](../../tracker-setup/managing-multiple-trackers/index.md) for more on having more than one tracker instance on a single page. + +Below is an example of how to achieve this when using Snowplow ad impression tracking. + + + + +```javascript + + + +``` + + + + +```javascript +import { newTracker } from "@snowplow/browser-tracker"; +import { trackAdImpression } from '@snowplow/browser-plugin-ad-tracking'; + +var rnd = Math.random().toString(36).substring(2); + +newTracker(rnd, {{COLLECTOR_URL}}, { + appId: "myApp", + platform: "web" +}); + +trackAdImpression({ + impressionId: '67965967893', + costModel: 'cpm', // 'cpa', 'cpc', or 'cpm' + cost: 5.5, + targetUrl: 'http://www.example.com', + bannerId: '23', + zoneId: '7', + advertiserId: '201', + campaignId: '12', +}, [rnd]); +``` + + + + +Even if several copies of the above script appear on a page, the trackers created will all (probably) have different names and so will not interfere with one another. The same technique should be used when tracking ad clicks. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/button-click/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/button-click/index.md new file mode 100644 index 0000000000..813fda6fd3 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/button-click/index.md @@ -0,0 +1,325 @@ +--- +title: "Button clicks" +sidebar_position: 50 +--- + +# Button click tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +This plugin enables the automatic tracking of clicks on buttons, covering both ` +``` + +This will result in the following event: + +```json +{ + "schema": "iglu:com.snowplowanalytics.snowplow/button_click/jsonschema/1-0-0", + "data": { + // Note the label is "My custom label", not "Click me" + "label": "My custom label", + } +} +``` + +This can also be useful in the case of icon buttons, where there is no text on the button. + +## Full example + + + + +Suppose we have the following button on our page: + +```html + +``` + +We can configure the plugin to only track this button class: + +```javascript +window.snowplow('enableButtonClickTracking', { + filter: { + allowlist: ['nav-btn'], + } +}); +``` + +On click, this will result in the following event: + +```json +{ + "schema": "iglu:com.snowplowanalytics.snowplow/button_click/jsonschema/1-0-0", + "data": { + "label": "Home", + "id": "home-btn", + "classes": ["nav-btn", "blue-btn", "outlined"], + "name": "home" + } +} +``` + + + + +Suppose we have the following button on our page: + +```html + +``` + +We can configure the plugin to only track this button class: + +```javascript +import { enableButtonClickTracking } from '@snowplow/browser-plugin-button-click-tracking'; + +enableButtonClickTracking({ + filter: { + allowlist: ['nav-btn'], + } +}); +``` + +On click, this will result in the following event: + +```json +{ + "schema": "iglu:com.snowplowanalytics.snowplow/button_click/jsonschema/1-0-0", + "data": { + "label": "Home", + "id": "home-btn", + "classes": ["nav-btn", "blue-btn", "outlined"], + "name": "home" + } +} +``` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/campaigns-utms/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/campaigns-utms/index.md new file mode 100644 index 0000000000..2c44c8ec74 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/campaigns-utms/index.md @@ -0,0 +1,54 @@ +--- +title: "Campaigns and UTMs" +sidebar_position: 90 +--- + +# Campaigns and UTM tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Campaign tracking is used to identify the source of traffic coming to a website. + +At the highest level, we can distinguish **paid** traffic (that derives from ad spend) with **non-paid** traffic: visitors who come to the website by entering the URL directly, clicking on a link from a referrer site or clicking on an organic link returned in a search results, for example. + +In order to identify **paid** traffic, Snowplow users need to set five query parameters on the links used in ads. Snowplow checks for the presence of these query parameters on the web pages that users load: if it finds them, it knows that that user came from a paid source, and stores the values of those parameters so that it is possible to identify the paid source of traffic exactly. + +If the query parameters are not present, Snowplow reasons that the user is from a **non-paid** source of traffic. It then checks the page referrer (the url of the web page the user was on before visiting our website), and uses that to deduce the source of traffic: + +1. If the URL is identified as a search engine, the traffic medium is set to "organic" and Snowplow tries to derive the search engine name from the referrer URL domain and the keywords from the query string. +2. If the URL is a non-search 3rd party website, the medium is set to "referrer". Snowplow derives the source from the referrer URL domain. + +Campaign information is **automatically tracked**. + +### Identifying paid sources + +Your different ad campaigns (PPC campaigns, display ads, email marketing messages, Facebook campaigns etc.) will include one or more links to your website e.g.: + +```html +
    Visit website +``` + +We want to be able to identify people who've clicked on ads e.g. in a marketing email as having come to the site having clicked on a link in that particular marketing email. To do that, we modify the link in the marketing email with query parameters, like so: + +```html +Visit website +``` + +For the prospective customer clicking on the link, adding the query parameters does not change the user experience. (The user is still directed to the webpage at `http://mysite.com/myproduct.html`.) But Snowplow then has access to the fields given in the query string, and uses them to identify this user as originating from the October Newsletter, an email marketing campaign with campaign id = cn0201. + +### Anatomy of the query parameters + +Snowplow uses the same query parameters used by Google Analytics. Because of this, Snowplow users who are also using GA do not need to do any additional work to make their campaigns trackable in Snowplow as well as GA. Those parameters are: + +| **Parameter** | **Name** | **Description** | +|----------------|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| `utm_source` | Campaign source | Identify the advertiser driving traffic to your site e.g. Google, Facebook, autumn-newsletter etc. | +| `utm_medium` | Campaign medium | The advertising / marketing medium e.g. cpc, banner, email newsletter, in-app ad, cpa | +| `utm_campaign` | Campaign id | A unique campaign id. This can be a descriptive name or a number / string that is then looked up against a campaign table as part of the analysis | +| `utm_term` | Campaign term(s) | Used for search marketing in particular, this field is used to identify the search terms that triggered the ad being displayed in the search results. | +| `utm_content` | Campaign content | Used either to differentiate similar content or two links in the same ad. (So that it is possible to identify which is generating more traffic.) | + +The parameters are described in the [Google Analytics help page](https://support.google.com/analytics/answer/1033863). Google also provides a [urlbuilder](https://support.google.com/analytics/answer/1033867?hl=en) which can be used to construct the URL incl. query parameters to use in your campaigns. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/client-hints/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/client-hints/index.md new file mode 100644 index 0000000000..28769c2b40 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/client-hints/index.md @@ -0,0 +1,92 @@ +--- +title: "Client Hints" +sidebar_position: 150 +--- + +# Client Hints tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +User-agent [Client Hints](https://www.chromium.org/updates/ua-ch) are being rolled out across a number of browsers and are an alternative to the tracking the user-agent, which is particularly useful in those browsers which are freezing the user-agent string. See [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-CH#Browser_compatibility) for browser support. + +This is useful data to capture as browsers are moving away from high entropy user-agent strings. Client Hints offer useful information to understand browser usage without the potential to infringe on a users privacy as is often the case with the user-agent string. + +This context be enabled in two ways: + +1. `clientHints: true` + - This will capture the "basic" client hints +2. `clientHints: { includeHighEntropy: true }` + - This will capture the "basic" client hints as well as hints that are deemed "High Entropy" and could be used to fingerprint users. Browsers may choose to prompt the user before making this data available. + +To see what will be captured please see the JsonSchema file [org.ietf/http_client_hints/jsonschema/1-0-0](https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0). + +The Client Hints context entity is **automatically tracked** once configured. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-client-hints@3/dist/index.umd.min.js", + ["snowplowClientHints", "ClientHintsPlugin"] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-client-hints@3` +- `yarn add @snowplow/browser-plugin-client-hints@3` +- `pnpm add @snowplow/browser-plugin-client-hints@3` + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { ClientHintsPlugin } from '@snowplow/browser-plugin-client-hints'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ ClientHintsPlugin() ], + // Use ClientHintsPlugin(true) to capture high entropy values +}); +``` + + +
    + +## Context entity + +Adding this plugin will automatically capture [this](https://github.com/snowplow/iglu-central/blob/master/schemas/org.ietf/http_client_hints/jsonschema/1-0-0) context entity. + +**Example information**: + +```json +{ + "isMobile": false, + "brands": [ + { + "brand": "Google Chrome", + "version": "89" + }, + { + "brand": "Chromium", + "version": "89" + } + ] +} +``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/index.md new file mode 100644 index 0000000000..d43182aa89 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/index.md @@ -0,0 +1,374 @@ +--- +title: "Consent and GDPR" +sidebar_position: 100 +--- + +# Consent and GDPR tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Track user consent preferences selection events using the Enhanced Consent plugin. Additionally, add a context entity containing GDPR details to every event using the [original Consent plugin](./original/index.md). + +Enhanced consent events must be **manually tracked**. The GDPR context entity will be **automatically tracked** with all events if configured. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +```javascript +window.snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-enhanced-consent@3/dist/index.umd.min.js', + ['snowplowEnhancedConsentTracking', 'EnhancedConsentPlugin'] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-enhanced-consent@3` +- `yarn add @snowplow/browser-plugin-enhanced-consent@3` +- `pnpm add @snowplow/browser-plugin-enhanced-consent@3` + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { EnhancedConsentPlugin } from '@snowplow/browser-plugin-enhanced-consent'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ EnhancedConsentPlugin() ], +}); +``` + + +
    + +:::note +The plugin is available since version 3.8 of the tracker. +::: + +## Events + +API | Used for: +------------------------|-------------------------------------------------------- +`trackConsentAllow` | Track an acceptance of user consent. +`trackConsentSelected` | Track a specific selection of consented scopes. +`trackConsentPending` | Track the unconfirmed selection about user consent. +`trackConsentImplicit` | Track the implicit consent on user consent preferences. +`trackConsentDeny` | Track a denial of user consent. +`trackConsentExpired` | Track the expiration of a consent selection. +`trackConsentWithdrawn` | Track the withdrawal of user consent. +`trackCmpVisible` | Track the render time of a CMP banner. + +With the exception of the CMP visible event, these methods use the same [`consent_preferences`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/consent_preferences/jsonschema/1-0-0) event schema. It has the following properties: + +| Attribute | Type | Description | Required | +|:------------------:|:----------:|-------------------------------------------------------------------------------------------------------------------------------------|:--------:| +| basisForProcessing | `string` | GDPR lawful basis for data collection & processing. | ✅ | +| consentUrl | `string` | URI of the privacy policy related document. | ✅ | +| consentVersion | `string` | Version of the privacy policy related document. | ✅ | +| consentScopes | `string[]` | The scopes allowed after the user finalized their selection of consent preferences. E.g ['analytics', 'functional', 'advertisement']. | ✅ | +| domainsApplied | `string[]` | The domains for which this consent allows these preferences to persist to. | ✅ | +| gdprApplies | `boolean` | Determine if GDPR applies based on the user's geo-location. | ✘ | + + +### Consent allow + +To track the complete acceptance of a user consent prompt, you can use the `trackConsentAllow` method with the following attributes: + + + + +```js +window.snowplow("trackConsentAllow:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentAllow } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentAllow({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent selected + +To track the specific selection of scopes of a user consent preferences, you can use the `trackConsentSelected` method with the following attributes: + + + + +```js +window.snowplow("trackConsentSelected:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentSelected } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentSelected({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent pending + +Some consent management platform installations, allow the user to take website actions or/and navigating to other pages without accepting the consent prompt. To track the unconfirmed selection of user consent, you can use the `trackConsentPending` method with the following attributes: + + + + +```js +window.snowplow("trackConsentPending:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentPending } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentPending({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent implicit + +Some consent management platforms have a configuration which allows the setting of consent implicitly after a set of user interactions like clicks, scroll etc. To track the implicit selection of a user consent, you can use the `trackConsentImplicit` method with the following attributes: + + + + +```js +window.snowplow("trackConsentImplicit:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentImplicit } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentImplicit({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent deny + +To track the complete denial of a user consent, you can use the `trackConsentDeny` method with the following attributes: + + + + +```js +window.snowplow("trackConsentDeny:{trackerName}", { + consentScopes: ["necessary"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentDeny } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentDeny({ + consentScopes: ["necessary"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent expired + +To track the expiration of a user consent, you can use the `trackConsentExpired` method with the following attributes: + + + + +```js +window.snowplow("trackConsentExpired:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + +```js +import { trackConsentExpired } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentExpired({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### Consent withdrawn + +To track the withdrawal of a user consent, you can use the `trackConsentWithdrawn` method with the following attributes: + + + + +```js +window.snowplow("trackConsentWithdrawn:{trackerName}", { + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +```js +import { trackConsentWithdrawn } from "@snowplow/browser-plugin-enhanced-consent"; + +trackConsentWithdrawn({ + consentScopes: ["necessary", "marketing", "personalization"], + basisForProcessing: "consent", + consentUrl: "https://www.example.com/", + consentVersion: "1.0", + domainsApplied: ["https://www.example.com/"], + gdprApplies: true +}); +``` + + + + +### CMP visible + +Consent management platform banners are an important part of a website’s first impression and performance. Snowplow provides a way to track what we call `elapsedTime`, which is the timestamp of the consent management platform banner becoming visible on the user’s screen. + + + + +```js +window.snowplow("trackCmpVisible:{trackerName}", { + /* Using the performance.now API to retrieve the elapsed time from the page navigation. */ + elapsedTime: performance.now(), +}); +``` + + + + +```js +import { trackCmpVisible } from "@snowplow/browser-plugin-enhanced-consent"; + +trackCmpVisible({ + /* Using the performance.now API to retrieve the elapsed time from the page navigation. */ + elapsedTime: performance.now(), +}); +``` + + + +The CMP visible event uses [this](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/cmp_visible/jsonschema/1-0-0) schema. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/index.md similarity index 92% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/index.md index 2a19fb8f1b..62baf56272 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/index.md @@ -10,7 +10,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ``` -This plugin has been partially superseded by the [Enhanced Consent](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/index.md) plugin. This older plugin has only two `trackX` methods, but it does allow the addition of GDPR context entities to every event. +This plugin has been partially superseded by the [Enhanced Consent](../index.md) plugin. This older plugin has only two `trackX` methods, but it does allow the addition of GDPR context entities to every event. This plugin is the recommended way to track marketing consent events on your website. Functions, usage and a complete setup journey is showcased on the [Consent Tracking for Marketing accelerator](https://docs.snowplow.io/accelerators/consent/). @@ -29,13 +29,13 @@ Original consent events must be **manually tracked**. The GDPR context entity wi **Download:** -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    **Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. ```javascript -window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-consent@latest/dist/index.umd.min.js", +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-consent@3/dist/index.umd.min.js", ["snowplowConsent", "ConsentPlugin"] ); ``` @@ -43,16 +43,16 @@ window.snowplow('addPlugin', -- `npm install @snowplow/browser-plugin-consent` -- `yarn add @snowplow/browser-plugin-consent` -- `pnpm add @snowplow/browser-plugin-consent` +- `npm install @snowplow/browser-plugin-consent@3` +- `yarn add @snowplow/browser-plugin-consent@3` +- `pnpm add @snowplow/browser-plugin-consent@3` ```javascript import { newTracker, trackPageView } from '@snowplow/browser-tracker'; import { ConsentPlugin } from '@snowplow/browser-plugin-consent'; -newTracker('sp1', '{{collector_url}}', { - appId: 'my-app-id', +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', plugins: [ ConsentPlugin() ], }); ``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/enhanced/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/enhanced/index.md new file mode 100644 index 0000000000..3ddaa6d562 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/enhanced/index.md @@ -0,0 +1,368 @@ +--- +title: "Enhanced" +sidebar_position: 70 +--- + +# Enhanced ecommerce tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +:::tip +This plugin has been superseded by the [Snowplow ecommerce plugin](../index.md). We highly recommend using this newer plugin, which is more fully featured and allows you to use the DBT model we provide. +::: + +This plugin is based on Google Analytics' Enhanced Ecommerce package. For more information on the Enhanced Ecommerce functions please see the Google Analytics [documentation](https://developers.google.com/analytics/devguides/collection/analyticsjs/enhanced-ecommerce). + +Enhanced ecommerce events must be **manually tracked**. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-enhanced-ecommerce@3/dist/index.umd.min.js", + ["snowplowEnhancedEcommerce", "EnhancedEcommercePlugin"] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-enhanced-ecommerce@3` +- `yarn add @snowplow/browser-plugin-enhanced-ecommerce@3` +- `pnpm add @snowplow/browser-plugin-enhanced-ecommerce@3` + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { EnhancedEcommercePlugin, trackEnhancedEcommerceAction } from '@snowplow/browser-plugin-enhanced-ecommerce'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ EnhancedEcommercePlugin() ], +}); +``` + + +
    + +## Event + +The enhanced ecommerce plugin is based around the `EnhancedEcommerceAction` event, to which can be added the Action, Impression, Product and Promo context entities. The context entities must be added first, before the event is tracked. + +Use the `trackEnhancedEcommerceAction` method to track a GA Enhanced Ecommerce Action. When this function is called all of the added Ecommerce context entities are attached to this action and flushed from the tracker. + +| **Name** | **Required?** | **Type** | +|----------|---------------|----------| +| `action` | Yes | string | + +The allowed actions: + +- `click` +- `detail` +- `add` +- `remove` +- `checkout` +- `checkout_option` +- `purchase` +- `refund` +- `promo_click` +- `view` + +Adding an action using Google Analytics: + +```javascript +ga('ec:setAction', 'refund', { + 'id': 'T12345' +}); +``` + +Adding an action using Snowplow: + + + + +```javascript +snowplow('addEnhancedEcommerceActionContext', { + id: 'T12345' +}); +snowplow('trackEnhancedEcommerceAction', { + action: 'refund' +}); +``` + + + +```javascript +addEnhancedEcommerceActionContext({ id: 'T12345' }); +trackEnhancedEcommerceAction({ action: 'refund' }); +``` + + + +## Context entities + +The enhanced ecommerce context entities are specific to this plugin, and cannot be added to any other event types. + +### Action + +Use the `addEnhancedEcommerceActionContext` method to add a GA Enhanced Ecommerce Action Context to the Tracker: + +| **Name** | **Required?** | **Type** | +|---------------|---------------|-------------------| +| `id` | Yes | string | +| `affiliation` | No | string | +| `revenue` | No | number OR string | +| `tax` | No | number OR string | +| `shipping` | No | number OR string | +| `coupon` | No | string | +| `list` | No | string | +| `step` | No | integer OR string | +| `option` | No | string | +| `currency` | No | string | + +Adding an action using Google Analytics: + +```javascript +ga('ec:setAction', 'purchase', { + 'id': 'T12345', + 'affiliation': 'Google Store - Online', + 'revenue': '37.39', + 'tax': '2.85', + 'shipping': '5.34', + 'coupon': 'SUMMER2013' +}); +``` + +:::note +The action type is passed with the action context in the Google Analytics example. We have separated this by asking you to call the `trackEnhancedEcommerceAction` function to actually send the context and the action. +::: + +Adding an action using Snowplow: + + + + +```javascript +snowplow('addEnhancedEcommerceActionContext', { + id: 'T12345', + affiliation: 'Google Store - Online', + revenue: '37.39', // Can also pass as number + tax: '2.85', // Can also pass as number + shipping: '5.34', // Can also pass as number + coupon: 'WINTER2016' +}); +`` + + + +```javascript +addEnhancedEcommerceActionContext({ + id: 'T12345', + affiliation: 'Google Store - Online', + revenue: '37.39', // Can also pass as number + tax: '2.85', // Can also pass as number + shipping: '5.34', // Can also pass as number + coupon: 'WINTER2016' +}); +``` + + + + +### Impression + +Use the `addEnhancedEcommerceImpressionContext` method to add a GA Enhanced Ecommerce Impression Context to the Tracker: + +| **Name** | **Required?** | **Type** | +|------------|---------------|-------------------| +| `id` | Yes | string | +| `name` | No | string | +| `list` | No | string | +| `brand` | No | string | +| `category` | No | string | +| `variant` | No | string | +| `position` | No | integer OR string | +| `price` | No | number OR string | +| `currency` | No | string | + +Adding an impression using Google Analytics: + +```javascript +ga('ec:addImpression', { + 'id': 'P12345', + 'name': 'Android Warhol T-Shirt', + 'list': 'Search Results', + 'brand': 'Google', + 'category': 'Apparel/T-Shirts', + 'variant': 'Black', + 'position': 1 +}); +``` + +Adding an impression using Snowplow: + + + + +```javascript +snowplow('addEnhancedEcommerceImpressionContext', { + id: 'P12345', + name: 'Android Warhol T-Shirt', + list: 'Search Results', + brand: 'Google', + category: 'Apparel/T-Shirts', + variant: 'Black', + position: 1 +}); +``` + + + + +```javascript +addEnhancedEcommerceImpressionContext({ + id: 'P12345', + name: 'Android Warhol T-Shirt', + list: 'Search Results', + brand: 'Google', + category: 'Apparel/T-Shirts', + variant: 'Black', + position: 1 +}); +``` + + + + +### Product + +Use the `addEnhancedEcommerceProductContext` method to add a GA Enhanced Ecommerce Product Field Context: + +| **Name** | **Required?** | **Type** | +|------------|---------------|-------------------| +| `id` | Yes | string | +| `name` | No | string | +| `list` | No | string | +| `brand` | No | string | +| `category` | No | string | +| `variant` | No | string | +| `price` | No | number OR string | +| `quantity` | No | integer OR string | +| `coupon` | No | string | +| `position` | No | integer OR string | +| `currency` | No | string | + +Adding a product using Google Analytics: + +```javascript +ga('ec:addProduct', { + 'id': 'P12345', + 'name': 'Android Warhol T-Shirt', + 'brand': 'Google', + 'category': 'Apparel/T-Shirts', + 'variant': 'Black', + 'position': 1 +}); +``` + +Adding a product using Snowplow: + + + + +```javascript +snowplow('addEnhancedEcommerceProductContext', { + id: 'P12345', + name: 'Android Warhol T-Shirt', + list: 'Search Results', + brand: 'Google', + category: 'Apparel/T-Shirts', + variant: 'Black', + quantity: 1 +}); +``` + + + +```javascript +addEnhancedEcommerceProductContext({ + id: 'P12345', + name: 'Android Warhol T-Shirt', + list: 'Search Results', + brand: 'Google', + category: 'Apparel/T-Shirts', + variant: 'Black', + quantity: 1 +}); +``` + + + + +### Promo + +Use the `addEnhancedEcommercePromoContext` method to add a GA Enhanced Ecommerce Promotion Field Context: + +| **Name** | **Required?** | **Type** | +|------------|---------------|----------| +| `id` | Yes | string | +| `name` | No | string | +| `creative` | No | string | +| `position` | No | string | +| `currency` | No | string | + +Adding a promotion using Google Analytics: + +```javascript +ga('ec:addPromo', { + 'id': 'PROMO_1234', + 'name': 'Summer Sale', + 'creative': 'summer_banner2', + 'position': 'banner_slot1' +}); +``` + +Adding a promotion using Snowplow: + + + + +```javascript +snowplow('addEnhancedEcommercePromoContext', { + id: 'PROMO_1234', // The Promotion ID + name: 'Summer Sale', // The name + creative: 'summer_banner2', // The name of the creative + position: 'banner_slot1' // The position +}); +``` + + + + +```javascript +addEnhancedEcommercePromoContext({ + id: 'PROMO_1234', // The Promotion ID + name: 'Summer Sale', // The name + creative: 'summer_banner2', // The name of the creative + position: 'banner_slot1' // The position +}); +``` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/index.md new file mode 100644 index 0000000000..4cbe1067e4 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/index.md @@ -0,0 +1,1429 @@ +--- +title: "Ecommerce" +sidebar_position: 70 +--- + +# Snowplow ecommerce tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +This plugin is the recommended way to track ecommerce events on your store. Functions, usage and a complete setup journey is showcased on the [E-commerce Web Accelerator](https://docs.snowplow.io/accelerators/ecommerce/). + +It provides several `trackX` methods, which each create a Snowplow ecommerce action event with the appropriate entities attached. The event itself has only one property, an enum describing the ecommerce action taken e.g. "add_to_cart". View the schema [here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.ecommerce/snowplow_ecommerce_action/jsonschema/1-0-2). All the provided data is sent in context entities. + +There are also two context entities that can be globally configured: ecommerce page and ecommerce user. + +:::note +The plugin is available since version 3.8 of the tracker. +::: + +Snowplow ecommerce events and entities must be **manually tracked**. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +```javascript +window.snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-snowplow-ecommerce@3/dist/index.umd.min.js', + ['snowplowEcommerceAccelerator', 'SnowplowEcommercePlugin'] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-snowplow-ecommerce@3` +- `yarn add @snowplow/browser-plugin-snowplow-ecommerce@3` +- `pnpm add @snowplow/browser-plugin-snowplow-ecommerce@3` + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { SnowplowEcommercePlugin } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ SnowplowEcommercePlugin() ], +}); +``` + + +
    + +## Events + +API | Used for: +------------------------|----------------------------------------------------------------------------------------------------------------------------------------------- +`trackProductView` | Tracking a visit to a product page. Known also as product detail view. +`trackAddToCart` | Track an addition to cart. +`trackRemoveFromCart` | Track a removal from cart. +`trackProductListView` | Track an impression of a product list. The list could be a search results page, recommended products, upsells etc. +`trackProductListClick` | Track the click/selection of a product from a product list. +`trackPromotionView` | Track an impression for an internal promotion banner or slider or any other type of content that showcases internal products/categories. +`trackPromotionClick` | Track the click/selection of an internal promotion. +`trackCheckoutStep` | Track a checkout step completion in the checkout process together with common step attributes for user choices throughout the checkout funnel. +`trackTransaction` | Track a transaction/purchase completion. +`trackRefund` | Track a transaction partial or complete refund. +`trackTransactionError` | Track an error happening during a transaction process. + +### Product view + +To track a product view you can use the `trackProductView` method with the following attributes: + + + + +```js +window.snowplow("trackProductView:{trackerName}", { + id: "12345", + name: "Baseball T", + brand: "Snowplow", + category: "apparel", + price: 200, + currency: "USD", +}); +``` + + + + +```js +import { trackProductView } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackProductView({ + id: "12345", + name: "Baseball T", + brand: "Snowplow", + category: "apparel", + price: 200, + currency: "USD", +}); +``` + + + + +### Add to cart + +To track a product/s addition to the cart you can use the `trackAddToCart` method with the following attributes: + + + + +```js +window.snowplow("trackAddToCart:{trackerName}", { + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + currency: "USD", + }, + ], + total_value: 200, + currency: "USD", +}); +``` + + + + +```js +import { trackAddToCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackAddToCart({ + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + currency: "USD", + }, + ], + total_value: 200, + currency: "USD", +}); +``` + + + + +- Where `products` is an array with the product/s added to cart. +- Where `total_value` is the value of the cart after the addition. +- Where `currency` is the currency of the cart. + +### Remove from cart + +To track a product/s removal from the cart you can use the `trackRemoveFromCart` method with the following attributes: + + + + +```js +window.snowplow("trackRemoveFromCart:{trackerName}", { + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + currency: "USD", + }, + ], + total_value: 0, + currency: "USD", +}); +``` + + + + +```js +import { trackRemoveFromCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackRemoveFromCart({ + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + currency: "USD", + }, + ], + total_value: 0, + currency: "USD", +}); +``` + + + + +- Where `products` is an array with the product/s removed from the cart. +- Where `total_value` is the value of the cart after the removal of the product/s. +- Where `currency` is the currency of the cart. + +### Product list view + +To track a product list view you can use the `trackProductListView` method with the following attributes: + + + + +```js +window.snowplow("trackProductListView:{trackerName}", { + products: [ + { + id: "P123", + name: "Fashion red", + brand: "Snowplow", + category: "Mens/Apparel", + price: 100, + inventory_status: "in stock", + currency: "USD", + position: 1, + }, + { + id: "P124", + name: "Fashion green", + brand: "Snowplow", + category: "Mens/Apparel", + price: 119, + inventory_status: "in stock", + currency: "USD", + position: 2, + }, + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + position: 3, + }, + ], + name: "Recommended Products", +}); +``` + + + + +```js +import { trackProductListView } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackProductListView({ + products: [ + { + id: "P123", + name: "Fashion red", + brand: "Snowplow", + category: "Mens/Apparel", + price: 100, + inventory_status: "in stock", + currency: "USD", + position: 1, + }, + { + id: "P124", + name: "Fashion green", + brand: "Snowplow", + category: "Mens/Apparel", + price: 119, + inventory_status: "in stock", + currency: "USD", + position: 2, + }, + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + position: 3, + }, + ], + name: "Recommended Products", +}); +``` + + + + +- Where `products` is an array of products being viewed from the list. +- Where `name` is the name of the list being viewed. For the list names, you can use any kind of friendly name or a codified language to express the labeling of the list. E.g. 'Shoes - Men - Sneakers','Search results: "unisex shoes"', 'Product page upsells' + +### Product list click + + + + +```js +window.snowplow("trackProductListClick:{trackerName}", { + product: { + id: "P124", + name: "Fashion green", + brand: "Snowplow", + category: "Mens/Apparel", + price: 119, + inventory_status: "in stock", + currency: "USD", + position: 2, + }, + name: "Recommended Products", +}); +``` + + + + +```js +import { trackProductListClick } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackProductListClick({ + product: { + id: "P124", + name: "Fashion green", + brand: "Snowplow", + category: "Mens/Apparel", + price: 119, + inventory_status: "in stock", + currency: "USD", + position: 2, + }, + name: "Recommended Products", +}); +``` + + + + +- Where `product` is the product being clicked/selected from the list. +- Where `name` is the name of the list the product is currently in. For the list names, you can use any kind of friendly name or a codified language to express the labeling of the list. E.g. 'Shoes - Men - Sneakers','Search results: "unisex shoes"', 'Product page upsells' + +### Promotion view + + + + +```js +/* Carousel slide 1 viewed */ +window.snowplow("trackPromotionView:{trackerName}", { + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 1, + product_ids: ['P1234'], +}); + +/* On carousel slide 2 view */ +window.snowplow("trackPromotionView:{trackerName}", { + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 2, + product_ids: ['P1235'], +}); +``` + + + +```js +import { trackPromotionView } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +/* Carousel slide 1 viewed */ +trackPromotionView({ + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 1, + product_ids: ['P1234'], +}); + +/* On carousel slide 2 view */ +trackPromotionView({ + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 2, + product_ids: ['P1235'], +}); +``` + + + + + +### Promotion click + + + + +```js +window.snowplow("trackPromotionClick:{trackerName}", { + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 1, + product_ids: ['P1234'], +}); +``` + + + + +```js +import { trackPromotionClick } from "@snowplow/browser-plugin-snowplow-ecommerce"; + +trackPromotionClick({ + id: 'IP1234', + name: 'promo_winter', + type: 'carousel', + position: 1, + product_ids: ['P1234'], +}); +``` + + + + +### Checkout step + +To track a checkout step you can use the `trackCheckoutStep` method with the following attributes: + + + + +```js +/* Step 1 - Account type selection */ +window.snowplow("trackCheckoutStep:{trackerName}", { + step: 1, + account_type: "guest checkout", +}); + +/* Step 2 - Billing options selection */ +window.snowplow("trackCheckoutStep:{trackerName}", { + step: 2, + payment_method: "credit card", + proof_of_payment: "invoice", +}); +``` + + + + +```js +import { trackCheckoutStep } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +/* Step 1 - Account type selection */ +trackCheckoutStep({ + step: 1, + account_type: "guest checkout", +}); + +/* Step 2 - Billing options selection */ +trackCheckoutStep({ + step: 2, + payment_method: "credit card", + proof_of_payment: "invoice", +}); +``` + + + + +### Transaction + +To track a completed transaction you can use the `trackTransaction` method with the following attributes: + + + + +```js +window.snowplow("trackTransaction:{trackerName}", { + transaction_id: "T12345", + revenue: 230, + currency: "USD", + payment_method: "credit_card", + total_quantity: 1, + tax: 20, + shipping: 10, + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + quantity: 1, + }, + ], +}); +``` + + + + +```js +import { trackTransaction } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackTransaction({ + transaction_id: "T12345", + revenue: 230, + currency: "USD", + payment_method: "credit_card", + total_quantity: 1, + tax: 20, + shipping: 10, + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + quantity: 1, + }, + ], +}); +``` + + + + +- Where `products` is an array with the product/s taking part in the transaction. + +### Refund + +:::note +Available from version 3.10. +::: + +To track a complete or partial refund you can use the `trackRefund` method with the following attributes: + + + + +```js +window.snowplow("trackRefund:{trackerName}", { + transaction_id: "T12345", + currency: "USD", + refund_amount: 200, + refund_reason: "return", + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + quantity: 1, + }, + ], +}); +``` + + + + +```js +import { trackRefund } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackRefund({ + transaction_id: "T12345", + currency: "USD", + refund_amount: 200, + refund_reason: "return", + products: [ + { + id: "P125", + name: "Baseball T", + brand: "Snowplow", + category: "Mens/Apparel", + price: 200, + inventory_status: "in stock", + currency: "USD", + quantity: 1, + }, + ], +}); +``` + + + + +- Where `products` is an array with the product/s taking part in the refund. + +### Transaction error + +:::note +Available from version 3.13. +::: + +To track an error happening during a transaction process you can use the `trackTransactionError` method with the following attributes: + + + + +```js +window.snowplow("trackTransactionError:{trackerName}", { + resolution: "rejection", + error_code: "E123", + error_shortcode: "CARD_DECLINE", + error_description: "Card has been declined by the issuing bank.", + error_type: "hard", + transaction: { + revenue: 45, + currency: "EUR", + transaction_id: "T12345", + payment_method: "card", + total_quantity: 1 + } +}); +``` + + + + +```js +import { trackTransactionError } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackTransactionError({ + resolution: "rejection", + error_code: "E123", + error_shortcode: "CARD_DECLINE", + error_description: "Card has been declined by the issuing bank.", + error_type: "hard", + transaction: { + revenue: 45, + currency: "EUR", + transaction_id: "T12345", + payment_method: "card", + total_quantity: 1 + } +}); +``` + + + + +- Where `transaction` is the transaction entity being processed. + +## Page and user entities + +Once set, the ecommerce page or user context entity will be attached to **all* subsequent Snowplow events. + +### Page type + +To set a Page type context entity you can use the `setPageType` method with the following attributes: + + + + +```js +window.snowplow("setPageType:{trackerName}", { type, language, locale }); +``` + + + + +```js +import { setPageType } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +setPageType({ type, language, locale }); +``` + + + + +After setting the Page context entity, it will be attached to every subsequent Snowplow event. + +An ecommerce page entity can have the following attributes: + +| attribute | type | description | required | +|:---------:|:--------:|:---------------------------------------------------------------------------------:|:--------:| +| type | `string` | The type of the page that was visited E.g. homepage, product page, checkout page. | ✅ | +| language | `string` | The language that the web page is based in. | ✘ | +| locale | `string` | The locale version of the site that is running. | ✘ | + +Relevant Iglu schema + +### Ecommerce user + +To set an Ecommerce User context entity you can use the `setEcommerceUser` method with the following attributes: + + + + +```js +window.snowplow("setEcommerceUser:{trackerName}", { id, is_guest, email }); +``` + + + +```js +import { setEcommerceUser } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +setEcommerceUser({ id, is_guest, email }); +``` + + + + +After setting the User context entity, it will be attached to every subsequent Snowplow event. + +An ecommerce user entity can have the following attributes: + +| attribute | type | description | required | +|:---------:|:---------:|:-----------------------------------:|:--------:| +| id | `string` | The user ID. | ✅ | +| is_guest | `boolean` | Whether or not the user is a guest. | ✘ | +| email | `string` | The user's email address. | ✘ | + +Relevant Iglu schema + +## Automatically generated entities + +All the provided data is sent as context entities attached to the generic Snowplow ecommerce action event. For example, tracking a product view results in an ecommerce action event (type "product_view") with one product entity attached. + +### Product + +Whenever there is a product entity involved in the ecommerce interaction event, the `product` or array of `products` can have the following attributes: + +| attribute | type | description | required | +|:----------------:|:--------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------:| +| id | `string` | SKU or product ID. | ✅ | +| currency | `string` | Currency in which the product is being priced (ISO 4217). | ✅ | +| price | `number` | Price of the product at the current time. | ✅ | +| name | `string` | Name or title of the product. | ✘ | +| category | `string` | Category the product belongs to. Use a consistent separator to express multiple levels. E.g. Woman/Shoes/Sneakers. The number of levels is defined by the user. | ✘ | +| list_price | `number` | Recommended or list price of a product. | ✘ | +| quantity | `number` | Quantity of the product taking part in the action. Used for Cart events. | ✘ | +| size | `string` | Size of the product. E.g. XL, XS, M. | ✘ | +| variant | `string` | Variant of the product. E.g. Red, Heavy, Leather. | ✘ | +| brand | `string` | Brand of the product. | ✘ | +| inventory_status | `string` | Inventory status of the product. E.g. in stock, out of stock, preorder, backorder. | ✘ | +| position | `number` | Position the product was presented in a list of products. Used in Product List events. | ✘ | +| creative_id | `string` | Identifier/Name/Url for the creative presented on a list or product view. | ✘ | + +Relevant Iglu schema + +### Internal promotion + +On internal promotion events, an internal promotion can have the following attributes: + +| attribute | type | description | required | +|:-----------:|:----------:|:--------------------------------------------------------------------------------------------------------------------:|:--------:| +| id | `string` | The unique ID representing this promotion element. | ✅ | +| name | `string` | The friendly name for this promotion element. | ✘ | +| product_ids | `string[]` | An array of SKUs or product IDs showcased in this promotion element. | ✘ | +| position | `integer` | The position this promotion element was presented in a list of promotions E.g. banner, slider. | ✘ | +| creative_id | `string` | Identifier/Name/Url for the creative presented on this promotion element. | ✘ | +| type | `string` | The type of the promotion delivery mechanism. E.g. popup, banner, intra-content. | ✘ | +| slot | `string` | The website slot in which the promotional content was added to. E.g. Identifier for slot sidebar-1, intra-content-2. | ✘ | + + +Relevant Iglu schema + +### Cart + +On cart interaction ecommerce events, a cart can have the following attributes: + +| attribute | type | description | required | +|:-----------:|:--------:|:---------------------------------------------------:|:--------:| +| total_value | `number` | The total value of the cart after this interaction. | ✅ | +| currency | `string` | The currency used for this cart (ISO 4217). | ✅ | +| cart_id | `string` | The unique ID representing this cart. | ✘ | + +Relevant Iglu schema + +### Checkout step + +Whenever there is a checkout entity involved in the ecommerce interaction event, it can have the following attributes: + +| attribute | type | description | required | +|:---------------------:|:---------:|:-----------------------------------------------------------------------------------------------------------------------:|:--------:| +| step | `number` | Checkout step index. | ✅ | +| shipping_postcode | `string` | Shipping address postcode. | ✘ | +| billing_postcode | `string` | Billing address postcode. | ✘ | +| shipping_full_address | `string` | Full shipping address. | ✘ | +| billing_full_address | `string` | Full billing address. | ✘ | +| delivery_provider | `string` | Can be used to discern delivery providers DHL, PostNL etc. | ✘ | +| delivery_method | `string` | Can be used to discern delivery methods selected E.g. store pickup, standard delivery, express delivery, international. | ✘ | +| coupon_code | `string` | Coupon applied at checkout. | ✘ | +| account_type | `string` | Type of account used on checkout. E.g. existing user, guest. | ✘ | +| payment_method | `string` | Any kind of payment method the user selected to proceed E.g. card, PayPal, Alipay etc. | ✘ | +| proof_of_payment | `string` | Invoice or receipt. | ✘ | +| marketing_opt_in | `boolean` | If opted in to marketing campaigns. | ✘ | + +Relevant Iglu schema + +### Transaction + +Whenever there is a transaction entity involved in the ecommerce interaction event, it can have the following attributes: + +| attribute | type | description | required | +|:---------------:|:---------:|:-------------------------------------------------:|:--------:| +| transaction_id | `string` | The ID of the transaction | ✅ | +| currency | `string` | The currency used for the transaction (ISO 4217). | ✅ | +| revenue | `number` | The revenue of the transaction. | ✅ | +| payment_method | `string` | The payment method used for the transaction. | ✅ | +| total_quantity | `number` | Total quantity of items in the transaction. | ✅ | +| tax | `number` | Total amount of tax on the transaction. | ✘ | +| shipping | `number` | Total cost of shipping on the transaction. | ✘ | +| discount_code | `string` | Discount code used. | ✘ | +| discount_amount | `number` | Discount amount taken off. | ✘ | +| credit_order | `boolean` | Whether the transaction is a credit order or not. | ✘ | + +Relevant Iglu schema + +### Refund + +Whenever there is a refund entity involved in the ecommerce interaction event, it can have the following attributes: + +| attribute | type | description | required | +|:--------------:|:--------:|:-------------------------------------------------:|:--------:| +| transaction_id | `string` | The ID of the transaction | ✅ | +| currency | `string` | The currency used for the transaction (ISO 4217). | ✅ | +| refund_amount | `number` | The amount refunded from the transaction. | ✅ | +| refund_reason | `string` | The reason that resulted in a refund. | ✘ | + +Relevant Iglu schema + +### Transaction error + +Whenever there is a transaction error entity involved in the ecommerce interaction event, it can have the following attributes: + +| attribute | type | description | required | +|:-----------------:|:-------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------:| +| error_code | `string` | Error-identifying code for the transaction issue. E.g. E522 | ✘ | +| error_shortcode | `string` | Shortcode for the error occurred in the transaction. E.g. declined_by_stock_api, declined_by_payment_method, card_declined, pm_card_radarBlock | ✘ | +| error_description | `number` | Longer description for the error occurred in the transaction. | ✘ | +| error_type | `Enum string` | Either `'hard'` or `'soft'`. Hard error types mean the customer must provide another form of payment e.g. an expired card. Soft errors can be the result of temporary issues where retrying might be successful e.g. processor declined the transaction. | ✘ | +| resolution | `string` | The resolution selected for the error scenario. E.g. retry_allowed, user_blacklisted, block_gateway, contact_user, default | ✘ | + +Relevant Iglu schema + +## GA4/UA Ecommerce transitional API + +:::note +Available from version 3.10. +::: + +If you already use Google Analytics 4 ecommerce or Universal Analytics Enhanced Ecommerce to collect information about the shopping behavior of your users, we have prepared a way to quickly implement Snowplow Ecommerce without making many changes on your current setup. + +The _transitional_ API that we provide, depends on the standardized [dataLayer](https://developers.google.com/tag-platform/tag-manager/web/datalayer) structure for both Google Analytics ecommerce implementations. This would make it easier for the transition to happen either through Google Tag Manager, which has more control over the dataLayer, or custom code that uses the standard ecommerce structures. + +:::info +To learn more about how to use this transitional API, you should go ahead and visit our [Ecommerce Web Accelerator](https://docs.snowplow.io/accelerators/ecommerce/tracking/ua_ga4_migration/) dedicated page which describes the usage of these methods and more. +::: + +### Universal Analytics Enhanced Ecommerce + +The standard Universal Analytics Enhanced Ecommerce implementation is based on the official [guide reference](https://developers.google.com/analytics/devguides/collection/ua/gtm/enhanced-ecommerce). + +**Important:** The `dataLayer.currencyCode` attribute must be available for all product interactions. Otherwise, almost all methods accept an `Options` object which can include the currency code as follows: + +```ts +method({{dataLayer.ecommerce reference}} , { currency: "currency code" }); +``` + +#### trackEnhancedEcommerceProductListView + +To track an Enhanced Ecommerce product list view, you can use the `trackEnhancedEcommerceProductListView` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceProductListView:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackEnhancedEcommerceProductListView } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceProductListView({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackEnhancedEcommerceProductListClick + +To track an Enhanced Ecommerce product list click, you can use the `trackEnhancedEcommerceProductListClick` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceProductListClick:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackEnhancedEcommerceProductListClick } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceProductListClick({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackEnhancedEcommerceProductDetail + +To track an Enhanced Ecommerce product detail view, you can use the `trackEnhancedEcommerceProductDetail` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceProductDetail:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackEnhancedEcommerceProductDetail } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceProductDetail({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackEnhancedEcommercePromoView + +To track an Enhanced Ecommerce internal promotion view, you can use the `trackEnhancedEcommercePromoView` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommercePromoView:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackEnhancedEcommercePromoView } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommercePromoView({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackEnhancedEcommercePromoClick + +To track an Enhanced Ecommerce internal promotion click, you can use the `trackEnhancedEcommercePromoClick` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommercePromoClick:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackEnhancedEcommercePromoClick } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommercePromoClick({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackEnhancedEcommerceAddToCart + +To track an Enhanced Ecommerce add to cart event, you can use the `trackEnhancedEcommerceAddToCart` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceAddToCart:{trackerName}", {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +```js +import { trackEnhancedEcommerceAddToCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceAddToCart( {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +- Where `finalCartValue` is the value of the cart after the addition. + +#### trackEnhancedEcommerceRemoveFromCart + +To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommerceRemoveFromCart` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceRemoveFromCart:{trackerName}", {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +```js +import { trackEnhancedEcommerceRemoveFromCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceRemoveFromCart( {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +- Where `finalCartValue` is the value of the cart after the removal. + +#### trackEnhancedEcommerceCheckoutStep + +To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommerceCheckoutStep` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommerceCheckoutStep:{trackerName}", {{dataLayer.ecommerce reference}}, { + checkoutOption: { delivery_method: "express_delivery" }, +}); +``` + + + + +```js +import { trackEnhancedEcommerceCheckoutStep } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommerceCheckoutStep( {{dataLayer.ecommerce reference}}, { + checkoutOption: { delivery_method: "express_delivery" }, +}); +``` + + + + +- Where `checkoutOption` is a key value pair object of available [Snowplow checkout options](https://github.com/snowplow/iglu-central/tree/master/schemas/com.snowplowanalytics.snowplow.ecommerce/checkout_step), except `step` which is retrieved from the dataLayer directly. + +#### trackEnhancedEcommercePurchase + +To track an Enhanced Ecommerce remove from cart event, you can use the `trackEnhancedEcommercePurchase` method with the following attributes: + + + + +```js +window.snowplow("trackEnhancedEcommercePurchase:{trackerName}", {{dataLayer.ecommerce reference}}, { + paymentMethod: "bank_transfer", +}); +``` + + + + +```js +import { trackEnhancedEcommercePurchase } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackEnhancedEcommercePurchase( {{dataLayer.ecommerce reference}}, { + paymentMethod: "bank_transfer", +}); +``` + + + + +- Where `paymentMethod` is the payment method selected in this transaction. This attributes corresponds to the `payment_method` of the [transaction schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.ecommerce/transaction/jsonschema/1-0-0#L30). Defaults to `unknown`. + +### Google Analytics 4 Ecommerce + +The Google Analytics 4 ecommerce implementation is based on the official [guide reference](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm). + +**Important:** The `dataLayer.ecommerce.currency` attribute must be available for all product interactions. Otherwise, almost all methods accept an `Options` object which can include the currency code as follows: + +```ts +method( {{dataLayer.ecommerce reference}} , { currency: "currency code" }); +``` + +#### trackGA4ViewItemList + +To track an GA4 Ecommerce item list view, you can use the `trackGA4ViewItemList` method with the following attributes: + + + + +```js +window.snowplow("trackGA4ViewItemList:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackGA4ViewItemList } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4ViewItemList({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackGA4SelectItem + +To track an GA4 Ecommerce item selection from a list, you can use the `trackGA4SelectItem` method with the following attributes: + + + + +```js +window.snowplow("trackGA4SelectItem:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackGA4SelectItem } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4SelectItem({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackGA4ViewItem + +To track an GA4 Ecommerce item view, you can use the `trackGA4ViewItem` method with the following attributes: + + + + +```js +window.snowplow("trackGA4ViewItem:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackGA4ViewItem } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4ViewItem({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackGA4ViewPromotion + +To track an GA4 Ecommerce internal promotion view, you can use the `trackGA4ViewPromotion` method with the following attributes: + + + + +```js +window.snowplow("trackGA4ViewPromotion:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackGA4ViewPromotion } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4ViewPromotion({{dataLayer.ecommerce reference}}); +``` + + + + +#### trackGA4SelectPromotion + +To track an GA4 Ecommerce internal promotion selection, you can use the `trackGA4SelectPromotion` method with the following attributes: + + + + +```js +window.snowplow("trackGA4SelectPromotion:{trackerName}", {{dataLayer.ecommerce reference}}); +``` + + + + +```js +import { trackGA4SelectPromotion } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4SelectPromotion( {{dataLayer.ecommerce reference}}); +``` + + + + +#### trackGA4AddToCart + +To track an GA4 Ecommerce add to cart event, you can use the `trackGA4AddToCart` method with the following attributes: + + + + +```js +window.snowplow("trackGA4AddToCart:{trackerName}", {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +```js +import { trackGA4AddToCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4AddToCart( {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +- Where `finalCartValue` is the value of the cart after the addition. + +#### trackGA4RemoveFromCart + +To track an GA4 Ecommerce remove from cart event, you can use the `trackGA4RemoveFromCart` method with the following attributes: + + + + +```js +window.snowplow("trackGA4RemoveFromCart:{trackerName}", {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +```js +import { trackGA4RemoveFromCart } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4RemoveFromCart( {{dataLayer.ecommerce reference}}, { + finalCartValue: 20, +}); +``` + + + + +- Where `finalCartValue` is the value of the cart after the removal. + +#### trackGA4BeginCheckout + +To track an GA4 Ecommerce checkout beginning, you can use the `trackGA4BeginCheckout` method with the following attributes: + + + + +```js +window.snowplow("trackGA4BeginCheckout:{trackerName}", { + step: 1, +}); +``` + + + + +```js +import { trackGA4BeginCheckout } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4BeginCheckout({ + step: 1, +}); +``` + + + + +- Where `step` is a number representing the step of the checkout funnel. Defaults to 1, mimicking the `begin_checkout` GA4 event. + +#### trackGA4AddShippingInfo + +To track an GA4 Ecommerce checkout shipping info step completion, you can use the `trackGA4AddShippingInfo` method with the following attributes: + + + + +```js +window.snowplow("trackGA4AddShippingInfo:{trackerName}", { + step: 1, +}); +``` + + + + +```js +import { trackGA4AddShippingInfo } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4AddShippingInfo({ + step: 1, +}); +``` + + + + +- Where `step` is a number representing the step of the checkout funnel. + +#### trackGA4AddPaymentOptions + +To track an GA4 Ecommerce checkout payment option step completion, you can use the `trackGA4AddPaymentOptions` method with the following attributes: + + + + +```js +window.snowplow("trackGA4AddPaymentOptions:{trackerName}", { + step: 1, +}); +``` + + + + +```js +import { trackGA4AddPaymentOptions } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4AddPaymentOptions({ + step: 1, +}); +``` + + + + +- Where `step` is a number representing the step of the checkout funnel. + +#### trackGA4Transaction + +To track an GA4 Ecommerce checkout payment option step completion, you can use the `trackGA4Transaction` method with the following attributes: + + + + +```js +window.snowplow("trackGA4Transaction:{trackerName}", { + paymentMethod: "bank_transfer", +}); +``` + + + + +```js +import { trackGA4Transaction } from '@snowplow/browser-plugin-snowplow-ecommerce'; + +trackGA4Transaction({ + paymentMethod: "bank_transfer", +}); +``` + + + + +- Where `paymentMethod` is the payment method selected in this transaction. This attributes corresponds to the `payment_method` of the [transaction schema](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow.ecommerce/transaction/jsonschema/1-0-0#L30). Defaults to `unknown`. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/index.md similarity index 94% rename from docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/index.md rename to docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/index.md index 3cba15b885..d77f31f7ab 100644 --- a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/index.md +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/index.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; ``` :::tip -This plugin has been superseded by the [Snowplow ecommerce plugin](/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/index.md). We highly recommend using this newer plugin, which is more fully featured and allows you to use the DBT model we provide. +This plugin has been superseded by the [Snowplow ecommerce plugin](../index.md). We highly recommend using this newer plugin, which is more fully featured and allows you to use the DBT model we provide. ::: The original Ecommerce plugin is modeled on Google Analytics ecommerce tracking capability. Snowplow uses three methods that have to be used together to track online transactions: @@ -34,13 +34,13 @@ Original ecommerce events must be **manually tracked**. **Download:** -
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    **Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. ```javascript window.snowplow('addPlugin', - "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ecommerce@latest/dist/index.umd.min.js", + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ecommerce@3/dist/index.umd.min.js", ["snowplowEcommerce", "EcommercePlugin"] ); ``` @@ -109,7 +109,7 @@ snowplow('addTrans', {
    -This is part of the `@snowplow/browser-plugin-ecommerce` plugin. You need to install it with your favorite package manager: `npm install @snowplow/browser-plugin-ecommerce` and then initialize it: +This is part of the `@snowplow/browser-plugin-ecommerce` plugin. You need to install it with your favorite package manager: `npm install @snowplow/browser-plugin-ecommerce@3` and then initialize it: ```javascript import { newTracker } from '@snowplow/browser-tracker'; diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/errors/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/errors/index.md new file mode 100644 index 0000000000..7b55901ce6 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/errors/index.md @@ -0,0 +1,210 @@ +--- +title: "Errors" +sidebar_position: 110 +--- + +# Error tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +The Errors tracker plugin provides two ways of tracking exceptions: manual tracking of handled exceptions using `trackError` and automatic tracking of unhandled exceptions using `enableErrorTracking`. + +Error events can be **manually tracked** and/or **automatically tracked**. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-error-tracking@3/dist/index.umd.min.js", + ["snowplowErrorTracking", "ErrorTrackingPlugin"] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-error-tracking@3` +- `yarn add @snowplow/browser-plugin-error-tracking@3` +- `pnpm add @snowplow/browser-plugin-error-tracking@3` + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { ErrorTrackingPlugin, enableErrorTracking } from '@snowplow/browser-plugin-error-tracking'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ ErrorTrackingPlugin() ], +}); + +enableErrorTracking(); +``` + + +
    + +## Manual error tracking + +Use the `trackError` method to track handled exceptions (application errors) in your JS code. This is its signature: + + + + +```javascript +snowplow('trackError', { + /** The error message */ + message: string; + /** The filename where the error occurred */ + filename?: string; + /** The line number which the error occurred on */ + lineno?: number; + /** The column number which the error occurred on */ + colno?: number; + /** The error object */ + error?: Error; +}); +``` + + + + +```javascript +trackError({ + /** The error message */ + message: string; + /** The filename where the error occurred */ + filename?: string; + /** The line number which the error occurred on */ + lineno?: number; + /** The column number which the error occurred on */ + colno?: number; + /** The error object */ + error?: Error; +}); +``` + + + + +| **Name** | **Required?** | **Description** | **Type** | +|------------|---------------|-------------------------------------|------------| +| `message` | Yes | Error message | string | +| `filename` | No | Filename or URL | string | +| `lineno` | No | Line number of problem code chunk | number | +| `colno` | No | Column number of problem code chunk | number | +| `error` | No | JS `ErrorEvent` | ErrorEvent | + +Of these arguments, only `message` is required. Signature of this method defined to match `window.onerror` callback in modern browsers. + + + + +```javascript +try { + var user = getUser() +} catch(e) { + snowplow('trackError', { + message: 'Cannot get user object', + filename: 'shop.js', + error: e + }); +} +``` + + + + +```javascript +try { + var user = getUser() +} catch(e) { + trackError({ + message: 'Cannot get user object', + filename: 'shop.js', + error: e + }); +} +``` + + + + +Using `trackError` it's assumed that developer knows where errors could happen, which is not often the case. Therefor it's recommended to use `enableErrorTracking` as it allows you to discover errors that weren't expected. + +## Automatic error tracking + +Use the `enableErrorTracking` method to track unhandled exceptions (application errors) in your JS code. This is its signature: + + + + +```javascript +snowplow('enableErrorTracking', { + /** A callback which allows on certain errors to be tracked */ + filter?: (error: ErrorEvent) => boolean; + /** A callback to dynamically add extra context based on the error */ + contextAdder?: (error: ErrorEvent) => Array; + /** Context to be added to every error */ + context?: Array; +} +``` + + + + +```javascript +enableErrorTracking({ + /** A callback which allows on certain errors to be tracked */ + filter?: (error: ErrorEvent) => boolean; + /** A callback to dynamically add extra context based on the error */ + contextAdder?: (error: ErrorEvent) => Array; + /** Context to be added to every error */ + context?: Array; +}); +``` + + + + +| **Name** | **Required?** | **Description** | **Type** | +|----------------|---------------|---------------------------------|---------------------------------------------| +| `filter` | No | Predicate to filter exceptions | `(ErrorEvent) => Boolean` | +| `contextAdder` | No | Function to get dynamic context | `(ErrorEvent) => Array` | +| context | No | Additional custom context | `Array` | + +Unlike `trackError` you need enable error tracking only once: + + + + +```javascript +snowplow('enableErrorTracking') +``` + + + + +```javascript +enableErrorTracking(); +``` + + + + +Application error events are implemented as Snowplow self-describing events. [Here](https://raw.githubusercontent.com/snowplow/iglu-central/master/schemas/com.snowplowanalytics.snowplow/application_error/jsonschema/1-0-1) is the schema for an `application_error` event. diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/event-specifications/images/implement_tracking.png b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/event-specifications/images/implement_tracking.png new file mode 100644 index 0000000000000000000000000000000000000000..f27901c17e9268383a430354977595f0ce44bb3c GIT binary patch literal 121184 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
    McW{I;u&v?99$#GOfi$#mcKm-x|1qRWa&4lt2 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ⅆqo4Nz9?0!>Q9nz` zX4M1KdE7oCuDt(-F?%jP0uPW#c#tdX-t2HOm+l`O$PP%O#~suXP@7z-@g_ttf_AR(^Q%aR8vZx+>Kf;0u%3w`Z@% zvdh1|JYU|tn&G5jnk&~tG++Fjs;xFX-f+#SRBFSDP44;n0YelP=`LDDg?eLLSe(1N z5*km?PSn{VM#MR8GH$~Y0Zucso7lH%jpUS_Mk*w@x*GiI*tCwhSt1E}EV36={U>c8kEIvItxtR|YHd2yw&#v{ z%}38@tw+zB43v(?6E@CX?cC7MIjf!T*(USbR>Vg%fZqLVI3qIcrU{53RK-W9?u3YI z-Q8V-wQpC01g!SuWsEO(PEE1BTL>v@RCw(LTlV=C`ql1K5M-C3d-dml>`*k6^DfRd z&aCfg&5*Sz0`ZHVe1L@9+uGu`t!4xna?AZ#hvO+dk7B(qGX@Kt$yb`GcO72b0Hf3+ zUk}$09rG6Tk-AtfbJ5M!)6kSN+htM zQ!V@KfJ{Q(qnISYH8oNXdP*a?y|_95*+UZ{y;)V=77}hNNdInQv8KoM3WAq2#;aRd zvh*G?w4dc$s1(M6;5=Ea-kU!D|$0xTFy^_C?v%7Ta%PfJS+O z*RzFX>7%sT_(7(C_ZMgjko#1}T35BnU@;9~;M+z}c8k@;wW<-wa*KEIa`CPhgs_a} zeg1rI<*QQ;Y^KT0E^ndsD=T*ys0p^hsm-|XJt!CIV`b)9CP-|TM0V;(?s zo3Zi+4W_ipMO6Y=ttK!wd@5ChtI<(uCQv(L&fI;jy#P2wiAP50#mLa_x|ar+$J zCl}_I?%Ni^2}UUsubmP#jC=>w?|1d;g>(l*oPvzL2V9=;7-P8{EGRx*8=(h;>BbhD zDqt78Bj_Lt4OP$*8QG*ja0h+LRAPt`Vybht7EgDnsIaTGQJkmDGlI4 z>pkX1VhGY=2%ns%9Z+cf=oE6Ypblv>6(?HSygP#VEI6YSKHY0Eu>#(B!mg(PoqESQ z5qx7nV9{c@eC2G>TL$HTI+wTMWQjvIB3)hp1fy3#^7l8L@(NsMYn@gVAdi|cv!HgP zH$f~YDuWK$SND}}k=A+2`f;96%R-9w+~;UTPm@VJGx8h8q{zCycfO7!I%YBmxClsYRXxi<4fre^_3m zxL!7@tCzhKE>eA6_9z}{My*Jpdq-n{Gr=YSI%pImjXnu~|*;tgZS-4XEQE1Q85sa1}n3S+tt~`bG3^4J){Z!$Ls@(U=)`^f7i?iC%uAb&bpNeQ9@)EFi)-Su6Tv70N7C;czx3sy+FA=XH*%UvWexS)kFqDya|0F#27Jc{ z9)OxZb#QRwD9=(LEBt)&tybs@hO9)@L|dtX0G-}!eD2&<6g(a^frB{-hKz-ry6e+t z(;rBT>dNL)n+&WZ!p%bhgfud=XH9xPg?JFoDOJ4_!)3J(YF5(p32fOjCo*f&-wv{W z9TCt*8(_gz7W3+plr594>A1M_sSU7>KxY5>q9udHU93(z2IF#TK`(OVFuj!Vp3AK_NBr1 zah^$dRv7uTqZ}|k7R;pef;b}S=-VdU)!I2i&~=umg3dw2wd=+L0=N5Bnr;*cb7NkV zs=tA8Wziw~=?9J^MWU|c!ljVqhmJ1>+^~CfpNzC$9a6tdB$A{!%^_{=W^H=*;br{o zrJ5WYuOnkA6CmHjscy;2V#<-D8zIEIE~1aSy63F|r?*zC%swv|67+#JZWDn7|DP()CTdxJ>h-sC-jKn5## zGG0~Pr@5jPZyHlxk8c*?E}HF_gulER-|f4?JAMu(xeQf}mBk$&@B;!-dw0w=*7y&+ z%63|GRMyq{A8{5NOs8dpjO6BqnH2)sid6pl@jRo*gT;tWQsF&0Gc_h4;MlhtG-fKmxhR{jE$A$lxzUvlnQ)M-Wl6;?XZr$2# zzE{b5z6b%_5qH`xxCn;k+V#^^&ZDbI%cgm&^BV7{6|%X_t#{Vvb>772oC8Mo{1!nL zi{6V4-a?7Ynxnk&?w`P8u=Mq3`6G9y(`y_+{cH91t|^DZ6J0%jO`H{O_WgK>%SuCA zeUkXO&4Bkxlyw4vbw}d5}z2uTF>gN-azIib1m{5c(gFF+He+wF}%Dke#UgH zkg?$HA<)x9U8=+Nll7)|wzxc@=?$7hSg(~jNf0R&i76|e$m(PE{FqB0YJ7HWL?tIv zb|;dne4Wq&2P!}Wc-L*@XZ{tyyJ}}2Q&yl}&k0CqM3u;ES3!QzD0@0P5(3x*8vvdJ zZuI2**4hsqu-M3$PQ{Vgm1B3A2s%!*YSek%uhS?#%BX?HuvOKUD{G8_TDkWlrrdn4 zlJ<@>Z6r4Jh27JlFHcS^ruJ;odEqNKhydQi2US=XC~C25#`LeOCiqmprp8VL^}2oi zz^82?c6(bayL7aSFscsf|1##v$sVGu-Gxcq=92%7=kbZdEPCK3og~e71t|eIjvas! z<%;0h{Eoi-2k=>VU`FveYjXa!W&g);Tu}hxgu!eJ|A0fmKCORXM!D`(+WhBVe!I2p zGq5|Mn%Dme1o>aDvC9W;*q<<2{EwINCj#~FX8MT$qd_=k_vnB9_rs^H$N@Jj77jH2 zHe7$X#le7O#gqH}@jo^){lWB7PIUeUK+X>i6+p|JBs-q{Vp}2WjQ9Uf zh<}e?FdV}(xgg}tpM1YhZ2(`aKdy@9g`!q*hQIuS;`GI@>3+DLiwjq-83GyV{sYka zYc>jLylgYewX?Y~4sN{UrYjLNY4&-TY5N#<=gUmhb9wE3KfjZGN}QHCe_yWl+Z-gK z_8XDBC|Lu49WmICHG%xAfh+s12IwxDc9{3?UcPz*?|%0+?B1fsEb-TI^}`hEej-5j z9cXPO)g^a$6z;#;R4>!E2vBidf*)wkCb#9wt-g%5%PsM)2TRi7?-eP4vhp^UkF3}- z%6^;7Z?a(ozP+07q+-HVBoz-YsHD`YUljd&FG^3D>wK-UmDrCLY^K5 zA1*ezUO{iKU4PszX=%T>?R@e(HU;h?TRroXbuBogq)%h8|v z-}fw+e-bt?hZr47OmDr@x8fsQ9m3;cpzRkTdYr z;}NSE6a9_U`>@7Hs*!#=YP@d%HKRWCxq(a@e_+N3dJ$dvzlQFwrSY(lpd$er$s_-6 zkzW_)UnAz91+Z0dokXVoX$?Pxe*=L3LRp9CfBn<1%bjHF0oPuPX8(2R{%t7yAEF}Y z@A*FbI@*6V6{!)}F@-se|8X-CB6+~w;qlOZCpP}4DFF-sw*T#!=0EPK|4+Jt#E>M? z-s4kUUENC91Eu?~Px#yAPdezWJfoG--pUaon$SSYWlEa3DX zcV%HrA!-)w3p)T%h7Un+-=y_&J9lYzF}K6?@2j(2E^1rT3c;W+5{$@lR@!X; zhel-iy%4f}&sdgtbn`KBAD58XP!zkwNzZT0q+N<_fy(Hplsud`QCLdg+dn+uCljpG zdgR%w?VooYJv`l;!wgFd$ewuZQpU26C48OGn#!yg{$bhyr}iO#=Vf&G)^LM~_KUO+ zblpj!>NbBc#sAh(e_pm#A)s%HG>@cr<+V$RDkigU56^e~)7b}vQ9d0vuv%iOfB&&! z{Il)nA3XB^F@OE85mXqmwZdcqK{nQ}Y5$e@_n-Olw*~Pg9+-WfcU+DP|MttjU#@Ti zGu&esVkq+u=P`QG!}L_G1HBaaUoQZjHG%;gWRCmTS^%@-f2|XL1qxvP7Br?e{d4>x?E0oJ<6|9S!N+BQd^l_zPQT?r4S)SsRIw@VV0C%|S< zWJARm^gsU&5YNc~^J;T}wl?k`Zul$>>=p{nyzW3W^nWi70-%-ro4OTw|8N76D$v7XJ`20i<=d0R>PNb_$a2rIpP;>D(3X5Zb`N=0JY^LJL=mL{ zA2`UIY3=PxdJv&tEd6dr>FK@x{vI6Ky-{@*FBy)btl5vTjCDB_DU9)zob1#0|1lD9BZs6RZ=)FC-km^a?^p@+B5)glAStHFH8ssN*GI8EZyhP zA1pyY@UJUVH#4p~;0v{ii!O+MmE;H(Hr`jwPhW2?-L;%& zP1t*_Q&;Ep?&v6!~O(>NM$qG zl=cPPs4+-CBm%J9JDn$$6t)XDd1Nj;=ueAXTX@z8>kKEs+275@ht_!^e+XS!8}&{lcdyKCDT}mxljo;r#F)YD zxzr4VQ^!55^f6!hTaAp&`ZjCZWbkKyiY;M5_ErA2-LfEveb6gJ=O_N*k#Z@(Qc_ zJy&j*AJu?_lJZfJ5uh(d2WX>J@c`i)Ylq7tc5a`e@P@m&np75_F|;dhcyK^5fUK)mdx3 z8C^3&UR@u!IBjlT#|VUwTMJrdck_RuNv*x1e95326P8$(a($b>A7x+)zA29eay$zQ z39OJCwTSs$lpbjQi7GlkPJg1T#d1G(zvPe3C)Tc<%Llx6qJVZ6srr5WE8BRJtLj4M zc}ta2{Yh04lJm1YKqJ%=Ji_1Jkjf4=%NWscyV^~5;RW9?U7~f54JL9XK3CC91jw;0 zF06Wwu4PlO3qI!b$oJVV6px!BSj*;vYXEraYQRBIVgSbovrAWhtT(*V#c93!dbX+f zdns5J4W(#wedI+4)3;rSfiqzT?%X*poinJpDn^|)NoIy!VFy=L*a zVe=*kuyr&IXN5AoNT9n`ZP}VrZyhQN;G5@U7$3m7KY;2!TF>tiIEc87P?v3Fb?Jmz zE%mVm0>uCu;xS|aVkyC@VO|6B7;m~x94k{db9BBlj92-2lyJGU^tDKDLwa_sYu9=V zO2p?yKJ?D_b#PSL&l5p;+ABI+7z2hild_VugjzACf(ccne}X~gGSVW_1g zwfyc^vUAQm47@ITHScVj`%-y>2U7&5P#z<$E$LpaHa@5M&N_=`O4)k9$({4=Hq>*z z++9N0Z>)BuMUH@VW?G}z-;=oY0&r*4 zOZ9_5D;Ygaj~7@evPpb0X3U0W;l%GX(V28Ej-NWJ0@1S}6Hnxa6c&w&5@`8inL!n* zsXnIWCp~8idU};CG@XwacA|dU*9I+tRRxHv9B24U+6Te4;-M$Z?Jr`U2;lc3RaP{ihN|JhwIz=sDcL$V# z;Dv?bHb?G3wvQv@fM}{F5v4Vc3+p3LuL@g6SiQa1{`V*GPp;e(1p+LE?Wg35JuSz@ z2e1y79EEn+EUX1O?1~k@amIry$358R^)gYmCL2-6bZA%=1*{|^;b~b-R8UTiWptElKoq7Oo_>0m zI9BZV%hO8qh@;houI_B`@d#~?@mjR)p!0jqsqfG;Vk&se^vI``BpA;{gtKg+jTAiB zc1QJ}uWs_BpJNQ_d*A!ZXZ7mxBN>wN9$$SF*@2d$T-D|`;KRkqsFyG=BTga0j-}S! zjh(J6m0Vm(2*02kp3bqPs=5R8+WNuE=cxyK^d(viLi2+ecg!oHxDC%(o530^^GlyS z7A50VuaDMcAmLIjXIA&Bk$cNU^GaVPdQc{TnEHV4J>=Upzt541%K>*mVoXSbcZbq( z!%VAV`u=cKL=yeoPsL0WH9p4oGWrLl0?Ah#Rwv|#M@Qz20kKr5)}Zw;v%c^A`0Ec6 zR5orKkE3uH%XC{gP^&zi^|FR|tC!9i6W!-HbdR)sYQJ4y*?-2P5M}nX-M6D>VYUmo zJA4TUJ~DtaCVxd5h{#vG?*n?Fn?w_a8~|Ig92*I{T`IgLSU(NIXq zuvJjRa`e-N*atQTmIy74ftYo-g+^4m-J|?C{{3LRT2O2ka_aRSuicC`YDtty z8-~t2hM$-n@^mP}1R#vbHe!F-&+a(86!0C3Vn>3tnoze}-HDwe4-#OrAkOr1ew1(y z2a4G-ia{c@1g8M z#3;79BbbQ+_BSV)?@`F18c&V2xhWEvpZhliU{Te1f$tQI%J2|I$ly-hzA&M{WxSN= z!ciVeTIpW$X@u78jO}H5?-7nT|K0Y;5}LtqyYEqRhh$|p^YVa%`^z2Y-Sa-nt{D01 zptUf;FQA`Ps2g^Ln`6@z0%5&}V9j02an!IwXD-#&S$NhOtgpij0wW4b6I2#zri7FEyo1+6j=VI^c~j5N{TH+z|8?x#f9Om}~SnW2(?o+-p!NsU%e zGOuhlJU~2c+e_@bP`(4c6Sa0#ZRcm|h7%+CcBcEPsSXhSFs-}Op{b9wQkch#Hp85b zKp8Tjo!+qkL=edV7SK5Ct^**o)E9Q+7{#&~QPvY93d7<^bd5Eah0jUZ(cXgNJ64O+ zV?g{no^Z62+|0`+wv>J&MY?t=OS)#ka1^pE@>vlu4Uo7W48RZ)H6U1cn->ZrJz#oj zvNlub;cG093h27|EPH+%WD?cyVet#r%!&wLMzroBWUKvt8ZOp05bG5r*%Hnl<*3cX6VHmPQAg2#cDb_5$J9=HQER7-dgu;pi8Om&{uA zG0v8rCB@5vZWl8pEEP{h-F`72la6+xR6bzAR}YAj1Sp!i{@7-U|}0t4P~jp6(A zGB1ZGVEeF(rv^5xo7VbOGxyJs)JC-GRU!!lDJ<1*$h$uX)o!*KbM(52y5z>dnm3^Z zM0VH5*3MsK{Ax`4Df{0$MgtI>cxg*q-f=#&(DsR`J>t`X@6S3&;aFg3)#=Cp$sKg~ zUA3}BYJfF1{``R%)L2ubQL#3dAm*|#Upzfoto*iRcV^C_scA_+O*)6q`>L#B>p>XA^q04wxfxZs zRS>1~Q^K}4uJ51Ah6hU7(;=IF6ZjIKLydH0GW5eU$ZX*DQBxYHJnFH6)4A{QM(HHV z`pl;`d=_+!Ez9wukYUu$H7;@eO6%e;EFLp;YRLuDD(5y56x8P&K=DP>8sEhhvZUU= zN?IP%$DEWdUn3hFd={4Zn2?YG#|F#m)#}Cm;Fs2^2uQ?IkJTKMGA!A&Y(o(EqK|N+5hd`I#Vx>| zI3hU(pR>d|lI*>r?$o<{5y&-Yy@L^9)s>h9N z_-AwY`*L5P6u9xug@M{4h_QHA%F|?S&|PgY4x>}YjCsnGBTUFZ-;2qH%=8)O(@I`? zPuo$Lo<+ z8|dEVB+h4X^U3DVlZ?eVGzA_9Evw8Jk34PdTeNAoZ~<3tb;4ACQNv#H_Eq!!%4!2p z>(R#Q=?N|6vw%k#uLsN?Yj!3LQkV5pbA+zD7^NSET1go#Nac9eRt&jyd9>CV2u^&b zJ{~Iw{yhLv-4;w@V)r)9@n`Q7?|14>P+cI)%y>vo?p)ikXHnG7;YT&M1*t*iQuaQV zgg&(Sb8Her0XeNi*Q|>~&!y{aw>59gP_R3w6m>o?=rP?paAe7abIznk%ab&rg5ET% z$(B?vLuRcCdNDv0^kjD=0m>YL$a2aAVuxcCuRwW+2j!`@VQ}1F9DO*=MLm33Ra&-w zCX0sQslK>r)bw&R`}f9_~?~eO0hn7p+ZaC@KOiL5Dxyh z?xpi0B`%Lc_R@#_MI&((1*{*>WAo)R`hXnS!9EoQ&Z&9YUh>lM@*0&=6*)j)fwUF8 zNZ!o_O7bfBxPxaK*LJ1Q! zwi{HUR9HfH}8vKHqM1BHEabW>e$2JzP7_-z!FYTr?xJyssxIg~*Kk zGM#cz1&byC)T?w{>{dv;<^!2vBn%6HkuTneI5DQ|-pT%myp`M(ao$a9YDvU?f`7RK zwRO_BJ!|d?V4M$VGX?aWtkn^(_$hgC@4N-KCw)JGAAw@@O9bNp*>N5eIhXh2+Ec|V zq?Pn#%k>nesTZAMXniZ?2Pyz>?6h66-Bc%_qT>5c z00Q_0`@Ir_9u|?)!AN#tT~g)sY!|}5gTv{NH9WXbYgCt!`#3qh7UBH; zdhBd%@uO2Bof|>RDFxT>;_5DGXnOT>1Di$0hhLQ%RhR`w{KF-}X+u_WAuxFm{XA!V zr3k5Q{V%qH@`Dk-Sc5=bMpi)F6EJ=3blvo04;Nc9rjVV`cPJr2r_^E-+VIpf9EuzD zRw(^?ssZu=7l%%^jmzhRV`Y=7NBuzgZR3Hn#YRNqXYokJPNPe{TLpK!8YH$1v$>70 zB_eM^RFwO;3px~qF{kC&eGvqp@v4~zO2tpq6&0ohE#8-5iXrdF4s#Z58kocjeH`iM zItLWqq*d8J=mL5WLq##Y&f?GRorN0oZQ!gp=W3-Xgeepuhu>ZdCi)wf#fl*pE@gao z7XOj%yZ>ZEQ=`%=LWNrE>+a#F{+NpQO}DdEn+_Ktg_y5xoZO=IOos%GbOUc!?J@t zMOJXS$}E|8+SoI=eWfamr5OvA$P-toMkFEcR8RSt&z=;Q5#gqVV~{oKJD`$P4bKia zviZM7X16@wy%a1)yaIdRkjkis`EHk&R@n#gSPXW^j!BrjCE~T0jw%cGMo;SlYV8m; zRRHdbS}=uN+&8Z%&G^0e2TG>i^IpU1-6G4~d9X8U2sZ5(q8>CfhVBaysibc{-ZMeO zC#S_P`lB3Q_Mz=SiBBI{!$)U}hL9$+eo=0pWAIpbyK7sf|M&#p?;};Bmh(jNUej~^7cAuFYms2FkXZMnL-j_-LyZ51=YvePIt< z2cWAHMlB;>cm!smRoK%oPr#D$a2+sf=USSDh^^r4d7SRVlS^M5YJNS`Xmwj+i+{x{ z>{6^}heP%pw-zbQki*4z(&t`>u~=`3Yq*jSFg2;dFLj-}80l8?2Qi(@dx&xQ)O&N^ zf@tzMcCvkfezJZq!GV<|6ADo`INtieVnkX%0^}T7!SBA3&fk8_Q}nsB-GAehT(FeMef@rxVjz zEla_?sO(72cYpAa&+A0vaYPcyb=`fD$5~g59+0XNq2(&&blUJjxHUK`qxVD;8PLlW zqtSf*g|T6e_gp%d!F%Fv)al1?ul=~m-JrdPA@M|w!Lco-gm-PXnLG*=hvP6Qp%It& zS-?#`re;u~!R&)B1x*5dA(V*OCM8scZVFbi+IlR!q0(iWU=eEfvsVgJ%)8e6?506Z z_G`IQJZ)TpCP{VHQ6X4=?;7%Q$IfTWvNuQdNRkS-$!?hbqs#iNPaw zP2N%++qB2rbRB`Vsq(G&m+J@}x$pFPd z)u!$e7)B@>C|U6`maW2Bs2AHgxS9tY{;M(7g@J4-(HrCTk81%HG`0Y<8SqC7t1fpD zq8#lC$~#-=hnJcSj4aHU+7^~gR3dJPV5l?r`F-!RQDB5XDlQvPrU1UJX> zWJ>R&;WyHd-hk76Cs71=iXIusX47)AQW8F~|F=l!AE({dFKtbMptZ#cO>o0SZ^cc# zR5Fj2qPM_&8@U=OOvuXm&@p1koH6dV>P6F=(8o5 zp@yPSU^rVH)vVnDuVT!QxjLI7Ry+U$r7{ZgCVK{*ie{imHXRDGK7ukVxs# zSoao4J!EAUYSsjx5c8@cqM_|xsCJuV8ZCua@W6iYilB_;GdI-CfeRJa z!B-np2Tr9IIRiYERQd7*4Du>=6?U_8N`ROOVYNt8O6@jXW}W3{xR2>7Z^qmU$8#aL z1cS;Yp{RqUdIIu21aq$YWH^tGC;aI#RVmciZKo$kY!++heRa=@QRRL#dK4bNa(@D= zdg7GE<`M04uNrj#zbZyF*PupJ6y9GsiMM^pv~u{)d${Ymh^ES^GfQAh?DU0pl}~Y7 zqrt!kMY4lNg#rRg{P^(lxlFMf|B15?pcDekrSnOz=O#t$6Cvt?vUs13Sl><%;7d&Y zeBX0!GbU`DI!}~U_ivyUVJpdR-)nRK5&N1hn=b_!Lbc8AK}<5pzd=ErC~y}@p=PPC zl&+ilNSu~Nlg`bAplP1~s=LUKY`a>~#tCC4e{L*8N;cIBu>P;>bno|rVcbzq8Kv4) z?F4cc5Nk+gW-JZ8(qD(rNj*1KB*h7d<#y$(DQTIB(DM9={~z?&uBHuY4#s6%p4>C^ zetyx41kVB*t1Lx&(`ZOaFu-G-s7x+nValH!#vI_c1rAsG*|G3^b6D?1;q{>;JY`J5 zg!a%elf#XZaH1XjA>F|1c=xTmjV8$$x{wq%=cc7N7BMAklIHhk-JQ}#0Snn5kD!Na z%+2belYtoRLQW9^=LSa_PV3?!xMV?edJtj89zfD)I)Ayqc6hadKw%_>y@aesMP9`Tt+fm;R&u5BbW_hkisC|_ZX`u@06M5-oOqXA zsm;umWnzA9!nkPdbBDG%#IT((A7LUf?eO+l-Gh+V-ZQc|t0FUo01&Zw1ZxpeRT&UO zpVb;c&KK&%5c)ZaBvd)?(%ZoJtIFQjTt5&=UXINil5954>RUV)VB_MNitkFo`fiji z;7INkb}Lu8r565b1iXB4y!whb0Z>d?}skO_2WW+U;sQt8$@^~^=WN97KXl+IeM%mY=S}oy=uVFVq%4^POjfUIy!Jv3zAEfY6y)|;vbhLN5qB3m zsSu>&gIcmsw&qo(3wNcTn>lZ%YhPF=;2mHZSsJDd05Rmy!YZHGK#L>%IF;A2+tWZA zyYzQB_miU_`qsh7ZcDqRZ# zfuK&y`Fe^1onLZZlj|OJX5GE4yob?X26iZ8a-#SzNX&zK{FC0Vf(qF+LH?Z$2nm5_ zHl4f&N#Tb+8MQe)gziyvH;3n{@|8fv^%M$$fbhttMdi0gVM?{RBlXD%W}<$mSj`L? zmC~kzy3`N4W5fK21lzf|1^K(4C2v1&#cEgr-)+eGl5nU>o)k8E zOm@Jh?0~0mwP+>OG)NlMp^_LXLc&7Ng%w1Lkfr|&NfxRmEb7PSFJg2ooYx;+ckLpV?HBe5S zy0@}W=fK1{etPT!8mjcA9fkv^12R?G__}o~4y^kf*`*G|a|}X6<-pp-x9Bwnw{x|5 zW)tb#I0*;N`_w!PX7|D!+2F`C=doNVW6688J=qnW;&Vo2vn1SMvc@PXS)9>lf^%>` z+NDjQk%&~uBBC&`@aRH+{UCXcaKoZi7ggmXvAOBAynkYduU^j5cvEMQ&f0Mn>FhgT zf<@l!aay!h4`QZB$B_sOEmZa-B4+urmjj+YBy|3Y`^>MK(mWBU?Ih=(KFagubhxD& z!E{Gu$t-p16t8Vk$WS{s$CNY!C}J>x%j%Lp9IAW&naX5j>9*2m+iKb^jk8hD6xyQ5 zT`Tfev;MrY$@e1;h*d1sTi^eb;I5d6_!T+>zobMizduc53GKv};;E4R621+w!5jB5 z6M2Rto@n@vc(Jyn#Pa$_YV08VM@!XWIw0_q5RqEfS0!IlzulJ0c#Rsw=LAI!suCr{ z_*+-}>z!?aaFo>U)hnRU$k({@gxp37OZ)rtiqLd+%NIZ`3}WH(0;al)Q!_}Dl#3&S zPa2n4BmqA|x}LjkWAkvd$FO;pRvlUUe@!wZ_;{g`M(3uQIPI#_@;C-Xrh>@$e$o{w zKbyr26^)?3Psl&!Cw!=%mV#0&&!Q(9qV!$?BHW=aiGA}+m_K{wuR(kx-)5x1a)JsX zdqXmVfF$?$8aMauw@HpfV)xcBYmFT_;}tqQ96VLv3b~@#FB9S6xu1mnvW!uLO2kQ+ z9-gz|{#ot6p0g4LBP^vC*BdC*_7pu0Wky+~>#wH#`-+6e|HH?9km&k+Z%v3z_P`Ji zJUWsnYyimLO|1ayZ)@+5r*~3ElgJ$697n^#!oz8i80f1<&As|%jsDpRp@N5ZPO=Wz z|JUFBB>dt34}0$&)%3Qs0Utq8L~JMsNRcYir1z%Mn{??aolvCLfQX7n6GHFO5dmp| zgf2=8MQR|SDK$VSp#%sa-;ZR@&5U(^?hr-|F~EzoMi9WGka#9XJ%8DL`T9I^jzd5WLU4i{+L;nvBD922)yVf}G-SMKxX;!|B< zbBLGpL;t=xNs3TDdRx**8_)GexA^bcaH=jTUj0D}Ihq;6e`!exmlL|9^Cd@VHSTZ9 zth%liFPnB_AjjY`lhiYES&|h|!Wa#q4@2|hTEgnS7qmp|HQ!#3oU{Ee|DX0puFi?< zq)jsuBkRkTq32e{vDUg8zpSZp}{o&1paVY@aW_EFUb0`m})#Rm^rns(&*4 z%k|EvsIV$@MxEjPaVRUwE6Z*!e>)q*!WeNnTiC;R944wSO{C{Q$l9_# z^W2}C*v>s?!I+s|tQP;(%6g;Xu}ZpxD<36|%0|N+R(fXzf?e#6&({%(XZBj|<(ZAS z<(PtJA9 zU1(R?v$WI7lr^FV5wfsa-TEvV)bP-mK(hLdkRX zByiU385!uR^LK$I3{Nua+lqqm>4l8^X(7QWAP`Lz5Cnkm@Vdvu-+b zKR&YK{MVM{LS{yr>)$qw!15(Y*5-1DC9*q)RLIK_p)$rQp$ba!SYpd3Kk2l4JOSG=H)o}I2(Ckw^ql>a4R&} zh3H7vWBGt+FpCSS$%rCj)0(&6;fcS0Ln6PW26O1{ogJp~w;&mC&TT1Ats<@4cC8LD z<5cd9dKbvPV6#)Jrf<-)81fTV#y4X#y>enxORmw!7tEE+r>8}+Pxz6fn`6=B-4l`{ z8?c(Fl_5JmuBlL5tdqgSlhg78zftm&oYSx3HnQBy`o|hXX_zpgliH%ncUYkj(G<9-AlO`{Z!YV9P!tp3v(zLz+m2`A(}KpHJhRYvP3clB0M1 zREHi^$jU06#yuC@&Mc!|U~qN>(;QwCUsGss(qa3j8ri8|ra|*_A+KjDL;yS;LUy== zQfQ`s(ioDz<`a9{)KYmx8*bGx?mBVTI#_JDPIeVSJbziEKTz8amx$4?(Bg4=OtO;l zJ}8kL{}jHG((;Is2G*;aC7smVf|Y33D!xoFQc$nFTBo&^Z#M-tF;#bTdpxr?W4_U} zW@XyopVnXFg=Ef9br+r<0g6ZL{IiXlFGt~(rI$q7-(I30R)@UBtEU^5E)cKC#|JTr zrr31pPGkfYUrx8imrJC>waD`s9`6Q(k}T^ht%%6+<^q^0F{oX?baugmrpdqE$fyD- za50^UaPr+sT3arlb<#g5-F1Z;qycp!8 zbzDNGR83S%Ypq9r#^!D!t**}pVC?claNtzS)N%_U#9ci@ypAth!bm!8&Q@#o$}TCI zqE&wVB)N|iR7GTd=GU!I|0q}SM0UUVsK46-cns|6kZ>At**c*&__Ff{_i>h;bw6(E zXp_6tvYti>W(?E#W9k;EXj zQqn$3UvpBsO|yJ{6UcQZJ@>j^cjp{(ayTV$#P8qSQ=Ydkw^Zt;IWOK@Nuz>N09S;m zQ=2(6>%XA-hDe4C@GufO25~PS6!9U-FUFGi^ev4rZxbGsh~r zwzj;6iTNSIwu*v{>v6EqjN?%Fc%y=P;@ywCq=E z`*ic#)remugB=wbEgA=o>vEH(Osfxk2(|Qm3M{^%=&?G@)_1-kc=AKHbzS|!VN0Fl zTP$6=2V*ndr4YiN5qVJ{6LGPget4!fcT_<;CS9IWm5w>ZZ+3N|s!%gp=2-AyIfIeK zvWokvMq=5sR<$+ir!%rJmkP#aD}vd1+?|&%)r5A)!CJFXdtR&Gb==Xkk~(YlT{`CP zWy-(rsRCsPiXQeW64htuxZ{GJ8l+73IcRwAjb(UicSMBTgL$f)eS)qHk$a!)!jq-h70)dbt&yz?yY{!4(k_L zNZX5ni?v(Llc1o{drr9qp|96)OQeMulM3R8{kDg?DB4bj3xRVd(iQ!Aje}$3#SE!| zs9H7O7T#~W#5SITp04yX7Is3nd+T6A(G~eQz9pg9bI$35QrK-N&_FPO-0zbi50-h4 zSb=Hp#G||LfxANGoP#~OHm$y3x{<*_S>=1(s^Ih8BIPVJ#XeQjZMvi;WPbfFn%=|*O;>F+Gyf=Dci*zwvr&%UOTH}#o{sMGzOEVpJ`;#+N~%%Inx z{Ika6i6n`GIIo=?3Ehn+Nn7}@oZ_v%RGzx*ttS@a0vYUaX#zp>HF?jONjl+3dfcKscoC3sKn8T%0 zrF0gXKsfd)FI4+T=3!d?fk#FhDT)uDaWMN18fHN?aa!a2(Z(rVOMyN$$o-PNi7J~E zOT*6Evp%|h$?%SrDOgY($U_Sc>(b4v4cN(;Ij@7;BPgYdmTDvBclXmVE(n_`Do4cE z^Bb*5XmXagP3-hXU(Cr~J!UCl?NMIGh9l}3+zK?D9H}$>)8qXO0moLBjY&qBL=iw`?k@-ae@3}K6l}J%nVsS^Px5z_~SnvT4I`DC&(%5F{4a`9hSop^h zXnH@?_mZBa>0oqRFnbSj4H%q^)mvLWyDql1lATHGO*dfe%^!=AH|aVvnm8OCfi0K_ zR!~b5E@Y}fO(u7lv**gmi%FGp0_{Qq3=?G@x^^CKr(yf@>a?Z$*)!bn!c*Uy4S^EV(3?NTKhS8UNHMv0 zfL&fcS}M{wPZP2jQ;|pRxVEmB)GTT;zH#@6>Qm4sv&nja7Yr`mui}nwi5;wbX1|ZA zKzN<%{r=esE0{AcFtGTWdw3OWz+ak-Y4?O~rwrzs?@MvregEl0dfc9xOoi^`Ffv5S z4~lfN=+`pg!*a=Ekh9ncJvsRe?kKI7bLT~>v|JK=VZI47_c3j&f#Eb63zvSeWVjy3 z`ys}$0D;x{=D>CAVfmT9J!yTVCZGmaNp>{3_cWitUXI_D%7Y|N8I)Bujh03w z@_P{-%nQhVZ7Bm+0%g1Xu{7`=?9ou|Q<7cpB}TO$EDu9Yo;8$Z*xfc3EQyNk7t?Nx z4UzXxm9uJ&y&;flO|eU86XS~@|5>{vhux)0tq<+=!gi zEbsNyw-OsXaDoMPzl_JJx_kck@QBD7>Ga)izg2h&-?P(j^Bt-VO{p&pJlwo_BtL|I zSGh?OI(9Hds-q$H1+ACvL-%lA_G+^33W;kk{@5tL=cD#|eSo0uuYmBm`PG}I&w zsUPVb9`WTnHEyQN(UIZ&wG7{6s6^v#(*~au>7#e29+SI11X??4imH{WyNue*HiH8B zR4VC`^vEQLDaX(HCI)trzSmC3V&{+Qr*c1|K?bSP;}8VubT8JtUiL*<^hvdatvXllcSM^M zwzfHlK`0K=PfVqB^;4}oGoX$(<`h{9EJJLD^@G{`zYt6NSQ+-4^~6>I>}0iF6(Xz4 zmCKrX1UI5CT|%fdaOiy)!>EQ$H_G~M#R8trF?bm(h2Lis%n(wf(<~Dg%3! zR@&+HJ=7#!+y&M-%iJ%RjdcY6IkkMVODCALyYn$GhpwJi*~Hq_wOqk@#rD||vIgW3 zFpu59VOLn}nlMXD8QcEu$nEI?V&_tNk=%G^+@VIkP(p`=dy~)dxVnY6aEdo(`1|V7 zQcpW_ZLHr4Er&%@F0EX(5i2wCu=C*J@3G_RiA-;rUIy61o%V8}8?QhRz`P|xPnv8I z3?9^eH`^eRbT8n(p`>{Z#?~J!#nX-6pmRXn330~|zR?S)26ehjLr2C3M+o04UJ$wn z_|kVD&t;O%yJbwc&BtgXJ&6j(I4b^rTg_{mLU`GM9beb%-GDyzta!A6CrgCzYM?8J z%0-LzioUk-5bM>(3UPj3rL@JS~ppS;P5Iw;TkB2U!uSJtr)#?$9@W2IccIM0+#z zAQI%&EQA!b*_Sm*@xZzPKUg$QnOg6)_IQP4Np}b!Lw7q>yIwPk**9g1iyR##Wa6Hq zatxAvNh9#J6elKb9dr0fbP5NM^;v`=WqiJL+*KydFkcXxaqA2m88l%M=)jnjhJ~{! zUsN#^)QGBAEb+=6y93yWV`d?qTY3Ew2uDCWEUEfA(iY2_nlFVG+Af1^i+X zuhAF5tZ~nyUxrUo`?BiW1n{Em@9GItyOmUb{;cK`Ttq^{AS za&UbiV#5+%$B@LUtR*^sBA+G`8V0Uh0C;cuQOfRP0#7^H#?%YEFU0hlLt)hz4z={& zB-lt@A5p#D&kACqMb(=kExXooP?YT#f>oBG*BO0KYgZtm6iblKl8m^~L>8ZM;q0cz zlwrSlhJYL3Gr+R9mQxxp57s5b1$jprw#3Hg@=ME7&wMJEdG7qv!F+tp-?mUQ<;$4| zmdqnQooMQ@is>M`_B=cNPYX=Kq2mQ==kde5mbQHjk-kt6b&FJ~dOksGEz5fGFgDAs z2o{T>?mcd$L(?~jDK2A>FC5S-%xge~)nz(D$y=n8;p%XyIseHuLRm8~GO0RPdq}pX zpAW(yJ0?v>+HRA-{H%x zNrU-il_Ah_^Hx1)q`SR>=B^j&a47#-IJ~|(U8!Dh5>x)=pR)k0E1jhKl3NXC2V1_B zn`e2_aBAG`XgL@Szy$6t1{NxP%z!}~eQ6gXVomr+y0dPxInai*mt!328*bbA^{tI@IGUAg`y~xH^} znvE?mk~^=QoGVzN?@~$j*CnqL50@-e2UsP+3+k0)s7Ri0)bT6bhw;&QFJ!^taX_>0 zY7c-oKf2(EkYHlLZvD)UZ>7l?)FN&_g6xpSh&7cV&1MxJlYlZ7gWg0aiHo%9Gdjrc zU_B6skI4i}#tld>*X^t%Ub6)6)nMa`VjgjW=tXxK)1--4M3`Ub(C_p=C6LD$h{qwR z4g$5k1|AC66Ux>!qx?5le7LG$0s)!>gl9mR*Y`nIT9IArNq?%Ci8qdMc}ga(#iG(} zAGI+$R+>?>X(8p+y$R`hAIn)PA`o|bC!a{NshqW`v}_e?B@kvuz-|;Ht5pwR!}j~z zg%!pvz}ZaQnH3vGvRuxZ|2d>Uc65RqyrnJuC{9GP-XO49TFh?rOIV&#uv{w*H<3%a zC_hBiizQxIaY>JlSgSpPpTz&T?|M^KbO(Ye>qZ|~L$lv>zTyQANp~U-2wKG^$tu#zM>yoO&HrMwo018mm z&JRnJ*kh7|qpoE}>qPkcZ$#yFY8%>8;r$9cNY`#8i0%23mwQBsoDz@`IYxvYhAezg zYu9o|f4O}o^rEDa8vjUIJDT2R*x<)-4x#At1pvKmqWK#{+Ez)nJdh<(eqZ;UFJqj5 z6G)pWP`T?S$DJ24=Q1~@P_CBTeM1XQmwM5rU5}?FfXOm)HMi-03)7wvxQcA=VPyHi z)AqB3`L};^;Vkrz_MSF*h0)9Zfhhh7j04fc2LNrQuP#m||1FBl`sI`qv48l{_kZuq zpUC;^&w%U?a&@>ADO|0)c#Qt8kDIoh!kh9eNzoCk!`$A^^a?bW?4vTZdf8z0f z@hKF$PYD^528giVBI{Qt0PvffaQs;2x3V7?1G2lb%`RX1tvcFh0d-6)NBo`)ak>frRk^C$w7<2NFaf|`ehgmS`@JnbI<>`>$i**z``ABi(fiaEL*ACK z{8sjzdw}dmx_l9D{$sWO*a5}dQ(N2>c|`oZY`s%k416xd_xB~A+M*?(j{hI1x}E)t z8&QS+cu_*g*nc6F#cn8JQD|vL^(_GGX#&CPma3kFh02o&C(K?CtCRh$fC8(m^aPHcx=MBwg9oZlfzxNzP`~QIywSMW*{k`h@5C$JaAQR;5))t4FD`%17=n`J^%gGZV7x~UGIa1HdpS0V`iSb ziHOjQbx8xyzRUbe)30;e1}uXL^hS*JKdUMAxW5W%)k+hP+<>M)R4^J z0{gvt39cDywMepMAgLHoHMXD8ZF)>O%A@LDIkrBN1+(n;$rkTxCd?4|Rx>528-`h|da3>WE_N4;_ujo*si|!&^VO7h|6*FRZnLIiEe)WD>m0 zEX(J^>~H9~*z49pW1EDjS?Z-DDgdyFSfZO8q1V%sa;h&^!PC4cx&23|Ffggq01Z+ zH}cK8@PJ8qu>~$xI0C@>vd7_nkhM@{Hr^08KggUQLZ^!u3$?+s$7}|{#H47r)b5r- zisIKxtJU9g@VNKuJahq`bg+ivAt?fu38ADt1i$k;%IS%pD_2sFnAq)l6B8u2>sZL$ zKZ`;i{1J9=@5S5?J%ZHrX>eQr#1_U|B+w=5Pbc{De3%cTI8ZFxOt~_%>4G#aGt-+1 z#FNvsIdeM? z!e7&iE+-md483>-o$4^dVntWXLHE2Xr^&!=VQUyGsJDvG{(`?%+oV^xfe3 zE078~g{pRS%UlKfll>h>^&Ek6mjj0y!?K;++w#GN)#=7r)A9$8R;SG$wj6$HosMJ9 zq2RTFt1dkNY7Y>)r5c&P--Hn_0-~E!!pef_8yj%bi&BgTFbQ);q#x^hv93ilNfC z@1wJBKH)OJ11_dqPc?vZn?VPVc-v>ph9R$*AVlFXW}jPD zGskyxSx=*!Fs{?kVc^2vU+j*+u$%U>-AhH^b7Fm-K)rd;NoH4ir|2gBu&XXmx4B(E zM0XZIWh@)&WNK(Ky=UDBvD2Q1y>>Dbg*6sk$$U>(E5VZ|g%a97Jd;Mn%5PH9@v)i- z;xis%1)34wdb4#7mDIJy6;IlEI_KwyY`PX}DQ(?msx4zvpMHka-YliyX)X+1v_|Lc z_9pS_H#`n;pKKC9&KpuOfkxEvX;pk9Md~(P$Wfy1kxzQ2c)9UNu`ch;&G#21RqC@0 zbVgPEa!S_xV@{odqshi&?T^7O9zFxLMl3uV=U&7H+3W)=mH<|a>ztan_}BGWNfzFJ zD-Nhee$eYUkCH`!4S+W``UmhauCY zlM)+#E4aUUi|G8L)mxAab?)q;kw>ZIkZO~ENqkMSY&>VYt zgU1QEaaqt03fY#$yApnrbt#~Y8VaLkIc#>BsvYYi3(=Ba-+?)5 zc7L@G&DIA1%y$$Ig3^gBG9h0F1c<8{(=L9SE~YgT^i_454da^Tv;(PfgYtg88UQAW zeMQt+))6oHbf#s+&7~G}1c{TV>B<+eSUX6N7MR~51@WS=nM9|n9=j7cF2sRMDG*oI zVQ+=!m2T;PX_g%4NiFYS4JN^zJST8IWJPvw9g)W`CFVqBOl=j*sGx2pJN&KANec}V z4h%?O4>F#t3#v@1<5T(f$lLlX!2Hg$#bwF_O;UUrcsqR}a6SV629X$V4*m=at-($* zaEXLW{hWQ^?%~7`y^i*%B92(Pn}IDt4t=9)%cYW77y0Gs)-Q)WzWIYv-@6l2eRECY z`|1_7p6klkkIo=v>baO(M`5&O!bam>Dm8Ip(No4PB`= z(*(n6Ex*w;it&inbO>UauW>*Q;KqYkG+Off&^<5irKtzhau#!mxzBvAN;7SIcSFd= zN}8t#n;AUAY+mOgklz`b6134wyS1B~vIrnnptDex32uc!Qpef=t?Lu^&`NWx57?Xc z`8^r9t7$|VM#P~{%P^o%GM^oS@|l;0n8q0*o!;4>D0G!3=t7xYkd?h4L{VR3Dduu4L*fEGQ#-c&aC&|tLiWG}pRA>b03Y8-RS zod`7`yhPNddD-IP*ew*~F)G0QnC#I1gPm&m`1+5W@4zjWXtu`^KWPy9rTJPO^9z8l zw-k2-HzqFOo)gB0o1F4X%GjC#i}v3@vKz@}w@L;dl+*@cs7)Ij(>T;pA2ZBYtICrK zim~Tt2Aw32%{fkkFm(X72mR6r-4wTqlR89>%GqBCi9c+`MhZ#NGc|>@56w-S&j+Dg zB7Ae=OKqTt<*bw*RU1%R#=r_R7VV?AwzRI@xOylv-3x{xiS?V%UJQh8@sJs5U*coE zDT|!Tr{J1BXiB)jo57Q3Uhkw-+Cynf%bPL;Eg5an3s2FJl4S#~j+Tonx84tN7Te_n zWm}pjEB9s2xBQURy>8d1ri)gYVbFtU9dN5qnkTo?SonqiM3E5J!ZHj%DR_3?iBXbe=ESCaC~*w}7S6|en>91~UCIf)?JK5o5YF*Y1@wUg4RR<((DxPam)K z-A(+eWAVW#lqEUA&mmcBvcg?%#j3sp4Qj4l*5*W6g4f_Q`n6grJWtrb1ul%*itgwm zNCLl~hKT)>0wZMe7PPV%t&8|L?NIoje7(XIS|N9bZoo1*;bzT*9ZK3KW}DW=bfDJO zNJ4vPOwZhtdBR6!Ai_F6z+k^y4!@lIC{pgcRoxnt;*Qw;Qm2vLd1#WYkXIjE2Z))0 z4#`$%+Tm$cszI4d+Qyfan|c9u{*JqmrPu_|b@x{2)IIxspihj_1>I`0&n(9`DC+;X zi2o36^TM+q%8whYU`i12N?z-%A4~4v8ULL4uq#fz^wk?#=Gk#@knPyGcETMWvr?;~ zOb+c}SF);=-u)-HsOAk7BY4x~mIc$~cXUgwE0d96r?{8rir%E@Fqi=0a6Kig5H8Yys^F6bL*b0%gDa!0NDI8Ibw*_>9+?RX zML@BQ1rJ~{*hhYp+GXP0uCrB|C#j8!`amzEowi(FQR;X^8uP84CBcO7h|8K|y?y`} z|60d4M=5UI>;xcHuj;59Ew|)%9%{OL=L~g=Zq`XeupO7A_Y64-@WCzQ7R{;;R$fRY z`ro_i-nt0-A*7!0T7UX1rC3|tiz9g$Y5P@0eY?HLB|nem3ZSn?7iJiSi7*Ow*Dw0vkfO%=7Op!l+hV9zUK_LqGYW~j zL5itVkJjNsJ`z@p&_BCbFBpf>Ytm_qB@`~UG~PoAd*1Ui7CM&-SHB=KNcsOtoieIz01-AFbRm&DCtucz z1&%bih+?YpK^Px%6)n5Qi$8n#Y3_bdh?5;{XjysWmDE4+6*FAe>^6J8?~zx3j-$I7 zlpFHv`}=MO@|J|+Z2w0y0Xw0-!?k{m`1mS&vN{)2cDO|7aA?UTLSAK-tTq+n@nXIG z^Lh`@97;3i7I#(BU4@uK9Gv+Q!-~roG@tVNTlJ*gn+ww$U`|l7may~0GE_%1r7}UB z$tvZxRCQX<*2ag*R(i(L3ZZhOabCX}lqM^fzpNBQYVRm88595tIF>^n&C=ygGBd>? zU1Oy_ag+@@@iruFGCC*jrVEt7L$YfGZE~#6Fo|ja_sA_LU?7nB+6D1bGTx}bbkgc# zE&uJZ@j*MTfJu5D$-|K!F`f>Ee8WG9p5lXWPSpYuqh>Soc2n@7^+-%msT_%*-L~H3 zbnT#XIf>l|Ghi-S-gLZeDLy!$U2Kb!$SCaUW=LSSc19=cj78WZzS0v40y|{$l6m1?=7+o4E@zM3mV+_HBf5Y?x5G6bi_z}bd}Rmv}F zW`Dg#x6@~Tsh>`v$J7lafA2_v6r5?qHZYZJKnT=FEOl zrK5CDGI!GF`}|^{R2%7P1&jT(@x+^J3m5@A1iW?doB&BUt8 z=CP{79lwe36jV7OQirqI2qA#1;*jHHiqMAyebL`>e!3WQl3l-Tco}h3aW4Jk32Err z4N>CrlPQwm^oq3kEz+O$-*1dznkj;aoU-H|#<;rV8}<_ysPzX#+cmf)15nX^3W1%5 zPO}Tw0=BZ>{Y+{(B+?yrc$3C!gLf3FZRZ2&r!f3HAJ|ivSoZq`6(l;OmA%iQs{QJt zv!#sQwxE=8w*3O|)?^m%_(|U6RB%!xbluX%h%9r+yj*ho2-^#O@XH=Vr#1BaaFLaJdU;fu>ullI14Gc}+! ziB0U2N%EPT-7hw^{RB`|ZNQ0`$=Xcnc&p8;5)?yC=OOw>`0xYmyOj1G zi0UBXh;u2WWZ!QB5@b?-TX=tmy1L&RBw%}AJ<4LAFpy^sfeUPV_;A-`QBF1_zivaC5 z{YG_A+l$Tp`!Gj%Zc1tTSe;XBaH&f@2>I%+ZXP=2h>x`Ml3J%C)$j4f{WFSUKPs@x z16I`=p`;dMa_X?wz1koIj|paG_13gUqqw-Pw~Cu?5BPR($y!~b1Q7fD14@|Nzu>6Z z1vG-F!`QCPPHysB>jlOUjZtE5T++|RW5WpxUkju3OAqSC9|cs~k6e4@f^vihI;iKg zQ*il&`PTQ_!9&(=y-6R(PTWfyE`r1~`b{cWCbQevPeR=*7rGOrP}O3BnEeYYxB6K8 zLe0%&$J(_n>PzUSfUx$bZ8Vti#hZ+&qYTa<5$xrb7ek&NuON%PRzZV_4f*dJ=N?0# z_MZoYeO1_2d}+XZMaNTC>YG13;Mk@pwb}+St7Xg5PSuZaDU{JpFL1#J zb~~D*t@hE%H1BqVFlR*okKnyn@supvT|vAncI?T)07yxlyW?lGgX?`aY##dn8{lUu z#?osu>Y<!h^a`%gp|d>JoSnSVzcIZ&O- zy!Xm~+?yULu$0|dwF?D%6F#|^eRB50h&-dS``+}B>wt0So?+McC{-zi%e2AITb+ly z<8RQ-mzH6^yja5Qg2aF@c+`Vy_AZ?ez{B!%-Bx}vZ25Zm!Z#g7(x6k6y7tkO9N=~E z!oZ6$0J?GYh)g7fKjHO~%=1bi_Vsq>In4T@7Y+{}({G%z^z5w7)Jl-7vPH}to?jGM z{>tf>3{t38y@__We>X0i;%c^OR;bjIX)ivX+Ux7u20^nuF7l>yA}-|Ptm5Rkt{#3W zyDWVN?AVx;Ly2 zaHd^fCDL*BtrLJ|NtvjCOCDjnnBhtGOIH+@)3XRuFfV(z_m2{|d>*lXy2?Gb^(*YO zi_-aOwf?k)eL@C^rq!|RJFImbO0(ct)_kM%I-2si>^WL+fOUZ=np@aLgjvpCM>gpr zq0y!DnG3;Rr|CELjOcs#IfXeww6Oc#ibOQh!mjeKoUK&d!d&WFvoHY+b3{r#BSgjJ14s58qE8 zhvbzN!&O#Wu;bb@lLM4yjmuu++wXw9iE`!YjSWlKbUhH~Y}oySuU>mDHdFRl*LxSs z*7yP)dRY6**oUR7`s^^tjxCmgSx$dwM+OTRI`M0Z#ECaLOkp) zR(wNVr*LT`(jPdm_0{>w-`C6qw|Yt05L2%ughP0XFILu|^Ac3-=Px^6W%AT?0gDDl za|Utn))^Cdciq~gh3}dviz8N+m5esRtKt9#0iBl}NZW^$?b)}6S)*0xFj~BwK-syc z*9hc_TrWX)*2>$w-Axd-yEww%^uE@K_++%7GbOFfVeyj>lHWne@#4Zj(loSfy2UGn zDbz5|6QDhbvu?qv-Q@v?@wxU%d;vn8#NaPWV5dU6!9j|?(D+uXI1RYrj$qYsL z%8VPrtOSNUc=Dj@2tyu-QMVI5K0=7tYe`im8<;myIz(}Rd7K!4l zclN)K84J;AKRA#3I1e{Qd@9DnrRC?{Xl{(Up{3;)wM4jz25?vo*TYgJ!>k4shx05a zKUdZGd9#9#R;(n7V~=hb3=8pirA7MI*5$`uE1mwioVtCN#8}idza)e$tHz*+8T6Xf zwU~PqHMyW(bB=OihNMeP)*VaoJcj73?fJ`bgm>`!&1v3hjl&?2zIzXt)-5Z#L*4iJ zWtuPE`rm+|BsGCD2>*XgYH6q=t4S6Vnpd=ksDfs>uNcC+_K?+X-(;0f~vYNb|C$1*u9$6rj!ykeU0=wT2Xk%3W>KLj3Xe7 zN78+PCsKtSS1xRG&M^yLxUJSr^{p`(5=w-24ajB*7*wlqn{){@p|u8Z$kAr~y_2co z(X)cB!3tB}=d5hQqs15k+!8i#HyWR$HXvf@OI!xrla-3R;il{X8 zAh-e{Wu*_bArdQdIJLIKH!@H3^d(;|>{4ZF%>&na3Li8t4lhQ+5`=x88^pPI4xc4! zE==9G>%xzk!nL=M>ZpsmZ?YE`Gps-h&Eq?qrD;R5^_0=8EnxMV&UPulNKM}o32phT z$Ew4&TT`zL%^$2zKv2NdI-(4e->A)2bGTfEO2eLHU5YS9@@SAs94U(yhz zJ(N;FzQ?Vd{w?M6!YR1%N<~qDst#zExmjjmviuc>Q?n8Y=;s?@!}SDS={D!jiNB&k z4G{+is;%DODe#OO_8dLSBW9a55fEX`{e5V#?dSw$(Vp#dSfvg%kC%gbu|Lu#N#o`^ zhm@`Y{{8EWmjwfP<(6&r*!wY3T7l&@K_bj{5&^%`Qm}P!poOf$6>LfhEZ+B=8LjW% zsYGv!)TE}hDFnCHfZb<+@&e^!BD=dE@ySf!CVQz~dBOrB2zzpGIM)B#b+TrKV3TYo z{CmUlv2KcwYh$H6m41Qp9I-Lsii+p1zs{0cZiboiMeiarUx;h~@OM17RiyH@GigTV zqO1Oi()-UXIGMtQ>^^big>{zjOhpq)_&MDDh9|%HTxV)->#`fB@AkRj#bhHQjFp3Sz8%9 z%)%vw6WNEf{FXLm+ZORnuo{GjuKeA}YJWFys|`~A(09Gk^Pt;9WZXy?cq1!8w8Vse zKp{Wt2nSq57p6Y9tv)PsgT7Nk=Lqw&jHGYOW^*5TczX4-5#PgSU%j2s@KT`de+7QbcUsgY z(`%arcug`YuOL-2>>dD>(vtd@uG=ff_OgXn!G!|@){1aQ%O2y-^0n!u>bLzd0jvvX z3uWKXsIx0@a8&LjHQDxKR_%1d;i``Lq9BvYn7v5}p^JQ$RaU);e9y^Zm0f0Nwbu|b za_7_NrFAuyw61l4CEvK9;3KiFdvoMrK3fH&}r*IB^9|nBWBtzJqPl@6^Mcv=-I=Ma_ zHqDmuqL2zXK59Cx5ddsSMH;n|8kx6_7Z+`!$_$oDWkM{lyz(hgUcvH&+cIQf{8!<# z7s=3B|Df;9U6*7G8Hfh?xHjEonw2P}f30vlwMUMR0L_f@SfW=Uw)Xm&HOx4b-fvVu zO2hi{tUk9kjbh!lyU~NgiDO=$a#8nrAuB|?Na%&R^()G~z*lIv`p$0}K2H`e{1=UG z%joIQaGiZZ=9qX;XEdf@Z$1X=<-QXWlOw9RzaitelPF*$`dot9o?A1wCNdsKoWfYI zb!Xqp$b|WuRh$HgsX4Eki`9)4Ff;P_l1cZx(pk@g(8d2!Q8d^7ByyT+{pT1ffc|*n z-UoEwCwdRB53;8EL76-TMIWf_p}O3d=1EQw8Hal{#}%I63;nCee2qFUIoT0noAYYC z;M`d}qDC5nHLu~z^HQfV`du=fgo4Dc^cNBBH4zWk)Jm1qPkptzoVfn_S?~RyK!1CT{>zMGz}c5=yp3tu2K^jhCL*h zvMA61*>LSg8_=3%f%v78qJOILHrl6s|KiWGGGCZ7s(9UJ-JpLm+0-%cP3~vPWP*bG zz#17uL$Bb4)hV|rI!AP*_P&&0*|=K*Fn2JGHktER*o}x&=kh;i@*|fbqUW(p{_QKL zzf}A|X;^7ywZAUI5#GY!u$IlQ$>oIiHi+wr2PPvox_w(w$075Qe2q8ZV!Y}-G8cpT z2LEj3{hv&j^}}DzH$^X^(yH0H>q1XFzZWZupwC}?Kh~$`1gv4t0W7(S3#?u|_!{lO zL&Ie&eA~LI8z9L1>w8tvNxoPqVQLhA_O$`?QXA1TkwXLhiyX$PbGFvV_BjhV#4Jpd zr2UzOJL%)&e`exv(0_?OUFVBaF5t$FD)zS=&l^ zwM6pYzR|w~w4d^c8wUR$_TD?HsjYj|Rz$3bf`WkbCPHMG!ML=cYj z4xuW&g9Jh^igXB_5FivOp(CM&dN-c8ocF%x-v915#y7_AA4i4`ce3|hd+oL6eC9Lh zs^ouv+yC|lz10ODxlxey^WXpDFP{jj0X}k85;{WruWR;~1NeWwU@t54B0~Plns#w@ z?oI(bUBK~)hWCG*?>`Ul;R5O%NEhY!z4`q2wDaeu|2gUZzT*FH@3i#Kw?${AM)e;` zx<@Gf`^$l+`q{ls0P{+X^DeqcTn9Ml0%i)ydi?$#P<6Rn=X&jbxZA%z(bE5eSpV-& zIlxK%e}-5C?V#7j9OAy2_>q}?l#jq`kaOwLnn^;<$D7QmcTd-ELGQ~_{$=h1G$cB} z%xY|{>;HSMZz;K_Yx^PA#7Bg$JuRF{!kC<^N$XoznjeW;`psLhP$BzI+t19p%PrR2 zMBGkfRM7U5N77|8-~iK(zZ})$E+Fc={89EFe>DsBM?=nHkRJ!U}Z1hgA{K)C}nyfvDqg^75V zVodhDInbFvUm|)a(tsXa0ZIr?5r{JHim7$`YQCbRSLyQcerJZx>R2f^yC$=H2?Pr4 z2YB(m?RK@*Ai*vmPSeEs z>VSYwtNmKZoeRpLeAtp%tNT76USb(q{j|h48dt>il!C{ALB!cSUXFOxs2X~36#z>U z@VCf&R!7%z-gLdw>>rUI9;fq5@GhLL*yNqgJu?h;OS* zw!(7D&-+egDqx-M1`4r%6#BVgFUZJ$-V$l?i{g<;b;;mAW1zwWV(uHfT!aRSUm35m zG~YP7a3olxmJ~hb;{hn?+8s&;Bk$el2HhED927s^TYlt)rce<4-B2qfZIRKcH7lWq|^e>ilYXY=i+=CjlngSVPu-pSr-FZ7G%=($Ds^Gi#u z@|^Rpbp{d0cBSE|u$$BnA(hT|!W%5ELjo}pT0)A^%od-ucpk4p@HmSbBqY@+IQ0Bf z`0?ta+wmiGPxr*+y5rbcoZi`=2h62v$P@m|x|E@|yhvYq)X@q>#;S`Beu&R`{8Ea} zm5`E&Gj%WD!&2MHeXv27GEMr|GM!Rm%YDIDgt0uTRzPIG_7g z8Bt9v8W;#2#&pNCFLrDHCmh@Wz`;gq6rB1TfDR_s;>p;!lu@*liM<|tlg_i7@NV$! zWec_hn7Boq^~ajlG1K7$aOuY0Z#)=`T4g7bN4KQe<|MK$_9P^1wMS5FP@R6hF<|pV z)`49kQ-*i!OVZcD%{k$i-NVr2v7!qI_;A#IjY|AKA>gF5e?q`1|AK&B{s{rUy4Xd{ zT&-*~FRxD6bpZ;2z3i?IQT(b*wlF5FY-9HS7X&P{5pMMQ^bK*yMSM*BLMhw%{U19I zd&9RMDM>0kd$8+CK^Dr1F)rtr>sCC1#IIPDlLgwHsD07(2;49?P|}FLp;qTm?b~5r z>$6xv6ELJ#YNkxi8HH-HJ0D76wW?KGoi=!RlY;Z@+M*vMACu`0<6fO$F)$GS69itH zuXk{b;mc9(?vKq=q8rXJyy9*`yt+m;$-5fFJIY{lHr_Bcufs$W09Y!BKobJi>oqA8 zb*@8Y!wZ$xeaVu(`WJ{y3vb;1l_(hQ{?@^W_4IHh}7M)MEg9cs&K#N-YsT7RG1urpUY_RUEQZEPiC} zEmpcv&LbHfr(<%c8N4PG(ncWRCwRV8bVge}REnW7-sD8A)lv2jSvOK)+$L7z0|BO) z=Wa*|D^2_>Ng?dR)6-58@iX#0Lt13Ik!}b;$D7a}`DfWfPxCJmRKIyUTxgaF^%dhv zFlj=+JGZyKI!;M&JupxjC?E#wY+kuWf<~v-Lr3~)bvzD5sIPPS$=_Q!U3okB335>& z(%MY3260EsF*PTKry!E`S|YoGeI+TtH}uBW`(N7}y}dFhZKV!BzYy%{Wt;fIQ>*~@ zyB=I&b)-P1KG3$Y^6Fd|dS@MyR~&en4zc;C3*ZLXIQQt5%cgliAysGSX1iR6s}Ee6 z#Iwwsj{4WIGbxLbm4U_T&LcEDgox8s+g7z{fSlDAULT zRB(J2W-Y^O-$KM|y{4}i?rQtXdFoJc=w~!*DZ#r5Wc*+cnaLW~0z&?m4dLCg3nJK~ zu0O5O?uwRWt35O^p!N8>MR#Y38-s6==H7B?Y za%%$!$MfzQhP*d~FSMoEY`W5(Tqa7rIivM+eB&^+_YJ1xc5>jb|d$R+sDGa z9Gi`H5c&FdNrRD6z0pcJJGQo-v8aM!P!C&UohL?{?JH1$d>7xh@Wd3C$Z4YdUA3qA zCdj9|(t3DY(e}S^U@DhK+ZIy%MTb;kdMYD(n`QFn&5g&GA`5k?pPdnWVJ0MCzWZXU zQAytGfox6Yc-bFU_oml^uTqbW^llr~?!YTu?3=x=RcDnjjwHj=@j#FAB!dOF{A4fNI5con`1RWN zF0-$=?`b<0zYf6JR-fK8k7}Pgy=lMQgj0^_YUwnguZ}CySMb^`U~KClWGzUcEd3fRJ=0Xx)nu&d301i3;5anrDeW$1&<-Q3*!MdE*&+Vtif>$?Ubh8;UFYZ!K2F z>YZbHCT{~MaaLNiZ=aP(N%~SoGsQpo8 zEVd!pxdgi+_~^7JLuzH~whqL1m2tL*U@fww=hud+LEWn+n1rgNaH#Hso19Tgp3No3 z+-9nnuctGP23xJ4=6kn_6LV%TH=qJe2JG=^D^(j_`j`Q)QXaILJUt^LV;a@F-0PIw z@FirT32T_sS+t_Meif)u+&q_7PZV0{fjh4azC#x;l(rS+$?sR0buVVd(W@gCrG8eY zicQDOba*ND(;CInDd9w!e|S%qv8{LrL7h%K0(bE8T^?#7@6tmTkyx;AQPcQv7p|j57(-zJ=!l1cCKfxTpJ=*%XOtbx)njRH2nxQ zp)Cgb;LG1M$<%71%i<8}U=|#fzxsGXuV@srHPupJI{Qb0l}>$ zHJm8i#C%~|;4t663mYUHUAXswEXXzGwh~vwTZ_>nSv$F$F;&`z-gU`gz$b7RA?;6K zeeTb}T%!<@LOfHe)H}X%{}_T*J37y)hrCW*s9>t9WfXksC0JxCT=VUO6OENzd+adX zfP9kcxF zpBXyf=&9g4EX=EfNO^7mb=H0B|OoMdpvW$Qr#v$j*2-vLY;l6@5 zPgM$eRi4<<&}S_tG-4^+%59CfC3N)8c%lnTtwpe^rUrg`wN+u#ZdGMdz-c|Kp@1a>ypt25zX~?Xrf%} z5z2GYJ7N&bQA`KVcI0#Gstp9M8>ryDnhu}C**loT0m;hLSJgt)(7nsbDnT%ADxGF~ zF6*hM46%DaPc__d|L`I!WOHb-XmKFgY^e67E&l^$-57+6$8Jo{6P6$5Q!`VwY4}>~ zndJ`4&Z!{uTSkSqdW}H7$t1T6_Thui#DL_HyO~Fq(VsQ6DSbsA7c;&6nE$5fT&9Kd z?zofnbmfL3L*$m{8zQ(rkYV2h*D!*p~RrBtt|( zIroU==gaDz67$#ocE^(qL^MFfE<2ZMlw((MK!wXbL+wiX4}7j$5}qhnqFFQK{!XIv z=m+z$1MkvR1DW7gwy*deKVyKK9n~0-QaU|9QTa8<8)%3PPd%NdC42RR8+uY<;+Il` z0`VWg{7Q~@k|;Tvp05f#VWkQ@HeJwOIktakd8uy@mISA;Smu9{ErTc6H-28 z4(n-Uo%IspQv=vQyUAfwN7k7i#!r|s#yG`o`iG^zCiFc~>&zaUw2OMZ<@+P_33$du zcdvK5KF7Kv#(8E~5d2>67}pW!NT#dmn7)e^njh&TQpI2laA#Jm+2klY1r(TAZsKhY z5nG?5gRkoIOF(_1i)lfD30rUYk)k(Rh|QTNV!ckyhM$IYZXYf2>%k!@0%ck{3HHKib$Cbtl~Q)^DB>7yuNK z4&S~?CH90GX2kV|5L=BxBaQv+jY%Zf`-yiM@! zquhAnZ0mt77_<*g8NlVh&K0aeEkRed)a&s`*d?|%#oUjwJ_eH)ZumzdGhMRe1MUQM z+D#MG{;<#{PI0aJ>4r7ACA#qW(7uU9jz;}c{sVJvb~^&E0|~8RkiE@Vu9>d8Tq$O5 z-+5@I6o-6b^z@*pwXUjhq`N{S*kT5ufSnr{!mE;7YFSSdWUD-^(%L*SAzsV*rnC_W zGC`i1MiToq9h(_+S@S7OCYjDTNPU$N-Q{HasQODsnIGcUAx3tD+kRrJ(!QWkdk)jL z-|F*pN+c%ss(T_zl0%Mqn=>~0z6a7el`&sRv(FGkb9Hy-lUm|ui$c8PsW7CZ!_MsY z)Ooj4h=5{#elgOuXrZ>=`%^Pa=tV#rM74bAUaB}X8PohyZ&XJeh5_SX2R3R-7SZw( zZf&kAp8l$(Z8yo8mF}g{9UNb|Ga@PFRRbGiH(d=&yLQl1Q_H_FY-@(5@Vu8u?pzkvK(ZG3?d$x98A;8*C#`N^|RlA+C z!lS0eVeZX1naR7Bv`;=UyKoW3In3v=Sc-GVdH2zol)_yjxvEwx z_e4~z%`hT4o>IR!-^Z>r>-i8Fo0?M3o$4+GO?{4jd2tRT1Q1>6 zX;l|r>)lk{I=nQaC8 zM5e#)GUpTx0fB5li|JgJGQom8=NsilR+i_;#|DcD$4@3^SIGG}y_ekU7e}^t+?Ffn zeN@#>7Dfd#i~d*>kK7E>5L=ZTC`)MIMa0vDoECMRtf9=(mor5R;&)3+uv&#_9y|qA zu|80%f)lsp+B;IH$eW|L&>VaAw*_B*pAT=d9%Psjl`(=dRpq}<(tD#2>{%2GvR>*+ zQNFV&Y8$!6)<@_X#|OH8e3{=+B1=|h!A-{y`$fgiFxdO`zmr)N+S2?qki}k>y(c} z9T~55Pb8$c9RogYwb(3NWW8Ib|2-tIbMxi3VX(numLc8czPFFWf3e`(2yY9{V)b2; z_5kKN+pIo8=xITRz@$oW0FM!3La)lN@y8a7YLo*gI=Yc1A&{bRC1Oq3KDw*9H_DnH ztF)rYV%~#@D|(yAqazp8bez0Aum7M0*YRpR5URvF32xFNZ~xt}$6% z+6%mqZ}UpfM?UV28k=tZx6#StH}SNQZ=!F|ImBvQ(eC+WBBo?~{=<|f0-5IymTxRN z)o+rEs;m=S`S5Ha2njE^{8I}w3Q4QxYbkcyy#8!;Dv`>=)wK|;a&l$(a7;DqTHd5A zjlJkX_fO%{cvs^t>?#{))O?)@|F`REbs^>9@4YXdR_9R0>bp!<8Lsi7gvNgtIREnX zuPsVYRNFxwr){;5r;N4$?)9%YZ0_C=!tdoLAy{nf=?QaX`LWa^`Hpslg3LC}kD_+k ze~by~fM?c=$;cnQTPnS+SPjPBurs9auLCqOWyf1_Iz)|ZWqZ(e^tH5L4J@|k4TI^M z_<89SO;cx9j_z%~HdLT>fz0;qLx-96cj$Po3F%T$${0)lHYa7LOOiwK>R{z<<$_U zb8J*?o_nGHx2vxYCa*dRJX^|`>E|Yea8Z7kFn%v0m1v^&=^53U(6a(mXk;^IWP_oO zOGMX#?3Fy>866GLeU-y+q7FDoks3B$rdI)9uJqbW@^@@S_xIXNm4#cIYB#BgXu$6P zT`Su*Nwg4&11bY!7^NOV{^rFmjX-f?xXcxKx}kbRmNCc=JW&wngCFy%eM``)Dw;I6 zufz9dRPns#^swcKotwgvoV>d@^B~py5Yh9?vqSLFH#?LUaKf^e{Idx}a{||1*`u;h zUcFVsh~Hp^kHPE@*sxn^r*T@n(p%}Fz{_dDKyBF<*$*49*3*LbmE$#U=vkL?wB5Yc zGd0=+j#3CdVC88G2w<5e%yb#ASrd=fSEu+nXgXa`mDa#ze7-}Vem;|hn>>-l&2{#t zQIK$Jj)Ta!O{%m7-WM!>|M)D$dOYj659w6^wn{LcYV*L)rs=%y<%ON3Qo@(ep0wEh zqpsSw$bm@7YINvx)==K3Pn(O4st51%srlIhOBXXf`j(m7w;WhW4(i14E1E-`vv4;| z?)_u*Tna&s5_vUcjrab?P^46$#a7c5fSInl6zec8;T~^9sCgE*zb!UXyIq<36z!2L zJ6>l%i48{jE?a*1RCNCA-BlOeuSn&B))2v1&0uX?r#|CKu~MI*Q*0*p1c{Nq_sOq5 zq2>IdSM^WAC*q?#;2e7k{ng5qdMd2##Yv|d*HYH^Dw~iUH8bWitL5Od4Chi9*=rrV z+x@Z+q~7sYAyIW}qBj2f8Cq7H#;hLO%s2os(5rlM`ph_j15> zkTETB=f~Vb{NbXYo1e0LT4fV!bM=C&pu$hxj|LPgj`!=|cEq9}3e$cy5gYB9(zi>|oCe}5?fq%i#`2wA z`3kTmm%(^S7FqqV0*5PMGstuhKX>)k3|kMv&IKugE<_UVAEMy7N+Y#aB9?s7a%yMK zU25FDz?OYR!>gm$7x;Ignk0V7qV1PFMt*ksH5`;qu0LG^vLFiP=5eB?*cor;#jqi7=rQ_`z)-d$Qncq1*%OgaZxV?F}5pJ9*ak1hQ0> z4@%R_KTxigylm@-sdNvTM8J<}PF2=w?wmHwBT8`?lGu&HpLMGzr0}}Koh#Fo2WU($ z49Ga>i&5kfnXswCxB9mj8ucv5>3Tt7z2}UL<8YapcHOIFJ zgn#Z3pt&K=+q+jZ8=sf!$%;9|1Q)#wrmiC4zuXltbdsw%)Jn)B-%M*3bixgP-mYzg z$y*Sk8f?*YgEmK~>g9ss?4ympwm`Dssf> zXTJu?@y!NH;}4qGFuJ`UH`adg5!rV~NwVHVl9l7!wDWa8YmCc6yPA5JkwC8b+okdu93)EnqodSs|(vAk=2@<*RSQJSYCGrZ@Ym zXBOnxvYGY!r;c3Ju+Qa4rvg}vY9E1YijJIu6Msi`R(@C7c>(uK1mF2xG1UVhdBKgA8sl(*V9Jbi)~8G=q;RPc^Lw0 zbLmE#9Vue7d^WyytZx@Uxud3PPqJZpqXuhMj*m+aY2oESD|VM>dl-rOo&%5;SbpU= zBX}cfIhYnY*3^-&Uz_Q3wtcKAkp0Jxbg8ZUC7`Q#AMNR2J!o;`za^#&Oc4XNSpCsAI)r_)+O(J&QF{ z6pfRi2?lr_I?7Is)2Zzs%0bSszLNuV(CG|;cIVzlUC?nP%T zFgE<6^mm`}((^j-)K9Knu?ZNUnXFFmQt=x1;DwfpG zqPJ3+iE4ScR~aSpxNLu-?yz5Ec&6oZoWEkCve9tvKG#Gs(I)pY%s60kvkxN@L7z3n~6SIb5 zW8&Dg483M%j9!G+^*7B>`zbWho)ye+0%|Ojf_l{r5V? zENl)KRhP`3^Pd<5gmi@xiS@Uq#(uz)onK0CP>T~um&#~{+!c1ri?&a3`q+hG{F7TrVajPJo{~)HbmjM{II`P>Z48pb?I>8jsKGSGyx)7jKW5sp^5jR2;F{4@V+a6}wdS7od*=_k4Vn71Z*fA$+5 zJ4}Cnr(>+eT&|~JSVMCx$1nQ(bGObP?EI8aT&C+S3JyR^7GcJ~@NsdZAkLMh0}mu7 zuX`j*s~KSi3e#N!F z#7%6G^v(?~wNzZnBXO6Jru^4MO5fFlZ%Hmhjp!>p``8aes@}8RxZh95G3aEuh%-r) zC@_H5^CSxv9LUv*UN$m+PT@A#7W!C^>9ZaHIseYKUo`z>lYDRlWN(4t1SfdVlgL+O z!`dLynJ66D*#G_#wDzs`vCDm52e-juBy48gLASXM;E1PbIW%iNucN(RxwxvKGM{{0 zB5`b1%D0vHy*O0A_p6_VKK`aoOcpi*FB7F15R-g?T{jAMkKR~bZGHayIVl<0%P8FH z@=!_1bH%dpoIqe-_H7?!&SBo0Mp=yc&{>XV`143QW4)4NyrU?rD-_>~$Q~ zNG_Pq^VH5xD-j5*($9Gwm@sASx(HCsoba91QSsv38Wg1iJQi=UoNTwH9I2YX<)p7z zUcH5bbK1IC|DF)+E-$6-u47+r{T@yg{?e^Sg606|Ug6qdTu*wCU9gjF2qR^`pss5* zDZ5gH%T!YNQ07UgiLTVuJwU=yHOL~|j=qiSLdx<_LJG+1MTxA~s>dB){D!-~MEw)` z9HOoSM|5@e`<45Wa8Ysk(yq_#OP)9{R&=z7r7(sjmQ)paxm#gmY_y9O5Rzj5$t|ms zciwwIlfn+aW76bL7MXaDD<|2jy1510S9cX}2J#*mPZ93Z%dP5v@G z|25aj^H$3|QhUe@^NnQKDH9P}f4UDT5^*_%3{@7W-v3+;HIUD@_m<0^a zit5l8yMJqVzD##9X0u2VCNENF|GqN+_|!6d@jM)nWkUb<*oT1OS&`1SeCqEF&*=bu zJT#nf_w;WK&n@!6v5%Gm77_pTwZEsr3&V5zS>W>D8=fTr!}E|l9cT658lK-W#GHT0mF0l{||2UG*h|tju4QvDQX^_)3P1wNi>OcM>uW2 zYk-KAgiClI^hA+JsTJMq_>YU=&q+rA3}#U&5cYdgmTo5$N}gTl$ZGD=U3_CxVhn%Y zi^~|F9eSH}e3zZFVnygGA(>lhVaT zM~g#8WoS7Q$o~MQ(d-u=D*&W=k-1~Y%Zc%4_Q_YrPcj*y(VIqM%F*9HPHE3j_(^{c z30C^{;p+N!Si1Yk4@H=WWqPG8=7mxs#~cFOfdm+_p7q)t7Ws%r&ONF$*&f^PE^4A- zLXgraUwQY77j{XZuU>^+{FFBeykAwnv-|#zs+8qskxM}gpY7%r(D2oIWxT0s0lC4p zL%|vSF*KnIe~V%vWs6neScnTir=L#JX8iS9w|HMXK3niC?C-~imgDocnoG5cOUuh$lVGTeVEG zDWziM0Ql)H^(&CLfmXur#k8M8U~jUhad!e2*Oi$Q=@%bD$KU6q@1PUs&HI}ifd+sZ z4c+k^on^z=PM%?q^4ZB{O(2<#-`)8NfJ!{z`nhX&x`C$B3xL47!g|Ne+U2Fhy$`Xa zk%3^s1~vNqcVUkt+*LB?k=={Ud}s1h>J5XbBF;*{qE=HJntzDB^XmtdJTTS1h#{U@c>9YVlL{|i6~yQfVr?mbt$ z)<~q2#Vs=-ZJYBw{`xD?w|s|MS7M{1qX_|{ovYxezyLJ`1>lDOmcoRO%ZMWD0J1C+ zfP_yv@@wy2tR|)1?k!K`WKB)gHWFuZ0Y>Zn%}E|n!=o_I`6_^N{S+?2BkXFkwlKgj zlZ=ki{uJ5F4Ad#R5D8Rm8iAHwhTDmU9+9U<@9c&vm&qS1ji9YyLY~Dma%tKo2)jws z)$|8o?~_QW$-<8}AH)%-AjZKoLzwyW;KdJ~{Mnb~`Z^nGA!3SK;u5tXU7s%q4XV*1 z-Ne4!@ON!5)+Hr@o~#bnf#^)NrE;A&sh7H!!{V)YclRXU0^o0%(J=+H=0o;-TG$U) z$^6N=H2dD4voz^dfj`D~rsWsgLE(T|U7yrtG5mdm=I|wpX>re? zw0_>NRe>e1^ZGll^3S~ch_gryJ~?q#l;yXy&}U)7T1W9t-Ihgt8BT`fU+%B$PH&tO zf;)Fr#48pGT6+ZeV)9KT*r`Z4n^UgZX_xA;VeD6!ff*-u7pXjy)DzkqIOog#$c}NA zj6gJQQs>XTA3sgEYM0mLRQPn#6Mz@0x}dg&gpq%~O6j%yH8T8IRDm*&uO@!xYgYTS z$E}jQdhZ!6loBf`KT;7kd@oSw=s)RrWc9jJuQ*xfN&5C2T&F3A*ZpIAb?3 z>jRsDw!)oJ-^wQDDMff>Uta9bGw%OtD^~0Xz%6=1rp!Q47F#~JET%db?oF`|hhh5Tb6I^S z8nr`lYFiDdB9QSfBUg+)x{1{3ptz3$$FK9WT?<|p1vQ8qzC_pBM*e_>Q5fxlMwZJ` zPX}ffctF!#R{Vj*TA{gaP&p(-XcolOTTDbt9rxj{TZ|?Kpe{3@pLgG|fjBcQ zR0-PodbpNfK7em<6{WpN(8T&XuxF-G;j(F{gBrQv z*7~B+^7~OheSi1tIcK!INdeoQeqgR=Fk56>_bqp1;Q@oGL}&X~eUvse#HnA(?n#_o50FgfV?TxNiVWNe zHokQamAEf5yMl>wZfI(k&~f$?+r}(B`gYk+j$;n zQMYk-oOk*m#&YP3(f9tlr)|66@wY&l#{^wPIrt+Rq(PNeql>`vSMH0Q)2?oJ6eV(t zd~92^f>TXYYsYqWso2!h625=@kovs8sFvIHo^%U8;TWAk;#`EvKf%zggOK|-RgTXa zXS8_|zvga^pE=Zk&wqoVB^O{QNsUDM7;<;QO``f=5yN};qSc6_g{S|8g+@osG9r(P z#)=bzd*hguvFhii=&e*5xqLQ_=Qf`u*%A?aZvMl5Fyc0{}SKSnG}oTf^Hz*SBk#J z?;JS>QR7Z`YEk>z+)21QbW1IFuf^3rfM;5t&61J3Gd6%);Z<})h1(!6-ffvR7OknE zq@z^JI02ouqtD^UKJC%cN4dCjp8d37*Wps|YK{}Q3llb(Xg!^(auqzzh1M%0(}6b3 zL@byQQ#VTjR#ZJB?-I$fUU^Q``1HBNkYJ-%@=~P;!#+=9`+O$(gW7)XZeTsPGlV*l`=#GM ze9Klk5tty*@^8m*EJClX&L-lW4SL+r*!J3CW&)=r5(w32&(o4Ge9p@$NHZ$Ch;WH5 zpFSdjrpE(YIsT;HXAQj>5?$P-hr58A1m9}{t=01oczIwqVUGeN$qD`pJC}#Kv z&sqLl7PaM{b)02!8Z#fm)6!2!`5MYp>FOF-d^Vrouy1jTT~Cr>cD%yY8r{J60(4%Z zLrWPYpqr0+=A;XMvJ(P53zYx-@>_M87>j(b;F=H*>zACV^Q+9OyI1uNuucW&$1)#Y zz6KR6AY*&LMDt4z*qFXxqVS0z#ZB=WS!aR+ z`cosr3>)=AX$c&zp$Z?VK5~x6=v`Y>@Tg3UtYyBHM-xTuz`;^`(i=k36>hU*RsF8e(XZ1fs==o=&qe`E57S|AgFM?YuH`XP6 zUfq#En5wsOg${_o?H?b(Ip4?vdNrzfmoc;rjy2h!}m)FcO zr5l>h%0E{Y8<^k@Sen*~lQ|3scI-jaXqRuL!?pEO3cQ=%W67EDASGeQ^1`_u4rA@*z zf;Z3UJ-U3LeZsefH>SzBiC0mGTbM-wJ#a*Yr9+Kgjr}LWwT7d*!TYk4-XoU^6M%#arG#V2?Ze7i z-;y1D&jmbx@ z-+gK^w8aZ2t%1{{RkSMYOZ9G?|lK0 z*z)dGDT>i4)G6Vli#Sv{^PQpLo5i2QZ`Cx4|B|4TG7SkNSAIBsa#pUs7#bPe8Qw>Q zK7ROrAtg2bkEA5n5|Di2e$AgUb8?Pw2I;6up4&8FwhrT_o%%={Pp2g_L%%)X_oWe9 zz2%7wKO3r2zE=PApQNPIKS{}K7)Q|06oMm(k{JgoEBE`S)wAPe5UOyiF2rBG@BjZe(CKv*m ztXTkHTo$gBfk%n!iDIKF8*(baPk!{m@h1HDjkcVo7kmK__f+T^dgqgkGlS6dowcT| zf@He!P2Wc=`o(>Qs$q%5A#6oZeJi34oQU{rt(T1Q)9A zjx({$OX|^p^Sumx5Fgp+Dxl!?^M|4}dQJ$9Fspu3q^U7Yee|i)2K`2^L8=ouh;ZC? z_B{M#nTBp$p`m;GAwM}>#I93%65HS5V>xj$PQ=#XvlDRYXZ-Y-O{_l`X^JUWYeXVm ze=ct=x~i5TVs>mYVvZ9HL7wJaRwjN$;Y^n8J_4lHrx~M?Ae&qg$UwjJPtSN#bYv8U z)mXr`#FK&O+Z`BCXGKB}$SKj6m0A=2kmk8G@r1P^?fVg5s1bQre2;JWtH?Z^-8#YE zr{F%#kxcZbfObTT59lF+Jk3kxN<`he8syrt{di@GmE=|OZg8;ATDe1q{GDODSLOH~ z(}1^PCx&aK#*S~2U6pjh6U{`%yWVfX(Y2y}~X%L}jR-cD8IFe1LBD{IbmIg+? zOi>y+8UCMW#IpAw(WP#f@~TcL=-vcoK$pDO#0);;(lMPCyzss4nYE?_Z%V$)*H=y_ z+D(18_qg@*%ZXKNd}-_rhHjrCopRc98|#^C-bUF?(s4s{xP<)&MoG1qW!&gQlk6ua zXcv#JTM^CA`tx-0u)fW|EQQK!E!F{405p?Tm4IC+7Y!190SUqXCNF`Og52UmD z3QSA|o~qQEK-er9if6w27#L=fCdAS>4}}T8uNzPYLS=SRl{`)qJQFIl!+A{LmMX=p zBjnZhE_ZB=nAIn9&3P`CXj&&j${(agR&q&sX`m8sYT=a@cxr z&eq-ZIJ^^^v%=?)y(Us;l%3yPSy!ck!|c2AlZB=6o0e5JmK4Jb_+D%_#;kZunZI5Y z1PV;%#MO0}QS{dOvQVpJN3g!uIxo$T$UpeP^ndY%@REPmwzvUwUDnc@2Ea5}qaJ{7A`V z@i0*-lboB2X~!;EE(K3T$R5O-XRL(=9tbkd9g_g^)vj@)ni0<$m6aGxphpqbwj&5> z>v{fCJp|h1lj;A0#;@cP*M#j^%7_^{sB_Tz`B4mKh@T=0fwZMO8=7o_o90Ew1h1n{JengLO& zqH&c^ti@<6iRQ^wFb-JH+mE9rx!+`kHrH^|&*!I{*y2~8^Bo6EIIq8_9bw_*oOK-L$B+n|uan44T`yl-d!?mvqMUG zdr#eHmNvXn!9e=+&gIjC4IsW!h5EmsgHpR|;&D`|x4B5|g5Pb4SDF;YDRnAAwAi(u z=`NKT+Xu*qHVAvN(>~(dX1$x!+HQm`81bsR8+m6(tz=^XynU2G;c;|M8$SbBGf3q9 zHXA$~qrVHKIN}SdGB2xeQE>l2tF+Q$9Nfl~!7t&=^W5z{*R~px-vOW{wl_(zAGz}k zI;M`i3JLPtt?e_u4b12M{&_r?$| zF8H?a)_|4tc2D)#|=mSEWb6a za^_PnlhOu$m&r3hpF8a>r}Smk$NA`oXNvDiY110VRNdX6tZ`Z1QqF{|V^Z=i1>Mm} zzy|j3ToPJ+wtDnQuXxlKXUj=7XGkn{8r^~0G9&f=dR!K0Z{sG2wyUD8)%;`%w&WU^ z8Ws|_qD)}~)6mSeNIMd0Iow#c7MgcHKJ%@x>yg8z#+Iy3y^VxQ*cQs9g(g5)$*dO^ z=wyPu^H6U4-i+z)9r#}HYzGn_4Md6vZPl|1x~;}FA+cUBbci4+B_+$tAYaC-w+NL& zm%@h|Km8pGC z-A`U>ShTbizEx9F3(q_hS8;>cO#tE6&QA3X1v!FE$$*yd!v<+YPpYB#>H9Qq4eVPN zF40J{tbJ2fde2wMGjEiDqF#9!`T9URZqJ)~@nikcB)yUJ zTl>MbcLG*0W9xz38l(KB9${39DIrvmVYoVP+SXj>lDmXXK)kOC`BF}YP5}J z4^b+~?(2}Y=3(7DX7!M<-zVxNW6!$k$jG_mO;a~NQ6U`Nq1_&LYVYA{UED93=J zmBE&eX>|lZB24ZN2ybgKp-T&7>crl&ENnfV6{aM ziNqickib-AH3UHjOMv^nU=gQ&>dgIcXPQr$$vo#hZ=Q4B^Um}Co&VVZE9$DP*=fx# zO@zRqMn1E0`e%W-X?j@LW}fP1Dxp-W#&I(WkBueJhQkcE}v};6;)A5qcQ>f z&^dCSBE%Rh`gt3`>&Sd3e?cFh^aeAV}ef48$|tUV$Mtal|MRA-Q1T1S&d6y!ip>fB*x{~Wj`@IoD zd@jpk&Ld*Z_LId4#P@wKx7^rs&FrPCB3g64?d@_%!@wY-oETL5FG(F#{!GPQx*)}y zCiIapL)n5*e9L!QHxA%s#7fYUYEmb~KLPgCAkfWfKXJ%LxZ9l1K6wU?{mHy*_np7W z>De#cKjvZe6b4M30Sq)KCSnTH_hlZifi4&M_0@}nophITJ7atRVf+FD)H0w!ln9G6 zuYYA14eP{rXe#rWP~p*r2~W{?Beh@KyM+S>`DQAq8Quz9IFxu(ORSERUYI*seb*?E zy-w@VB##>6qq7yr-&^gEW&j0EmS<>aKZn;5*0nTb9Re$t^UF?X3#%-@@h%s+L|EvX zBz&TtKHgF-N=54|V@Fm`l22BJjzom+a0z)p$7t&Z`;TcF?FmW)Agio*1}NW$5&ucG zHXB82?DFt&E5H-F&(Xn!Cb?K?P@uk-`e1IVF}Mp6WwXbjluaw>{l(VKfjXhBz|)u% z^>4@a7KqnG?Ey8kCY&_H!P8M~Wsh~^+V$k-RYnFAH#_T76gr|Phzf$*Fg?E>XZ#KV zW=c1u8M_60&nCB5J&^mborVuJ;mm&lCsoq4AZX&{ePMt!=M4>N_*O(nan4^``GUMo z3)`-TWYA}7<1_Xh;g2)?B(>>I^(OFQIdYq-Hm7AwP?G8HbT_9J55v`=2&kvhk}ngS&=-X*CQ#A`lqR;Zws$!o~S;4xCYsk3yLAJg&_E`0gW@x zMg@C!xx_}@LXmY6m_YNe|+`HpLL9U6hZ-8lc*jSyd=fu;VPS-8ks(FHB}FZ zysZ1CtFy=t@JL-H`6$44dLY!WdBu$}=QRRfeI@5@S35X;bS#aeWUh4^ILkP40z*Z5 zM4t>V@UxgtMQ3DmMh>~$e$ouWYM`P`7} z$y+<2M>(^e1qh!?-#NeGf$> ztuV64BGZN(kc$pxw*nTaiAmuEMR|oETPW5X$!u2UCYK%1La3LH8b&|K3!1e-5N%X*~tEZ z53g0V#WO^kdttu10HJrl>PeO~hx=hDRzcq7m$pNjBVJx)$78^MzGj!%XI z&oc3ne8m3Kun(;S><0iM(q3)t&x3$}-}ImUwf}9Vn|ZzUdv$as!u)@1`XtSNWIZVT zu&_F~h9ycWIZ>hP7H>D_Fmt*N_NQ)wLxf@4Tp9j1^!CY&oc#ZV-d0p4%Ngid + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +```javascript +window.snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-event-specifications@3/dist/index.umd.min.js', + ['eventSpecifications', 'EventSpecificationsPlugin'] +); +``` + +
    + + +- `npm install @snowplow/browser-plugin-event-specifications@3` +- `yarn add @snowplow/browser-plugin-event-specifications@3` +- `pnpm add @snowplow/browser-plugin-event-specifications@3` + + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { WebVitalsPlugin } from '@snowplow/browser-plugin-event-specifications'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ EventSpecificationsPlugin(/* plugin configuration */) ], +}); +``` + + + + +## Configuration + +The configuration of the plugin would be in the form of: + + + + +```javascript +window.snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-event-specifications@3/dist/index.umd.min.js', + ['eventSpecifications', 'EventSpecificationsPlugin'], + [ + { + [Plugin integration name]: { + /* Key value pairs of event names and event specification ids */ + }, + /* More integrations */ + } + ] +); +``` + + + + +```javascript +EventSpecificationsPlugin({ + [Plugin integration name]: { + /* Key value pairs of event names and event specification ids */ + }, + /* More integrations */ +}); +``` + + + + +You can retrieve the configuration for your Event Specifications directly from your Data Product after clicking on the `Implement tracking` button. + +![implement tracking button](./images/implement_tracking.png) diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/focalmeter/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/focalmeter/index.md new file mode 100644 index 0000000000..139eeb347c --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/focalmeter/index.md @@ -0,0 +1,107 @@ +--- +title: "Kantar Focal Meter" +sidebar_position: 180 +--- + +# Kantar Focal Meter integration + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import FocalMeter from "@site/docs/reusable/focalmeter-js-tracker/_index.md" +``` + +This plugin provides integration with [Focal Meter by Kantar](https://www.virtualmeter.co.uk/focalmeter). Focal Meter is a box that connects directly to the broadband router and collects viewing information for the devices on your network. + +This integration enables measuring the audience of content through the Focal Meter router meter. +The plugin has the ability to send the domain user ID to a [Kantar Focal Meter](https://www.virtualmeter.co.uk/focalmeter) endpoint. +A request is made when the first event with a new user ID is tracked. + +:::note +The plugin is available since version 3.16 of the tracker. +::: + +The Focal Meter integration is **automatic** once configured. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ❌ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +
    + + +- `npm install @snowplow/browser-plugin-focalmeter@focalmeter_plugin@3` +- `yarn add @snowplow/browser-plugin-focalmeter@focalmeter_plugin@3` +- `pnpm add @snowplow/browser-plugin-focalmeter@focalmeter_plugin@3` + + +
    + +## Initialization + + + + +To integrate with the Kantar FocalMeter, use the snippet below after [setting up your tracker](../../quick-start-guide/index.md): + +```javascript +window.snowplow( + 'addPlugin', + 'https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-focalmeter@3/dist/index.umd.min.js', + ['snowplowFocalMeter', 'FocalMeterPlugin'] +); + +window.snowplow('enableFocalMeterIntegration', { + kantarEndpoint: '{{kantar_url}}', + useLocalStorage: false // optional, defaults to false +}); +``` + + + + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { FocalMeterPlugin, enableFocalMeterIntegration } from '@snowplow/browser-plugin-focalmeter'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ FocalMeterPlugin() ], +}); + +enableFocalMeterIntegration({ + kantarEndpoint: '{{kantar_url}}', + useLocalStorage: false // optional, defaults to false +}); +``` + + + +## Enable integration + + + + +```mdx-code-block + +``` + + + + +```mdx-code-block + +``` + + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/form-tracking/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/form-tracking/index.md new file mode 100644 index 0000000000..7ea8ed12e3 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/form-tracking/index.md @@ -0,0 +1,477 @@ +--- +title: "Forms" +sidebar_position: 60 +--- + +# Form tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Snowplow form tracking creates three event types: `change_form`, `submit_form` and `focus_form`. Using the `enableFormTracking` method adds event listeners to all form elements and to all interactive elements inside forms (that is, all `input`, `textarea`, and `select` elements). + +This will only work for form elements which exist when it is called. If you are creating a form programmatically, call `enableFormTracking` again after adding it to the document to track it. You can call `enableFormTracking` multiple times without risk of duplicated events. **From v3.2.0**, if you are programmatically adding additional fields to a form after initially calling `enableFormTracking` then calling it again after the new form fields are added will include them in form tracking. + +:::note +Events on password fields will not be tracked. +::: + +Form events are **automatically tracked** once configured. + +## Installation + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +
    + + +- `npm install @snowplow/browser-plugin-form-tracking@3` +- `yarn add @snowplow/browser-plugin-form-tracking@3` +- `pnpm add @snowplow/browser-plugin-form-tracking@3` + + +
    + +## Enable form tracking + + + + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-form-tracking@3/dist/index.umd.min.js", + ["snowplowFormTracking", "FormTrackingPlugin"] +); + +snowplow('enableFormTracking'); +``` + + + + +This is part of the `@snowplow/browser-plugin-form-tracking` plugin. You need to install it with your favorite package manager: `npm install @snowplow/browser-plugin-form-tracking` and then initialize it: + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { FormTrackingPlugin, enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ FormTrackingPlugin() ], +}); + +enableFormTracking(); +``` + + + + +This will only work for form elements which exist when it is called. If you are creating a form programmatically, call `enableFormTracking` again after adding it to the document to track it. You can call `enableFormTracking` multiple times without risk of duplicated events. **From v3.2.0**, if you are programmatically adding additional fields to a form after initially calling `enableFormTracking` then calling it again after the new form fields are added will include them in form tracking. + +By default, all three event types are tracked. However, it is possible to subscribe only to specific event types using the `options.events` option when enabling form tracking: + + + + +```javascript +// subscribing to specific event types +snowplow('enableFormTracking', { + options: { + events: ['submit_form', 'focus_form', 'change_form'] + }, +}); +``` + + + +```javascript +// subscribing to specific event types +enableFormTracking({ + options: { + events: ['submit_form', 'focus_form', 'change_form'] + }, +}); +``` + + + +### `change_form` + +When a user changes the value of a `textarea`, `input`, or `select` element inside a form, a [`change_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/change_form/jsonschema/1-0-0) event will be fired. It will capture the name, type, and new value of the element, and the id of the parent form. + +### `submit_form` + +When a user submits a form, a [`submit_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/submit_form/jsonschema/1-0-0) event will be fired. It will capture the id and classes of the form and the name, type, and value of all `textarea`, `input`, and `select` elements inside the form. + +Note that this will only work if the original form submission event is actually fired. If you prevent it from firing, for example by using a jQuery event handler which returns `false` to handle clicks on the form's submission button, the Snowplow `submit_form` event will not be fired. + +### `focus_form` + +When a user focuses on a form element, a [`focus_form`](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/focus_form/jsonschema/1-0-0) event will be fired. It will capture the id and classes of the form and the name, type, and value of the `textarea`, `input`, or `select` element inside the form that received focus. + + +## Configuration + +It may be that you do not want to track every field in a form, or every form on a page. You can customize form tracking by passing a configuration argument to the `enableFormTracking` method. This argument should be an object with two elements named "forms" and "fields". The "forms" element determines which forms will be tracked; the "fields" element determines which fields inside the tracked forms will be tracked. As with link click tracking, there are three ways to configure each field: a denylist, an allowlist, or a filter function. You do not have to use the same method for both fields. + +**Denylists** + +This is an array of strings used to prevent certain elements from being tracked. Any form with a CSS class in the array will be ignored. Any field whose name property is in the array will be ignored. All other elements will be tracked. + +**Allowlists** + +This is an array of strings used to turn on tracking. Any form with a CSS class in the array will be tracked. Any field in a tracked form whose name property is in the array will be tracked. All other elements will be ignored. + +**Filter functions** + +This is a function used to determine which elements are tracked. The element is passed as the argument to the function and is tracked if and only if the value returned by the function is truthy. + +### Transform functions + +This is a function used to transform data in each form field. The value and element (2.15.0+ only) are passed as arguments to the function and the tracked value is replaced by the value returned. + +:::note Behavior prior to version 3.16 of the tracker + +**In versions prior to 3.16.0**, the transform function would receive 2 arguments, that were different between `submit_form` and `change_form` or `focus_form` events. More specifically, the transform function signature **was**: + +```typescript +type transformFn = (x: string | null, elt: ElementData | TrackedHTMLElement) => string | null; +``` + +For `change_form` and `focus_form` events the `elt` argument was the tracked HTML element itself, while for `submit_form` events, the `elt` argument was an object of type `ElementData` with only some of the original element's attributes: + +```typescript +interface ElementData extends Record { + name: string; + value: string | null; + nodeName: string; + type?: string; +} +``` + +::: + +**Since version 3.16.0**, the transform function receives three arguments: + +1. The value of the element. +2. Either the HTML element (for `change_form` and `focus_form` events) or an instance of `ElementData` (for `submit_form` events). +3. The HTML element (in all form tracking events). + +The function signature is: + +```typescript +type transformFn = ( + elementValue: string | null, + elementInfo: ElementData | TrackedHTMLElement, + elt: TrackedHTMLElement +) => string | null; +``` + +This means that you can now specify a transform function that applies the exact same logic to all `submit_form`, `change_form` and `focus_form` events independent of the element's attributes the logic may depend on. For example: + + + + +```javascript +function redactPII(eltValue, _, elt) { + if (elt.id === 'pid') { + return 'redacted'; + } + return eltValue; +} + +snowplow('enableFormTracking', { + options: { + fields: { transform: redactPII }, + }, +}); +``` + + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +function redactPII(eltValue, _, elt) { + if (elt.id === 'pid') { + return 'redacted'; + } + return eltValue; +} + +enableFormTracking({ + options: { + fields: { transform: redactPII }, + }, +}); +``` + + + + +:::caution + +It is recommended that the `transform` function does not return a falsy value but a string even when the intention is to redact a value from being tracked. +E.g. Send `"null"` over `null`. + +::: + + + +### Examples + +To track every form element and every field except those fields named "password": + + + + +```javascript +var opts = { + forms: { + denylist: [] + }, + fields: { + denylist: ['password'] + } +}; + +snowplow('enableFormTracking', { options: opts }); +``` + + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +var options = { + forms: { + denylist: [] + }, + fields: { + denylist: ['password'] + } +}; + +enableFormTracking({ options }); +``` + + + + +To track only the forms with CSS class "tracked", and only those fields whose ID is not "private": + + + + +```javascript +var opts = { + forms: { + allowlist: ["tracked"] + }, + fields: { + filter: function (elt) { + return elt.id !== "private"; + } + } +}; + +snowplow('enableFormTracking', { options: opts }); +``` + + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +var opts = { + forms: { + allowlist: ["tracked"] + }, + fields: { + filter: function (elt) { + return elt.id !== "private"; + } + } +}; + +enableFormTracking({ options: opts }); +``` + + + + +To transform the form fields with an MD5 hashing function: + + + + +```javascript +// For JavaScript tracker versions before 3.16.0 +// function hashMD5(value, elt) { +// // can use elt to make transformation decisions +// return MD5(value); +// } + +// For JavaScript tracker versions 3.16.0+ +function hashMD5(value, _, elt) { + // can use elt to make transformation decisions + return MD5(value); +} + +var opts = { + forms: { + allowlist: ["tracked"] + }, + fields: { + filter: function (elt) { + return elt.id !== "private"; + }, + transform: hashMD5 + } +}; + +snowplow('enableFormTracking', { options: opts }); +``` + + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +// For Browser tracker versions before 3.16.0 +// function hashMD5(value, elt) { +// // can use elt to make transformation decisions +// return MD5(value); +// } + +// For Browser tracker versions 3.16.0+ +function hashMD5(value, _, elt) { + // can use elt to make transformation decisions + return MD5(value); +} + +var options = { + forms: { + allowlist: ["tracked"] + }, + fields: { + filter: function (elt) { + return elt.id !== "private"; + }, + transform: hashMD5 + } +}; + +enableFormTracking({ options }); +``` + + + +## Tracking forms embedded inside iframes + +The options for tracking forms inside of iframes are limited – browsers block access to contents of iframes that are from different domains than the parent page. We are not able to provide a solution to track events using trackers initialized on the parent page in such cases. However, since version 3.4, it is possible to track events from forms embedded in iframes loaded from the same domain as the parent page or iframes created using JavaScript on the parent page (e.g., HubSpot forms). + +In case you are able to access form elements inside an iframe, you can pass them in the `options.forms` argument when calling `enableFormTracking` on the parent page. This will enable form tracking for the specific form elements. The feature may also be used for forms not embedded in iframes, but it's most useful in this particular case. + +The following example shows how to identify the form elements inside an iframe and pass them to the `enableFormTracking` function: + + + + +```javascript +let iframe = document.getElementById('form_iframe'); // find the element for the iframe +let forms = iframe.contentWindow.document.getElementsByTagName('form'); // find form elements inside the iframe +snowplow('enableFormTracking', { + options: { + forms: forms // pass the embedded forms when enabling form tracking + }, +}); +``` + + + + +```javascript +let iframe = document.getElementById('form_iframe'); // find the element for the iframe +let forms = iframe.contentWindow.document.getElementsByTagName('form'); // find form elements inside the iframe +enableFormTracking({ + options: { + forms: forms // pass the embedded forms when enabling form tracking + }, +}); +``` + + + + +## Custom context entities + +Context entities can be sent with all form tracking events by supplying them in an array in the `context` argument. + + + + +```javascript +snowplow('enableFormTracking', { options: {}, context: [] }); +``` + + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +enableFormTracking({ options: {}, context: [] }); +``` + + + +These context entities can be dynamic, i.e. they can be traditional self-describing JSON objects, or callbacks that generate valid self-describing JSON objects. + +For form change events, context generators are passed `(elt, type, value)`, and form submission events are passed `(elt, innerElements)`. + +A dynamic context could therefore look something like this for form change events: + + + + +```javascript +let dynamicContext = function (elt, type, value) { + // perform operations here to construct the context entity + return context; +}; + +snowplow('enableFormTracking', { options: {}, context: [dynamicContext] }); +``` + + + +```javascript +import { enableFormTracking } from '@snowplow/browser-plugin-form-tracking'; + +var dynamicContext = function (elt, type, value) { + // perform operations here to construct the context entity + return context; +}; + +enableFormTracking({ options: {}, context: [dynamicContext] }); +``` + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ga-cookies/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ga-cookies/index.md new file mode 100644 index 0000000000..a0e079c8a9 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ga-cookies/index.md @@ -0,0 +1,164 @@ +--- +title: "GA cookies" +sidebar_position: 130 +--- + +# GA cookies tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +If this plugin is used, the tracker will look for Google Analytics cookies (Universal Analytics and GA4, specifically the `__utma`, `__utmb`, `__utmc`, `__utmv`, `__utmz`, and `_ga` cookies) and combine their values into event context entities that get sent with every event. + +GA cookies information is **automatically tracked** once configured. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +
    + + +- `npm install @snowplow/browser-plugin-ga-cookies@3` +- `yarn add @snowplow/browser-plugin-ga-cookies@3` +- `pnpm add @snowplow/browser-plugin-ga-cookies@3` + + +
    + +## Initialization + +
    + +pre-v3.17.0 + + + + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ga-cookies@3/dist/index.umd.min.js", + ["snowplowGaCookies", "GaCookiesPlugin"] +); +``` + + + + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { GaCookiesPlugin } from '@snowplow/browser-plugin-ga-cookies'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ GaCookiesPlugin() ], +}); +``` + + + + +
    + + + + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ga-cookies@3/dist/index.umd.min.js", + ["snowplowGaCookies", "GaCookiesPlugin"], + [pluginOptions] +); +``` + + + + +```javascript +import { newTracker, trackPageView } from '@snowplow/browser-tracker'; +import { GaCookiesPlugin } from '@snowplow/browser-plugin-ga-cookies'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ GaCookiesPlugin(pluginOptions) ], +}); +``` + + + + +The `pluginOptions` parameter allows to configure the plugin. Its type is: + +```javascript +interface GACookiesPluginOptions { + ua?: boolean; + ga4?: boolean; + ga4MeasurementId?: string | string[]; + cookiePrefix?: string | string[]; +} +``` + +| Name | Default | Description | +|------------------|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ua | `true` | Send Universal Analytics specific cookie values. | +| ga4 | `false` | Send Google Analytics 4 specific cookie values. | +| ga4MeasurementId | `""` | Measurement id(s) to search the Google Analytics 4 session cookie. Can be a single measurement id as a string or an array of measurement id strings. The cookie has the form of `_ga_` where `` is the data stream container id and `` is the optional `cookie_prefix` option of the gtag.js tracker. | +| cookiePrefix | `[]` | Cookie prefix set on the Google Analytics 4 cookies using the `cookie_prefix` option of the gtag.js tracker. | + +## Context entities + +
    + +pre-v3.17.0 + +Adding this plugin will automatically capture the following context: + +**Context** [iglu:com.google.analytics/cookies/jsonschema/1-0-0](https://github.com/snowplow/iglu-central/blob/master/schemas/com.google.analytics/cookies/jsonschema/1-0-0) + +**Example** +```json +{ + "_ga": "GA1.2.739498691.16151511088" +} +``` + +
    + +Adding this plugin will automatically capture the following contexts: + +1. For Universal Analytics cookies: `iglu:com.google.analytics/cookies/jsonschema/1-0-0`, e.g. + + ```json + { + "_ga": "GA1.2.3.4" + } + ``` + +2. For GA4 cookies: `iglu:com.google.ga4/cookies/jsonschema/1-0-0` + + ```json + { + "_ga": "G-1234", + "cookie_prefix": "prefix", + "session_cookies": [ + { + "measurement_id": "G-1234", + "session_cookie": "567" + } + ] + } + ``` diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/index.md new file mode 100644 index 0000000000..84f28c3c99 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/index.md @@ -0,0 +1,507 @@ +--- +title: "Tracking data out-of-the-box" +date: "2022-08-30" +sidebar_position: 2500 +--- + +# Tracking data out-of-the-box + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +To track an event, the API is slightly different depending if you're using the JavaScript or Browser version of our web tracker. + +For example, instrumenting a tracker and manually tracking a [page view](./page-views/index.md). Note that [activity tracking](./activity-page-pings/index.md) (page pings) is also configured here. + + + + + ```javascript + + + + ``` + + + +```javascript +import { + newTracker, + trackPageView, + enableActivityTracking +} from '@snowplow/browser-tracker'; + +newTracker('sp', '{{collector_url_here}}', { + appId: 'my-app-id', +}); + +enableActivityTracking({ + minimumVisitLength: 30, + heartbeatDelay: 10 +}); + +trackPageView(); +``` + + + + +The tracker makes it easy to track different kinds of data. We provide three kinds of base events - PageViews, Structured, and fully custom (Self-Describing) - that can be manually tracked. On top of this, we also provide a range of [plugins](../plugins/index.md) for automatic and manual tracking of different events and entities. + +Each event has an associated context, which is composed of entities. The tracker attaches entities to the events based on the tracker configuration and active plugins. You can also attach your own [custom entities](../custom-tracking-using-schemas/index.md) to all `trackX` method calls. + +:::note + +Tracker methods available through plugins do not necessarily support adding custom entities. For those please refer to the corresponding plugin documentation for details. + +::: + +For example, here is a page view with an additional custom context entity. + + + + +```javascript +snowplow('trackPageView', { + context: [{ + schema: "iglu:com.example_company/page/jsonschema/1-2-1", + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }] +}); +``` + + + +```javascript +trackPageView({ + context: [{ + schema: 'iglu:com.example_company/page/jsonschema/1-2-1', + data: { + pageType: 'test', + lastUpdated: new Date(2021,04,01) + } + }] +}); +``` + + + +Every tracked event payload has a unique `event_id` UUID string set by the tracker, a set of timestamps, and other ubiquitous properties such as the `namespace`. You can find out more about how events and entities are structured [here](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md). + +## Auto-tracked entities + +The tracker can be set up to automatically track certain events, or automatically add entities to every event sent. Most autotracking is specifically configured using plugins, which are imported, enabled, and configured individually. + +However, the following autotracked context entities can be configured directly when instrumenting the tracker. To enable them, simply add their names and boolean to the `contexts` field of the [configuration object](../tracker-setup/initialization-options/index.md). They will be added to every event tracked. + +| Entity | Usage | Enabled by default | +|-----------|-----------------------------------|--------------------| +| [`webPage`](./page-views/index.md#webpage-context-entity) | A UUID for the page view. | `true` | +| [`session`](./session/index.md) | Data about the current session. | `false` | +| [`browser`](../browsers/index.md) | Properties of the user's browser. | `false` | + +The following context entities can be configured by plugin, or when setting up the **JavaScript tracker** configuration object only. To automatically track these context entities when using the Browser tracker, use the plugin versions. + +| Entity | Usage | Enabled by default | +|---------------------|--------------------------------|--------------------| +| [`performanceTiming`](./timings/index.md) | Performance timing metrics. | `true` | +| [`gaCookies`](./ga-cookies/index.md) | Extract GA cookie values. | `true` | +| [`geolocation`](./timezone-geolocation/index.md) | User's geolocation. | `false` | +| [`clientHints`](./client-hints/index.md) | Chrome user-agent Client Hints | `true` | + +## Manually-tracked events + +The tracker provides methods for tracking different types of events. +The events are divided into two groups: canonical events and self-describing events. Canonical event properties have their own column in the data warehouse, while self-describing custom events are based on JSON schema. + +### Page view + +Read about page view tracking [here](./page-views/index.md). + +### Custom (self-describing) + +Our philosophy in creating Snowplow is that users should capture important user interactions and design suitable data structures for this data capture. You can read more about that philosophy [here](/docs/understanding-tracking-design/index.md). + +Read about how to track custom events [here](../custom-tracking-using-schemas/index.md). + +### Structured + +There may be user interactions where custom self-describing events are too complex or unwarranted. They are candidates to track using `trackStructEvent`. + +There are five parameters that can be associated with each structured event. Only the first two are required: + +| Name | Required? | Description | Type | +|------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| `Category` | Yes | The name you supply for the group of objects you want to track e.g. 'media', 'ecomm'. | String | +| `Action` | Yes | Defines the type of user interaction for the web object e.g. 'play-video', add-to-basket'. | String | +| `Label` | No | Identifies the specific object being actioned e.g. ID of the video being played, or the SKU or the product added to basket. | String? | +| `Property` | No | Describing the object or the action performed on it. This might be the quantity of an item added to basket. | String? | +| `Value` | No | Quantify or further describe the user action. This might be the price of an item added to basket, or the starting time of the video where play was just pressed. | Float? | + +An example of tracking a user listening to a music mix: + + + + +```javascript runnable +snowplow('trackStructEvent', { + category: 'Mixes', + action: 'Play', + label: 'MrC/fabric-0503-mix', + property: '', + value: 0.0 +}); +``` + + + +```javascript +import { trackStructEvent } from '@snowplow/browser-tracker'; + +trackStructEvent({ + category: 'Mixes', + action: 'Play', + label: 'MrC/fabric-0503-mix', + value: 0.0 +}); +``` + + + + +## Tracking data that is not event-type specific + +Some data, such as that relating to the user whose activity is being tracked, is relevant across all event types. The tracker provides two mechanisms for tracking this kind of data. + +Certain properties, including `domain_userid` or `application_id`, can be set as "atomic" properties in the raw event. These properties have their own column in the data warehouse. + +A more general and powerful method is to attach self-describing JSON "context entities" to your events - the same JSON schemas as used for self-describing events. This means that any data that can be described by a JSON schema can be added to any or all of your events. Read more [here](../custom-tracking-using-schemas/index.md). + +All events also provide the option for setting a custom timestamp, called `trueTimestamp`. See below for details. + +### Setting application ID + +Set the application ID using the `appId` field of the [tracker configuration object](../tracker-setup/initialization-options/index.md). This will be attached to every event the tracker fires. You can set different application IDs on different parts of your site. You can then distinguish events that occur on different applications by grouping results based on `application_id`. + +### Setting application platform + +Set the application platform using the `platform` field of the [tracker configuration object](../tracker-setup/initialization-options/index.md). This will be attached to every event the tracker fires. Its default value is “web”. For a list of supported platforms, please see the [Snowplow Tracker Protocol](/docs/collecting-data/collecting-from-own-applications/snowplow-tracker-protocol/index.md#application-parameters). + +### Setting the user ID + +The JavaScript Tracker automatically sets a `domain_userid` based on a first party cookie. Read more about cookies [here](../cookies-and-local-storage/index.md). + +There are many situations, however, when you will want to identify a specific user using an ID generated by one of your business systems. To do this, you use one of the methods described in this section: `setUserId`, `setUserIdFromLocation`, `setUserIdFromReferrer`, and `setUserIdFromCookie`. + +Typically, companies do this at points in the customer journey where users identify themselves e.g. if they log in. + +:::note +This will only set the user ID on further events fired while the user is on this page; if you want events on another page to record this user ID too, you must call `setUserId` on the other page as well. +::: + +#### `setUserId` + +`setUserId` is the simplest of the four methods. It sets the business user ID to a string of your choice: + + + + +```javascript +snowplow('setUserId', 'joe.blogs@email.com'); +``` + + + + +```javascript +setUserId('joe.blogs@email.com'); +``` + + + + +:::note +`setUserId` can also be called using the alias `identifyUser`. +::: + +#### `setUserIdFromLocation` + +`setUserIdFromLocation` lets you set the user ID based on a querystring field of your choice. For example, if the URL is `http://www.mysite.com/home?id=user345`, then the following code would set the user ID to “user345”: + + + + +```javascript +snowplow('setUserIdFromLocation', 'id'); +``` + + + + +```javascript +setUserIdFromLocation('id'); +``` + + + + +#### `setUserIdFromReferrer` + +`setUserIdFromReferrer` functions in the same way as `setUserIdFromLocation`, except that it uses the referrer querystring rather than the querystring of the current page. + + + + +```javascript +snowplow('setUserIdFromReferrer', 'id'); +``` + + + +```javascript +setUserIdFromReferrer('id'); +``` + + + + +#### `setUserIdFromCookie` + +Use `setUserIdFromCookie` to set the value of a cookie as the user ID. For example, if you have a cookie called “cookieid” whose value is “user123”, the following code would set the user ID to “user123”: + + + + +```javascript +snowplow('setUserIdFromCookie', 'cookieid'); +``` + + + + +```javascript +setUserIdFromCookie('cookieid'); +``` + + + + +### Getting user ID once set + +It's possible to retrieve certain properties for use in your code, including the user ID, [page view ID](./page-views/index.md#get-page-view-id), and [cookie values](../cookies-and-local-storage/getting-cookie-values/index.md#retrieving-cookie-properties-from-the-tracker), using a tracker callback. This is an advanced usage of the tracker. + +```mdx-code-block +import RetrieveValuesJs from "@site/docs/reusable/javascript-tracker-retrieve-values/_javascript.md" +import RetrieveValuesBrowser from "@site/docs/reusable/javascript-tracker-retrieve-values/_browser.md" +``` + + + + + + + + + + + + + + +The `getUserId` method returns the user ID which you configured using `setUserId()`: + + + + +```javascript +// Access the tracker instance inside a callback +snowplow(function () { + var sp = this.sp; + var userId = sp.getUserId(); + console.log(userId); +}) +``` + + + + +```javascript +const userId = sp.getUserId(); +console.log(userId); +``` + + + + +### Setting a custom page URL and referrer URL + +The Snowplow JavaScript Tracker automatically tracks the page URL and referrer URL on any event tracked. However, in certain situations, you may want to override the one or both of these URLs with a custom value. For example, this might be desirable if your CMS spits out particularly ugly URLs that are hard to unpick at analysis time. + +To set a custom page URL, use the `setCustomUrl` method: + + + + +```javascript +snowplow('setCustomUrl', 'http://mysite.com/checkout-page'); +``` + + + + +```javascript +setCustomUrl('http://mysite.com/checkout-page'); +``` + + + + +To set a custom referrer, use the `setReferrerUrl` method: + + + + +```javascript +snowplow('setReferrerUrl', 'http://custom-referrer.com'); +``` + + + + +```javascript +setReferrerUrl('http://custom-referrer.com'); +``` + + + + +:::tip For Single Page Apps +On an SPA, the page URL might change without the page being reloaded. Whenever an event is fired, the Tracker checks whether the page URL has changed since the last event. If it has, the page URL is updated and the URL at the time of the last event is used as the referrer. If you use `setCustomUrl`, the page URL will no longer be updated in this way. Similarly if you use `setReferrerUrl`, the referrer URL will no longer be updated in this way. + +To use `setCustomUrl` within an SPA, call it before all `trackPageView` calls. + +If you want to ensure that the original referrer is preserved even though your page URL can change without the page being reloaded, use `setReferrerUrl` like this before sending any events: + + + + +```javascript +snowplow('setReferrerUrl', document.referrer); +``` + + + + +```javascript +setReferrerUrl(document.referrer); +``` + + +::: + +### Adding custom timestamps to events + +Snowplow events have several timestamps. The raw event payload always contains a `deviceCreatedTimestamp` (`dtm`) and a `deviceSentTimestamp` (`stm`). Other timestamps are added as the event moves through the pipeline. + +Every `trackX...()` method in the tracker allows for a custom timestamp, called `trueTimestamp` to be set. Read more about timestamps in [this still relevant forums post](https://discourse.snowplowanalytics.com/t/which-timestamp-is-the-best-to-see-when-an-event-occurred/538). + +As standard, every event tracked by the Javascript tracker will be recorded with two timestamps: + +1. A `device_created_tstamp` - set when the event occurred +2. A `device_sent_tstamp` - set when the event was sent by the tracker to the collector + +These are combined downstream in the Snowplow pipeline (with the `collector_tstamp`) to calculate the `derived_tstamp`, which is our best estimate of when the event actually occurred. + +In certain circumstances you might want to set the timestamp yourself e.g. if the JS tracker is being used to process historical event data, rather than tracking the events live. In this case you can set the `true_timestamp` for the event. When set, this will be used as the value in the `derived_tstamp` rather than a combination of the `device_created_tstamp`, `device_sent_tstamp` and `collector_tstamp`. + +To set the true timestamp add an extra argument to your track method: `{type: 'ttm', value: unixTimestampInMs}`. + +E.g. to set a true timestamp with a page view event: + + + + +```javascript +snowplow('trackPageView', { + timestamp: { type: 'ttm', value: 1361553733371 } +}); +``` + + + +```javascript +trackPageView({ + timestamp: { type: 'ttm', value: 1361553733371 } +}); +``` + + + + +E.g. to set a true timestamp for a self-describing event: + + + + +```javascript +snowplow('trackSelfDescribingEvent', { + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/2-0-0', + data: { + productId: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + availableSince: new Date(2013,3,7) + } + }, + timestamp: { type: 'ttm', value: 1361553733371 } +}); +``` + + + + +```javascript +trackSelfDescribingEvent({ + event: { + schema: 'iglu:com.acme_company/viewed_product/jsonschema/2-0-0', + data: { + productId: 'ASO01043', + category: 'Dresses', + brand: 'ACME', + returning: true, + price: 49.95, + sizes: ['xs', 's', 'l', 'xl', 'xxl'], + availableSince: new Date(2013,3,7) + } + }, + timestamp: { type: 'ttm', value: 1361553733371 } +}); +``` + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/link-click/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/link-click/index.md new file mode 100644 index 0000000000..40bc72c5f1 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/link-click/index.md @@ -0,0 +1,423 @@ +--- +title: "Link clicks" +sidebar_position: 40 +--- + +# Link click tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +Link click tracking adds click event listeners to all link elements. + +Link clicks are tracked as self describing events. Each link click event captures the link’s href attribute. The event also has fields for the link’s id, classes, and target (where the linked document is opened, such as a new tab or new window). + +[Here](https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.snowplow/link_click/jsonschema/1-0-1) is the JSON schema for a link click event. + +Link click events are **automatically tracked** once configured. + +## Install plugin + + + + +| Tracker Distribution | Included | +|----------------------|----------| +| `sp.js` | ✅ | +| `sp.lite.js` | ❌ | + +**Download:** + +
    Download from GitHub Releases (Recommended)Github Releases (plugins.umd.zip)
    Available on jsDelivrjsDelivr (latest)
    Available on unpkgunpkg (latest)
    + +**Note:** The links to the CDNs above point to the current latest version. You should pin to a specific version when integrating this plugin on your website if you are using a third party CDN in production. + +
    + + +- `npm install @snowplow/browser-plugin-link-click-tracking` +- `yarn add @snowplow/browser-plugin-link-click-tracking` +- `pnpm add @snowplow/browser-plugin-link-click-tracking` + + +
    + +## Enable link click tracking + +Turn on link click tracking like this: + + + + +```javascript +window.snowplow('addPlugin', + "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-link-click-tracking@3/dist/index.umd.min.js", + ["snowplowLinkClickTracking", "LinkClickTrackingPlugin"] +); + +snowplow('enableLinkClickTracking'); +``` + + + + +Link click tracking is part of a separate plugin, `@snowplow/browser-plugin-link-click-tracking`. You need to install it with your favourite package manager: `npm install @snowplow/browser-plugin-link-click-tracking@3` and then initialize it: + +```javascript +import { newTracker } from '@snowplow/browser-tracker'; +import { LinkClickTrackingPlugin, enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +newTracker('sp1', '{{collector_url}}', { + appId: 'my-app-id', + plugins: [ LinkClickTrackingPlugin() ], +}); + +enableLinkClickTracking(); +``` + + + +Use this method once and the tracker will add click event listeners to all link elements. + +An optional parameter is `pseudoClicks`. If this is not turned on, Firefox will not recognize middle clicks. If it is turned on, there is a small possibility of false positives (click events firing when they shouldn't). **Turning this feature on is recommended**: + + + + +```javascript +snowplow('enableLinkClickTracking', { pseudoClicks: true }); +``` + + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +enableLinkClickTracking({ pseudoClicks: true }); +``` + + + + +This is its signature (where `?` is an optional property): + + + + +```javascript +snowplow('enableLinkClickTracking', { + options?: FilterCriterion, + pseudoClicks?: boolean, + trackContent?: boolean + context?: SelfDescribingJson[] +}); +``` + + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +enableLinkClickTracking({ + options?: FilterCriterion, + pseudoClicks?: boolean, + trackContent?: boolean + context?: SelfDescribingJson[] +}); +``` + + + + +## Refresh link click tracking + +The `enableLinkClickTracking` method only tracks clicks on links that exist when the page has loaded. If new links can be added to the page after then that you wish to track, use `refreshLinkClickTracking`. This will add Snowplow click listeners to all links which do not already have them (and which match the denylist, allowlist, or filter function you specified when `enableLinkClickTracking` was originally called). Use it like this: + + + + +```javascript +snowplow('refreshLinkClickTracking'); +``` + + + + +```javascript +import { refreshLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +refreshLinkClickTracking(); +``` + + + + +## Configuration + +Control which links to track using the FilterCriterion object. + +Where FilterCriterion is an object: + +```javascript +interface FilterCriterion { + /** A collection of class names to include */ + allowlist?: string[]; + /** A collector of class names to exclude */ + denylist?: string[]; + /** A callback which returns a boolean as to whether the element should be included */ + filter?: (elt: HTMLElement) => boolean; +} +``` + +You can control which links are tracked using the second argument. There are three ways to do this: a denylist, an allowlist, and a filter function. + +### Denylist + +This is an array of CSS classes which should be ignored by link click tracking. For example, the below code will stop link click events firing for links with the class "barred" or "untracked", but will fire link click events for all other links: + + + + +```javascript +snowplow('enableLinkClickTracking', { + options: { + denylist: ['barred', 'untracked'] + } +}); + +// If there is only one class name you wish to deny, +// you should still put it in an array +snowplow('enableLinkClickTracking', { options: { 'denylist': ['barred'] } }); +``` + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +enableLinkClickTracking({ + options: { + denylist: ['barred', 'untracked'] + } +}); + +// If there is only one class name you wish to deny, +// you should still put it in an array +enableLinkClickTracking({ options: { 'denylist': ['barred'] } }); +``` + + + +### Allowlist + +The opposite of a denylist. This is an array of the CSS classes of links which you do want to be tracked. Only clicks on links with a class in the list will be tracked. + + + + +```javascript +snowplow('enableLinkClickTracking', { + options: { + 'allowlist': ['unbarred', 'tracked'] + } +}); + + // If there is only one class name you wish to allow, + // you should still put it in an array +snowplow('enableLinkClickTracking', { options: { 'allowlist': ['unbarred'] } }); +``` + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +enableLinkClickTracking({ + options: { + 'allowlist': ['unbarred', 'tracked'] + } +}); + + // If there is only one class name you wish to allow, + // you should still put it in an array +enableLinkClickTracking({ options: { 'allowlist': ['unbarred'] } }); +``` + + + + +### Filter function + +You can provide a filter function which determines which links should be tracked. The function should take one argument, the link element, and return either 'true' (in which case clicks on the link will be tracked) or 'false' (in which case they won't). + +The following code will track clicks on those and only those links whose id contains the string "interesting": + + + + +```javascript +function myFilter (linkElement) { + return linkElement.id.indexOf('interesting') > -1; +} + +snowplow('enableLinkClickTracking', { options: { 'filter': myFilter } }); +``` + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +function myFilter (linkElement) { + return linkElement.id.indexOf('interesting') > -1; +} + +enableLinkClickTracking({ options: { 'filter': myFilter } }); +``` + + + + +Another optional parameter is `trackContent`. Set it to `true` if you want link click events to capture the innerHTML of the clicked link: + + + + +```javascript +snowplow('enableLinkClickTracking', { trackContent: true }); +``` + + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +enableLinkClickTracking({ trackContent: true }); +``` + + + + +The innerHTML of a link is all the text between the `a` tags. Note that if you use a base 64 encoded image as a link, the entire base 64 string will be included in the event. + +Each link click event will include (if available) the destination URL, id, classes and target of the clicked link. (The target attribute of a link specifies a window or frame where the linked document will be loaded.) + +**Context** + +`enableLinkClickTracking` can also be passed an array of custom context entities to attach to every link click event as an additional final parameter. + +Link click tracking supports dynamic context entities. Callbacks passed in the context argument will be evaluated with the source element passed as the only argument. The self-describing JSON context object returned by the callback will be sent with the link click event. + +A dynamic context could therefore look something like this for link click events: + + + + +```javascript +let dynamicContext = function (element) { + // perform operations here to construct the context + return context; +}; + +snowplow('enableLinkClickTracking', { context: [dynamicContext] }); +``` + + + +```javascript +import { enableLinkClickTracking } from '@snowplow/browser-plugin-link-click-tracking'; + +let dynamicContext = function (element) { + // perform operations here to construct the context + return context; +}; + +enableLinkClickTracking({ context: [ dynamicContext ] }); +``` + + + + +See [this page](../../custom-tracking-using-schemas/index.md) for more information about tracking context entities. + +## Manual link click tracking + +You can manually track individual link click events with the `trackLinkClick` method. This is its signature: + + + + +```javascript +snowplow('trackLinkClick, { + /** The target URL of the link */ + targetUrl: string; + /** The ID of the element clicked if present */ + elementId?: string; + /** An array of class names from the element clicked */ + elementClasses?: Array; + /** The target value of the element if present */ + elementTarget?: string; + /** The content of the element if present and enabled */ + elementContent?: string; +}); +``` + + + + +```javascript +import { trackLinkClick } from '@snowplow/browser-plugin-link-click-tracking'; + +trackLinkClick({ + /** The target URL of the link */ + targetUrl: string; + /** The ID of the element clicked if present */ + elementId?: string; + /** An array of class names from the element clicked */ + elementClasses?: Array; + /** The target value of the element if present */ + elementTarget?: string; + /** The content of the element if present and enabled */ + elementContent?: string; +}); +``` + + + + +Of these arguments, only `targetUrl` is required. This is how to use `trackLinkClick`: + + + + +```javascript +snowplow('trackLinkClick', { + targetUrl: 'http://www.example.com', + elementId: 'first-link', + elementClasses: ['class-1', 'class-2'], + elementTarget: '', + elementContent: 'this page' +}); +``` + + + + +```javascript +import { trackLinkClick } from '@snowplow/browser-plugin-link-click-tracking'; + +trackLinkClick({ + targetUrl: 'http://www.example.com', + elementId: 'first-link', + elementClasses: ['class-1', 'class-2'], + elementTarget: '', + elementContent: 'this page' +}); +``` + + diff --git a/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/html5/index.md b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/html5/index.md new file mode 100644 index 0000000000..5681caba73 --- /dev/null +++ b/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/media/html5/index.md @@ -0,0 +1,473 @@ +--- +title: "HTML5" +sidebar_position: 10 +--- + +# HTML5 media tracking + +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + +This plugin will allow the tracking of any HTML5 `
    Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/fractribution/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/fractribution/index.mdx index 562a3cfb81..92176ae5cf 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/fractribution/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/fractribution/index.mdx @@ -61,7 +61,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/mobile/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/mobile/index.mdx index e50b4ac507..09d878ec23 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/mobile/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/mobile/index.mdx @@ -86,7 +86,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/web/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/web/index.mdx index c454f9236a..7c1c5d72e4 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/web/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/legacy/web/index.mdx @@ -87,7 +87,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/media-player/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/media-player/index.mdx index cdc9b4c916..14e4bdb8aa 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/media-player/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/media-player/index.mdx @@ -77,7 +77,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/normalize/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/normalize/index.mdx index cf2d52c264..51f9aa1e97 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/normalize/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/normalize/index.mdx @@ -61,7 +61,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/unified/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/unified/index.mdx index 7f904fe7a9..e4e7d9cd4a 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/unified/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/unified/index.mdx @@ -81,7 +81,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/utils/index.mdx b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/utils/index.mdx index cec1c77939..7d13d67d3e 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/utils/index.mdx +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/utils/index.mdx @@ -58,7 +58,7 @@ export const MyMdxComponent = () => { ); }; - + Variables Definitions
    Config Generator
    Schema Generator diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/examples/additional-sql-on-events-this-run/index.md b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/examples/additional-sql-on-events-this-run/index.md index ebc5c54a78..dba9e80a21 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/examples/additional-sql-on-events-this-run/index.md +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/examples/additional-sql-on-events-this-run/index.md @@ -4,6 +4,11 @@ description: "Details on how to add sql to the events this run table" sidebar_position: 40 --- +```mdx-code-block +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +``` + There may be times when the [events this run table](/docs/modeling-your-data/modeling-your-data-with-dbt/package-mechanics/this-run-tables/index.md#events-this-run) requires additional fields on it for you to make use of to [add to your derived tables](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/examples/adding-fields-to-derived-table/index.md). It is not recommended to alter this model directly, as it is a core part of the packages, but you can use the `snowplow__custom_sql` variable in packages that support it to add custom sql into the `select` block of the events this run model. To find out if your package supports this, check the [configuration](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-configuration/index.md) page. diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/ecommerce/index.md b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/ecommerce/index.md index 4bf66d7462..4e1b55ecf4 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/ecommerce/index.md +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/ecommerce/index.md @@ -128,7 +128,7 @@ vars: ### 8. Optimize your project -There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/ddbt-custom-models/high-volume-optimizations/) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: +There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/high-volume-optimizations/index.md) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: ```yml title="dbt_project.yml" vars: diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/media-player/index.md b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/media-player/index.md index 3b1aad5ac6..9fd5e4cae9 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/media-player/index.md +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/media-player/index.md @@ -181,7 +181,7 @@ For other variables you can configure please see the [model configuration](/docs ### 7. Optimize your project -There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/ddbt-custom-models/high-volume-optimizations/) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: +There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/high-volume-optimizations/index.md) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: ```yml title="dbt_project.yml" vars: diff --git a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/unified/index.md b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/unified/index.md index 6366225032..bd1929c12d 100644 --- a/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/unified/index.md +++ b/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-quickstart/unified/index.md @@ -171,7 +171,7 @@ Depending on the use case it should either be the catalog (for Unity Catalog use ### 8. Optimize your project -There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/ddbt-custom-models/high-volume-optimizations/) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: +There are ways how you can deal with [high volume optimizations](/docs/modeling-your-data/modeling-your-data-with-dbt/dbt-custom-models/high-volume-optimizations/index.md) at a later stage, if needed, but you can do a lot upfront by selecting carefully which variable to use for `snowplow__session_timestamp`, which helps identify the timestamp column used for sessionization. This timestamp column should ideally be set to the column your event table is partitioned on. It is defaulted to `collector_tstamp` but depending on your loader it can be the `load_tstamp` as the sensible value to use: ```yml title="dbt_project.yml" vars: diff --git a/src/componentVersions.js b/src/componentVersions.js index 320a7980c8..921840bd2d 100644 --- a/src/componentVersions.js +++ b/src/componentVersions.js @@ -8,7 +8,7 @@ export const versions = { googleAmpTracker: '1.1.0', iosTracker: '6.0.8', javaTracker: '2.1.0', - javaScriptTracker: '3.24.3', + javaScriptTracker: '4.0.0', luaTracker: '0.2.0', phpTracker: '0.7.1', pixelTracker: '0.3.0', diff --git a/static/_redirects b/static/_redirects index d735997532..e3eb75f003 100644 --- a/static/_redirects +++ b/static/_redirects @@ -210,7 +210,7 @@ docs/understanding-tracking-design/managing-data-structures-with-data-structures /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/browser-features/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/ 301 /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/button-click/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/button-click/ 301 /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/client-hints/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/client-hints/ 301 -/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/consent/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/ 301 +/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/consent/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/ 301 /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/debugger/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/testing-debugging/ 301 /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/ecommerce/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/ 301 /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/plugins/enhanced-consent/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/ 301 @@ -290,3 +290,7 @@ docs/understanding-tracking-design/managing-data-structures-with-data-structures /docs/getting-started-on-snowplow-bdp-cloud/* /docs/getting-started-on-bdp/cloud/ 301 /docs/modeling-your-data/analytics-sdk/* /docs/destinations/analytics-sdk/:splat 301 /docs/destinations/forwarding-events/elasticsearch/* /docs/pipeline-components-and-applications/elasticsearch/:splat 301 + +# Deprecated JS tracker plugins +/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/consent-gdpr/original/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/consent-gdpr/original/ +/docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/tracking-events/ecommerce/original/ /docs/collecting-data/collecting-from-own-applications/javascript-trackers/web-tracker/previous-versions/web-trackers-v3/tracking-events/ecommerce/original/