doc-site
Reference

Theme settings

Every theme settings group, how many settings it holds, and which code reads it.

Theme settings

Theme settings are defined in config/settings_schema.json and their saved values live in config/settings_data.json. A merchandiser edits them through the theme editor, under Theme settings in the left sidebar.

Never hand-edit config/settings_data.json. Shopify writes it, and the next theme editor save or theme pull overwrites your change.

Regenerate this page

python3 -c "
import json
for s in json.load(open('config/settings_schema.json')):
    n = s.get('name', s.get('theme_name', 'theme_info'))
    ids = [x.get('id') for x in s.get('settings', []) if x.get('id')]
    print(f'{n} :: {len(ids)} settings')
    for i in ids: print('   ', i)
"

Groups

The schema has 30 groups holding around 300 settings between them.

GroupSettingsRead byDocumented in
SEO - Page Titles20Plug in SEO PlusSEO and tracking
SEO - Meta Descriptions17Plug in SEO PlusSEO and tracking
SEO - Exclusions1layout/theme.liquidSEO and tracking
SEO - Structured Data4Plug in SEO PlusSEO and tracking
Brand4Layouts and header
Color Settings21Theme stylesheets
Typography6Theme stylesheets
Animation4window.theme animation switches
Search1Search behaviour
Rewards Tiers36Progress bar, reward bannersCart rewards and free gifts
Products grid6Collection and product grids
Products40Product pages
Cart13Cart page and drawer
Social media11Footer and social meta tags
Favicon1layout/theme.liquid
Development Mode1BrowserSync access switch
GTM Tracking2snippets/gtm.liquidSEO and tracking
Klaviyo13Offer popups, back in stockPopups and forms
Medispa20Booking availability, toasts, form IDsMediSpa booking
Medispa - Call Us Popup10MediSpa call popup
Medispa - Terms & Conditions Popup2MediSpa terms popup
Medispa Deposit6Booking calendar, cart line labelsMediSpa booking
Medispa PDP - Meet our team2MediSpa product page
PDP - Two Up Section - General Settings2Product page two-up block
PDP - Two Up Section - First6Product page two-up block
PDP - Two Up Section - Second6Product page two-up block
Popup Manager2snippets/popup-logic.liquidPopups and forms
Need Help Finding Something Popup15Need Help popupPopups and forms
Swym Wishlist Plus - Custom Element Settings5Swym wishlist

Rewards Tiers

The group holds four tiers with eight settings each, all following the same naming pattern.

SettingTypePurpose
tier_N_price_thresholdnumberCart subtotal in dollars that unlocks the tier
tier_N_titletextTier name on the homepage banner
tier_N_cart_titletextTier name in the cart drawer
tier_N_imageimage_pickerTier thumbnail
tier_N_subtitle_desktoptextDesktop supporting line
tier_N_subtitle_mobiletextMobile supporting line
tier_N_encouragement_messagetextHomepage prompt before the tier unlocks
tier_N_cart_encouragement_messagetextCart drawer prompt before the tier unlocks

The group also has four settings for the Unlock Free Bonus section: unlock_free_bonus_title, unlock_free_bonus_description, unlock_free_bonus_cta and unlock_free_bonus_link.

Encouragement messages accept {remaining_amount} and {threshold_money} placeholders.

A tier with a blank tier_N_price_threshold is skipped. A tier with a blank tier_N_title is not pushed into window.theme.cartRewardBanner.rewardTiers.

Medispa

SettingTypePurpose
show_booking_availabilitycheckboxMaster switch for remaining-slots messaging
booking_availability_operating_modeselectReal data or simulated on a timer
booking_availability_demo_tick_timer_secs_minimumnumberSimulated decrement minimum
booking_availability_demo_tick_timer_secs_maximumnumberSimulated decrement maximum
booking_timeframe_daysnumberDays ahead the calendar offers
start_date_typeselectWhat the timeframe is relative to
booking_availability_low_thresholdnumberWhen to show the low-availability line
booking_availability_low_copytextLow-availability text
booking_availability_anon_nametextAnonymous booker name
booking_availability_user_nametextNamed booker name
show_booking_toastscheckboxMaster switch for recent-booking toasts
booking_toasts_lifespan_secondsnumberHow long a toast stays
booking_toasts_timestamp_interval_secondsnumberTimestamp refresh interval
booking_toasts_visible_countnumberToasts visible at once
booking_toasts_just_now_labeltextLabel for a very recent booking
booking_toasts_copytextareaToast text
booking_toasts_custom_csstextareaExtra CSS for toasts
medispa_booking_form_idtextKlaviyo booking form, desktop
medispa_booking_form_id_mobiletextKlaviyo booking form, mobile
medispa_zapier_webhook_urlurlWhere booking intent is posted

booking_availability_operating_mode decides whether the numbers customers see reflect real bookings. Confirm which mode the live theme uses before describing them as real.

Medispa Deposit

SettingTypePurpose
medispa_deposit_messagetextCart message against a booking
medispa_remaining_amount_line_item_labeltextBalance owing label
medispa_remaining_amount_line_item_value_templatetextBalance owing template
medispa_deposit_amountnumberDefault deposit in dollars
medispa_pay_in_store_label_pricenumberFallback Pay In Clinic total
medispa_deposit_timezoneselectTimezone for appointment times

Both money settings are in dollars. The calendar prefers the selected product's own metafields and falls back to these.

SettingTypePurpose
enable_popup_managercheckboxWhether the manager runs
popup_manager_blacklisttextareaOne selector,type per line

GTM Tracking

SettingTypePurpose
gtm_enabledcheckboxWhether the container renders
gtm_idtextContainer ID, GTM-XXXXXXX

SEO - Exclusions

SettingTypePurpose
seo_noindex_pagestextareaOne path per line, matched exactly against request.path

Two further noindex rules are hard-coded in layout/theme.liquid and cannot be edited here. Products tagged no-index are excluded, and any page showing a tag filter is excluded.

Adding a setting

  1. Add it to the right group in config/settings_schema.json.
  2. Read it in Liquid as settings.your_setting_id.
  3. If JavaScript needs it, write it to window.theme and declare it in src/@types/global.ts.
  4. Add a row here and to the relevant Operations page.

Choose theme settings only for values that describe presentation across the store. A value describing one product belongs on the product as a metafield. A value describing one instance of a section belongs in that section's own schema.

On this page