Skip to content

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.

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.

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.

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.

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.

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.

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.