Lustre theme documentation
Quiet luxury: images first, prices that do not shout. Install it, learn its sections and blocks, and look up every setting.
Install and set up
Get the theme
Add it to your theme library from its Theme Store listing. While a theme has no listing yet, ask for early access on its page and we will write when it opens.
Pick a preset
Every theme has three presets: complete looks with their own colors, fonts and shape. You choose one when you add the theme; each can be changed afterwards in Theme settings.
Open the editor
In your Shopify admin go to Online Store, then Themes, and select Customize on the new theme. Nothing goes live until you publish it.
Set the theme settings
Open Theme settings: logo, typography, layout, colors, cards, buttons, cart, product page, motion, social and legal. The settings reference below lists every one.
Build your pages
Use Add section on each template, and add blocks inside the sections that take them. Assign one of the four color schemes to any section.
Preview, then publish
Preview on a phone and on a desktop, check the cart and the product page, then publish from the Themes page.
Presets
Lustre has 3 presets, each with four color schemes. Twelve color schemes across the three presets and 161 pairs computed against WCAG 2.2 AA, with no failures, including the hero scrim in the worst case.
Lustre
Jewellery, watches and fine fragrance
Newsreader headings, Work Sans text
Mica
Watches, minimal jewellery and accessories
Manrope headings, Inter text
Sable
Fragrance, skincare and colour
Libre Baskerville headings, Karla text
Theme settings reference
Every setting under Theme settings in the Lustre editor, in the order the editor shows them. The id is the setting's name in the theme files.
Logo and favicon
| Setting | Type | Options or range | Default |
|---|---|---|---|
Logologo | Image | ||
Logo widthlogo_width | Slider | 40 to 300px, in steps of 10 | 120px |
FaviconfaviconSquare image, at least 32 x 32 px | Image |
Typography
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingstype_header_font | Font | ||
Bodytype_body_font | Font | ||
Body text sizels_type_scale | Slider | 85 to 125%, in steps of 5 | 100% |
Heading sizels_heading_scale | Slider | 80 to 130%, in steps of 2 | 100% |
Layout
| Setting | Type | Options or range | Default |
|---|---|---|---|
Page widthmax_page_width | Choice | Narrow, Wide | Narrow |
Page marginmin_page_margin | Slider | 10 to 100px, in steps of 1 | 20px |
Spacingls_density | Choice | Compact, Regular, Airy | Regular |
Colors
| Setting | Type | Options or range | Default |
|---|---|---|---|
Follow the shopper's dark models_auto_darkWhen the shopper's device is in dark mode, light color schemes use the dark scheme below. Off by default, so the store looks the same for everyone. | On or off | Off | |
Dark schemels_dark_scheme | Color scheme |
Product cards
| Setting | Type | Options or range | Default |
|---|---|---|---|
Image shapels_card_ratio | Choice | Portrait (4:5), Square (1:1), Tall (3:4), Landscape (4:3) | Portrait (4:5) |
Columns on phonesls_cards_mobileOne column gives long product titles more room. | Choice | One, Two | Two |
Buttons and corners
| Setting | Type | Options or range | Default |
|---|---|---|---|
Corner radiusbuttons_radius | Slider | 0 to 40px, in steps of 2 | 4px |
Input corner radiusinput_corner_radius | Slider | 0 to 12px, in steps of 1 | 4px |
Card and image corner radiusls_radius | Slider | 0 to 28px, in steps of 2 | 0px |
Cart
| Setting | Type | Options or range | Default |
|---|---|---|---|
Cart typecart_type | Choice | Drawer, Page | Drawer |
Product page
| Setting | Type | Options or range | Default |
|---|---|---|---|
Sticky add to cart bar on phonesls_sticky_atcA bar with the add button at the bottom of phone screens once the page scrolls past the buy buttons. An app with its own sticky bar takes its place. | On or off | Off | |
Gallery layoutls_gallery_layoutStack lists every image (phones swipe through them); Thumbnails shows one image and a row of thumbnails; Carousel is one swipeable strip with a counter. | Choice | Stack, Thumbnails, Carousel | Stack |
Return window (days)ls_return_daysDays a shopper has to return an item. Above 0 the returns row of the service block says it and the product structured data carries a return policy with it. 0 states nothing. | Slider | 0 to 100, in steps of 5 | 0 |
Storefront API tokenls_storefront_tokenA public Storefront API access token (Headless channel, or a custom app with unauthenticated_read_product_listings). Build a routine reads bundle components with it. Leave it blank to hide that section. | Text |
Prices
| Setting | Type | Options or range | Default |
|---|---|---|---|
Show currency codesls_currency_codeShows prices as $10.00 USD instead of $10.00. Useful when you sell in several currencies. | On or off | Off |
Motion
| Setting | Type | Options or range | Default |
|---|---|---|---|
Animationsls_motionShoppers who ask their device for reduced motion never see movement. | Choice | Full, Reduced, Off | Full |
Hero animationls_hero_animationOn: the hero plays its animation (Hero motion below picks how). Off: the still poster only, with no animation script or frames downloaded. Shoppers who ask for reduced motion always get the still poster. | On or off | On | |
Hero motionls_hero_motionHow themes with an animated hero play it. Shoppers who ask for reduced motion always get the still poster. | Choice | Still poster, Layers, Sequence | Still poster |
Social media
| Setting | Type | Options or range | Default |
|---|---|---|---|
Facebooksocial_facebook_linkPaste the full address of each profile | Text | ||
Instagramsocial_instagram_link | Text | ||
TikToksocial_tiktok_link | Text | ||
Xsocial_x_link | Text | ||
YouTubesocial_youtube_link | Text | ||
Pinterestsocial_pinterest_link | Text |
Legal
| Setting | Type | Options or range | Default |
|---|---|---|---|
Where you sellls_legal_regionChooses which legal notes print. United States prints the US wording; the other two add the EU and UK notes. Review every note with counsel for your jurisdiction. | Choice | United States, European Union and UK, Both | United States |
Prices exclude taxls_price_excludes_taxPrints “Prices exclude tax and shipping unless shown.” under the product price. Turn on only if your prices are shown without tax. | On or off | Off | |
Business name and addressls_legal_entityPrinted in the footer as “Operated by”. Use your registered business name. | Text | ||
Privacy policy pagels_privacy_urlLinked next to forms and the age check. Blank uses the privacy policy from Settings > Policies. | Link | ||
Accessibility statement pagels_accessibility_urlAdds an accessibility statement link to the footer. Blank hides it. | Link | ||
Renewal reminder (days)ls_renewal_reminder_daysDays before each renewal that you email the member. 0 states nothing. Set it only if you really send the reminder. | Slider | 0 to 60, in steps of 1 | 0 |
Food claim window (days)ls_claim_daysDays a shopper has to report a damaged or wrong food order. 0 states nothing. | Slider | 0 to 30, in steps of 1 | 0 |
Style
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headerls_header_layoutCentered puts the wordmark over the middle and turns on quiet text actions on product cards; Split puts it at the start. | Choice | Split, Centered | Centered |
Hero animation
Find these under Theme settings, then Motion. They apply to Lustre and to every Log Studio theme with an animated hero.
Hero animation
On: the hero plays its animation (Hero motion below picks how). Off: the still poster only, with no animation script or frames downloaded. Shoppers who ask for reduced motion always get the still poster.
On or off. Default: On.
Hero motion
How themes with an animated hero play it. Shoppers who ask for reduced motion always get the still poster.
Choices: Still poster, Layers, Sequence. Default: Still poster.
Animations
Shoppers who ask their device for reduced motion never see movement.
Choices: Full, Reduced, Off. Default: Full.
Sections
Lustre has 35 sections you can add from Add section in the editor, and 25 fixed sections that belong to a page (product, cart, collection, account) or to the header and footer. Open one to see its settings.
Sections you can add
Announcement bar
| Setting | Type | Options or range | Default |
|---|---|---|---|
Texttext | Text | New arrivals are in. Shop the latest | |
LinklinkThe whole message becomes a link. | Link | ||
Color schemecolor_scheme | Color scheme |
Apps
Blocks it accepts: @app.
No settings of its own.
Build a box
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numberlabel | Text | Build a box | |
Headingheading | Text | Saturday pantry box | |
Texttext | Rich text | ||
ProductscollectionUp to 24 products, shown as menu rows. | Collection | ||
Items per boxsize | Slider | 2 to 24, in steps of 1 | 8 |
Most of one itemper_item | Slider | 1 to 12, in steps of 1 | 4 |
Box name in the cartbox_nameSaved on every line as the hidden property _box so the cart and an offer app can group them. Blank uses the heading. | Text | ||
Offer lineoffer_textOnly when an offer app really applies one. The theme never computes a discount. | Text | ||
Thumbnailsimages | On or off | On | |
Color schemecolor_scheme | Color scheme |
Chapter rail
| Setting | Type | Options or range | Default |
|---|---|---|---|
| Lists the chapters of the page under the header: a bar on phones and tablets, a column from 1200 px. Shows only on pages with chapters. | |||
Chapter
Blocks it accepts: _chapter-text, _chapter-plate, _chapter-step, _chapter-stat, _chapter-link, _ingredient. Up to 16 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
LayoutlayoutStatement: one large sentence. Plate: a wide image. Split: prose beside a tall image. Pinned steps: steps beside a sticky image (from 900 px wide, with motion on). Numbers: up to four stats. | Choice | Statement, Plate, Split, Pinned steps, Numbers | Plate |
LabellabelShort name after Chapter N and in the chapter rail. Defaults to the heading. | Text | ||
HeadingheadingThe chapter is hidden, and not numbered, while the heading is empty. | Text | The story | |
Textlede | Text | ||
Stage imageimageShown beside the steps of the pinned layout. | Image | ||
Link anchoranchorButtons that link to #story (or the word you type here) jump to this chapter. | Text | ||
Color schemecolor_scheme | Color scheme |
Collection list
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numbernumberShown before the heading, like 01. Leave blank to hide it. | Text | 02 | |
Headingheading | Text | Shop by category | |
Collectionscollections | Collections | ||
Color schemecolor_scheme | Color scheme |
Collections grid
| Setting | Type | Options or range | Default |
|---|---|---|---|
Grid item widthgrid_item_width | Choice | Small, Large | Large |
Grid spacinggrid_gap | Slider | 0 to 50px, in steps of 5 | 10px |
Concierge
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Concierge | |
Headingheading | Text | A private appointment, with a specialist. | |
Texttext | Text | Thirty minutes, free of charge. Bring a piece you wear, or a question. | |
Button labelbutton_label | Text | Book an appointment | |
Button linkbutton_linkDefaults to /pages/appointment, the page that uses the appointment template. | Link | ||
Text linklink_label | Text | Write to the concierge | |
Text link URLlink | Link | ||
| Facts | |||
Factfact_1 | Text | Choose a day; confirmation within 4 hours | |
Iconfact_1_icon | Choice | Calendar, Place, Clock | Calendar |
Factfact_2 | Text | In store or by video call | |
Iconfact_2_icon | Choice | Calendar, Place, Clock | Place |
Factfact_3 | Text | Monday to Saturday, 10 AM to 6 PM | |
Iconfact_3_icon | Choice | Calendar, Place, Clock | Clock |
Color schemecolor_scheme | Color scheme | ||
Corporate orders
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numberlabel | Text | Corporate | |
Headingheading | Text | Feed the whole team | |
Texttext | Rich text | ||
Reply promisepromiseOnly a promise you keep, like We reply within one business day. Blank shows nothing. | Text | ||
Color schemecolor_scheme | Color scheme |
Custom Liquid
| Setting | Type | Options or range | Default |
|---|---|---|---|
Liquid codecustom_liquidAdd app snippets or other code | Liquid |
Custom section
Blocks it accepts: @theme.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Backgroundbackground_image | Image |
FAQ
Blocks it accepts: Question.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Frequently asked questions | |
Color schemecolor_scheme | Color scheme | ||
Add FAQ structured dataemit_schemaLets search engines read these questions and answers | On or off | On |
Featured articles
| Setting | Type | Options or range | Default |
|---|---|---|---|
HeadingheadingDefaults to the blog title. | Text | ||
Blogblog | Blog | ||
Articles to showarticles_to_show | Slider | 2 to 12, in steps of 1 | 4 |
LayoutlayoutGive one blog its own layout with an alternate blog template. | Choice | Front (lead story first), River (one column), Grid, Index (dates and titles) | Front (lead story first) |
Link textlink_label | Text | ||
Color schemecolor_scheme | Color scheme |
Featured collection
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numbernumberShown before the heading, like 01. Leave blank to hide it. | Text | 01 | |
Headingheading | Text | Featured products | |
Collectioncollection | Collection | ||
Products to showproducts_to_show | Slider | 2 to 12, in steps of 1 | 4 |
Layoutlayout | Choice | Grid, Rail with arrows, Menu rows, Table, Theme style (Theme settings) | Grid |
Color schemecolor_scheme | Color scheme |
Featured product
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Productproduct | Product | ||
Labellabel | Text | Buy | |
Pack option namepack_optionThe product option shown as cards with each pack’s price and saving, like Pack or Size. Other options stay as buttons. | Text | Pack | |
Add-on productsaddonsUp to four. Checked add-ons go to the cart together with the product, in one request. Sold-out ones are left out. | Products | ||
Show quantity selectorshow_quantity | On or off | On | |
Waitlist when sold outwaitlistA sold-out variant shows an email form that adds the shopper to your customers with the tag waitlist. Launch news is a separate, unticked checkbox. | On or off | On | |
Link anchoranchorButtons that link to #buy (or the word you type here) scroll to this section. | Text | buy | |
Show as a chapteras_chapterNumbers this section with the chapters and uses the label as its title. The buy form stays the same. | On or off | Off | |
Color schemecolor_scheme | Color scheme |
Front page
Blocks it accepts: Pinned story.
| Setting | Type | Options or range | Default |
|---|---|---|---|
BlogblogThe newest 50 articles of this blog. Lead: a pinned story, else the newest with the lead tag, else the newest. | Blog | ||
Region namelabelRead by screen readers; defaults to the blog title. | Text | ||
Lead taglead_tagThe newest article with this tag leads the page. | Text | lead | |
Show the latest columnshow_latest | On or off | On | |
| Offer row | |||
Offer textpromo_textTwo lines are kept for it under the lead story, with or without text, so the page never shifts. | Text | ||
Offer linkpromo_link | Link | ||
Color schemecolor_scheme | Color scheme | ||
Hero
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
LayoutlayoutAuto: split with the split header (Mica), overlay otherwise. Overlay puts the copy on the dark scheme’s scrim over the image, never straight on the photograph. | Choice | Auto, Overlay, Split | Auto |
ImageimageA campaign still, 2400 × 1500, under 140 KB at 1600 px, the subject in the left or lower two thirds. It is the LCP image. | Image | ||
Eyebroweyebrow | Text | The autumn collection | |
Headingheading | Text | Pieces made to be kept. | |
Heading levelheading_tagUse H1 only for the first hero of the page | Choice | H1, H2 | H1 |
Texttext | Text | Hand-finished in our workshop, certified and insured. | |
Button labelbutton_label | Text | Discover the collection | |
Button linkbutton_link | Link | ||
Text linklink_label | Text | ||
Text link URLlink | Link | ||
| Offer row | |||
Offerpromo_textShown instead of the service line while it is filled. Say when it ends. | Text | ||
Service lineservice_text | Text | Every piece ships insured, with its certificate, and can be returned within 30 days. | |
| Hero motion | |||
Front cut-outlayer_frontTransparent PNG or WebP with 8 to 10 px of padding. | Image | ||
Frame atlassequence_atlasOne image with every frame in a grid, left to right and top to bottom. Without an atlas the hero plays Layers. | Image | ||
Framessequence_frames | Slider | 8 to 48, in steps of 4 | 24 |
Frames per rowsequence_columns | Slider | 2 to 8, in steps of 1 | 6 |
Color schemecolor_scheme | Color scheme | ||
Image with text
| Setting | Type | Options or range | Default |
|---|---|---|---|
Imageimage | Image | ||
Show the image after the textimage_end | On or off | Off | |
Labellabel | Text | Our story | |
Headingheading | Text | Made slowly, in small runs | |
Texttext | Rich text | ||
Button labelbutton_label | Text | Read our story | |
Button linkbutton_link | Link | ||
Color schemecolor_scheme | Color scheme |
Locations
Blocks it accepts: Location. Up to 12 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numberlabel | Text | Visit | |
Headingheading | Text | Where to find us | |
Texttext | Rich text | ||
Business typebusiness_typeThe schema.org type of every location’s structured data. | Choice | Bakery, Café or coffee shop, Grocery store, Restaurant, Food establishment | Food establishment |
Menu collectionmenu | Collection | ||
Area servedarea | Text | ||
Static map imagemapA picture of the map, 4:3, about 1200 px. No embedded map: every address is text. | Image | ||
Map descriptionmap_alt | Text | ||
Color schemecolor_scheme | Color scheme |
Lookbook
Blocks it accepts: product-hotspots. Up to 6 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Lookbook | |
Headingheading | Text | The autumn edit | |
Texttext | Text | Press a point on a photograph to see the piece. Every piece is also listed under its look. | |
Color schemecolor_scheme | Color scheme |
Appointment
| Setting | Type | Options or range | Default |
|---|---|---|---|
Reply promisepromise | Text | We reply within one working day to confirm the time. | |
External booking linkbooking_urlOptional: a booking tool. The form stays as the way to write. | Link | ||
Booking link textbooking_label | Text | Book online |
Compare
No settings of its own.
Newsletter
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Newsletter | |
Headingheading | Text | Letters from the studio | |
Texttext | Rich text | ||
Color schemecolor_scheme | Color scheme |
Origin map
Blocks it accepts: Place. Up to 8 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
LabellabelShort name after Chapter N and in the chapter rail. Defaults to the heading. | Text | ||
Headingheading | Text | Where it comes from | |
Textlede | Text | ||
Map imageimageA map, plan or drawing at 3:2. Every place is also listed as text beside it. | Image | ||
Map descriptionaltDescribes the whole map for screen readers. Defaults to the image alt text. | Text | ||
Color schemecolor_scheme | Color scheme |
Product details
Blocks it accepts: product-ingredients, product-steps, product-specs, product-comparison, product-before-after, product-hotspots, product-look, product-trust, product-volume, product-nutrition, product-food-facts, product-origin, product-freshness, product-downloads, product-compatibility, @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Color schemecolor_scheme | Color scheme | ||
Show an On this page navshow_nav | On or off | Off |
Build a routine
| Setting | Type | Options or range | Default |
|---|---|---|---|
| Lists the components of a native fixed bundle (Shopify Bundles) with a swap per component and one add button. Needs the Storefront API token in Theme settings > Product page; it stays hidden on products that are not bundles. | |||
ProductproductDefaults to the product of the page. | Product | ||
Labellabel | Text | Build a routine | |
Headingheading | Text | Everything in one step | |
Texttext | Text | ||
Button labelbutton_label | Text | ||
Color schemecolor_scheme | Color scheme | ||
Quick order
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | ||
Introductionintro | Rich text |
Request a quote
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | ||
Introductionintro | Rich text |
Related products
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numbernumberShown before the heading, like 01. Leave blank to hide it. | Text | 01 | |
Headingheading | Text | You may also like | |
CollectioncollectionLeave empty to use the first collection of the product. | Collection | ||
Products to showproducts_to_show | Slider | 2 to 12, in steps of 1 | 4 |
Color schemecolor_scheme | Color scheme |
Order again
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Order again | |
Orders shownorders | Slider | 1 to 6, in steps of 1 | 3 |
Color schemecolor_scheme | Color scheme |
Rich text
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | ||
Headingheading | Text | Talk about your brand | |
Heading levelheading_tag | Choice | H2, H3 | H2 |
Texttext | Rich text | ||
Button labelbutton_label | Text | ||
Button linkbutton_link | Link | ||
Second button labelbutton_2_label | Text | ||
Second button linkbutton_2_link | Link | ||
Center the textcenter | On or off | Off | |
Color schemecolor_scheme | Color scheme |
Subscription box
| Setting | Type | Options or range | Default |
|---|---|---|---|
| Sells the selling plans of one product (monthly preselected). The renewal terms show next to the plans, on the cart line and in the drawer. | |||
Membership productproduct | Product | ||
Labellabel | Text | Membership | |
Headingheading | Text | Read everything. Own the print. | |
Texttext | Rich text | ||
Gift productgift_product | Product | ||
Anchoranchor | Text | membership | |
Color schemecolor_scheme | Color scheme | ||
Testimonials
Blocks it accepts: Quote, Figure. Up to 8 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Index numbernumberShown before the heading, like 01. Leave blank to hide it. | Text | 03 | |
Headingheading | Text | Customers say | |
Color schemecolor_scheme | Color scheme |
Timeline
Blocks it accepts: Entry. Up to 10 blocks.
| Setting | Type | Options or range | Default |
|---|---|---|---|
LabellabelShort name after Chapter N and in the chapter rail. Defaults to the heading. | Text | ||
Headingheading | Text | The years | |
Textlede | Text | ||
Color schemecolor_scheme | Color scheme |
Video
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | ||
Headingheading | Text | See it in use | |
Sourcesource | Choice | YouTube or Vimeo, Shopify-hosted video | YouTube or Vimeo |
YouTube or Vimeo linkvideo_url | Video link | https://www.youtube.com/watch?v=_9VUPq3SxOc | |
Video filevideo | Video | ||
Cover imagecoverShown until the shopper presses play. YouTube and Vimeo load only then. | Image | ||
| Captions | |||
Captions filecaptions_urlFor Shopify-hosted videos: link to a WebVTT (.vtt) file uploaded in Content > Files. YouTube and Vimeo use their own captions. | Link | ||
Captions languagecaptions_languageLanguage code, like en or de. Defaults to the store language. | Text | ||
Captions namecaptions_label | Text | ||
Show captions by defaultcaptions_default | On or off | Off | |
TranscripttranscriptA text version of the video for shoppers who cannot watch or hear it. | Rich text | ||
Color schemecolor_scheme | Color scheme | ||
Page sections
Not found
No settings of its own.
Article
Blocks it accepts: @app, Pull quote, Shop the story, Series, Author.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Reading toolsreading_toolsTurns on the table of contents, reading time and progress bar below. Off hides all three. | On or off | Off | |
Show the table of contentsshow_tocBuilt from the h2 headings of the story; shown with three or more. | On or off | On | |
Show the reading timeshow_reading_time | On or off | On | |
Show the reading progress barshow_progress | On or off | On | |
Show the share buttonshow_share | On or off | On | |
Drop capdrop_cap | Choice | As the theme style, On, Off | As the theme style |
App blocks after paragraphapps_after_paragraph0 places it 40 % of the way in. Never before paragraph 3, at most one promotion per 600 words. | Slider | 0 to 30, in steps of 1 | 0 |
| Members only | |||
Members-only storiesmembers_gateArticles tagged members show two paragraphs to readers without the customer tag member. The full text stays in the page for search engines, marked as paywalled. Check your caching before you turn it on. | On or off | Off | |
Membership pagemembers_page | Link | ||
Blog
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Articles per pagearticles_per_page | Slider | 3 to 24, in steps of 3 | 9 |
Show tag filtersshow_tags | On or off | On | |
LayoutlayoutGive one blog its own layout with an alternate blog template. | Choice | Front (lead story first), River (one column), Grid, Index (dates and titles) | Front (lead story first) |
Cart drawer
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Show discount code fieldshow_discount | On or off | On | |
Show order noteshow_note | On or off | Off |
Compare column
No settings of its own.
Footer
Blocks it accepts: @app, Menu, Text.
| Setting | Type | Options or range | Default |
|---|---|---|---|
MenumenuLinks with nested links become columns headed by the link title. | Menu | footer | |
Show newsletter sign-upshow_newsletter | On or off | On | |
Newsletter headingnewsletter_heading | Text | Letters from the studio | |
Show payment iconsshow_payment_icons | On or off | On | |
Color schemecolor_scheme | Color scheme |
Header
Blocks it accepts: menu-link, menu-mega, menu-list.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Color schemecolor_scheme | Color scheme | ||
Sticky headerstickyThe header stays at the top of the screen while shoppers scroll. | On or off | On | |
Show country and language selectorshow_localizationAppears only when the store sells in more than one country or language. | On or off | On | |
| Masthead | |||
Show the date linedate_line | On or off | Off | |
Shop name is the home page headingwordmark_headingFor a front page whose lead story changes every day: the shop name becomes the h1, the lead story an h2. | On or off | Off | |
Button textcta_label | Text | ||
Button linkcta_link | Link | ||
Sections strip on phonesstrip_menuA menu shown under the header on small screens, scrolling sideways. | Menu | ||
Account
| Setting | Type | Options or range | Default |
|---|---|---|---|
Show PO numbers and Reorder linksreorder | On or off | Off |
Activate account
No settings of its own.
Addresses
No settings of its own.
Cart
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Show discount code fieldshow_discount | On or off | On | |
Show order noteshow_note | On or off | On | |
Trade cartb2bPO number, the company’s terms read only, the tax line and Request a quote for this cart. | On or off | Off |
Collection
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
LayoutlayoutGallery: large images in an editorial rhythm, for small catalogs. Grid: dense, for more than 24 products. | Choice | Grid, Gallery, Menu, Table, List, Theme style (Theme settings) | Grid |
StylestyleCatalog: table, list and grid views, filters in a sidebar or drawer, compare and one quantity control per row. | Choice | Cards, Catalog | Cards |
Rows per page in the tablerows_per_pageThe table view shows more rows than the cards (36 by default). | Slider | 12 to 48, in steps of 4 | 36 |
Thumbnails in the menumenu_imagesA 64 px square image per row, loaded lazily from the fifth row. Off by default: food is chosen by reading. | On or off | Off | |
Products per pageproducts_per_page | Slider | 8 to 48, in steps of 4 | 24 |
Show a feature tileshow_featureA tile with an image and a link inside the grid on the first page, for example a room or a lookbook. Edit it in the Feature tile block. | On or off | Off | |
Feature tile positionfeature_position | Slider | 1 to 12, in steps of 1 | 4 |
Show promo tileshow_promoA tile on its own color scheme with a heading and a button, on page 1 at the chosen position. It spans two cards and is never counted as a product. | On or off | Off | |
Promo tile positionpromo_position | Slider | 1 to 12, in steps of 1 | 5 |
Contact form
No settings of its own.
Sign in
No settings of its own.
Order
No settings of its own.
Product
Blocks it accepts: @theme, @app.
No settings of its own.
Create account
No settings of its own.
Reset password
No settings of its own.
Page
Blocks it accepts: @app.
No settings of its own.
Password
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Opening soon | |
Show newsletter sign-upshow_newsletter | On or off | On |
Predictive search
No settings of its own.
Quick order lookup
No settings of its own.
Quick view
No settings of its own.
Search
| Setting | Type | Options or range | Default |
|---|---|---|---|
Layoutlayout | Choice | Cards, Table | Cards |
Sticky bottom bar (apps)
Blocks it accepts: @app.
No settings of its own.
Blocks
Blocks go inside a section, for example on the product page or in the header. Lustre has 46 blocks you can add.
Apps
Blocks it accepts: @app.
No settings of its own.
Buy buttons
Blocks it accepts: _product-engraving, _product-gift, _product-gift-card.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Show quantity selectorshow_quantity | On or off | On | |
Quantity fieldquantity_style | Choice | Number field, Stepper with rule hints | Number field |
Show dynamic checkout buttonsshow_dynamic_checkoutHidden for products sold with subscriptions, which need the regular checkout. | On or off | On | |
Show installments messageshow_installmentsShop Pay Installments, when the store offers it. | On or off | On | |
Preselect a planprefer_planOff: the one-time purchase is chosen and the shopper picks a plan. On: the first monthly plan is chosen. The renewal terms always show inside the purchase options. | On or off | Off | |
Waitlist when sold outwaitlistA sold-out variant shows an email form that adds the shopper to your customers with the tag waitlist. Launch news is a separate, unticked checkbox. | On or off | Off | |
Pre-order notepreorder_noteShown under the button of a pre-order. [date] becomes the ship date. Leave blank for: Ships on or after [date]. You are charged today. Pre-order needs a ship date (product metafield custom.ship_date) with continue selling at zero stock, or a pre-order selling plan. | Text |
Delivery and pickup
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Get it by | |
MethodsmethodsUsed when the product metafield custom.fulfillment is blank: delivery, pickup, shipping. Delivery needs delivery_zone entries; pickup needs a location with local pickup. | Text | delivery, pickup | |
Postal code formatpostal_patternA regular expression; the default ^[0-9]{5}$ takes five digits. | Text | ^[0-9]{5}$ | |
Postal code examplepostal_example | Text | 98101 | |
Number keyboard on phonesnumeric | On or off | On | |
Pickup dayspickup_daysWeekday numbers from 1 (Monday) to 7 (Sunday), separated by commas. | Text | 1,2,3,4,5,6 | |
Pickup cut-offpickup_cutoffHH:MM in the shop’s time zone. After it, the first pickup day moves one day later. | Text | 16:00 | |
Days before the first pickuppickup_lead | Slider | 0 to 7, in steps of 1 | 1 |
Line for carrier shippingships_text | Text | Arrival estimates show at checkout. |
Group
Blocks it accepts: @theme.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Layout directionlayout_direction | Choice | Horizontal, Vertical | Vertical |
Alignmentalignment | Choice | Left, Center, Right | Left |
Paddingpadding | Slider | 0 to 200px, in steps of 2 | 0px |
Account
| Setting | Type | Options or range | Default |
|---|---|---|---|
StylestyleThe Shopify account component offers sign-in without leaving the store. | Choice | Shopify account component, Icon link | Shopify account component |
Cart
No settings of its own.
Link
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Link | |
Linkurl | Link |
Menu
| Setting | Type | Options or range | Default |
|---|---|---|---|
Menumenu | Menu | main-menu |
Country and language
No settings of its own.
Mega menu
Blocks it accepts: _menu-column, _menu-promo.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Shop | |
"All" linkurlAdds an "All ..." link at the top of the panel. | Link |
Search
| Setting | Type | Options or range | Default |
|---|---|---|---|
Results per typelimit | Slider | 2 to 10, in steps of 1 | 4 |
Add-ons
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Add to your order | |
Add-on productsproductsUp to four. Checked add-ons go to the cart together with the product, in one request. Sold-out ones are left out. | Products |
Buyer context
| Setting | Type | Options or range | Default |
|---|---|---|---|
Tax linetax_noteLeave empty to say whether prices include tax, or that the company is tax exempt. | Text |
Before and after
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Results | |
Headingheading | Text | Before and after | |
Before imagebeforeUse two photos with the same crop, light and ratio. | Image | ||
After imageafter | Image | ||
Before labelbefore_label | Text | Before | |
After labelafter_label | Text | After | |
CaptioncaptionFor example the duration: 8 weeks of daily use. | Text | ||
Disclaimerdisclaimer | Text | Results vary. | |
Divider startstart | Slider | 10 to 90%, in steps of 5 | 50% |
Bulk variant table
| Setting | Type | Options or range | Default |
|---|---|---|---|
| Products with at least the number of variants set in Theme settings > Product page get one row per variant, added in one request. Fewer variants keep the variant picker and buy buttons. | |||
Collapsible row
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Shipping and returns | |
Contentcontent | Rich text | ||
Page contentpage | Page | ||
SpecificationsspecsOne per line as Name: value, for example Width: 210 cm. Shown as a list of terms, so the numbers stay readable and translatable when a diagram image shows them too. | Long text | ||
TabletableOne row per line, cells separated by |. The first row heads the columns and the first cell of each row names it, for example Size | Chest | Waist, then S | 86–91 cm | 71–76 cm. | Long text | ||
Open by defaultopen | On or off | Off |
Comparison table
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Compare | |
Headingheading | Text | How it compares | |
TabletableOne row per line, cells separated by |. The first row heads the columns and its second cell is your product; the first cell of each row names the feature. | Long text | Feature | This product | Typical alternative First feature | Yes | No Second feature | Yes | Sometimes | |
Yes wordyesA cell with exactly this word also gets a check icon. | Text | Yes |
Compatible with
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Compatible with |
Concierge line
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Need advice? | |
Texttext | Text | A specialist replies within one working day. | |
Link textlabel | Text | Book an appointment | |
Appointment linklinkDefaults to /pages/appointment, the page that uses the appointment template. | Link |
Description
No settings of its own.
Downloads
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Downloads |
Limited drop note
| Setting | Type | Options or range | Default |
|---|---|---|---|
Product tagtag | Text | drop | |
Notetext | Text | 40 pieces, made to order after the window closes. |
Food facts
| Setting | Type | Options or range | Default |
|---|---|---|---|
Layoutlayout | Choice | Summary: tags and allergens, Full: ingredients, allergens and tags | Full: ingredients, allergens and tags |
Headingheading | Text | Ingredients | |
IngredientsingredientsBlank uses the product metafield custom.ingredients. | Long text | ||
Note under the factsdisclaimerShown with the date the product was last updated. Your wording: check it against the labelling rules where you sell. | Text |
Freshness
| Setting | Type | Options or range | Default |
|---|---|---|---|
Label before the datelabelBaked on, Roasted on, Picked on. The date comes from the product metafield custom.batch_date; custom.best_within_days adds the best-by date. | Text | Baked on | |
Extra linetextStorage, or a promise you keep, like Baked every morning. | Text |
Gallery
Blocks it accepts: @app.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Full screen zoomzoomEach image opens in a full screen view with zoom buttons and keys. There is no hover zoom. | On or off | Off |
Hotspots
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Shop the look | |
Headingheading | Text | In this picture | |
ImageimageGive the image a real alt text in Files. | Image | ||
Productsproducts | Products | ||
PositionspositionsOne x, y pair in percent per line, in the order of the products, for example 30, 40. | Long text | 30, 40 60, 35 50, 70 |
Ingredients
Blocks it accepts: _ingredient.
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | What is inside | |
Headingheading | Text | Key ingredients | |
Full list headinginci_heading | Text | Full ingredient list | |
Full ingredient list (INCI)inciShown in a disclosure under the tiles. | Long text |
Inventory status
| Setting | Type | Options or range | Default |
|---|---|---|---|
Low stock thresholdlow_stock_thresholdShows "Only N left" at or below this quantity. Only for variants whose inventory Shopify tracks. | Slider | 0 to 50, in steps of 1 | 5 |
Complete the look
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Complete the look | |
PiecesproductsUp to three. A product’s metafield custom.complete_the_look (product list) wins. | Products |
Nutrition
| Setting | Type | Options or range | Default |
|---|---|---|---|
Stylestyle | Choice | Nutrition facts (US), Per 100 g (EU) | Nutrition facts (US) |
HeadingheadingLeave blank for the style’s own heading. | Text | ||
Nutrition linestextOne per line: Label | amount | % Daily Value, or Label | per 100 g | per serving. Reserved: Serving size | …, Servings | …, Calories | …. A leading - indents a row. Blank uses the product metafield custom.nutrition. | Long text |
Origin
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Origin | |
Origin linestextOne per line: Label | value. Blank uses the product metafield custom.origin. | Long text |
Pack picker
| Setting | Type | Options or range | Default |
|---|---|---|---|
Pack option nameoptionThe product option shown as cards with each pack’s price and saving, like Pack or Size. Other options stay as buttons. | Text | Pack |
Pickup availability
No settings of its own.
Price
No settings of its own.
Request a quote
| Setting | Type | Options or range | Default |
|---|---|---|---|
Summary textsummary | Text | Need a bigger quantity or a delivery date? Request a quote |
Shade finder
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Find your shade | |
Shade option nameoptionThe option whose values are shades. Each variant needs the metafields shade.depth (1 to 10) and shade.undertone (warm, cool or neutral). | Text | Shade | |
Sample linksample_link | Link | ||
Appointment linkconcierge_linkDefaults to /pages/appointment, the page that uses the appointment template. | Link |
Share
No settings of its own.
Size guide
| Setting | Type | Options or range | Default |
|---|---|---|---|
Button labellabel | Text | Size guide | |
Size tablesize_tableA size_table metaobject; a product’s metafield custom.size_table wins. See the theme README. | Metaobject | ||
Printable sizer (PDF link)printable | Link | ||
Fitting linkfitting_linkDefaults to /pages/appointment, the page that uses the appointment template. | Link |
Specs
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | Specs | |
Headingheading | Text | Details | |
SpecificationsspecsOne per line as Name: value, for example Width: 210 cm. Shown as a list of terms, so the numbers stay readable and translatable when a diagram image shows them too. | Long text | Size: 30 ml Texture: Lightweight gel Made in: Portugal | |
Metafield rowsmetafieldsOne row per line: Label|namespace.key, like Thread|specs.thread. Rows the product has no value for are left out. | Long text | ||
Show part numbers (SKU and manufacturer part number)show_ids | On or off | Off |
Steps
| Setting | Type | Options or range | Default |
|---|---|---|---|
Labellabel | Text | How to use | |
Headingheading | Text | Three steps, once a day | |
StepsstepsOne step per line as Title: text, for example Apply: Two drops on damp skin. Connect a multi-line text metafield for steps per product. | Long text | Cleanse: Start with clean, damp skin. Apply: Press two or three drops into face and neck. Seal: Follow with moisturizer, and sunscreen in the morning. | |
Total time in minutesminutes | Number | ||
Add HowTo structured dataemit_schemaKeep it on in only one steps block per template. | On or off | On |
Stock by location
| Setting | Type | Options or range | Default |
|---|---|---|---|
Low stock thresholdlow_stockShows "Only N left" at or below this quantity. Only for variants whose inventory Shopify tracks. | Slider | 0 to 50, in steps of 1 | 20 |
Cut-off linecutoffA real dispatch cut-off, like "Order by 2:00 PM CT for same-day dispatch". Empty uses the shop metafield depot.cutoffs. | Text |
Title
No settings of its own.
Service rows
| Setting | Type | Options or range | Default |
|---|---|---|---|
| Each row prints only when it has data: the certificate from product metafields, returns from Theme settings > Product page > Return window. | |||
Warranty titlewarranty_title | Text | Workshop warranty | |
Warrantywarranty_textA product’s metafield custom.warranty wins. Leave empty to hide the row. | Text | ||
Returns detailreturns_textShown under the return window from Theme settings. | Text | ||
Shipping titleshipping_title | Text | Insured shipping | |
Shippingshipping_text | Text | ||
Volume table
| Setting | Type | Options or range | Default |
|---|---|---|---|
Headingheading | Text | Price per piece by quantity | |
RowsrowsOne Quantity: price per line, for example 3 to 5: $10.50. The variant’s quantity price breaks win. | Long text | ||
Show the savingshow_savings | On or off | Off |
Text
| Setting | Type | Options or range | Default |
|---|---|---|---|
Texttext | Text | Text | |
Text styletext_style | Choice | Title, Subtitle, Normal text | Title |
Alignmentalignment | Alignment | left |
Variant picker
| Setting | Type | Options or range | Default |
|---|---|---|---|
Options the shopper must choosechoose_optionsOption names, separated by commas (for example Ring size). They start unselected, and Add asks for them instead of guessing. | Text | ||
Option with a scalescale_optionThe name of an option whose values run from light to dark (Roast): five bars and the value in words beside it. | Text |
Our apps in Lustre
Lustre is complete without any app. When one of our mini apps is installed, its widget goes to a named place of the theme (Theme Contract v1) instead of guessing, and where the theme has its own block it steps aside. Add an app block in the theme editor, in the sections that take one.
Urgency Bar
Announcement slot
Used only for product drops.
AI Chat
Floating widget that reserves its own space
Presented as Ask the concierge.
Frequently Bought Together
Product app zone, after the buy buttons
Becomes Complete the look, with the total shown as Together and no badge.
Quantity Breaks
Product app zone, after the buy buttons
Shown as a flat table.
Freebies Engine
Cart drawer slots
Its gift engine takes over from the theme's own gift block.
Sales Pop
Floating widget that reserves its own space
Off by default in this theme.
Sections that take an app block: Apps, Article, Blog, Build a box, Cart drawer, Featured collection, Featured product, Footer, Hero, Cart, Collection, Product, Page, Product details, Rich text, Sticky bottom bar (apps).
Questions about Lustre
- Do I need your apps to use Lustre?
- No. Lustre is complete on its own. With one of our apps installed, its widget uses the theme's named places (Theme Contract v1) instead of guessing where to go.
- Where is a Lustre setting in the editor?
- Theme-wide settings are under Theme settings, grouped as in the settings reference on this page. Settings for one part of a page are on its section or block in the editor sidebar; the sections and blocks reference lists them by name.
- How do I turn the hero animation off?
- Open Theme settings, then Motion, and clear "Hero animation" (it is on by default). On: the hero plays its animation (Hero motion below picks how). Off: the still poster only, with no animation script or frames downloaded. Shoppers who ask for reduced motion always get the still poster. "Animations" there sets motion for the whole theme.
- What do the Legal settings do?
- They print neutral default notes in the storefront, for example for plans, gift cards and forms. They are not legal advice: review each note with counsel for every place you sell before you launch.
- Where do I get help?
- Use the support form for Lustre: it asks for the preset and version so we can reproduce the problem.
Other theme documentation
Where this comes from
- Settings, sections and blocks: the themes repo's own schemas, read at feat/motion-heroes-all-themes (commit f8cbe3a), generated by scripts/themes-docs-snapshot.mjs.
- Anchors and the app contract: Theme Contract v1.
- Install steps: Shopify Help Center, Add themes to your store.
- Theme Store requirements: public documentation and a support contact for every theme.
Need a hand with Lustre?
Send the preset, the page and what you see. We reply on business days.