Skip to content

Shopify ‐ Metafields & Metaobjects

Darshan Shankar edited this page Sep 4, 2026 · 39 revisions

Definitive list of all metafields and metaobjects Bigscreen implements. These data structures are used by Builder.io, Arda, and/or Shopify automations (like Flow). Metafields and metaobjects enable us to drive the storefront and internal logistics with custom data particular to our use case.

.custom.

eyetracking_beta_token

Auto-generated token for use with the Beyond eyetracking client beta software. Should only ever be changed by automations like the ET Token Automation Flow and the ET Token Gen - Flag Triggered Flow.

eyetracking_token_expires

Auto-generated date indicating when the eyetracking token is expected to expire. Should only ever be changed by automations like the ET Token Automation Flow and the ET Token Gen - Flag Triggered Flow.

et_token_refresh_flag

Defaults to false. Set to this true and save the change to have a new token generated by the "Flag Triggered Flow". The flow works by monitoring the "ET Token Auto Refresh (DO NOT DELETE)" customer segment, which automatically pulls in customer profiles where this metafield is true. The metafield is then set to false.

.store.

price_prefix

A phrase or string of characters displayed before the price. If language is Japanese, added after instead with the yen sign removed.

price_footnote

Small message to display directly underneath the price. Defined per-currency. Example: {"CURRENCY_CODE": "Text to display"}

translated

"Translatable Description". This exists as a Builder.io workaround. It fails to fetch translated store descriptions (like Japanese)

selector_header

Header label text of the variant selector section. Only shows if product has the "show-variants" tag

selector_description

Description text of the variant selector section. Only shows if "show-variants" tag present

fine_print

Text to display in the "fine print" section of the product page

add_text

Add-to-cart button text to use when "shipping waves JSON" is not in use (DEFAULT: "Order now")

backorder_text

Add-to-cart button text to use when product is sold out + on backorder. Does not apply to HMD SKUs

disclaimer

A block of text which displays at the bottom of the page just above the store footer.

specs

A list of specifications to display in the second section of the product's store page. Example:

{
  "Minimum requirements": [
    {
      "title": "PC",
      "data": "Windows 10 or 11"
    },
    {
      "title": "Tracking",
      "data": "SteamVR Base Stations (Version 1.0 or 2.0)"
    }
  ],
  "Tech specs": [
    {
      "title": "Weight",
      "data": "127 g (headset only)"
    },
    {
      "title": "Length",
      "data": "143.1 mm (5.63 in)"
    }
  ]
}

.cart.

qty_limit

Threshold for disabling the "Add to cart" button for the product

allow_qty_change

Set FALSE to hide the product's "quantity" field in the cart

qty_count_products

One or more other products which should affect the cart QTY count of this product

.addon.

type

Dictates how this product is rendered in the cart when its line item is an addon. Set to an instance of the Addon Type metaobject.

.shipping.

projected_date_w1

PRIMARILY USED FOR BS1―mostly deprecated. Dynamic projected ship date for markets in wave 1. List of: {soldMinimum, etaText}

projected_date_w2

PRIMARILY USED FOR BS1―mostly deprecated. Dynamic projected ship date for markets in wave 2. List of: {soldMinimum, etaText}

projected_date_w3

PRIMARILY USED FOR BS1―mostly deprecated. Dynamic projected ship date for markets in wave 3. List of: {soldMinimum, etaText}

.arda.

product_code

Determines what Arda product will be required to fulfill the resulting Big Order.

.store.

selector_class

A handle meant to help target the selector button for CSS. Is assigned to the <label> element's data-handle attribute.

subtitle

Displayed beside variant name in the selector button. Product must have the "variants-large" tag.

Note: Is a list. Any list entries that are &nbsp; will be hidden for mobile and tablet layouts.

info_box

Optional. Text displayed in a dedicated div underneath the variant selection section.

info_link

Optional URL. If set, a "Learn more" link appears in the info box.

ship_date

Projected ship date for the product. If addon, influences the ship date presented to the customer.

ship_msg

LEGACY FALLBACK (since Sep 2026) — superseded by eta_text as the display source; still read when a variant has no eta_text. A simplified wording of the ship date. Will be conveyed to customers. I.e.: 4/1/25 -> "Q2 2025"

