From 000ce605791c5bdc1a08a31b350eeab471d293cb Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Thu, 26 Mar 2026 17:59:55 +0100 Subject: [PATCH] feat: add Matomo analytics (site ID 22) Cookie-free tracking via internetcomputer.matomo.cloud, loaded async on every page. --- public/.ic-assets.json5 | 7 +++++++ public/matomo.js | 16 ++++++++++++++++ src/layouts/BaseLayout.astro | 2 ++ 3 files changed, 25 insertions(+) create mode 100644 public/matomo.js diff --git a/public/.ic-assets.json5 b/public/.ic-assets.json5 index 9a3cbc7..4a57d12 100644 --- a/public/.ic-assets.json5 +++ b/public/.ic-assets.json5 @@ -37,6 +37,13 @@ "Access-Control-Allow-Headers": "Content-Type" } }, + { + // Matomo analytics + "match": "matomo.js", + "headers": { + "Cache-Control": "public, max-age=300" + } + }, { // Agent-readable skill indices "match": "llms*.txt", diff --git a/public/matomo.js b/public/matomo.js new file mode 100644 index 0000000..7ad9ff9 --- /dev/null +++ b/public/matomo.js @@ -0,0 +1,16 @@ +var _paq = (window._paq = window._paq || []); +_paq.push(["disableCookies"]); +_paq.push(["enableLinkTracking"]); +_paq.push(["trackPageView"]); + +(function () { + var u = "https://internetcomputer.matomo.cloud/"; + _paq.push(["setTrackerUrl", u + "matomo.php"]); + _paq.push(["setSiteId", "22"]); + var d = document, + g = d.createElement("script"), + s = d.getElementsByTagName("script")[0]; + g.async = true; + g.src = "https://cdn.matomo.cloud/internetcomputer.matomo.cloud/matomo.js"; + s.parentNode.insertBefore(g, s); +})(); diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 94e0762..6cfad5c 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -84,6 +84,8 @@ const defaultJsonLd = JSON.stringify({ + +