How to Create a Custom Shopify Theme from Scratch

Shoify Development
Understanding Shopify’s Liquid Templating Language
May 27, 2024
Developing Custom Shopify
Developing Custom Shopify Apps: A Comprehensive Guide
May 27, 2024

How to Create a Custom Shopify Theme from Scratch

Shopify Theme from Scratch

Shopify Theme from Scratch

How to Create a Custom Shopify Theme from Scratch


Creating a custom Shopify theme from scratch allows you to tailor your online store’s design and functionality to perfectly fit your brand and business needs. This comprehensive guide will walk you through each step of the process, from setting up your development environment to deploying your finished theme. By the end of this guide, you will have a solid foundation for building and customizing Shopify themes.

1. Setting Up Your Development Environment


  • Basic understanding of HTML, CSS, and JavaScript.
  • Familiarity with Shopify’s Liquid templating language.

Tools Needed:

  • Shopify Partner Account: Sign up at Shopify Partners.
  • Shopify CLI: Command Line Interface for Shopify theme development.
  • Text Editor: Visual Studio Code, Sublime Text, or Atom.
  • Git: Version control system.


  1. Create a Shopify Partner Account:
    • Sign up at Shopify Partners.
    • Create a development store from your dashboard for testing purposes.
  2. Install Shopify CLI:
    • Open your terminal.
    • Install Shopify CLI using npm:

      npm install -g @shopify/cli
    • Log in to Shopify CLI:

      shopify login
  3. Initialize Your Theme:
    • Navigate to your desired project directory:

      cd path/to/your/project
    • Create a new theme:

      shopify theme init my-new-theme
    • Change into the theme directory:

      cd my-new-theme

2. Understanding Shopify Theme Structure

A Shopify theme comprises several key directories and files:

  • Layout: Contains layout templates like theme.liquid, which define the structure of your theme.
  • Templates: Contains individual page templates such as index.liquid, product.liquid, and collection.liquid.
  • Sections: Contains reusable, customizable sections that can be included in templates.
  • Snippets: Contains small reusable code snippets.
  • Assets: Contains images, JavaScript, and CSS files.
  • Config: Contains theme settings and schema files, like settings_schema.json.
  • Locales: Contains translation files for multi-language support.

3. Building Your Theme

Step 1: Setting Up the Theme Layout

  1. Open layout/theme.liquid.
  2. Define the basic HTML structure and include placeholders for dynamic content:

    <!DOCTYPE html>
    <html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ page_title }}</title>
    {{ 'theme.css' | asset_url | stylesheet_tag }}
    {{ content_for_header }}
    {{ content_for_layout }}
    {{ 'theme.js' | asset_url | script_tag }}

Step 2: Creating the Homepage Template

  1. Open templates/index.liquid.
  2. Add content and include sections:

    {% section 'header' %}
    {% section 'hero' %}
    {% section 'product-grid' %}
    {% section 'footer' %}

Step 3: Building Reusable Sections

  1. Create a new section file, e.g., sections/hero.liquid.
  2. Define the section’s HTML and Liquid code:

    <section class="hero">
    <h1>{{ 'Welcome to our store' | t }}</h1>
    <p>{{ 'Find the best products here' | t }}</p>

Step 4: Adding CSS and JavaScript

  1. Create CSS and JavaScript files in the assets directory, e.g., theme.css and theme.js.
  2. Link these files in your theme.liquid layout:

    <link rel="stylesheet" href="{{ 'theme.css' | asset_url }}">
    <script src="{{ 'theme.js' | asset_url }}"></script>

4. Customizing Product and Collection Pages

Product Template

  1. Open templates/product.liquid.
  2. Add product details and include sections:

    <div class="product">
    <h1>{{ product.title }}</h1>
    <div class="product-image">
    <img src="{{ product.featured_image | img_url: 'large' }}" alt="{{ product.title }}">
    <div class="product-description">
    {{ product.description }}
    <div class="product-price">
    {{ product.price | money }}
    <button>Add to Cart</button>

Collection Template

  1. Open templates/collection.liquid.
  2. Add collection details and loop through products:

    <div class="collection">
    <h1>{{ collection.title }}</h1>
    {% for product in collection.products %}
    <div class="product-item">
    <h2>{{ product.title }}</h2>
    <img src="{{ product.featured_image | img_url: 'medium' }}" alt="{{ product.title }}">
    <p>{{ product.price | money }}</p>
    <button>View Product</button>
    {% endfor %}

5. Implementing Theme Settings

  1. Open config/settings_schema.json.
  2. Define settings to allow customization from the Shopify admin:

    "name": "Colors",
    "settings": [
    "type": "color",
    "id": "background_color",
    "label": "Background color",
    "default": "#ffffff"
  3. Use these settings in your Liquid files:

    body {
    background-color: {{ settings.background_color }};

6. Testing and Debugging Your Theme

Preview Locally:

  1. Serve your theme locally using Shopify CLI:

    shopify theme serve
  2. Preview the changes in your browser.

Debugging Tips:

  • Use the debug filter to inspect variables:

    {{ product | debug }}
  • Output raw Liquid tags to prevent rendering:

    {% raw %}
    {{ product.title }}
    {% endraw %}

7. Deploying Your Custom Theme

Once your theme is complete and thoroughly tested, it’s time to deploy it to a live store.

Step 1: Push Theme to Shopify

  1. Use Shopify CLI to push your theme:

    shopify theme push

Step 2: Publish Your Theme

  1. Log in to your Shopify admin panel.
  2. Navigate to “Online Store” > “Themes”.
  3. Select your theme and click “Actions” > “Publish”.


Creating a custom Shopify theme from scratch gives you complete control over your store’s design and functionality, allowing you to provide a unique shopping experience for your customers. By following this detailed guide, you’ve learned how to set up your development environment, build and customize your theme, and deploy it to a live store. With practice and continued learning, you’ll be able to create even more sophisticated and tailored themes. Happy theming!


For More  Information:

Warning: Trying to access array offset on value of type null in /home/wedefbcs/ on line 286