← Back to guides
ExperienceSchemaSchema · Published 2026-06-16 · 12 min read

How Shopify Section Presets Save Merchant Time on Every Launch

Presets are not a checkbox — they are the first merchant impression of your section. We break down preset structure, seeded blocks, defaults, and the support tickets presets prevent.

Share with Shopify developers — useful guides spread faster in theme dev communities.

Support tickets dropped measurably the sprint K2 Devworks mandated non-empty presets on every client section. Merchants who add a section at 6pm should see something that looks like the approved design — not an empty shell that generates "the section is broken" emails before launch.

A merchant adds your custom FAQ section at 9pm before a campaign launch. Without presets they see one empty accordion row, no heading, and a gray box where an image should be. They email the agency: "The section is broken." With presets they see two realistic questions, a heading that matches the mockup, and spacing that looks intentional. Same Liquid file — different schema tail. Presets are the UX layer between your code and merchants who do not read JSON. We treat them as deliverables equal to Figma parity, not optional metadata. This article documents how we structure presets, seed blocks, and pair defaults after launches where preset-less sections generated 2x support volume. Read Section Schema Explained for schema anatomy; this is operational preset craft.

What presets actually do in the theme editor

The presets array at the bottom of {% schema %} registers named entry points in Add section. Each preset can set section-level settings and an initial blocks array with types and per-block settings. When a merchant inserts via preset, Shopify creates section JSON on the template with those values. Merchants who duplicate an existing homepage section inherit that instance's JSON instead — presets matter most for new pages, landing templates, and seasonal campaigns when marketing builds fresh layouts without cloning the homepage. Empty presets — "name": "FAQ" with no settings or blocks — are worse than lazy; they train merchants that your agency ships unfinished work.

Minimal preset versus production preset

{%- comment -%} Inadequate {%- endcomment -%}
"presets": [{ "name": "FAQ" }]

