Beauty Affairs HK

Metafields and metaobjects

The Shopify metafields and metaobjects the theme reads, their types, and the files that read them.

This repository defines none of this data. The definitions live in Shopify admin under Settings > Custom data, and staff edit values on each product, page, collection or metaobject entry.

Nothing guarantees any of these values are set, so the theme must work when each one is absent.

Product metafields the theme owns

MetafieldTypeDrivesRead by
custom.pay_in_store_amountNumberPay-in-clinic price for a treatmentsnippets/medispa-calendar-config.liquid
custom.enable_pay_in_storeBooleanWhether the pay-in-clinic option showssnippets/medispa-calendar-config.liquid
custom.enable_checkoutBooleanWhether the deposit option shows. Absent means enabledsnippets/medispa-calendar-config.liquid
custom.klaviyo_booking_form_id_desktopTextBooking form, desktopsnippets/medispa-calendar-config.liquid
custom.klaviyo_booking_form_id_mobileTextBooking form, mobilesnippets/medispa-calendar-config.liquid
custom.klaviyo_form_id_desktopTextOffers popup, desktopsnippets/pdp-offers-cta.liquid, snippets/product-form-redesign-medispa.liquid
custom.klaviyo_form_id_mobileTextOffers popup, mobilesnippets/pdp-offers-cta.liquid, snippets/product-form-redesign-medispa.liquid
custom.max_allowed_popupsNumberNothing. No script reads the value Liquid writessnippets/popup-logic.liquid, only when the popup blacklist has entries
custom.medispa_locationTextClinic associationsnippets/location-contact-details.liquid, snippets/product-accordion.liquid
custom.colour_swatch_dataJSONSwatch rendering and filterssnippets/product-form-redesign.liquid, snippets/select-options-modal.*.liquid
custom.related_productsListRelated treatments and calloutssections/medispa-*.liquid, layout/theme.discovery-bar.liquid
custom.displayed_rrpNumberRecommended retail price shown beside the pricesections/pdp-main.liquid, sections/product-template-redesign*.liquid
custom.enable_pre_orderBooleanPre-order behavioursnippets/pdp-atc-button.liquid, snippets/product-form-redesign*.liquid
custom.pre_order_messageTextPre-order wordingsnippets/pdp-atc-button.liquid, snippets/product-form-redesign*.liquid
gift_product.productProductGift tied to this productlayout/theme.liquid
gift_product.required_quantityNumberQuantity required to unlock itlayout/theme.liquid

Page metafields

MetafieldTypeDrives
custom.pay_in_storeBooleanOverrides custom.enable_pay_in_store for every treatment on the page
custom.medispa_landing_pageReferenceAustralia only. Supplies offer_price. Absent on Hong Kong

The theme detects custom.pay_in_store by the metafield's type, not its value, so an explicit false still overrides. Delete the metafield to give control back to each product.

Collection metafields

MetafieldTypeDrivesRead by
custom.klaviyo_form_id_desktopTextKlaviyo form opened on collection pages, desktopsnippets/popup-logic.liquid
custom.klaviyo_form_id_mobileTextKlaviyo form opened on collection pages, below 768 pxsnippets/popup-logic.liquid

When routes.root_url has a language or market prefix, the snippet appends it to the key with hyphens changed to underscores. Under /zh-TW, for example, it reads custom.klaviyo_form_id_desktop_zh_TW. The snippet only runs while the popup manager is enabled. See Operations: popups.

Metaobjects

DefinitionFields the theme readsUsed by
medispa_locationsdisplay_name, address, display_phone_number, phone_number, store_hoursThe booking calendar's clinic tabs and details panel
minicart_free_giftsEntry listThe mini-cart Free gift block
product_bundlesEntry listBundle display

The mini-cart's Free gift block takes the definition name as a setting, with minicart_free_gifts as the default. If the setting names a definition that does not exist, the block renders nothing and shows no error.

Metafields owned by apps

The theme reads these, but the apps own them. Do not write to them, and expect them to disappear when the app is uninstalled.

NamespaceApp
hulkapps_wishlistHulkApps Wishlist
sprShopify Product Reviews
secomappSecomapp Free Gifts
etranslateeTranslate
product_schemaA structured data app
shappify_qb, shappify_bundleShappify
brodev_scnBroDev
stampedStamped reviews
sf_product_tabs, sf_collection_footerShopify FD tabs
looxLoox reviews
opinew_metafieldsOpinew reviews

Several of these belong to apps the store no longer uses, and the Liquid that reads them is still present. See Legacy and unused code.

Reading a metafield safely

Use an explicit fallback chain instead of assuming the value exists. snippets/medispa-calendar-config.liquid checks the product's own value, then a page override, then a theme setting, then a literal default.

For a boolean that can be false on purpose, test type instead of the value, or pass allow_false: true to the default filter. Without that, Liquid's default treats false as absent and replaces a deliberate "off" with the fallback, and no error appears.

On this page