Pretty Product Options
← Merchant Guide

Building

Design themes & presets

Make the configurator look like your brand — no code needed.

The Design tab styles how the configurator looks on your storefront. Styles are saved as themes you assign per product, so different product lines can have different looks.

Start from a preset

Four built-in presets give you a designed starting point in one click:

  • Minimal — quiet chips, tight spacing, follows your store's colors
  • Boutique — serif type, round fabric swatches, generous whitespace
  • Bold — card choices in a grid, checkmark selection, full-width button
  • Night — for dark storefront themes: soft borders, amber accent, dark tooltips
The design theme editor: controls on the left, a live preview of the configurator on the right
Design → a theme

Click one, then tweak. The live preview on the right uses the exact styles your storefront ships, so what you see is what shoppers get.

What you can control

  • Typography — font (match your store theme, pick a preset stack, or enter your own), text sizes, section title style
  • Colors — accent, borders, backgrounds, prices, error messages, the price bar, and the Add to cart button (color and text color)
  • Shape & spacing — corner radius, density (compact / cozy / roomy), section dividers
  • Section flow — show all sections stacked, collapse them into an accordion, or walk shoppers through steps one at a time. Accordion and Steps keep long configurators manageable; the live price and Add to cart stay visible throughout. Accordions can start with the first section open, all open (shoppers collapse as they go), or all collapsed — and headers can show the current pick, like "Color — Pavement".
  • Boxed sections — give every section its own bordered, rounded card (with its own corner radius), like the premium configurators on big blinds stores. Works with any flow, and pairs especially well with the accordion.
  • Choices — chips, swatches, images or cards; swatch shape and size; how the selected choice is marked (outline, tinted fill, or a checkmark badge); label position
  • Click to enlarge — adds a magnifier to image choices so shoppers can inspect a fabric up close before choosing
The Shape & spacing card on a design theme
Design → Shape & spacing

Beyond the presets

Density gives you compact, cozy and roomy, which are a good start and a bad finish. Where a preset is close but not right, type the number:

  • Space between sections, in pixels
  • Inside padding of a boxed section — separate from the space between boxes. One number used to drive both, so asking for roomier cards also pushed them apart; now you can have one without the other
  • Box background, box border colour and border weight. Set the weight to zero for a card that is its background alone. The border used to borrow the choice border colour, so softening the outlines around your swatches also softened the cards holding them — they are separate now
  • Step numbers — in Steps flow the numbered circles are the only thing telling a shopper how far through they are, so they take a circle colour, a number colour, and both sizes

The Add to cart panel takes a border weight too, beside the colour it always had.

Per option set, not just per shop

A design theme is your shop's house style. But a made-to-measure blind and a gift-message add-on live in the same shop and want opposite answers about whether a section is a card, how far apart the steps sit, and whether the shopper walks them one at a time.

Every setting above can also be set on one option set: open it, go to the Design tab, and use Shape & spacing for this option set.

Shape & spacing on an option set, showing fields following the theme
Option set → Design → Shape & spacing

Anything you leave alone follows the design theme — and keeps following it when the theme changes. That is the whole reason a theme exists, so each control says in words what it will do untouched ("Same as the theme — Roomy") rather than sitting blank and making you guess. Clearing a field puts it back to following.

Explaining a disabled answer

When a rule switches an answer off, the shopper needs to know why or they read it as broken. Where the reason goes is per option:

  • Beside the name — suits chips
  • A strip along the bottom — suits cards. The strip stays at full strength while the rest of the card fades, because it is the one part that has to be readable. It has its own background and text colour
  • On hover — leaves the layout untouched, and the only option that fits a swatch

A photo that follows the shopper

A section can carry a section photo: a picture that takes over the product gallery while a shopper is reading that section — a measuring diagram while they enter sizes, a hinge close-up while they pick one. It fades in as they scroll and hands back when they move on.

Set it on the section, not the option: a per-option picture would change every few hundred pixels of scroll, which reads as flicker rather than as a guided tour. Desktop only, and a chosen answer's own image always wins over it.

Tooltips

Most fields in the app carry a small i you can hover for an explanation of what the setting does and when you would reach for it. On the storefront, every question and answer can carry its own tooltip for shoppers — with pictures, which is the easy way to explain what a "Z-frame" is.

