Balm Docs v1.0.0

Ritual data

Balm shows each product's place in the ritual: its step, time of day, texture, skin type and dose. This page explains where Balm reads those details from, so you can pick the method that suits your catalog.

Balm 1.0.0 6 min read

Balm never invents data. If a product has no step, no step is shown; if it has no dose, no dose is shown.

#The fields

Field Values When it's missing Where it shows
Step 1, 2, 3 or 4 The product has no step (see below) Product card color and label line, header ritual menu, product page ritual line, Where it fits, Complete the ritual, Ritual view rows, cart order and coverage, breadcrumbs
Time of day AM, PM or both Both for steps 1 to 3, AM only for step 4 Sun and moon icons on cards and the product page, which products show for the AM/PM switch, How to use
Texture Short text, for example "Water-light" Hidden Card chip, Product facts
Skin type One or more short texts, for example "Normal to oily" Hidden Card chips, Product facts
Dose Short text, for example "Two drops" Hidden How to use, Complete the ritual, Build your ritual, AM and PM rituals
Dose icon Pump, Drops, Pea or Fingertip The step's icon: 1 Pump, 2 Drops, 3 Pea, 4 Fingertip Next to the dose

Two more details come from standard product data: the size on product cards is the selected variant's value for an option named "Size" (or the unit price measurement when there's no Size option), and the card's description line is the first sentence of the product description.

#Where Balm looks, in order

For each field, Balm uses the first value it finds:

  1. A dynamic source you connected to a product page block in the theme editor (product page only, see Dynamic sources).
  2. A Balm metafield (namespace balm), if you created the definitions.
  3. A standard category metafield from Shopify, for skin type and texture only.
  4. A product tag with a prefix, such as step:2.
  5. The default from the table above.

You can mix methods. For example, tags for step and time of day on every product, and a metafield for the full ingredient list.

#Option 1: tags (no setup)

Tags work in every store with no setup, and you can import them by CSV. The prefix before the colon is not case-sensitive; the text after it shows exactly as you write it.

Tag Sets Example
step:1 to step:4 Step step:2
time:am, time:pm Time of day. Add both tags for both. time:pm
texture: Texture texture:Water-light
skin: Skin type. Add one tag per skin type. skin:Dry, skin:Sensitive
dose: Dose dose:Two drops
dose-glyph: Dose icon: pump, drops, pea or fingertip dose-glyph:drops

Things to know:

  • Shopify separates tags with commas, so a tag value can't contain a comma. Write skin:Normal to oily, not skin:Normal, oily.
  • A product needs only the tags that apply. A cleanser used morning and night needs just step:1.
  • Tags can also fill automated collections, which is the easiest way to build your step collections.
  • Tags are fine for filters too, but Shopify puts every tag into one "Tags" filter. For separate Step and Time of day filters, use metafields.

Metafields give you a form field for each detail on the product page in your admin, and they make named storefront filters possible (Filters). You create the definitions once.

#Create the definitions

  1. In your Shopify admin, go to SettingsCustom dataProducts.
  2. Select Add definition.
  3. Enter the Name, then set Namespace and key exactly as shown below.
  4. Select the Type and the validation from the table.
  5. Select Save. Repeat for each definition you want.
Name Namespace and key Type Validation
Step balm.step Integer Minimum value 1, maximum value 4
Time of day balm.time Single line text, List of values Limit to preset choices: AM, PM
Texture balm.texture Single line text
Skin type balm.skin_type Single line text, List of values Optional preset choices, such as Dry, Normal, Oily, Sensitive
Dose balm.dose Single line text
Dose icon balm.dose_glyph Single line text Limit to preset choices: Pump, Drops, Pea, Fingertip
Ingredients balm.ingredients Multi-line text The full ingredient list, shown in the Ingredient label section

The namespace and key must match exactly, including the underscore in skin_type and dose_glyph. The name is yours to choose.

You don't need all of them. Create only the ones you'll fill in.

#Fill them in

Open a product in Products. The definitions show in the Metafields card at the bottom of the page. To fill many products at once, use the bulk editor: select products, then Bulk edit, and add the metafield columns.

When a product has both a metafield and a tag for the same field, the metafield wins.

#Option 3: standard category metafields

When a product's category (in the product's Category field) is a skin care category from Shopify's Standard Product Taxonomy, such as Face Serums or Face Moisturizers, Shopify adds its own attributes to the product. Balm reads two of them:

Shopify attribute Balm field
Suitable for skin type Skin type
Texture Texture
Product form Texture, when Texture is empty

Texture is only offered on some skin care categories (Face Serums, Face Moisturizers, Lotions and Moisturizers, Eye Creams, Body Oil). Suitable for skin type is offered on all of them.

A Balm metafield wins over a category metafield; a category metafield wins over a tag.

#Dynamic sources on the product page

If you already keep these details in metafields of your own, you don't need to rename anything. Connect your metafields to the product page blocks instead:

  1. In the theme editor, open a product page and select a block, for example Product facts.
  2. Next to a text setting, select the Connect dynamic source icon.
  3. Pick your metafield. The block now shows that metafield on every product page.

These settings accept dynamic sources and are empty by default. When empty, they show the product's ritual data from the sources above.

Block or section Settings When empty
Ritual line Step The product's step
Product facts First value, Second value, Third value Texture, nothing (hidden), skin types
Collapsible row with Content set to How to use Dose The product's dose
Collapsible row with Content set to Full ingredient list Text Shows only when the balm.ingredients metafield is empty
Ingredient (in Key ingredients) Percentage, Name, INCI name, Text, Image Hidden on the storefront
Ingredient label Ingredients The balm.ingredients metafield, then hidden
Label fact (in Ingredient label) Value Hidden

Dynamic sources only work on the product page. Product cards, the header and the cart read metafields, category metafields and tags (sources 2 to 5).

#Products without a step

A new store has no ritual data yet, and some products (gift cards, tools, bundles) don't belong to a step. Balm handles them:

  • Product cards use the plain paper background, and the label line shows the product type instead of a step.
  • Ritual view puts them in a last row, "More in this collection".
  • The cart lists them after the stepped products.
  • Rails (Where it fits, Complete the ritual, cart coverage) show the four step names, linked to your step collections.
  • The theme editor shows numbered placeholders in sections that have no products yet.

#Time of day

The header's AM/PM switch shows the morning or the evening ritual. It changes:

  • the ritual menu in the header (morning or evening ritual),
  • which products show in Build your ritual and Complete the ritual,
  • which steps the cart's ritual coverage counts,
  • the header colors (Header > PM color scheme), and
  • with a Time of day filter, the products on collection pages (Filters).

Visitors start on the time of day set in Theme settingsRitualStarting time of day. With Visitor's local time, Balm shows PM from 5 PM to 4 AM on the visitor's device clock, and AM otherwise. Balm remembers a visitor's own choice on their device.

By default, step 4 (Protect) is a morning step: sunscreen isn't part of a night routine. Build your ritual has no evening product for step 4, and the cart never suggests a Protect product in PM.

These pages describe Balm 1.0.0 and are updated with every release. See the release notes for what changed.

Type to search every page: settings, sections, tags, metafields and the FAQ.

↑↓ to move Enter to open Esc to close