{%- comment -%} Production {%- endcomment -%}
"presets": [{
  "name": "FAQ accordion",
  "settings": {
    "heading": "Frequently asked questions",
    "subheading": "Shipping, returns, and product care"
  },
  "blocks": [
    {
      "type": "faq_item",
      "settings": {
        "question": "How long does shipping take?",
        "answer": "

Orders ship within 2 business days.

" } }, { "type": "faq_item", "settings": { "question": "What is your return policy?", "answer": "

Returns accepted within 30 days.

" } } ] }]

Defaults on settings versus values in presets

Setting-level default keys in schema apply when a field has no stored value — new settings after deploy, or merchants who clear a field. Preset settings apply at insert time and write into template JSON. You need both: defaults protect schema migrations and editor resets; presets protect first impression. For image_picker fields, schema defaults cannot always reference theme assets in every Shopify version — we seed images in preset settings using theme asset URLs or leave image blank with paragraph setting info telling merchants recommended dimensions. Text defaults use approved copy deck strings, not "Heading" or "Click here." How Shopify Schema Works explains where each value lives in stored JSON.

Seeding blocks: count, order, and type mix

Repeatable sections need at least two blocks in presets so merchants see the loop working. Logo marquees get six placeholder logos if the design shows six; feature grids get four. block_order in presets is supported — use it when block sequence matters and your schema allows multiple block types. For sliders, seed three slides with distinct placeholder images from the client's media kit. Merchants delete extras faster than they build from zero. max_blocks in schema should match realistic upper bounds — 12 for FAQs, not 99 — so the editor stays performant. Dynamic Blocks Guide covers loop markup; presets prove the loop to non-developers.

"blocks": [
  { "type": "logo", "settings": { "image": "shopify://shop_images/logo-1.svg" } },
  { "type": "logo", "settings": { "image": "shopify://shop_images/logo-2.svg" } },
  { "type": "logo", "settings": { "image": "shopify://shop_images/logo-3.svg" } }
]

Multiple presets for layout variants without duplicate files

One section file can expose presets for "Testimonials — carousel" and "Testimonials — grid" if Liquid branches on section.settings.layout select. Merchants choose layout at insert; you avoid maintaining testimonial-carousel.liquid and testimonial-grid.liquid with duplicated schema. Keep preset names merchant-readable — include layout noun, not internal codenames. Document in handoff which preset maps to which Figma frame. When layout select changes after insert, merchants may need to reorder blocks; preset copy should warn in paragraph settings if a layout requires minimum block count.

Presets on JSON template defaults versus schema presets

templates/index.json ships homepage section order with settings and blocks baked in — that is the launch snapshot. Schema presets power future Add section actions. Align them: homepage JSON should look like your best preset so merchants who reset a section see familiar structure. When JSON template architecture diverges from presets — homepage rich, preset empty — marketing clones homepage for landing pages but new pages from Add section look broken. We copy preset block structure into index.json during launch, then verify both paths in QA.

Category and visibility: where presets appear

Schema supports preset category keys grouping sections in Add section panel — useful when clients have thirty custom sections. We group by homepage, product, social proof, utility. disabled_on and enabled_on restrict templates; presets still register but merchants only see sections where allowed. A FAQ preset enabled only on page templates prevents homepage clutter. Misconfigured enabled_on hides sections entirely — merchants think deploy failed. Test Add section on every template type in scope.

Preset content strategy for different client maturity

Enterprise clients supply final copy before launch — presets use real text. D2C startups often launch with approved placeholder tone matching brand voice. B2B clients need compliance-safe placeholder stats — no fake revenue claims. International clients: preset copy in primary market language; document translation workflow for secondary markets. Presets are not legal contracts; avoid guaranteed results language in placeholder testimonials unless client legal approved.

Images and video in presets without bloated theme repos

Ship lightweight SVG placeholders in assets/ for icons and logos. For photography, use client-approved stock already in Files or theme zip. shopify://shop_images/ references in preset JSON survive when filenames match. Huge uncompressed PNG presets inflate theme ZIP and slow CLI push. We compress launch assets and replace with client photos during content entry — presets still show proportional layout. video_url presets use a stable brand reel URL, not client-private unlisted links that expire.

Presets and color_scheme integration

When parent theme uses color schemes, preset settings can set color_scheme to scheme-1 or brand-specific scheme id. Merchants switching global palette see preset sections align. Hardcoded hex in preset settings fights OS 2.0 theming — use scheme pickers. Test preset insert on alternate schemes before handoff. Schema Guide lists color_scheme setting syntax.

Measuring merchant time saved — our crude metrics

We compared thirty-day support tags for themes launched before and after preset standards. Preset-complete sections averaged 0.3 tickets per section; preset-empty averaged 1.4. Tickets were "looks empty," "how add row," "cannot find section." Not scientific, but convincing for clients questioning schema time. Merchants who succeed inserting their own campaign sections do not renew retainer arguments — they renew because the theme feels like product, not code.

Preset QA checklist before merge

  1. Add section via preset on blank page template — visual match to Figma module
  2. Block count matches design minimum; reorder blocks in editor without breakage
  3. Clear optional image — layout holds; no collapsed hero
  4. Duplicate section — scoped CSS isolation intact
  5. Preset name distinct from internal schema name if internal is cryptic
  6. Second preset variant inserts correct layout select value

When presets cannot save you

Presets do not replace training. Complex sections with conditional logic — market-specific visibility, metafield dependencies — need Loom handoff. Presets do not fix wrong flat-vs-block architecture; a preset with twelve hardcoded text settings for twelve FAQs is still unmaintainable. Flat vs Block Framework first, presets second. Presets also do not migrate old vintage sections to OS 2.0 — merchants rebuilding homepage from scratch need content entry budget in the proposal.

Generator and converter alignment

Converter and Schema Generator emit preset stubs with two blocks for repeatables — we never ship generator output without editing preset copy to client voice. Generated preset names default to section name; rename for merchant scanability. If generator outputs empty presets array, that is a merge blocker — same as missing max_blocks on FAQ. Tooling accelerates structure; humans own merchant-first content in presets.

Preset patterns for high-traffic section types

  • Hero — heading, subcopy, CTA label, CTA url, image or video; defaults match approved hero copy
  • Featured collection — collection picker preset to best-selling collection handle; products_to_show default 4
  • Logo list — 4–6 logo blocks with SVG placeholders
  • Rich text + image split — richtext default two paragraphs; image aspect ratio hint in info
  • Newsletter — heading, privacy microcopy, klaviyo or native form id in settings if applicable

Preset naming psychology in Add section panel

Merchants scan preset names in a crowded Add section modal — "Image with text" beats "split-media-02." We align preset names with Figma component names the client already uses in meetings. Internal filenames stay kebab-case; preset names use title case and merchant verbs. When two presets differ only by layout, lead with layout noun: "FAQ — two column" and "FAQ — accordion." Ambiguous names cause duplicate section types inserted side by side because marketing thought they were different features.

block_settings in presets for heterogeneous blocks

When schema defines multiple block types, preset blocks array mixes types with per-block settings objects. Test each block type in preset — empty video block with missing video_url looks broken in editor preview. For slide blocks, seed distinct aspect-ratio images so carousel layout QA is meaningful. block_order in preset JSON controls initial sequence; omit it and Shopify may order alphabetically by block id in ways that do not match design narrative.

Presets for seasonal reuse without new section files

Black Friday preset variant on hero section — same Liquid, preset named "Hero — sale" with red scheme and promo defaults. Merchants insert seasonal preset on campaign page without agency deploy. Document which presets are evergreen versus seasonal so nobody deletes "Hero — sale" thinking it is duplicate. Git tracks schema preset changes; merchants insert instances independently — both paths must stay aligned after schema updates.

Training merchants on preset versus duplicate section

Merchants confuse Duplicate section in editor with Add section via preset. Duplicate clones JSON including stale campaign copy. Preset inserts fresh defaults — better for new landing pages. Handoff Loom shows both paths: duplicate homepage hero for quick tweak; preset for blank page. Reduces accidental duplication of outdated promo codes hardcoded in duplicated JSON settings.

Agency pricing argument for preset investment

Clients question billable hours on schema when Liquid "already works." We show ticket data: preset-empty themes cost retainers; preset-complete themes let marketing self-serve. Quote preset polish explicitly in SOW — "schema UX and presets" line item, not hidden in development buffer. CFOs understand fewer support hours better than JSON aesthetics lecture.

Preset regression testing on theme updates

When merging Dawn upstream or redeploying from Git, re-run preset insert QA on staging. Schema id changes break preset setting keys silently — section inserts with blank fields. Add preset smoke test to deploy checklist: one Add section per critical preset name. Five minutes prevents launch demo embarrassment when client inserts FAQ preset live on call and sees empty accordion.

Comparing preset quality to competitor theme demos

Premium theme demos feel polished because presets and defaults are curated. Client custom themes compete with that expectation. When stakeholder compares your work to Broadcast demo store, they compare preset first impression — not Git history. Invest preset time so custom agency themes demo as confidently as Theme Store screenshots. Side-by-side editor screen recording in sales phase closes deals.

Preset failures we debugged on live launches

Invalid JSON in preset blocks — trailing commas rejected silently in some Shopify versions. image_picker preset values pointing at deleted Files assets — gray boxes on insert. block type typo faq-item versus faq_item — empty block list. Richtext preset with unescaped quotes breaking schema parse. Validate schema JSON in CI with json lint before deploy. Preset bugs are launch blockers because merchants hit them before developers open homepage.

Presets for developer-only QA templates

templates/page.section-lab.json on staging theme lists every custom section with preset insert order for QA — not linked in production nav. Developers verify presets without polluting client homepage. Delete or password-gate lab template before go-live. Accelerates sprint review when PM cannot attend theme editor walkthrough.

Documenting presets for client self-serve

Handoff doc lists each section preset name, screenshot, intended template, and fields safe to edit. Merchants search "FAQ accordion" not faq-module.liquid. When clients pay for maintainability, preset quality is part of maintainability — future developers insert the same golden structure marketing uses. Link Section Tutorial for merchants wanting depth.

Cross-linking presets with internal documentation

Each preset name in client handoff links to Notion section spec — fields editable, max blocks, template restrictions. Merchants searching "FAQ accordion" find screenshot and Loom timestamp. Developers reference same doc for schema ids. Presets become entry points into living documentation, not black-box inserts. Reduces "what is this section for?" tickets when marketing rotates seasonal staff.

Presets are the demo that runs every time a merchant clicks Add section — not just the demo you give on launch day.

Preset copy localization for multi-market stores

Markets and Translate & Adapt mean preset English copy is starting point only — still better than empty. Seed presets in primary language; document translation workflow for secondary markets. Preset richtext with legal disclaimers requires legal review per locale before machine translate. Architecture supports i18n even when first launch is single market.

Executive summary for client stakeholders

One slide in handoff deck: presets mean marketing adds sections without agency tickets. Show before/after editor screenshot — empty preset versus seeded preset. Stakeholders who never open theme editor understand ROI. Ties preset work to measurable self-serve outcomes, not developer preference for JSON aesthetics.

On your next section PR, open the theme editor before requesting review. Insert only via preset on a blank template. If you would hesitate to show that screen to the client, fix presets before fixing CSS animations. Reusable Sections covers portability; presets cover discoverability. Together they reduce the agency being the bottleneck for every new landing page row.

Frequently asked questions

What happens if a section has no presets array?

On JSON templates the section still renders when added manually to template JSON, but merchants cannot discover it via Add section in the theme editor. That generates agency tickets for every homepage tweak.

How many blocks should presets include for repeatable sections?

Minimum two rows for FAQs, features, and logos — three or four when the design shows a fuller grid. One block makes merchants think the section only supports a single item.

Can one section file have multiple presets?

Yes. Use distinct preset names for layout variants — FAQ accordion vs FAQ two-column — sharing the same Liquid file. Merchants pick the layout at insert time.

Should preset copy use client brand voice or generic placeholders?

Use approved client copy from the Figma deck when available. Generic lorem is acceptable only for internal QA themes. Presets are demo content, not throwaway filler.

Do presets affect existing stores when you deploy schema changes?

Presets apply when merchants add a new section instance, not retroactively to existing section JSON. Changing preset defaults does not rewrite live merchant content — only new inserts.

Topic cluster

Schema

Section schema, settings, blocks, and theme editor integration.

Convert HTML to Shopify Liquid

Paste HTML & generate Liquid with schema, blocks, and scoped CSS. No signup required.

Share

Share this guide

Found this guide useful? Share it with other Shopify developers on LinkedIn, X, or Reddit.

Authors

About the authors

Practical Shopify section workflows from the developers who build and maintain this tool.

Dhruv Goyani, Shopify Developer at HTML to Liquid Converter

Dhruv Goyani

3 years web design + 3 years Shopify development experience

Dhruv combines web design and Shopify theme development — converting Figma and static HTML into merchant-editable OS 2.0 sections for client stores. He focuses on schema structure, section presets, and clean handoffs between design and Liquid.

Follow Dhruv on LinkedIn
Nishad Kikani, Lead Shopify Developer at HTML to Liquid Converter

Nishad Kikani

2 years web design + 6 years Shopify development experience

Nishad has six years of Shopify theme engineering — Dawn migrations, JSON templates, performance tuning, and complex block-based sections. He leads client delivery, code review, and the production standards behind every export from HTML to Liquid Converter.

Follow Nishad on LinkedIn

Meet our Shopify developers · Our development experience

Editorial review

Reviewed by the HTML to Liquid Converter team

Dhruv Goyani, Shopify Developer at HTML to Liquid Converter

Dhruv Goyani

3 years web design + 3 years Shopify development experience

LinkedIn profile →
Nishad Kikani, Lead Shopify Developer at HTML to Liquid Converter

Nishad Kikani

2 years web design + 6 years Shopify development experience

LinkedIn profile →

Content is reviewed by the HTML to Liquid Converter Shopify development team before publication. Technical accuracy is validated against current Shopify Online Store 2.0 conventions and active client theme work.

Last updated:

Questions or corrections? Contact us.