Live on your site in two minutes
Three steps
Make a tournament
Open Build yours, pick a template (weekly blitz, rapid Swiss, knockout cup or checkers arena), add your logo and colour, and press Go live. Your email comes last: the 6-digit code we send becomes your Studio sign-in. Autopilot is on, so the event starts, pairs and finishes by itself.
Paste the snippet
Studio's Install page prints it with your tournament filled in. Put the
divwhere the widget should appear and the script once per page, anywhere. The link inside is what shows if the widget can't load.HTML<div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto"> <a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a> </div> <script async src="https://www.ocheso.com/embed/v1.js"></script>Open the page
The widget loads as it scrolls near, sizes itself to its content and follows the visitor's light or dark mode. In Studio the install status turns green: Seen on yoursite.com/tournaments · just now.
No code at all
Every tournament has a branded page with your logo, in English and French. Share it on WhatsApp, in a newsletter, or make it your menu's Tournaments link:
https://www.ocheso.com/o/yoursite/weekly-blitzOther ways to install
The same widget, however your site is built. WordPress takes the snippet in a Custom HTML block. Wix and Squarespace are easiest with the iframe; it works on its own and the loader, when present, makes it size itself. More in Embedding.
<div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto">
<a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a>
</div>
<script async src="https://www.ocheso.com/embed/v1.js"></script>Pin a version
/embed/v1.js is always the latest 1.x, cached for five minutes, so fixes reach your page without you doing anything. The current release is v1.0.0 (6.9 KB gzipped). If your security policy wants a file that never changes, pin it with its Subresource Integrity hash:
<div data-ocheso-tournament="weekly-blitz" data-view="tournament" data-theme="auto" data-lang="auto">
<a href="https://www.ocheso.com/o/yoursite/weekly-blitz">Weekly Blitz</a>
</div>
<script async src="https://www.ocheso.com/embed/v1.0.0.js" integrity="sha384-ZhvJ8YHHboaC4O1uUu30RtRbNiyzHwoPCrqZjkDm6axvdBYvbz/kYLox9dD8tVMQ" crossorigin="anonymous"></script>A pinned file is never changed or removed, and you get fixes when you move the pin. The current version, file and hash are always at /embed/manifest.json, and the TypeScript types at /embed/v1.d.ts.
Keep it to your domains
By default any site can show your widgets. In Studio, Developers → Allowed domains limits them to yours. Add each address people actually use: https://yoursite.com and https://www.yoursite.com are different sites to a browser, and https://*.yoursite.com covers subdomains like staging, not the bare domain.
Testing on your laptop?
http://localhost:3000 (with your port) while you build, and remove it when you're done. What a refused frame looks like.