Storage and privacy
Your data protection officer should not have to read our source to answer "what does this embed store?". This is the complete list.
The short version
OddsRelay widgets set no cookies and store no analytics or advertising identifiers. Nothing they write identifies a visitor, and nothing they write is readable from any other site.
Everything below is localStorage on your own origin, holding settings the visitor entered themselves. None of it is ever transmitted to us.
Every key the bundle can write
Keys are namespaced per embed, so two widgets on the same page never collide. A widget that is not on the page writes nothing: a calculator-only embed stores nothing at all.
| Key | Written when | Purpose | Lifetime | Basis |
|---|---|---|---|---|
| oddsrelay:om:filters:<embed> | Oddsmatcher, when the visitor saves a filter set | Remembers named filter sets so the visitor does not rebuild them on every visit. | Until cleared. No expiry is set. | Strictly necessary: it is functionality the visitor explicitly asked for by saving. |
| oddsrelay:om:commissions:<embed> | Oddsmatcher, when the visitor sets a per-exchange commission | Their exchange commission rate, so the money column is right without asking twice. | Until cleared. No expiry is set. | Strictly necessary: a preference the visitor entered, used only to compute what they see. |
Storage is optional to the widget, not load-bearing. If localStorage is unavailable or throws (private mode, disabled storage, a sandboxed iframe), every widget degrades to a working session with nothing remembered, rather than failing to render.
How a visitor clears it
Each widget clears its own data in its own interface: saved oddsmatcher filter sets have a delete control, and a saved commission is overwritten in place. Everything is also removed by the browser's standard "clear site data" for your domain. If you want a button of your own:
// Clear everything an OddsRelay widget has stored on this origin.
Object.keys(localStorage)
.filter(function (k) { return k.indexOf("oddsrelay:") === 0; })
.forEach(function (k) { localStorage.removeItem(k); });What we do and do not do with usage data
The live board fetches odds from our API directly from the visitor's browser, so our API logs receive the request: your origin, the key it was made with, and standard request metadata. We use that for exactly two things, and this is a standing commitment rather than a current intention:
- Operating and improving the product: error rates, latency, which features get used.
- Reporting your own usage back to you: how often your embeds rendered, and where.
We do not use it for advertising, personalisation, cross-site profiling or lead generation, and we do not sell or share it. That constraint is not a preference. It is the condition under which this stays a statistics question for you rather than a consent question, and breaking it would turn every embed of ours into a compliance problem on your site.
The calculators make no network request whatsoever. There is no beacon, no ping, and no way for us to observe them at all.
Our own site and service policy is at /privacy.