Source: shopify.dev/docs · Latest
Shopify Theme Store
Shopify Theme Store
Submission Requirements
Everything your theme must meet before it can be listed on the Shopify Theme Store — organized, plain-English, and ready to use as a checklist.
TL;DR
The 22 Requirements at a Glance
Sell exclusively on the Shopify Theme Store — no other marketplaces.
Your theme must look, feel, and function completely differently from all existing themes.
High-quality visuals, clean layout, consistent design, frictionless customer shopping experience.
Support 21+ required features: subscriptions, gift cards, faceted search, and more.
All 16 required page templates must be present and functional.
Lighthouse Performance ≥ 60 and Accessibility ≥ 90 on mobile + desktop.
Every page type (product, cart, blog, collection list, 404, etc.) has specific rules.
No fake urgency, no app-dependent features, no unlicensed assets.
Chrome/Firefox: latest 3 releases; Safari/Edge: latest 2; Samsung Internet supported.
Plain CSS only — no SCSS. No pre-minified files (except ES6 & 3rd-party libs).
SEO meta tags, rich snippets, and no robots.txt.liquid file.
Full keyboard navigation, color contrast, alt text, and valid HTML.
Open Graph + Twitter Card tags; leave social fields empty by default.
Use Shopify's font_picker, color settings, and official terminology throughout.
Responsive images with lazy loading on all screen sizes.
1–2 word theme name, unique, no Shopify brand names or industry labels.
Every release must include a version number and release notes.
One fully realistic demo store per preset, matched to its industry + catalog size.
Public documentation and a contact form linked from your Theme Store listing.
Respond to merchant support within 2 business days; fix critical bugs immediately.
01
Theme Store Exclusivity
- Shopify Theme Store only— your theme must be sold exclusively here. No ThemeForest, Creative Market, or any other marketplace.
- No designer credits or affiliate links— remove all links to your own website, social profiles, or affiliate programs from the theme files.
- No external marketing material— the theme files must not contain any promotional content for your brand or other services.
02
Uniqueness From Other Themes
- Completely different overall experience— not just one page, but the entire journey across core templates and elements must feel original. You may reuse libraries but how you assemble them must be substantially different.
- Can't be reproduced by tweaking settings— reproducing your overall experience should require substantial structural changes, not just adjusting settings or superficial styling.
- Original art direction— create an inventive, distinct system for headers, navigation, product cards, media treatments, and page structure.
- Cosmetic tweaks don't qualify— spacing changes, color/typography swaps, gradients, shape dividers, background effects, animations, or adding a few sections or settings to an existing codebase is not enough.
- Uniqueness at the architectural level— embed uniqueness into the theme's code structure so it remains unmistakably its own as new features are added.
- Skeleton Theme only— Dawn and Horizon are no longer accepted as base codebases for new submissions. Only Shopify's Skeleton Theme is approved.
03
Theme Design & UX
Visual Design & Art Direction
- Stand out visually— clearly target a specific merchant type or industry with a thoughtful, deliberate visual style. Must not closely resemble existing themes.
- High-quality visuals only— sharp, properly sized images and icons. No blurry, stretched, pixelated, or clip-art-level imagery anywhere.
- Harmonious color palette— cohesive colors throughout that work together without clashing or reducing readability.
Layout
- Clear grid structure— consistent, deliberate spacing and alignment between sections and blocks throughout all pages.
- Strong content hierarchy— guide attention using size, color, contrast, and position. Key content first, secondary content visibly subordinate.
- Flexible layouts— must look visually appealing and balanced even when content length, image count, or text quantity changes. No awkward gaps or broken layouts.
Consistency
- Limited, consistent fonts— avoid overusing fonts; choose complementary pairs used consistently throughout.
- Uniform interactive elements— buttons, links, and forms must use consistent styles, sizes, colors, and behaviors everywhere.
- Merchant-first theme editor— settings must use simple, merchant-friendly language, be grouped logically, and balance flexibility with opinionated defaults.
Customer Shopping Experience
- Clear, effortless navigation— customers can easily navigate from homepage to product discovery, product pages, cart, and checkout without confusion or friction.
- Thoughtful product discovery— the design guides customers toward relevant products or collections through intuitive menus, featured collections, or clearly presented recommendations.
- Frictionless shopping interactions— all key customer actions — choosing options, adding to cart, editing cart items, and moving to checkout — must be clear, intuitive, and immediately responsive.
Demo Store Experience
- Fully realistic demo— real product photos, professionally written original text. Absolutely no Lorem Ipsum or placeholder content.
- Relevant sections only— only include sections and interactions that logically support the type of business and products in the demo.
- Inspiring to merchants— the demo inspires merchants with engaging content, attractive layouts, and intentional product displays.
04
Required Features
- Sections Everywhere (OS 2.0)— merchants can add, remove, and rearrange sections on any page.
- Discounts— show discount amounts on cart, checkout, and order pages for items and full orders. Must be supported on the cart page.
- Accelerated checkout buttons— include Shop Pay, PayPal, Google Pay on product pages and cart pages. Buttons must be enabled by default. Do not modify the branded button colors.
- Faceted search filters— filter by price, availability, type, vendor, and variant options on collection and search pages.
- Gift cards— include a proper gift card template that renders the gift card issued to a customer upon purchase.
- Image focal points— respect the focal point setting merchants assign to images via the image_picker setting or the Files page.
- Social sharing images— add a page_image object so merchants can display a thumbnail when sharing store links on social platforms.
- Country & currency selector— let customers select their currency and country/region when merchants sell internationally. Must follow Shopify's UX guidelines.
- Language selector— let customers switch languages when the merchant sells in multiple languages. Must follow Shopify's UX guidelines.
- Multi-level dropdown menus— support nested navigation menus (menus inside menus).
- Newsletter signup form— a form for visitors to subscribe to email marketing.
- Pickup availability— show local pickup availability on product pages without needing to add to cart. Must be supported on the product page.
- Related product recommendations— auto-generated related products section on product pages.
- Complementary product recommendations— merchants can show "pairs well with" products on product pages.
- Rich product media— support 3D models, embedded videos, YouTube and Vimeo on product pages, featured product sections, and quick view features.
- Search box or link to search— must include a search template and predictive search functionality.
- Selling plans / subscriptions— show selected subscription plans in cart and on customer order pages. Must be supported on both the cart page and customer page.
- Shop Pay Installments banner— show a "pay in installments" message on product pages. Must be supported on the product page.
- Unit pricing— display price per unit on collection, product, cart, and customer pages.
- Variant images— show the correct image when a customer selects a specific product variant.
- Follow on Shop button— include the Shop app follow button using the login_button Liquid filter. Do not modify its official colors.
05
Templates, Sections & Blocks
Required Templates
- 16 required filesMust include all of the following:
- Do NOT includeRemove config/markets.json before uploading — it is not allowed in your submission.
Section Requirements
- Sections on every template— except Customer Account, Gift Card, and Checkout pages.
- Custom Liquid section— must include a setting of type liquid and be available on all section-supporting templates.
- Header and footer use Section Groups— allows merchants to dynamically add, remove, and reorder sections in the header and footer without touching code.
Block Requirements
- Product page uses individual blocks— price, vendor, description, and other elements must each be separate, reorderable blocks in the main product section.
- App blocks supported— main product section and featured product section must accept @app blocks.
- Custom Liquid blocks— add these wherever app blocks are allowed. Must include a setting of type liquid.
06
Lighthouse Performance & Accessibility
60+
Minimum Performance Score
(mobile + desktop average)
(mobile + desktop average)
90+
Minimum Accessibility Score
(mobile + desktop average)
(mobile + desktop average)
- Tested across 3 pages— scores are averaged across homepage, collection page, and product page, for both desktop and mobile.
- Pages must have real content— sections cannot be empty during testing. Fill everything with actual images and text.
- Test before submitting— use Shopify's benchmark dataset and Lighthouse CI tool to pre-check scores and avoid rejection.
07
Page Requirements
Global Layout
- Payment logos— use enabled_payment_types and payment_type_svg_tag filter. Icons must be in full color.
- Language attribute— the <html> element must specify a lang attribute populated with request.locale.iso_code.
- Use routes object— use Shopify's routes object for all dynamic URLs. Never hard-code paths.
- Don't touch content_for_header— never modify or parse content_for_header — Shopify manages this internally.
Product Page
- Full product info— show product.title (not truncated), variant.price, variant.unit_price, compare-at price, product.description, and all option names and values.
- Media & variants— all images must be displayed and viewable. Variant images must update when the associated variant is selected. Different image ratios must not break the layout.
- Tax messaging— use cart.taxes_included to show a "taxes included" message when applicable.
- Required buying functions— variant selectors split into separate options, quantity selector, Add to Cart button, price/compare-at/sold-out callback, and first available variant pre-selected.
- Color swatches— must be supported using swatch.image and swatch.color.
- Gift card recipient form— gift card products must include a send-to-recipient form using form.email, form.name, form.message, and gift_card.send_on.
- Required feature support— product recommendations, rich product media, accelerated checkout buttons (enabled by default), pickup availability, and Shop Pay Installments must all work on the product page.
Collection Page
- Collection header— output collection.title (not truncated), collection.description, and collection.image.
- Product grid— list products with product.title, product.price, product.images, variant.unit_price, and at least one piece of media per product.
- Badges & price ranges— show Sale badge or product.compare_at_price_max. Use product.price_varies to show min–max price range.
- Filtering, sorting & pagination— include product sorting, an empty collection message, and pagination or lazy loading. Grid must not break due to varying image aspect ratios.
Collection List Page
- Collection title required— output collection.title (not truncated) for each collection.
- Use featured image— use collection.featured_image, which falls back to the first product image if no collection image is set.
- Pagination or lazy loading— must paginate or lazy load collections.
Cart Page
- Per-item details— show title, unit_price, image, final_price, quantity, and options_with_values for each line item.
- Cart summary— display cart.total_price, a checkout button, quantity editing per item, an empty cart message, and tax-inclusive indicator.
- Advanced cart features— support cart notes, selling plans, automatic discount codes, and accelerated checkout buttons (enabled by default).
- Refresh on quantity update— all line items must refresh when quantity changes so the cart total updates correctly.
Page Template
- Required content— must output page.title and page.content.
- Contact page template— must include an alternate page.contact.json template for a contact form.
Other Pages
- Blog— output blog.title. Each article must show article.title, article.image, and article.excerpt_or_content (not article.content). Paginate.
- Article— show article.title, article.comments, and article.published_at (not article.created_at). Comments must be paginated and submission workflow must work without moderation.
- Search— return products, blog posts, and pages using object_type. Show a "no results" message. Paginate.
- 404— clear "page not found" message and helpful next steps (search bar or homepage link).
- Gift Card— Apple Wallet support, gift card code, QR code (min 120×120px), and store logo or shop.name.
- Password— store logo or shop.name, shop.password_message, and a storefront password entry field.
- Customer— display line_item.unit_price in order history. Must support selling plans and unit pricing.
08
Consistency & Functionality
- Consistent RTE content styling— H1–H6, blockquotes, lists must look identical across all templates.
- Scripts hosted on Shopify— all JavaScript must be served through Shopify's CDN. Only approved 3rd-party libraries are exempt.
- Don't interfere with Shopify admin— no code that interferes with, or augments, any native Shopify feature in the theme editor or Shopify admin.
- Add rel="nofollow"— any link pointing to a Shopify domain must include the rel="nofollow" attribute.
- Protocol-relative URLs— never hard-code http:// or https:// in asset paths.
- Licensed assets only— all third-party plugins, fonts, and images must have the appropriate licenses.
- No app-dependent features— all theme features must work without requiring a separate Shopify app to be installed.
- No half-built app features— wishlists, appointment scheduling, cart-level discount codes, Instagram feeds, and similar app-like functionalities are not allowed even in partial form.
- No fake urgency— no fictitious countdown timers, fake stock levels, or made-up visitor/activity counts.
09
Browser Compatibility
| Browser / Platform | Version Coverage | Required |
|---|---|---|
| Safari (Mac) | Latest 2 releases | ✓ |
| Chrome (Mac & PC) | Latest 3 releases | ✓ |
| Firefox (Mac & PC) | Latest 3 releases | ✓ |
| Edge (PC) | Latest 2 releases | ✓ |
| Mobile Safari (iOS) | Latest 2 releases | ✓ |
| Chrome Mobile (Android & iOS) | Latest 3 releases | ✓ |
| Samsung Internet (Android) | Latest 2 releases | ✓ |
| Instagram in-app browser | Latest release (iOS + Android) | ✓ |
| Facebook in-app browser | Latest release (iOS + Android) | ✓ |
| Pinterest in-app browser | Latest release (iOS + Android) | ✓ |
10
Assets
- No SCSS or Sass files— .scss and .scss.liquid files are not allowed. Compile to plain .css or .css.liquid before submitting.
- No pre-minified CSS or JS— Shopify auto-minifies these. The only exceptions are ES6 JavaScript files and pre-minified third-party libraries.
11
SEO
- SEO meta tags on every page— include the theme SEO metadata snippet with title tag, meta description, and canonical URL on all pages.
- Google rich product snippets— add structured data markup on product pages. Validate using Google's Structured Data Testing Tool.
- Do not include robots.txt.liquid— Shopify manages this file automatically. Including your own version will interfere with search engine crawling.
12
Accessibility
- Full keyboard navigation— every element, including dropdown navigation, must work with keyboard only.
- Visible focus states— every focusable element must show a clear visual highlight when focused via keyboard.
- Alt text on all images— use image.alt or image_tag: alt: for product images. Decorative images must use alt="".
- Connected form labels— every form input must have a unique ID and a label linked via the for attribute.
- Valid HTML— themes must be built with valid HTML throughout.
- Color contrast ratios— body text: minimum 4.5:1. Large text (18pt+) and non-text elements: minimum 3:1.
- Logical focus order— keyboard tab order must match DOM order: top-to-bottom, left-to-right.
- Touch targets ≥ 24×24px— all tappable elements must be at least 24×24 CSS pixels. Exception: inline body text links.
- Distinct heading styles— H1 through H6 must each look visually different from one another.
13
Social Media
- Social media icons— include a set of social media icons merchants can link to their profiles.
- Open Graph and Twitter Card tags— shared links must display a proper title, description, and thumbnail image on all social platforms.
- Empty defaults— all social media URL fields in theme settings must be left empty by default. Never pre-fill with dummy links.
14
Settings
Basic Requirements
- Clear, logical settings— settings must use simple, merchant-friendly language and be grouped logically. Avoid unnecessarily deep nesting.
- Correct grammar and spelling— all setting labels and informational text must be grammatically correct and free of spelling errors.
- Helpful default text— default values should indicate how to use the setting. No Lorem Ipsum or demo store content as placeholders.
- Favicon setting required— must include an uploadable favicon setting.
- Logo handles any aspect ratio— landscape, portrait, or square logos must all work without breaking the layout.
- Every setting must have a label— no unlabeled settings anywhere in the theme.
- Menu defaults— header link list settings default to main-menu; footer link list settings default to footer.
- Referenced resources must exist— any default value pointing to a product or collection must exist in all stores.
- Standard metaobject definitions only— custom or app-owned metaobject definitions cannot be used as metaobject_type.
- Include a theme_info section— required in the settings_schema.json.
- Editor changes reflect instantly— any change in the theme editor must appear immediately in the preview panel.
Text Style Requirements
- Sentence case— capitalize only the first word and proper nouns. "Image gallery" not "Image Gallery."
- Descriptive names, not numbers— use "Top left, Top center" not "Position 1, Position 2." Avoid subject repetition in section headings.
- American English— "color" not "colour," "center" not "centre," "canceled" not "cancelled," "catalog" not "catalogue."
- No ampersands— always write "and" in full. Never use &.
- Statements not questions— "Use a custom logo" not "Use a custom logo?"
- Active voice, verb-first buttons— "Upload image," "Add section," "Choose font."
- Technical spec formats— image sizes as 64 x 64px required or 3:2 aspect ratio recommended; word counts as 32 words max.
Terminology Requirements
| Use this | Don't use this |
|---|---|
| home page | homepage |
| top bar | meta-nav, search bar |
| bottom bar | below footer, legal |
| slideshow | slider |
| checkout (in settings) | check out |
| heading | title |
| subheading | sub-heading |
| body text | main text |
| signup | sign-up, sign up |
| favicon | shortcut icon, website icon |
| sidebar | side bar |
| button label | button name |
| social media (sections/settings) | social, social sharing |
| social media icons | social media buttons |
| navigation (all nav elements) | menus, menu |
| main menu (primary nav) | navigation, menu |
| secondary menu | navigation, menu |
| footer menu | navigation, menu |
| cart type (drawer/page/modal) | Ajax, Ajaxify, Ajax cart |
| .png | PNG, png, .PNG |
| use (when a next step follows) | show, enable |
| show (show/hide a basic element) | use, enable |
| enable (for apps/plugins/major layout change) | use, show |
Section Name Guidelines
- Name relates to function— use names like "Header," "Product list," "Slideshow," or "Image gallery."
- Suggested names— Header, Featured products, Featured collections, Slideshow, Image gallery, Logo list, Newsletter, Map, Blog posts, Testimonials, Footer.
Section Preset Guidelines
- Preset names relate to content type— use names like "Image and text," "Map," "Columns," or "Blog articles."
- Use content placeholders— if a preset features images, videos, or icons, display placeholder content so merchants can see how it looks before adding their own media.
| Content type | Placeholder to use |
|---|---|
| Images (non-product/collection) · Adjacent images without margins | Image icon |
| Lists of logos | Logo icon |
| Slideshows · Images with overlaid text · Full-width images | Lifestyle image |
| Videos | Default YouTube video ID |
15
Font Picker
- Use font_picker setting type— all font selections must use the font_picker setting type.
- Always set a default font— every font picker must have a default value (e.g., default: work_sans_n6).
- Only use available library fonts— defaults and preset fonts must exist in Shopify's currently available fonts list.
- Load all font variants— use the font_modify filter in CSS to load bold, italic, and bold-italic variants for every font used.
- Custom fonts are not allowed— all fonts must come from Shopify's library.
16
Color System
- Minimum 4 colors required— you must define at least 4 colors in your color system.
- Every background needs a matching foreground— each background color setting must have a corresponding foreground (text/icon) color setting.
- Use proper color type— all color settings must use type: color in the settings schema.
- Good contrast pairing— foreground and background combinations must have sufficient contrast for readability.
17
Responsive Images
- Responsive image strategy— all images must adapt and look correct across phones, tablets, and desktops. Small icons are exempt.
- Lazy loading required— images must load only as they're needed, minimizing the number of images loaded initially per page.
18
Naming Themes & Presets
Naming Requirements
- No Shopify brand names— avoid names the same as or similar to Shopify products, events, or branded content (e.g., "Polaris," "Unite," "Shopify").
- No company or partner names— your Partner account name is already shown automatically on the listing page.
- No platform or SEO terms— avoid generic words like "Performance," "Mobile," or "Sales."
- No industry or category names— don't name your theme after a niche like "Fashion," "Electronics," or "Jewelry."
- 1–2 words, under 30 characters— short, memorable, easy to spell and pronounce. Avoid trendy or unusual spellings.
- Unique name required— the name must not already exist in the Shopify Theme Store or on other platforms.
- One preset shares the theme name— at least one preset must take the name of the parent theme exactly.
Preset & Listings Setup
- Multiple presets need a /listings folder— each preset goes in its own subfolder inside /listings in your theme ZIP.
- Single preset — no /listings folder needed— you can skip the /listings folder entirely if you only have one preset.
- Each preset must match its demo on install— colors, typography, and layout must match the demo store when the merchant installs the preset.
- Demo images won't transfer— plan for this; images don't carry over on install.
19
Theme Versions & Release Notes
- Version number required on every submission— every upload — first submission or update — must include a version number.
- Release notes required— clearly highlight the main features and changes in each version so merchants know what they're getting.
- Helps merchants stay informed— version numbers let merchants know which version they're on and whether newer updates are available.
20
Demo Stores
- One demo store per preset— every theme preset must have at least one demo store. Create it as a Client Transfer Store from your Shopify Partner Dashboard.
- Match the preset's industry and catalog size— the demo must fit the tags assigned to the preset. Each preset's install state must also match the demo's expectations.
- Use Bogus Gateway or test mode— all demo stores must have the Bogus Gateway or Shopify Payments test mode enabled, with all other checkout options disabled.
- Real, original text content— no Lorem Ipsum, no onboarding text, no profanities anywhere.
- Don't change "Powered by Shopify"— the powered_by_link link cannot be altered and must contain only powered_by_link.
- No affiliate links— not allowed anywhere in the demo store.
- Add rel="nofollow" to Shopify links— any link in the code pointing to a Shopify domain must include the rel="nofollow" attribute.
- Only show built-in theme features— no text embedded in images (unless physical products, infographics, or badges), no animated GIFs mimicking theme functionality, and no apps (except free review and translation apps).
- Have rights to all assets— obtain appropriate rights for all images, brand names, and content per the Shopify Partner Agreement. Use Shopify Burst for royalty-free images.
21
Documentation & Contact Forms
Documentation Requirements
- Both are mandatory— you must have theme documentation and a public support contact form ready before your theme launches.
- Link both from your Theme Store listing— merchants must be able to find them directly from your theme page.
- Correct grammar and spelling— all documentation must be well-written and error-free.
- Match your theme settings language— terminology in docs must be consistent with labels used in the theme editor.
- Keep it updated— update documentation when Shopify changes something or when you release a new theme version.
- Include an FAQ section— answer common merchant questions proactively.
- Warn merchants before editing code— remind them to duplicate the theme first and suggest hiring a Shopify Partner for customizations.
Contact Form Requirements
- Required fields— Name, Email Address, Store URL, Description of Problem (text area), File Upload (for screenshots), and Auto-Responder confirmation.
- Optional but useful— Theme Name (if you have multiple themes) and Subject (should auto-fill the email subject line).
- Keep it simple— no unnecessary fields like budget, phone number, or project type.
- Mobile-friendly— if using a popup/modal form, it must work well on mobile and be directly linkable from the Theme Store.
22
Supporting Your Theme
- Merchants reach you through your contact form— link it from both the Shopify Theme Store listing and your theme documentation.
- Reply within 2 business days— all support requests must be acknowledged and responded to within two business days.
- Fix technical issues promptly— broken layouts, dead links, and logical errors must be fixed in a timely manner.
- Fix critical bugs immediately— serious bugs affecting the shopping experience must be fixed right away, or your theme risks temporary removal from the store.
- Extra services are optional and separate— customizations and app integrations can be offered as paid add-ons but cannot be included in the theme price.
- Supporting merchants is a full-time commitment— all current Theme Partners have dedicated support teams. Shopify merchants generate thousands of support tickets per month. New partners typically underestimate the time required.