Skip to content

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.

KeyWritten whenPurposeLifetimeBasis
oddsrelay:om:filters:<embed>Oddsmatcher, when the visitor saves a filter setRemembers 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 commissionTheir 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 all widget storage
// 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.