eta_text

Ordered list of Localized String metaobjects composing this variant's baseline ETA wording (e.g. [range-1-2, unit-business-days] -> "1-2 business days" / "1〜2営業日"). Replaces free-text ship_msg so ETA wording is translated once per fragment instead of per variant. See ETA-SYSTEM.md in the theme repo.

shipping_milestones

Sales qty milestones that, once met, update this item's projected ship date and ship date msg. Each entry is an instance of the Shipping Milestone metaobject.

Note: The shipping milestones feature only works if the product variant is set to Track quantity

addon_groups

Defines the addons presented to the user on this product's store page. Each Addon Group is an instance of the Addon Group metaobject.

.addon.

description

Optional. Text displayed inside the addon selection button.

price_text

Optional. Overrides the selection button price display with static text.

fine_print

Optional. Adds a superscript number after the addon name, and a matching fine print section underneath the addon group

swatch_colors

One or two colors used for the addon's color swatch. Only relevant if its Addon Type presents w/swatches.

ships_separately

When set to true, this addon will not affect its parent product's estimated ship date/ship message

linked_variants

If any variants listed are present as addons on the page, they will be de/selected in tandem

callout

Optional. Chip text displayed inside the addon selection card (i.e. "Immersive sound", "Made to your prescription"). Hidden automatically if it matches the variant's addon.price_text (prevents "Included" twice).

callout_accent

Set TRUE to render the callout chip in the violet accent style (i.e. Custom-Fit Cushion, Halo Mount). False/unset = grey.

Text collections (under metaobjects)

Metaobjects which primarily exist as a hub for store text. Facilitates centralized translation via Translate & Adapt. Each of these only has one instance, typically named: "LIVE".

Strings used in the header. Also includes:

  • Lists of .marquee_string for USA Only vs. Outside USA
  • Marquee scrolling speed
  • Values for the Dev Marquee. It is used for prototyping new marquee setups before they go live.

Strings used on the product page and the storefront product labels.

Strings used in the prescription lens data entry form before the prescription lenses product is added to cart.

Strings used in the slide-out cart. Also includes the ETA composition helpers (since Sep 2026):

  • eta_month_format — strftime pattern for month-style ETAs rendered from an ETA date (EN %B %Y, JA %Y年%-m月)
  • eta_estimated_prefix — prefix for the ships-separately ETA value (EN Estimated , JA 予定: )
  • prop_addon_for / prop_ships_separately — localized line-item property KEYS for the buyer-visible "Addon for" / "Ships separately" props (JA アドオン対象 / 別途出荷). Machine logic keys on the hidden _ships_separately prop, never these labels.

.confirmation_email

UNUSED

Each addon group is a list of variants to be made available on product pages where the group is assigned.

.title

Used internally for semantic id of specific addon groups. I.e.: "Shells - BS2E"

.addon_type

Choose an addon type. Affects how the group options are presented on the product page. Is an instance of the Addon Type metaobject.

.toggleable

If true, the group is multiple-select. Checkboxes appear in addon selection boxes.

.spotlight_images

If true, adds all of the group's addon variant images to the slider. Selecting an addon scrolls the slider to its corresponding image.

Note: When selecting a variant on the product page (i.e. headset model), this behavior is default ON for variants with assigned images. Additionally, it is ensured that no duplicate images will be added to the list.

.variants

All addon product variants available in the addon group

.checked_variants

Optional. Variants listed here will default to selected. Non-toggleable groups only select the first entry.

.disabled_variants

Optional. Variants listed here do not have an interactable state.

.ephemeral_variants

Optional. Variants listed here will never become a line item when added to order. Chosen ephemeral variants end up among the hidden line item properties on the parent product.

Addons which can be associated with other products and displayed on their product pages.

.title

Internal use only. The name for the addon type

.prop_key

Key that will end up in the order's line items, i.e. "_shell_variant". START WITH UNDERSCORE unless you want this property to show during checkout!

.header

Label text for the header of any addon group with this addon type.

.description

Optional. Description text displayed beneath the header for an addon group of this addon type.

.ui_style

How addon options of this addon type are presented to the user. Choices: Color Swatch, Product Photo, Variant Name, Link Card.

