Hitting the Wall at 100? Mastering Shopify's Dynamic Source Limit with Metaobjects and Liquid

Hey fellow store owners! Ever feel like you're trying to squeeze a whole library into a tiny bookshelf? That's often the feeling when managing a lot of product detail on Shopify, especially when you hit those pesky limitations. Recently, a really insightful discussion in the Shopify community resonated with many of us who manage complex product catalogs. Our friend, user2096, was rebuilding their site on an Online Store 2.0 theme, "Surveillance," and ran smack into two common hurdles: maxing out product metafields and hitting the infamous 100 dynamic source connection limit in the theme editor. Sound familiar?

User2096's core challenge was needing extensive, unique text for over 40 product models, crucial for SEO, GEO, and AEO. Connecting every piece of custom text via the theme editor quickly becomes a bottleneck. But don't worry, the community had some brilliant solutions!

Understanding the 100 Dynamic Source Limit

Let's clarify this limit. As One-Sun1995 pointed out, the 100-connection cap isn't a store-wide data limit; it's specifically for theme-editor dynamic source connections. This means using the visual theme customizer to bind individual metafields to sections or blocks consumes one of those 100 slots. Lumine added a crucial detail: this 100 limit is actually per JSON template (e.g., your product.json template gets 100, and a product.alternate.json template gets another 100). This distinction is key to our solutions.

Solution 1: Unleashing the Power of Metaobjects and Liquid

This is the most robust and scalable long-term solution, championed by One-Sun1995 and Steve_TopNewYork. The key insight? Liquid reads metafields directly off the resource with no such ceiling. This is a game-changer!

What are Metaobjects?

Think of Metaobjects as custom data structures in Shopify. Instead of dozens of individual metafields on a product (like "Spec 1," "Spec 2"), you define a "Product Spec" metaobject containing fields like "Title" and "Value." Then, your product simply links to one or more instances of this "Product Spec" metaobject, effectively grouping related information.

Step-by-Step: Implementing Metaobjects with Liquid

Here's how to leverage this to bypass the dynamic source limit for your detailed product specs:

  1. Define Your Metaobject:
    • Go to Shopify admin > Settings > Custom data > Metaobjects.
    • Click "Add definition." Name it (e.g., "Product Specification") and define its fields (e.g., "Title - Single line text," "Value - Single line text").
  2. Create a Product Metafield Reference:
    • In Custom data > Metafields > Products, add a new metafield definition.
    • For "Content type," choose "Metaobject" and select your "Product Specification" metaobject. Crucially, set it to "List of metaobjects" if you have multiple specs per product.
  3. Populate Product Data:
    • Edit your product. You'll now see your new "Product Specification" list metafield. Add multiple entries, each a line in your spec sheet.
  4. Display with Custom Liquid:
    • In your theme editor, add a "Custom Liquid" section where you want specs.
    • Write Liquid code to loop through your product's metafield list and display each spec. For example:
      {% for spec in product.metafields.custom.product_specifications.value %}
    • {{ spec.title.value }}: {{ spec.value.value }}
    • {% endfor %}

    This method uses only one dynamic source connection (for the Custom Liquid section itself) or none if hardcoded. Individual spec fields are read directly by Liquid, completely bypassing the 100-connection limit while preserving your custom text for SEO.

    Solution 2: Strategic Template Duplication

    While Metaobjects handle data, lumine's suggestion of duplicating product templates offers another powerful lever if different groups of your models have fundamentally different layout needs that exceed 100 theme editor connections. Each duplicated product.json template gets its own 100 dynamic sources.

    Step-by-Step: Duplicating Product Templates

    1. Duplicate Your Product Template:
      • In Shopify admin > Online Store > Themes > Customize.
      • In the template dropdown (e.g., "Products / Default product"), click "Create template."
      • Choose "Product" as the base and name it descriptively (e.g., product.model-a).
    2. Customize and Assign:
      • Customize this new template in the theme editor; it has its own fresh 100 dynamic source connections.
      • On each product page in your Shopify admin, select which template to use from the "Theme template" field.

    Your existing design work carries over, and products still read their own metafield values. The trade-off: design changes must be repeated on each template. So, keep the template count low, grouped by models sharing similar layout requirements.

    Both strategies offer powerful ways to overcome the limitations user2096 faced. For core, repeating spec data, the Metaobject and Custom Liquid approach is generally the most scalable. For distinct layout variations needing more theme-editor elements, template duplication can be a lifesaver. It's about understanding which "lever" to pull for which type of content.

    Don't be intimidated by the technical jargon. Shopify's flexibility with Online Store 2.0, Metaobjects, and Liquid development means you can truly customize your store. While user2096 initially preferred an expert with "Surveillance" theme experience, the community consensus was clear: any experienced OS 2.0 developer with strong Metaobject and Liquid skills should be able to implement a scalable solution. The core concepts are theme-agnostic.

    Building a robust, scalable Shopify store that handles complex product data is definitely achievable. It just requires smart architecture and leveraging the right tools. Test these solutions on your most complex product first, and if they render there, you're likely good to go for the rest of your catalog. Happy optimizing!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools