- On Squarespace, you have to build and update the extra content on each product page individually.
- Squarespace’s saved sections are standalone copies, so editing the original won’t update the versions you’ve already added.
- Shopify separates the page layout from the product information, so one template edit updates every product using it.
- Metafields are custom fields that store extra information—like ingredients, images, size guides, or related content—on products, pages, blog posts, and collections.
- Metaobjects store reusable information, like a brand, ingredient, or testimonial, so you can update it once and have it change everywhere it appears on your store.
- A developer can set up a template to hide sections when their fields are empty, so the same layout works for products with different amounts of information.
- The same product information can also power storefront filters, helping shoppers narrow down their options without needing to create a separate set of filter data.
So, Squarespace basically makes you build each product page like its own little art project.
Whereas Shopify lets you design the page once, then fill in the blanks for every product. This = a whole lot of time and effort and brainpower saved.
This is what I wish someone had drawn on a napkin for me when I moved from Squarespace to Shopify, because I've never seen it explained in plain English.
The data layer is where all your store's information lives, and it's a whole separate thing from the design.
The way that Shopify and Squarespace's data layers and design layers talk to each other is like comparing printing 100 personalized place cards from one design instead of lettering every single one by hand.
How Squarespace product pages work (and why it gets messy past five products)
Okay so, on Squarespace a product page has two halves:
- The top half (photos, price, add to cart button etc). If you change its layout it changes for every product on that store page.
- The bottom half (what Squarespace calls Additional info). It's where you'll find things like ingredients, a size chart, how to use the product, a little FAQ. The bottom half is built per product, block by block, kind of like a mini page you design for each product.
With three products, cute. With forty products, if you decide the ingredients list should now sit in two columns with an icon beside it, you open forty products and rebuild forty bottom halves by hand (😬).
A fair question is whether Squarespace lets you design a layout once and have every copy update when you edit it.
It doesn't. Squarespace's saved sections let you reuse a layout, but the Help Center says outright that updating the original won't update the saved version or anywhere you've already added it.
Squarespace lets you customize individual pages and add unique sections to each product. But the main product layout is shared across every product in the same store, so you can’t create reusable templates for different product types like you can in Shopify.
This means you can’t do something like have button-style variants for one product category and dropdown variants for another.
Squarespace's Help Center also doesn't document any way to add a custom field to a product. You only get standard built-in ones (name, description, price, SKU, variants, categories, tags, and a few more) and that's it.
If you're weighing a move because of this, read my 7 things to know before starting your Shopify store first. The data layer is a super solid reason to switch, but the setup decisions are what make the switch painless.
How Shopify works its data magic to generate things in bulk
Shopify keeps two things in two different drawers. Drawer one is the template: the layout that says "photos go here, price goes here, then an ingredients section, then a how-to-use section". Drawer two is the data: the words, numbers, and images for each product, stored as fields in the admin (the admin is the behind-the-scenes area where you run the store).
When a shopper opens a product page, Shopify grabs the template, grabs that product's fields, and combines them on the spot. That's what "dynamically generated" means: the page gets assembled from parts the moment somebody asks for it.
| What you're doing | Squarespace Commerce | Shopify |
|---|---|---|
| Top of the product page (images, price, buy button) | Shared layout | Shared template |
| Everything below that | Built per product with blocks | Pulled from fields by the template |
| Restyling 100 products | Edit 100 products | Edit 1 template |
| A different layout for one product family | No per-product layouts in 7.1 | Assign any product its own template |
| Custom fields (ingredients, skin type, size guide) | None documented | Metafields on products, pages, posts, and more |
| Reusable records (a brand, an ingredient, an expert) | No | Metaobjects |
| Filters built from your own custom fields | Not possible (no custom fields) | Yes, via the free Search & Discovery app |
One store, many templates
Shopify lets you build several product layouts: one for skincare, one for gift sets, one for gift cards. Then you pick which one each product uses from the Theme template dropdown on that product's admin page.
Collections, pages, blogs, and blog posts get the same treatment. Each product family gets its layout updated once: change the skincare template and every skincare product changes while the gift sets stay put.
Shopify templates are stacks of sections, and a section is the reusable building block a designer can hand to a client to fill in. If you're coming from Squarespace and want custom-looking sections without learning Liquid first, The Section Studio is my library of drag-and-drop custom sections that work on any modern Shopify theme.
Shopify metafields: the extra fields that feed the template
Shopify gives every product some built-in fields: title, description, price, images, and so on. Metafields are the extra fields you add yourself, with your own labels.
Think of the built-in fields as the printed lines on a school form (name, date of birth) and metafields as the lines you draw on yourself: Ingredients, Skin type, Directions, Downloadable guide. Once the line exists, every product gets that same box to fill in.
Each metafield has a type, which means Shopify checks what kind of thing you're putting in the box. According to Shopify's list of metafield types, the boxes can hold:
- plain text and rich text (bold, bullet lists, links)
- numbers, dates, money, and star ratings
- true/false toggles (is this vegan, yes or no)
- colours
- URLs and links
- files, meaning images, PDFs, and videos
- JSON, a structured code format for the technical crowd
- references, which point at another product, collection, page, blog post, file, or metaobject (more on those in a minute)
Metafields live on more than products. Variants, collections, customers, orders, pages, blogs, blog posts, markets, locations, and the shop itself can each carry their own, and you can define up to 256 of them per type of thing (Shopify developer docs).
How you connect a section to stored data (dynamic sources)
Here's where the theme editor comes in (the visual, click-around editor where you arrange sections on a page). Normally when you drop a heading or paragraph into a section, you type the words straight into it.
With a dynamic source, you click the little connect-dynamic-source icon beside that setting and tell Shopify "fill this from the product's Ingredients metafield instead". Do that once in the product template and every product shows its own ingredients in that spot, while the section itself never changes.
Shopify's dynamic sources docs say this works on section and block settings for text, rich text, images, videos, URLs, colours, and the product, collection, page, and blog post pickers. So nearly any box inside a section can be pointed at stored data instead of typed into.
Pages work the same way. A portfolio page template with dynamic sources means every new project is one page in the admin with a few boxes filled in (project name, cover image, gallery, client link), and you never build a new template for it. Blog posts can do the same with a "related posts" box and a "lead magnet" box, which I'll get to below.
On client builds I set up the definitions and connect the dynamic sources, then the client only ever sees labelled fields on each product. If you're curious how that fits into a project, my sneak peek inside my client process walks through where this step sits.
Conditional content: sections that only appear when there's something to show
This is one of my favourite practical benefits. A properly built Shopify template only shows a section when there's information to put in it, so one template can support products with different amounts of information without producing a graveyard of empty headings (very chic).
Think of the product template like a Mad Lib (a fill-in-the-blanks story). You create the sentence, and decide where the blanks go, once. Each product supplies its own answers for those blanks, like ingredients, skin type, directions, or key benefits, and if a product doesn't have an answer for one of them, that section can be hidden automatically.
One caveat: the hiding part needs a bit of custom code in most themes. Shopify has no store-wide "hide this if empty" switch (the theme editor's visibility rules can't read a product's data), and in Dawn (Shopify's default free theme) a text block connected to an empty metafield still prints an empty gap. The fix is a short check in Liquid (Shopify's templating language), which I teach in my Shopify accelerator for Squarespace designers looking to get into eCom.
{% comment %} Only show the ingredients block when the metafield has a value {% endcomment %}
{% if product.metafields.custom.ingredients != blank %}
<div class="ingredients">{{ product.metafields.custom.ingredients | metafield_tag }}</div>
{% endif %}
What are Shopify metaobjects, and how are they different from metafields?
Metaobjects arrived in early 2023 (Shopify Editions Winter '23) and they're the part that turns your Shopify admin into a proper database. Think of them as a set of linked spreadsheets living inside your admin (if you've used Airtable or Notion, it's like that), where you design a type of record once and then create as many entries of that type as you like.
The difference in one breath: a metafield is a single extra box on one thing, like this product's ingredients. A metaobject is a record that lives on its own, like a brand with its name, story, photo, and collection link, and any number of products, pages, or posts can point to it.
In the admin, Settings > Custom data is where you build the definition (the list of fields a record has), and Content > Metaobjects is where you add the entries (the records themselves), per Shopify's Help Center.
A real life example
Say you sell skincare from five different brands. On each product page, you want an “About the brand” section with the brand’s name, a short description, a photo, and a link to shop its products.
With metaobjects, you can save that information once for each brand, then use it across all its product pages. Here’s how you’d set it up:
-
Create a metaobject definition and name it “Brand": Think of this step as designing a blank form you’ll fill out for each brand. A definition tells Shopify what information you want to save. You’d add 4 fields: name, description, photo, and collection link.
-
Add an entry for each brand: You fill in those 4 fields for each brand you have on your store. Each entry is like a completed copy of your form, saved in Shopify and ready to reuse.
-
Create a product metafield and name it “Brand”: In order to link the metaobject entries you just created to your products, you need to create product metafields that reference your Brand metaobject entries. This gives each product a picker where you can select which brand it's from.
-
Connect your “About the brand” section in the theme editor: In your product template in the Theme Editor, connect the section’s heading to the selected brand’s name, its text to the brand description, its image to the brand photo, and its button link to the brand’s collection. You only set up these connections once, then each product page then pulls in the details for the brand you’ve selected on that product.
So if you stock twenty products from the same brand, you select that brand on all twenty. When its description needs updating, you edit the brand entry once, and the new wording appears on every connected product page (your wrists will thank you).
Smart non-product uses for metaobjects (with a mini tutorial)
A type of metaobject definition that would be applicable to almost every Shopify build is a library of storewide text—things like copy that shows up in multiple places on a site, like "40,000 five-star reviews", the number of customers served, your guarantee wording, or a sitewide promo message.
This helps not have to hunt down every instance of "free 30-day returns" sprinkled throughout your site when you're updating it to 60 days. You'd just pop into your Sitewide Text metaobject entry, change the text once, and voila.
Here's how that looks in the admin and theme editor:
Create the definition
Go to Settings > Custom data > Metaobjects > Add definition. Name it Sitewide Text and add a Single Line Text field that will serve as the title of the copy snippet (ex. Return Policy Line). Then, add couple of fields that will house the copy snippet itself: Single Line Text, Multi Line Text, and Rich Text (I do all 3 of these, because different sections call for different types of text inputs).
Add an entry
Go to Content > Metaobjects > Sitewide Text > Add entry and fill in each field (or, just the field type that you need for the section you're populating).
Connect it in the theme editor
Open Online Store > Themes > Customize, click the section that should show the copy snippet, click its text setting, then click the connect-dynamic-source icon beside the field (the small database-looking icon). Choose Sitewide Text pick the entry and field (like Return Policy Line, Rich Text), and save.
Edit the entry from now on
When the review count ticks up or the promo changes, edit the entry in Content > Metaobjects and every connected spot will update at once.
Beyond the Sitewide Text, here are ideas for a few more Metaobject definitions that you might find super useful:
Product FAQs
Create and input each question once, then select the relevant ones for each product/collection/page. So for example, a returns question can appear on every product while an allergy question can appear only where it's relevant.
Experts or practitioners
If you have a handful of expert testimonials, you can house things like each expert's name, qualifications, photo, biography, and testimonial link once, then reference them throughout your store.
Ingredient library
You can store ingredients and their info (descriptions, images etc.) as a Metaobject definition, and reference them from every relevant product. When things like the wording or rules about what you're allowed to say, you only have to update them in one spot.
Testimonials
Store the quote, customer name, image, product, and rating, then sprinkle different testimonials across different pages without always needing to copy and paste it.
Certifications and badges
Each certification metaobject entry contains things like its icon, name, explanation, and external link. You can display these on product pages by creating a product metafield that references this metaobject.
Size guides
Create one size guide metaobject entry per product category. Then, every dress will reference the dress size guide, every pair of trousers references the trouser size guide, you get the idea. Updating a measurement takes one edit, which then cascades across the products it needs to.
Service locations
For businesses mixing eCom with physical locations, each Location entry holds the address, hours, map link, phone number, and a location image.
Press features
Store the publication logo, quote, article title, and URL once, then reuse the same press entry on the homepage, the About page, and the relevant product pages.
Lead magnets
This one's a cool (and slightly advanced) one that you can actually see in action at the bottom of this post!
My lead magnet metaobject entries hold the title, description, preview image, and the email signup form ID. I have a blog post metafield that references this metaobject, and paired with a custom section, I'm able to select with one dropdown in the blog post admin which lead magnet form of mine I'd like to display on which blog post.
So: with a mix of metafields and metaobjects, a single product can link to one brand, several ingredients, one routine, multiple certifications, and a collection of FAQs.
How metafields and metaobjects power storefront filters
The same stored information in metafields and metaobjects can drive the filters on your collection pages through Shopify's free Search & Discovery app.
According to Shopify's filter docs, text, number, true/false, and metaobject reference metafields can all become filters, with up to 25 filters per store.
With this, a skincare store could filter products by skin concern, skin type, ingredient, SPF level, product format, pregnancy suitability, and cruelty-free status.
Instead of a sprawling pile of tags (which are messy to maintain and remember), metaobjects have the benefit of giving you a saved, categorized set of options to pick from.
And when you connect those options through separate metafields, you can create separate filters for “Skin type,” “Ingredients,” and “Certifications.” With tags alone, Search & Discovery gives you one Tags filter with everything mixed together (so “dry skin,” “vitamin C,” and “cruelty-free” all sit in the same list). You can’t split those tags into multiple filter categories.
So, a well-thought-out metafields and metaobjects scaffold does two jobs at once: it shows up as helpful content on the product page, and it helps shoppers filter your catalog and find what they're looking for.
Filters only shine when your collections are set up well underneath them, so pair this with my guide to how to create collections in Shopify, including the automated collections that build themselves from product data.
Why this setup works for the designer and the store owner at the same time
A good Shopify build pairs thoughtful template layouts with a dynamic data layer underneath—clearly labelled pieces of data like Product Benefits, How to Use, Key Ingredients etc.
The overall goal is to create as few page/collection/product templates as possible by designing them in a dynamic, "Shopify will do the legwork of generating these pages via the data we give it" kind of way.
This lightens the store owner's load, because it's much easier to just input some content into a structured form in the backend admin than it is to dive into the Theme Editor and edit a page's content each time they want to update or create something new.
For a Squarespace designer, this is the mental switch that makes Shopify feel like a much smarter version of what you already do: you still design the page, but now you design it once and let the data do the repetition.
Frequently asked questions about the data layer that powers Shopify vs Squarespace
A metafield adds a specific piece of information to a product, like its SPF level. A metaobject keeps several related pieces of information together. For example, you can have a Brand definition with entries that house a brand’s name, description, photo, and collection link.
You can then add a metafield to each product that allows you to select its brand. 20 products from the same brand can link to that one entry, so updating the brand’s description once updates it on all twenty connected product pages.
Next steps if you're choosing between Squarespace and Shopify
If you're a brand owner, the full comparison page covers pricing, apps, and checkout so you can see the platforms side by side with this data layer stuff in mind. If you're a Squarespace designer who's been circling Shopify, the accelerator is where I teach this kind of setup, and my list of Shopify mistakes to avoid is a good read before your first build.