Note: Link Card is special: the configurator's option loop SKIPS these groups and renders the group once as an external link card (the LensAdvizor prescription hand-off) — it is never purchasable in-configurator. Used by the "Lenses - BS2" addon group.

.cart_presentation

Informs how addons of this addon type should be presented in the cart

.cart_show_price

Whether or not products of this addon type should show their price in the cart

.aux_keys

List of other property keys that are hard-coded for this addon type. ONLY INFORMATIONAL―does not meaningfully drive automation anywhere.

One reusable, translated fragment of composed store text (an "ETA Part"). ETA wording is composed from ordered lists of these instead of free text, so a fragment is translated once and reused everywhere. Publishable: only ACTIVE entries are visible to the theme. Full design: ETA-SYSTEM.md in the theme repo.

.label

Admin-internal name. Never displayed, never translated. I.e.: "Range: 1-2", "Unit: business days"

.content

The fragment shown to customers, translated per locale. I.e.: "1-2" / "1〜2", "business days" / "営業日"

.space_after

yes = a space is emitted between this part and the next during composition. Translated per locale (EN typically yes, JA no). Any value other than yes means no space.

Warning: an unset translation falls back to the English value — when translating a part, set BOTH content AND space_after in the same Translate & Adapt pass, or the locale inherits yes and gains a stray space.

Targeted ETA for one model variant, optionally scoped to an addon combination. A matching ACTIVE override replaces the bundle's computed estimate outright. Multiple matching overrides contend: most addons matched wins, ties broken by latest eta_date. Publishable: DRAFT = staged/invisible, ACTIVE = live (this is the automation staging + kill switch).

.label

Internal use only. Convention: <model> [+ addons] -> <ETA>. I.e.: "2e + Halo -> Sep 2026"

.model_variant

The model variant this override targets. Deliberately single (not a list), so an override's scope is always unambiguous.

.addon_variants

Optional. ALL listed addon variants must be selected for the override to match; extra unlisted addons don't break the match. Empty = matches the model regardless of addons. Ships-separately addons count for matching.

.eta_date

Optional projected ship date. Missing = treated as epoch in latest-date contests. Required in practice when eta_text is empty (month rendering needs it).

.eta_text

Ordered list of Localized String parts composing the displayed ETA. Empty = the theme renders the month of eta_date per locale (via cart.live.eta_month_format).

Managed by Bigsuite (since 2026-09-04). The store leadtime agent (Bigsuite → Orders → Store Leadtimes) owns every eta_override whose handle starts with bigsuite- — one per Beyond 2 model + shell combination, plus bigsuite-bs1a for the Audio Strap (no addons) — and creates numeric localized_string range parts (range-1-5, JA 1〜5) as needed. Approved changes are written within a minute; a manual edit to a bigsuite-* entry is overwritten on the next approved change. Other overrides on those models are left alone and flagged in Bigsuite. Kill switch (DRAFT everything managed) and the rulebook: docs/ops/store-leadtimes.md in the bigsuite repo.

Product sales qty milestone. Once the designated sales threshold is passed, the product's estimated shipping date is updated.

.title

Internal use only. Should convey the target product and milestone qty, i.e. "BS2: Qty 5000 -> 08/2025"

.sales_threshold

Sales quantity to be met before the milestone's date overrides the product's existing ship date

.set_date

Ship date that will be assigned to the product once the sales threshold is passed

.set_msg

Text to simplify the conveyed set date. Will show in user-facing elements like buttons and divs. Example for 04/01/2025 -> "Q2 2025"_

Incomplete or Non-Functioning Metaobjects

CURRENTLY UNUSED. Originally intended to populate images for the BS2 homepage's scrolling optics animation, but Liquid can't be used in that context.

MILESTONES REFRESH

INCOMPLETE. Meant to force a refresh on products' automated shipping dates via the Shipping Milestone system.

Confirmation Email

UNUSED. Old idea stub for dynamic, translatable email sections.

Email Sections

UNUSED. Intended to be constituents of an Email Template.

Email Templates

UNUSED. Intended to be used within Shopify emails to drive dynamic generation for the body.

Notification Debug

UNUSED. Intended to help debug dynamically formatted emails.

Clone this wiki locally