Version 1.2 · Last updated 2026-08-27
Cookie Policy
About this policy
This Cookie Policy explains what cookies the Market Scanner platform sets, what else it stores in your browser, what each item is for, and how you can manage your choices. It should be read together with the Privacy Policy. Cookies are small text files stored on your device that let a website function and remember your choices; some of the items below are kept in your browser's local storage instead, which stays on your device and is not sent with each request.
Categories of cookie
- Strictly necessary — required for the platform to work (for example, to keep you signed in and to protect requests). These cannot be opted out of; without them the platform cannot be provided.
- Preference / functional — remember choices you make to improve your experience. These are not strictly necessary, and you can decline them.
- Analytics — Google Analytics 4 cookies used to measure aggregate traffic and conversion. These are NOT set unless you click "Accept" on the cookie consent banner. We do not run advertising tags and IP addresses are anonymized before they reach Google.
The platform does not use advertising or cross-site tracking cookies.
One first-party cookie, ms-just-signed-up below, is set at the moment
you create an account, before you have made a consent choice. It records
nothing beyond your own account identifier and which sign-in provider you
used, and it is only ever acted on if you then accept — if you reject, or
simply never choose, it is left untouched and expires on its own about
half an hour after sign-up.
Cookies we set
Over a secure connection the authentication cookies below carry the
browser-mandated __Secure- or __Host- name prefix.
| Cookie | Category | Purpose |
|---|---|---|
authjs.session-token | Strictly necessary | Session cookie issued by NextAuth at sign-in; keeps you authenticated. |
authjs.csrf-token | Strictly necessary | CSRF protection for the authentication flow. |
authjs.callback-url, authjs.state, authjs.nonce, authjs.pkce.code_verifier | Strictly necessary | Short-lived cookies the sign-in flow sets while you are redirected to and from Google or GitHub, so the platform can verify the round trip and return you to the page you started on. Discarded once sign-in completes. |
market-scanner-theme | Preference | Remembers your light/dark theme choice. Set on theme toggle; not strictly necessary but harmless. |
NEXT_LOCALE | Preference | Remembers the interface language you choose from the language menu, so the platform loads in it next time. |
ms-just-signed-up | Analytics | Set once when your account is created, and read by the next page you open so that a sign-up can be counted. Holds your account identifier and the sign-in provider you used. Removed as soon as the sign-up has been counted; if you have not accepted analytics it is left in place instead, and expires on its own about half an hour after sign-up. |
_ga | Analytics | Google Analytics 4 client identifier. Set only after you accept on the consent banner. Used to distinguish unique browsers for aggregate measurement. |
_ga_<container> | Analytics | Google Analytics 4 session state, one per GA4 property. Set only after consent. |
Browser storage we use
The items below are kept in your browser's local storage rather than as cookies. They stay on your device, are never transmitted with a request, and are not readable by any other site.
| Item | Category | Purpose |
|---|---|---|
ms-cookie-consent | Preference | Records your cookie-consent choice (accept-all / reject-all). Set when you interact with the consent banner. |
ms-signup-tracked-<account id> | Analytics | Records that the one-off sign-up measurement has already been made for your account, so it can never be counted twice. |
ms_report_view | Preference | Remembers whether you last read a report as tabs or as a single page. |
ms:report-disclaimer-dismissed | Preference | Remembers that you dismissed the compliance notice shown above a report. |
market_stats_warm:<symbol> | Functional | A short-lived copy of the market figures last shown for a ticker, so the page can display them immediately on your next visit instead of waiting for a fresh fetch. |
marketScanner.scansNew.lastBundle | Preference | Remembers the analysis options you last selected, so the new-scan form opens with them. |
marketScanner.lastLanguage | Preference | Remembers the report language you last selected. |
Analytics and tracking
The platform uses Google Analytics 4 (GA4) to measure aggregate traffic, conversion, and feature usage. GA4 is loaded under the strict consent contract below:
- Nothing analytics-related runs until you click "Accept" on the
cookie consent banner. The GA4 script tag is not added to the page
before consent — not "loaded then suppressed", not "queued behind a
flag" — physically absent from the DOM. (Implemented via Google's
Consent Mode v2
analytics_storage=denieddefault and a runtime switch that gates the script tag on the recorded consent choice.) - We track pageviews and a small set of product events (sign-up,
scan creation, schedule lifecycle, plan upgrade, API-key
management). Event parameters are PII-free — no email, no
internal user IDs, no report IDs. URLs containing IDs (e.g.
/reports/<id>) are normalized to/reports/:idbefore being reported to Google. - IP addresses are anonymized at the GA4 boundary
(
anonymize_ip: true). - Rejecting consent (or clearing your browser cookies for this domain) revokes the analytics state immediately — the GA4 consent-update signal is sent and no further events are reported.
- The platform does not run Google Ads tags, GTM, or any third-party marketing cookies.
Managing your choices
When you first visit the platform you are shown a consent banner where you can accept or reject non-strictly-necessary cookies. You can revisit that choice at any time by re-opening the consent banner from the footer link.
You may also revoke consent by clearing this domain's site data — which covers both the cookies and the browser storage listed above — or block cookies through your browser settings. Revoking will not delete your account; only the non-strictly-necessary cookies will stop being set. Blocking strictly-necessary cookies will prevent the platform from functioning correctly.
Changes and contact
We may update this Cookie Policy as the platform evolves. Material changes will be published and, where they affect documents covered by the consent gate, you will be asked to re-accept. For questions about cookies, contact the platform operator using the details published on the platform.
Counsel-pending placeholder copy. The text on this page is engineering scaffold, NOT a published legal instrument. It must be replaced with counsel-drafted text before this platform serves real users.