EngX uses optional analytics to understand how the platform is used, measure performance, and improve the experience. Analytics may involve third-party service providers. You can change this at any time in Settings → Privacy. Privacy Policy
Version 1.4 — Effective 2026-10-02
We call this a "Tracking & Analytics Notice" rather than a "Cookie Policy" because not everything described here uses a cookie — EngX's own consent-preference storage uses localStorage, not a cookie. This page describes exactly what runs, when, and how to control it.
No optional analytics runs until you explicitly click "Allow analytics." This applies to every visitor — anonymous or signed in — every time, with no exceptions and no temporary window where optional tracking runs before you decide. EngX does maintain non-identifying aggregate operational counters for the public practice feature regardless of this choice; those counters do not contain a user/session identifier and are described in §10.
All six are optional and are gated behind the same single analytics consent decision — there is no way to allow one and block another individually today.
On your first visit, or any time you haven't made a choice, none of the optional tools above are initialized. Google Tag Manager is not loaded, and no optional analytics or Google Ads conversion events are captured. This is true whether you're browsing anonymously or signed in.
Once you click "Allow analytics" (in the banner or in Settings → Privacy), the optional tools initialize:
engx_analytics_consent = granted before its initial container event.Your consent decision is recorded before any of these initialize, not after.
When you decline, or later withdraw consent from Settings → Privacy:
_gcl_* cookies); no new EngX purchase conversions are reported while consent remains denied.engx_analytics_consent = denied. The already-loaded container script may remain in memory until the page is closed, so every optional tag inside GTM must require the EngX consent variable to equal granted before firing.Declining or withdrawing analytics consent never affects your ability to use EngX — your account, subscription, and learning progress are unaffected.
localStorage under the key engx_analytics_consent, values "granted" or "denied". This is a first-party, browser-local value — it is never transmitted to our servers automatically and is not itself a tracking identifier.localStorage and cookie entries to remember your analytics session. These are cleared on withdrawal (§5).localStorage, sessionStorage, or cookies in your browser at all, under any consent state._gcl_* cookies in connection with ad-click attribution and conversion measurement.Anonymous: your choice is remembered in localStorage only, local to that browser.
Signed in: your choice is additionally recorded in EngX's server-side consent ledger, tied to your account, so it's consistent across devices where you're signed in. If you were anonymous and had granted consent, then sign in with no existing server-side record for your account, EngX does not silently carry over the anonymous preference — you're asked again, so the recorded consent is always one you made while authenticated.
Session recording is disabled in the current EngX application configuration. Historical PostHog recordings were created before that safeguard was enforced and may remain in PostHog until they are deleted or expire under the configured retention period. EngX does not rely on those recordings for advertising conversion measurement.
At any time, go to Settings → Privacy Centre → Analytics to see your current status and change it.
The anonymous public-problem feature maintains daily aggregate counts for library views, problem views, first answer attempts, answer submissions, correct submissions, and completed problems. The counter rows store only the UTC date, metric name, public problem identifier/slug where applicable, and a total count. They do not store an IP address, user ID, anonymous or session ID, referrer, UTM/ad identifier, browser/device metadata, or the answer a visitor submitted. These counts are not unique-visitor counts: refreshing or retrying can increase a total. They are used to operate and evaluate the core public-practice feature and are not forwarded to PostHog, Google Ads, or Reddit.
Separately from the optional analytics above, our hosting provider (Vercel) necessarily processes standard web request data (such as IP address) to serve the site at all, the same as any web host. This is not gated by analytics consent because it isn't optional analytics — it's how any request reaches our servers. See our Privacy Policy §10.
Our analytics preference is stored in first-party browser storage so EngX can remember your choice. Hosting providers may still process request-level IP and device information to deliver and secure the site even when optional analytics is declined. Some analytics and advertising providers may process information outside Canada; see our Privacy Policyfor more information about service providers and international processing.