Edit Studio JSON
Open Website > Studio, select Edit, then Source to edit your website's JSON. Choose a document in the picker before changing its contents. Each document controls one part of the website.
Start with Insert a component for a small change. Use the component reference for exact fields and worked examples for complete documents.
Choose the document
| Document | Controls |
|---|---|
layout.json | The website theme. It does not contain component positions. |
navigation.json | The public menu, as an ordered array of entries. |
calendar.json | Whether the public calendar is enabled. It has no component positions. |
landing.json | The homepage choice and the managed landing page's ordered components array. |
contact.json | Extra sections around the public contact information. |
page.json | Extra sections around every public page. |
articles.json | Extra sections around the news list. |
article.json | Extra sections around every individual article. |
products.json | Extra sections around product lists, such as leagues or programs. |
product.json | Extra sections around individual product details. |
rentals.json | Extra sections around the rentals page. |
product/note.json | Extra sections around product notes. |
product/registrations.json | Extra sections around a product's registrations. |
product/teams.json | Extra sections around a product's teams. |
product/spares.json | Extra sections around a product's spares. |
results.json | Extra sections around results. |
The page documents have top and bottom arrays. These place sections before and
after the page's normal content. They do not replace the content, hide its access
rules, or change records. For example, article.json affects every article's
surrounding layout. Edit a single article's body in Website > Articles.
The first seven page documents, from contact.json through rentals.json, accept
editorial sections. The remaining five accept a smaller set of supplemental
sections. The reference lists each component's exact
documents and positions. A component that works on the landing page may be refused
on a results page.
Sign-in, account pages, cart, checkout and other protected workflows have no editable component documents. They use the shared theme and navigation.
Edit your club's Terms and Privacy in Settings > Policies, including Markdown text and optional external URLs. Policy pages use the shared theme and navigation, with no editable Studio sections or footer JSON document. See Studio.
Write valid JSON
Use double quotes around names and text. Separate entries with commas; leave no
comma after the last entry. JSON has no comments. Keep true, false, null
and numbers unquoted.
A component is an object with its exact type, version and fields. Component
kinds start with cio-. Keep version at the value shown in the reference.
Unknown names, misspelled fields and unsupported versions are rejected.
The editor shows the selected document alone. Do not wrap it in a filename,
documents or schemaVersion object. Those belong to the complete website
package used by agent tools, not the document editor. Keep all the other
documents when an agent updates the complete package.
Choose the homepage
landing.json always contains enabled and components. Use enabled: true for
the managed landing page. To use a published page instead, set enabled: false
and homePageId to that page's positive numeric ID. Omit homePageId when using
the managed landing page or the automatic first product type. The Homepage
picker can make this choice for you.
Turning the managed landing off keeps its components saved for later. Turning the
calendar off uses enabled: false in calendar.json; it does not remove events.
Use English and French text
Authored text accepts a shared string or a language map with en and fr.
For example, a heading may be "Welcome" or
{"en":"Welcome","fr":"Bienvenue"}. Supply usable text in your club's primary
language. A missing secondary translation uses the primary text. A shared string
appears in every enabled language.
Translate headings, body text, link labels, image alternative text, captions and form labels. Keep component types, field names, URLs, account identifiers and record IDs unchanged. Text fields are plain text; Markdown punctuation does not turn component text into formatted content.
Images, links and appearance
Use Upload image in Studio and copy its Asset ID into a component's
media.assetId. Include useful alt text. An image must belong to your club and
be ready or attached. A private reference image sent to the assistant cannot be
published as website media.
Link actions contain label and href. Use a path starting with one / for your
website, or a complete HTTPS URL for another website. HTTPS actions reject
credentials, IP hosts and non-default ports. Optional appearance
accepts filled, secondary or outline; size accepts small, normal or
large. Omit them for the component's normal presentation. Your theme supplies
colours and spacing. Components do not accept custom HTML, scripts or CSS fields.
Live components read current club records. Configure sponsors, products, events and articles in their own sections. Changing a JSON heading does not change the underlying records. Record IDs must belong to your club and be eligible for public display. Providers may need visitor activation and Premium; adding JSON does not grant an entitlement or make private provider content public.
Save, preview and publish
- Take the editing lock with Edit before changing the source.
- Change the selected document, then select Save. Studio validates your draft and saves a checkpoint of the website design. Fix any reported error before continuing.
- Check the private preview, including links and both enabled languages.
- Select Publish when the saved draft is ready. Visitors then see it.
- Select Release lock when you finish.
Saving a checkpoint leaves the public website on its last published version. Use History of changes to compare or restore a checkpoint. Restoring creates a new draft; publish it to make it public. It does not undo registrations, payments or edits to club records.