A tooltip is hidden until hovered, so it is for nice-to-know detail. Copy a shopper needs in order to choose belongs in an answer's Description, which is always visible when answers are drawn as cards.

Assigning a theme

On the Products page, each connected product has a Design dropdown. Pick a theme, or leave "Default style" to inherit your store theme's look.

Per-option overrides

The theme sets the default look; any option can override it with its own Display choices as setting in the template editor — e.g. cards for fabrics but a plain dropdown for hardware.

Boxes around answers

Every chip, card, swatch and picture answer is drawn in a box. Whether it has one is a per-question decision — a row of fabric swatches usually reads better bare, while a list of upgrade cards usually wants the box — so it lives with the question rather than only on the theme.

Open the question, and under its design settings set Answer border to No. Radio and checkbox answers have their own Box each answer setting beside it, because those already carry a bubble of their own.

The theme sets the default for everything (Border around chip, card, swatch & picture answers), and any question can override it in either direction.

Two things stay true with the border off: the chosen answer keeps its outline, so the shopper can still see what they picked, and the answers keep exactly the size and spacing they had — turning the box off does not shuffle the row around.

Long answer lists

Sixty fabrics is a wall. A shopper who has to scroll past all of them often never reaches the questions underneath, so a question can show just the first few and offer the rest behind a link.

Set Show first to the number of answers you want visible — on the theme, for everything, or on a single question in its design panel. Leave it blank to show them all. Reveal link is what the link says; blank uses Show more, and the number hidden is added after it, so it reads "Show more (52)".

Set it per question wherever the theme's number doesn't suit: eight is right for a fabric list and wrong for a Mount with two answers, and a question that sets Show first to blank shows everything regardless of the theme.

An answer the shopper has already chosen is never hidden. If someone returns to a saved configuration whose fabric sits past the fold, that question opens showing everything — otherwise it would look unanswered and they would answer it again, losing what they had.

The link only applies where answers are shown as chips, swatches, cards, radios or checkboxes. A dropdown is already compact, so it is left alone.

The escape hatches

At the bottom of the theme editor there are Custom CSS and Custom JavaScript fields. These are for developers — everything above them covers the vast majority of stores, so if you're not sure what these do, you don't need them.

Pick up where you left off

A made-to-measure form takes a dozen answers. Someone who gets most of the way through and leaves to measure a window comes back to an empty one.

Turn on Settings → Pick up where you left off and a returning shopper is offered their answers back. It is an offer, not an automatic restore — they press Restore or Start fresh, and dismissing forgets the answers so they are not asked twice.

You set the heading, the wording, both button labels, where it sits, and its colours, border, corners, padding and size. Left blank, each of those inherits your theme rather than bringing its own look.

{{when}} in the wording becomes "yesterday", "3 days ago", "last week" — a date would make a shopper work out whether it was theirs.

Keep answers for is how long a half-finished configuration is worth offering. After it, they are forgotten. Seven days is the default: much longer and it is likely you have changed the options underneath it.

Two things it deliberately does not do. It never appears over a share link or a cart edit — those say exactly which configuration to show. And anything you have since deleted from the option set is left out when they restore, so a shopper cannot come back to an answer that no longer exists.

Keyboard and screen readers

Shoppers who never touch a mouse can configure a product, and you do not have to set anything up for it — this is how the configurator behaves out of the box.

On a pick one question, Tab moves between questions rather than between swatches: a colour with eight choices is a single stop, the same as a text box is a single stop, so reaching Add to cart takes a handful of presses and not fifty. Tab lands on the answer already chosen, so coming back to change something puts you on it. Inside the question, the arrow keys move through the choices — exactly how the options on a normal shop form already work.

On a pick several question every choice is its own Tab stop, because after ticking two of six you still have to reach the other four. Arrow keys move there too, but they only move: arrowing past a box never ticks it.

Either way, Space or Enter chooses, and Home and End jump to the first and last. Arrowing wraps around, so the end of a row is not the end of the choices, and anything a visibility rule has greyed out is stepped over instead of landed on and refused.

Whatever is focused is outlined — two rings, a dark one and a light one, so it stays visible on a swatch of any colour, including a photo. The outline appears for the keyboard only: clicking does not leave a ring behind.

