This is the field-by-field reference for Optionfier's import/export format: every Excel column, its JSON equivalent, accepted values, and what happens when you leave a cell blank. It assumes you've already read Importing and Exporting on the main docs page. If you're just backing up or moving your configuration between shops, start there instead.
Excel columns and JSON fields hold the same data; only the naming convention differs (column title vs. camelCase field). Leave an optional cell blank (or omit the field from JSON) to skip it:
On a create row, the default in the table below applies.
"Required" means the field must be present on create rows; required fields on MERGE updates still fall back to the matched row's existing value if the file leaves them blank.
Connects the option set to a product. The importer prefers GID over handle when both are set.
Product Handle
productHandle
Shopify product handle (e.g. custom-tshirt)
N/A
Cross-store portability: used as a fallback when the GID doesn't resolve in this shop.
Group Enabled
enabled
true, false
true
false imports the option set as draft (won't render on the storefront).
Group Position
position
number
1.0
Display order on the main admin list.
Inventory Engine
inventoryEngine
NATIVE_BUNDLES, INVENTORY_ONLY
NATIVE_BUNDLES
The legacy value LINE_ITEM_PROPERTIES is still accepted so older files import: it is converted to NATIVE_BUNDLES with every option set in the group set to Text on order. See How Options Appear, and Who Tracks Inventory.
Include Parent In Bundle
includeParentInBundle
true, false
false
Only honoured when Inventory Engine is NATIVE_BUNDLES.
Sold Out Entire Group
soldOutEntireGroup
true, false
true
Disable add-to-cart when any option is fully sold out. A blank cell on a create row gets the database default, true; option sets created in the admin start at false.
Derive Parent Inventory
deriveParentInventory
true, false
false
When enabled, the app derives the bundle parent product's stock level from its components and writes it to Shopify (opt-in).
Options Carrier Id
optionsCarrierId
blank, or parent-line
blank
Only applies to a standard Options group (not Bundles, Build a Box, or Inventory sync). Blank routes answers onto the order's bundle grouping (no separate line; they won't reach packing slips or Order Printer). parent-line puts them on the product's own order line instead.
N/A
id
Optionfier option-set ID
N/A
JSON only. Exports include it; the XLSX format intentionally omits it (option sets match by handle).
Used for MERGE matching within an option set. Blank → create a fresh option.
Set Handle
handle
kebab-case slug, unique within the option set
required
Referenced by visibility conditions in other options.
Set Command
command
any string
N/A
Reserved for future use. Option-level commands are not read today; the option set's Command cascades to all children.
Set Label On Cart
labelOnCart
any text
N/A
Required for NATIVE_BUNDLES and LINE_ITEM_PROPERTIES. INVENTORY_ONLY options can omit it.
Set Label On Product
labelOnProduct
any text
the labelOnCart
Optional override for the storefront display.
Set Enabled
enabled
true, false
true
Disable an option without deleting it.
Set Position
position
number
1.0
Order within the parent option set.
Set Required
required
true, false
false
When true, customers must fill in this field to add to cart.
Display On Frontend
displayOptionsOnFrontend
true, false
true
When false, the option is hidden on the storefront.
Treat As Line Item Property
treatAsLineItemProperty
true, false
false
The Appears as setting: true is Text on order (the option shows as text on the parent line), false is Bundle items. Only honoured when Inventory Engine is NATIVE_BUNDLES. An INVENTORY_ONLY option set is always Text on order whatever this column says.
Collect Color Value
collectColorValue
true, false
false
For color-swatch sets: when true, the cart records the color's hex value next to the label (e.g. Medium (#8D6944)). Default records only the label.
Dropdown Style
dropdownStyle
fancy, native
fancy
Only applies to Selectable options rendered as a dropdown. fancy is Optionfier's own styled dropdown; native is the browser's plain <select>.
Variant Image Size
variantImageSize
sm, md, lg, or blank
blank (off)
Thumbnail size for a linked variant's image next to each choice. Blank turns the thumbnail off.
Variant Image Position
variantImagePosition
leading, trailing
leading
Which side of the choice label the variant thumbnail renders on.
Show Component Pricing
showComponentPricing
true, false
false
Shows the per-choice price next to each choice.
Show Component Pricing Always
showComponentPricingAlways
true, false
false
Also show prices that equal the parent variant's price.
CSS Class Enabled
cssClassEnabled
true, false
false
Master toggle for the custom CSS class.
CSS Class
cssClass
CSS class name
""
Custom class applied on the storefront.
Placeholder Enabled
placeholderEnabled
true, false
false
Master toggle for placeholder text.
Placeholder Text
placeholderText
any text
N/A
Grey helper text shown when no selection.
N/A
lowStockNoticeEnabled
true, false
false
JSON only, no XLSX column. Shows a "Only X left" notice on choices whose linked variant is running low.
N/A
lowStockThreshold
number or null
null
JSON only, no XLSX column. The stock level that triggers the low-stock notice.
N/A
maxPerLine
number or null
null
JSON only, no XLSX column. The most units of this product one cart line may hold, whether or not this option's choices are picked; checkout refuses lines over the cap. An out-of-range value is clamped to a usable cap rather than rejecting the whole file.
Conditional-quantity rule: how many units of the linked variant this option consumes, driven by another option's answer. Same rule shape as visibilityCondition.
Excel round-trips every field above except the three marked JSON only. An Excel export/import of an option set with low-stock notices, a threshold, or a per-line cap silently drops them. Use JSON if you need those fields to survive the round-trip.
Every choice carries the fields below. The type-specific fields live in Option Config JSON in Excel and at the top level of the option object in JSON (see Option Types and Per-Type Fields next).
XLSX Column
JSON field
Accepted values
Default on create
Notes
Option ID
id
Optionfier option ID
N/A
Used for MERGE matching within a set. Blank → create a fresh option.
Option Type
type
see types table below
required
Determines which per-type fields apply.
Option Variant Product ID
variantProductId
Shopify product GID
""
Connected component product.
Option Variant Product Handle
variantProductHandle
Shopify product handle
N/A
Denormalised reference kept in sync by the products/update webhook.
Option Variant ID
matchingVariantId
Shopify variant GID
""
Connected variant under the component product.
Option Price Override
variantPriceOverride
decimal string (e.g. "12.99")
null
Custom price for an option shown as Bundle items. Ignored under LINE_ITEM_PROPERTIES.
Option Quantity
quantity
integer ≥ 1
1
How many units of the connected variant this option consumes.
Option Inventory Management Enabled
inventoryManagementEnabled
true, false
false
Per-option inventory tracking toggle.
Option Config JSON
(top-level keys on the option)
JSON blob
{}
XLSX-only; holds per-type fields without a dedicated column.
The Option Type value (or JSON type) is one of the following. Per-type fields below live in Option Config JSON in Excel and at the top level of the option object in JSON.
Option Type value
What it renders as
SelectableOption
Dropdown, radio, pill buttons, or product grid (picked via displayAs)
CheckBoxOption
Checkbox, pill toggle, or switch
TextOption
Text input (single- or multi-line)
NumberOption
Numeric input or slider
DateOption
Date picker
TimeOption
Time picker
FileOption
File upload
ColorOption
Predefined color swatch
ImageSwatchOption
Image swatch
DynamicColorOption
Customer-chosen hex color
LinkedVariant
Inventory link (for INVENTORY_ONLY inventory syncs; never shown on the storefront)
StaticContentOption
Structural content (heading, paragraph, divider, or spacer), collects no answer
mode is "block" or "allow"; dates is an array of YYYY-MM-DD.
dateRangeRule
{ mode, ranges } or null
null
ranges is an array of { start, end } (each YYYY-MM-DD).
dayOfWeekRule
{ mode, days } or null
null
days is an array of integers 0-6 (0 = Sunday).
Anchors for relative dates:today, startOfMonth, endOfMonth, startOfNextMonth, endOfNextMonth. offsetDays is an integer, positive for future, negative for past.
GLOBAL = deduct for every trigger variant; PER_VARIANT = deduct only for the specific trigger variant below.
triggerVariantId
Shopify variant GID
""
Populated when scope is PER_VARIANT.
triggerProductId
Shopify product GID
""
Populated when scope is PER_VARIANT.
LinkedVariant choices also use the common matchingVariantId, variantProductId, variantProductHandle, and quantity fields; those identify the variant being deducted.