Key concepts
Before you build, it helps to know the pieces Optical Form uses. They all appear under these names in the app admin.
A multi-step flow the customer completes on the product page. It has a name, a status (Draft / Active / Archived) and a list of steps. It’s assigned to one or more products and published to Shopify via sync.
Each step asks the customer a question (lens type, material, prescription, accessories…). It has an Input type that decides how it renders. See Build a form for the full list.
Option
Section titled “Option”Inside a select step, each option is a selectable card (e.g. “Progressive”, “Anti-reflective”). An option can carry: a label, an image, an informational badge (visual only), incompatibilities with other options, a jump to another step, and one or more add-ons.
Add-on
Section titled “Add-on”A Shopify product linked to an option that’s billed as a separate line item in the cart when the customer picks that option (e.g. the lens type itself, a treatment, a fitting service). They’re grouped under the main product as a bundle.
Accessory (cross-sell)
Section titled “Accessory (cross-sell)”An Accessories step offers optional extra products (cases, cleaners, cords…) the customer can add or skip. Unlike add-ons, they live in their own step and don’t depend on a specific option.
Bundle
Section titled “Bundle”The set of main product + add-ons + accessories added to the cart in one click. Shopify links them natively via parent_id, so they cascade-delete and read together at checkout and in order emails. See Design & cart.
Graduation (Rx)
Section titled “Graduation (Rx)”The customer’s prescription data: sphere (SPH/PWR), cylinder (CYL), axis (AX), addition (ADD) and pupillary distance (PD), per eye (OD / OI). See Prescription capture.
Metaobject / Sync
Section titled “Metaobject / Sync”Each form is published to Shopify as a metaobject. Saving in the app isn’t enough — you must Sync for changes to reach the storefront. See Sync.