settings_schema.json

The settings_schema.json file controls the organization and content of the Theme settings area of the theme editor. All setting selections in the theme editor are saved in settings_data.json.

You can reference any available setting values in Liquid through the global settings object.


Location

The settings_schema.json file is located in the config directory of the theme:

└── theme
    ...
    ├── config
    |   └── settings_schema.json
    |   ├── settings_data.json
    |   └── settings_presets.json
    └── locales

Schema

The settings_schema.json file is an array of objects that represent setting categories. Each object needs to have the following attributes:

AttributeDescriptionRequired
nameThe name of the category of settings.Yes
settingsAn array of associated settings.yes

You can create various categories of settings using the basic format below. The name attribute determines the category, and the settings attribute is an array of the associated settings:

The settings_schema.json file should follow the following basic format:

[
  {
    "name": "Category",
    "settings": [
      ...
    ]
  },
  ...
]

The settings_schema.json file is a JSON file, so all content must be valid JSON. Additionally, make sure you follow the appropriate syntax for your desired setting.


Usage

When working with the settings_schema.json file, familiarize yourself with the following:

Setting types

There are two categories of settings:

CategoryDescription
Input settingsSettings that can hold a value, and are configurable by merchants.
Sidebar settingsSettings that can’t hold a value, and aren’t configurable by merchants. They’re informational elements that can be used to provide detail and clarity for your input settings.

Access settings

Theme settings can be accessed through the settings object. To learn more about the syntax and considerations, refer to Access settings.

Add theme metadata

As a theme author, you can include additional metadata for your theme.

To add this metadata, you can include a theme_info object in the settings_schema.json file. This object must include the following attributes:

AttributeDescriptionRequired
nameThe value of this attribute must be theme_info.Yes
theme_nameThe name of the theme.Yes
theme_authorThe author of the themeYes
theme_versionThe version number of the theme.Yes

Example:

[
  {
    "name": "theme_info",
    "theme_name": "Life Style",
    "theme_author": "Shoplazza",
    "theme_version": "1.0.0"
  },
  ...
]

If a theme has no settings_schema.json file

If a theme has no settings_schema.json file, then you can do one of the following:

  • Create a new file from scratch as part of the initial theme development process

Create from scratch

If you create the file from scratch as part of the initial theme development process, then make sure you do the following:

  • Save the file in the config directory
  • Check that your settings are formatted correctly