From 8e4ef0c3f43ef6fbbbf590349ef5ce73be7ee71f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Ech=C3=A1niz?= Date: Sat, 29 Aug 2026 06:05:34 -0300 Subject: [PATCH] fix(analytics): honor opt-out across Beacon subdomains --- analitica-y-privacidad/index.html | 2 +- tests/analytics-privacy.test.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/analytics-privacy.test.js diff --git a/analitica-y-privacidad/index.html b/analitica-y-privacidad/index.html index 47cd52c..9b8b510 100644 --- a/analitica-y-privacidad/index.html +++ b/analitica-y-privacidad/index.html @@ -9,4 +9,4 @@


Analytics and privacy

Harmonic Beacon uses first-party analytics hosted by AlterMundi to understand visits, campaigns, listening, event attendance and conversions. We record general pages/actions, referrer, UTM and advertising click identifiers present in the URL, approximate country/region, browser and device. After sign-in, opaque technical identifiers are linked to the account to prevent duplicate people and conversions.

We do not collect passwords, authentication tokens, secrets, signed URLs, payment numbers, form contents, audio, video or chat. Payment, membership and authoritative duration facts come only from their owning servers. Contact info@harmonicbeacon.com for applicable access, correction, export or deletion requests.

- + diff --git a/tests/analytics-privacy.test.js b/tests/analytics-privacy.test.js new file mode 100644 index 0000000..eebc619 --- /dev/null +++ b/tests/analytics-privacy.test.js @@ -0,0 +1,13 @@ +const assert = require('node:assert/strict'); +const { readFileSync } = require('node:fs'); +const test = require('node:test'); + +test('first-party analytics opt-out covers every Harmonic Beacon subdomain', () => { + const page = readFileSync('analitica-y-privacidad/index.html', 'utf8'); + assert.match(page, /hb_analytics_disabled=1/); + assert.match(page, /Domain=\.harmonicbeacon\.com/); + assert.match(page, /Max-Age=31536000/); + assert.match(page, /Home, Account, Listen y Live/); + assert.doesNotMatch(page, /hb-meta-consent|fbq\(/); +}); +