A screen reader announces each choice as a choice, says whether it is selected, and reads the question it belongs to first — so it says "Colour, Oak, selected, 1 of 8" rather than reading the word "Oak" as prose. When Add to cart is blocked by a question you have not answered, the message is attached to that question, so the reason is read out with it instead of being a colour on the screen that a screen reader cannot see.

None of this is affected by your theme, your design settings, or which choice style you pick — swatches, images, cards, chips and dropdowns all behave this way.

Wording and other languages

Everything on a product page comes from you already — the questions, the answers, the product itself. What did not was the handful of words the configurator says for itself: Add to cart, Out of stock, Select…, the messages shown when something still needs answering. Those were English, and on most of them there was nothing you could do about it.

Settings → Storefront wording now holds all 36 of them, grouped by where they appear. Type your own and it is what shoppers read; leave a box empty and the fallback stays. Clearing a box is how you undo a translation.

If you sell in more than one language

Shopify does not translate these for you. Its Language Editor covers Shopify's own content — your products, your theme, your collections — and these words come from this app, so it never sees them.

Pick the language at the top of the panel. Default — every language is the wording used whatever a shopper is reading in, and if you sell in one language it is the only one you need. Choosing a specific language lets you write wording just for it; anything you leave empty there falls back to Default, and then to ours. The list shows the languages you publish in Shopify, so it matches what your shoppers can actually be reading.

We already ship French, German, Spanish, Italian, Dutch and Portuguese, so those shoppers get their own language without you typing anything. Anything you type wins over ours — always, and only for the language you typed it in.

The fallback is shown as faint placeholder text rather than filled in, so you can always tell at a glance which ones you have actually changed — the button on the card says how many. For a language we ship, the placeholder is our translation rather than the English, because that is what a shopper actually sees.

This covers the words the app says for itself. Your own text — option names, choice names, section headings, help text — is not translated yet.

Some messages contain %s, which is replaced with a value when it is shown — “%s” is required. becomes “Width” is required. Keep the %s in your translation, and keep them in the same order; the help text under each box says what each one stands for. {{count}} in the bar message works the same way.

If you had already typed wording into the theme editor's app-embed settings, that still works and is left alone. Anything you set here wins over it, because those theme fields come pre-filled with the English whether you typed it or not.

This is one setting for the whole shop rather than one per option set: a shop speaks one language to its shoppers, and translating "Add to cart" separately for every template would only guarantee they end up disagreeing.

Badges on answers

A shop with five showerheads usually has a view about which one people should buy. Badge on any answer puts a small flag on its corner — SAVE $70, MOST POPULAR, NEW — with your own text, background, text colour and size, in either top corner.

Open the answer and scroll to Badge. Type the words and you get something that already matches your theme; set the colours only if you want it to stand out further. Clearing the text removes it.

It works on every choice style, not just cards, and it never changes the height of the row it sits in — one badged answer will not end up taller than the ones beside it.

The text is yours to write and is not worked out from the prices. That is deliberate: a saving that computes itself has to stay right every time a price changes, and a badge quietly claiming the wrong discount is worse than no badge at all. If you change the price, change the badge.

Hiding the options behind a button

A made-to-measure form is a wall. On a page that also carries a gallery, a description and reviews, thirty questions between the price and the fold is the whole page — and a shopper who came to read about the product has to scroll past a form to do it.

Settings → Hide the options behind a button puts them behind a Configure button instead. Two ways to open: expand in place, which keeps the shopper where they were, or open over the page, which suits a narrow column a long form would swamp.

The button is yours: text, background, text and border colours (all three from a colour picker), border width, corners, text size, padding, full width or aligned. Leave any of it blank and that part follows your theme, so switching it on without touching the rest gives a button that already matches your shop.

Once the options are showing, the button goes. It has done its job, and a button reading "Configure" above the configuration it just opened is clutter. If you would rather it stayed as a toggle, put wording in Text once open — "Hide options", say — and it stays and switches between the two. A popup always keeps its button, since that is what reopens it.

It does not make anyone wait. The options are built while the page loads and the button only reveals them — opening is instant. It also stops the rest of the page moving as they appear, since nothing below the block has to shift.

Per option set

Every option set has the same panel on its Design tab. Anything set there wins for that one — including switching it off when the rest of the shop has it on, which is what you want for a product with two questions rather than thirty.

Change one field there and the rest still follows your shop, so restyling the button shop-wide later still reaches every option set that only turned it on or off.