Products V2 Update: Required Action
Required Action
If your site uses custom code that targets product pages, you must migrate to Products V2 before August 30 to avoid disruption.
Summary
This article outlines important changes to the markup of product-related pages on Squarespace, including the Product Detail Page (PDP) and Product List Page (PLP), also known as the Store Page. These changes are part of a broader initiative to optimize the underlying DOM structure, improve load performance, and increase consistency across layouts and features.
If your site relies on custom CSS, JavaScript, or injected HTML that targets specific classes or attributes in product pages, you will need to update your code during the 60 day migration window outlined below.
Migration Timeline
June 30 – Migration opt-in period begins You can begin updating your site using the new markup structure. A migration tool will be available from your Squarespace dashboard under Settings > Selling > Product Settings.
August 30 – Migration opt-in period ends.
Starting in September – Automatic migration Sites that have not been manually updated will be migrated automatically. Any unsupported or outdated custom code may stop working, potentially affecting how your product pages appear or function.
Overview of Changes
The updates apply to all PDP layout types (Simple, Full, Half, Wrap), the Product List Page (PLP)/Store Page, and shared elements used across both page types.
Key Themes
-
Top-level layout elements are now identified by a single data-product-detail-layout attribute.
-
Legacy class names (e.g.,
.ProductItem-*) have been replaced by a new standardized prefix (.product-*). -
Deprecated
data-*attributes have been removed. -
Structural wrappers for titles, prices, variants, and buttons have been unified across layouts.
-
Related Products has the same HTML structure as the new PLP changes
Updates
August 22nd, 2025
Product Detail Page
- Added
data-product-idattribute to the level of.product-detailfor all layouts
Product List Page
- Added
data-product-idattribute to the same level of each.product-list-itemelement - New header
.product-list-headerelement was added that wraps the header elements like breadcrumbs, title, and categories - New header element
.product-list-headernow exists above thedata-product-list-layoutattribute element, rather than as the first child inside that element
Detailed Changes by Page and Layout
Product Detail Page
All Layouts
- Tag (i.e.
.tag-<tagName>),.on-sale, and.sold-outclasses now exist on the top-level.product-itemelement - Product Price
.product-price-valuewrapper element added around price text
- Product Payment Method Messaging
[data-afterpay]element replaced by a Stripe component rendered within a new.product-payment-method-messaging- Also moved within
.product-priceelement wrapper element
- Also moved within
- Product Status
.product-statuswrapper element added
Simple Layout
.ProductItemelement replaced bydata-product-detail-layout="simple"elementdata-item-idattribute removed
.ProductItem-summaryelement replaced by.product-content-wrapperelement.product-details.ProductItem-detailselement replaced by.product-metaelementdata-testattribute removeddata-current-contextattribute removed.ProductItem-details-checkoutwrapper element removed.ProductItem-product-pricewrapper element removed.ProductItem-quantity-add-to-cartwrapper element removed- Elements
- Gallery
- All classes with the prefix
ProductItemhave been changed to use the prefixproduct - Removed various attributes on the
.ProductItem-gallery-slides-itemelementdata-slide-indexdata-image-iddata-slide-urldata-test
- All classes with the prefix
- Product Title
.ProductItem-details-titleelement replaced by.product-titledata-content-fieldattribute removeddata-testattribute removed
- Product Description
.ProductItem-details-excerptelement replaced by.product-descriptionelement- Removed
data-content-fieldattribute - Removed various classes that were previously set based on element position
.ProductItem-details-excerpt-below-price.ProductItem-details-excerpt-below-add-to-cart.ProductItem-details-excerpt-below-add-ons
- Removed
- Gallery
Full Layout
.ProductItemelement replaced bydata-product-detail-layout="full"elementdata-item-id attributeremoveddata-layoutremoved and replaced withdata-product-detail-layout
.pdp-layout pdp-layout-full-width-carouselelement removed- Removed various attributes on the
.ProductItem-gallery-slides-itemelementdata-slide-indexdata-image-iddata-slide-urldata-test
- All classes with the prefix
ProductItemhave been changed to use the prefixproduct .product-details.pdp-detailsreplaced with.product-metadata-current-contextremoved
.ProductItem-navreplaced by.product-nav.ProductItem-nav-breadcrumbremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.ProductItem-nav-breadcrumb-separatorremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.product-details.pdp-detailsreplaced with `.product-metadata-current-contextremoved
.product-meta-sectionadded- Product Title
.pdp-details-titlereplaced with.product-titledata-content-fieldremoveddata-testremoved
.pdp-details-pricereplaced with.product-price.product-pricereplaced with.product-price-value.product-scarcityis moved out from.product-priceand is a sibling
.pdp-details-excerptreplaced with.product-description.hidden-md-downand.product-description.hidden-md-updepending on description placement.product-variant data-item-idanddata-variantsattributes removed.variant-select-wrapperor.variant-radiobtn-wrapperremoved depending on which Variant Display option is selected.product-quantity-inputanddata-item-idattribute removed.product-quantity-input-wrapperplaced inside.product-add-to-cart>.product-add-to-cart-layout-wrapper.add-to-cart-inline-md-up(desktop - inline).add-to-cart-inline-md-down(mobile - inline)
Half Layout
#pdp.pdp-layout.pdp-layout-full-bleedelement replaced bydata-product-detail-layout="half"elementdata-item-idattribute removeddata-layoutremoved and replaced withdata-product-detail-layoutpdp-gallery-imagesreplaced withpdp-gallery-wrapperclass="pdp-gallery-images"anddata-product-gallery="slideshow"wraps all.pdp-gallery-slides.pdp-form-wrapper.hidden-sm-downreplaced by.product-content-wrapper.ProductItem-navreplaced by.product-nav.ProductItem-nav-breadcrumbremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.ProductItem-nav-breadcrumb-separatorremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.product-details.pdp-detailsreplaced with.product-metadata-current-contextremoved
- Product Meta
- Product Title
.pdp-details-titlereplaced with.product-title
data-content-fieldattribute removeddata-testattribute removed.pdp-details-pricereplaced with.product-price.product-pricereplaced with.product-price-value.product-scarcityis moved out from.product-priceand is a sibling
.pdp-details-excerptreplaced with.product-description.hidden-md-downand.product-description.hidden-md-updepending on description placement.product-variant data-item-idanddata-variantsattributes removed.variant-select-wrapperor.variant-radiobtn-wrapperremoved depending on which Variant Display option is selected
.product-quantity-inputanddata-item-idattribute removed.product-quantity-input-wrapperplaced inside.product-add-to-cart>.product-add-to-cart-layout-wrapper.add-to-cart-inline-md-up(desktop - inline).add-to-cart-inline-md-down(mobile - inline)
- Product Title
Wrap Layout
#pdp.pdp-layout.pdp-layout-wrap-aroundelement replaced bydata-product-detail-layout="wrap"elementdata-item-idattribute removeddata-layoutremoved and replaced withdata-product-detail-layoutpdp-gallery-imagesreplaced withpdp-gallery-wrapperclass="pdp-gallery-images"anddata-product-gallery="slideshow"wraps all.pdp-gallery-slides.pdp-form-wrapper.hidden-sm-downreplaced by.product-content-wrapper.ProductItem-navreplaced by.product-nav.ProductItem-nav-breadcrumbremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.ProductItem-nav-breadcrumb-separatorremoved.ProductItem-nav-breadcrumb-linkreplaced by.product-nav-breadcrumb-link.product-details.pdp-detailsreplaced with.product-metadata-current-contextremoved
- Product Meta
- Product Title
.pdp-details-titlereplaced with.product-titledata-content-fieldattribute removeddata-testattribute removed.pdp-details-pricereplaced with.product-price.product-pricereplaced with.product-price-value.product-scarcityis moved out from.product-priceand is a sibling
.pdp-details-excerptreplaced with.product-description.hidden-md-downand.product-description.hidden-md-updepending on description placement.product-variant data-item-idanddata-variantsattributes removed.variant-select-wrapperor.variant-radiobtn-wrapperremoved depending on which Variant Display option is selected
.product-quantity-inputanddata-item-idattribute removed.product-quantity-input-wrapperplaced inside.product-add-to-cart>.product-add-to-cart-layout-wrapper.add-to-cart-inline-md-up(desktop - inline).add-to-cart-inline-md-down(mobile - inline)
- Product Title
Product List Page and Related Products on the Product Detail Page
- All tweak related class names and styles have been removed and replaced with
.product-list .products.collection-content-wrapper.products-listreplaced with several attributesdata-product-list-layoutdata-section-widthdata-header-text-alignmentdata-meta-text-alignmentdata-category-display-typestyle
.products-flex-containerreplaced with.product-list-container.grid-itemreplaced with.product-list-item- Tag (i.e.
.tag-<tagName>),.on-sale, and.sold-outclasses still exist on the.product-list-itemelement - Following classes and attributes removed from
.product-list-item.hentry.author-your-name.post-type-store-item.article-index.sqs-product-quick-view-button-hover-areaiddata-item-iddata-current-context
.grid-item-link.product-lists-itemreplaced by.product-list-item-link.grid-imagereplaced by.product-list-image-wrapper.grid-meta-wrapperreplaced by.product-list-item-metadata-num-columnsattribute removed.grid-titlereplaced by.product-list-item-title.grid-pricesreplaced by.product-list-item-price.product-pricenested element removed.product-list-title-pricewraps.product-list-item-titleand.product-list-item-price.product-scarcitydata-variant-attributesremoved.grid-meta-statuswraps.product-scarcity,.product-mark.sold-out, and.product-mark.sale.product-list-item-statuswraps.grid-meta-status.product-variantelement all attributes removed
- Tag (i.e.
Shared Elements between Product Detail Page and Product List Page
- Product Scarcity
- Only one
.product-scarcityelement now, rather than one for each variantdata-variant-attributesattribute removed
- Only one
- Product Variant Select
- Removed various attributes from the
.product-variants elementdata-item-iddata-variantsdata-is-subscribabledata-subscription-plandata-selected-variantdata-unselected-optionsdata-variant-in-stock
- Moved
data-variant-option-nameattribute to the.variant-option wrapperelement
- Removed various attributes from the
- Restock Notification (Waitlist)
- Only one
.product-restock-notificationelement now, rather than one for each variant - Removed various attributes from the
.product-restock-notificationelementdata-product-iddata-variant-id
.product-restock-mailing-listcheckbox name changed fromisJoinMailingListtojoin-mailing-list-checkbox
- Only one
- Add to Cart
- Add
.product-add-to-cartwrapper element containing subscription/one-time-payment select, quantity input, and add to cart button - Subscription/One-Time-Payment Select
.ProductItem-Subs-Otpelement replaced with.product-subs-otpelement- Removed
data-variantsattribute from.pdp-subscriptions-and-otpelement #one-time-purchase-radioand#one-time-purchase-radio-buttonvalue changed fromone-time-purchase-radiotoONE_TIME_PURCHASE#subscription-radioand#subscription-radio-buttonvalue changed fromsubscription-radiotoSUBSCRIPTION
- Quantity Input
.product-quantity-inputelement replaced with.product-quantity-input-wrapperelement- Removed
data-item-idattribute
- Removed
- Add to Cart Button
- Changes on the
.sqs-add-to-cart-buttonelement- Removed
.use-formclass - Removed various attributes
data-collection-iddata-item-iddata-product-typedata-use-custom-labeldata-is-subscriptiondata-original-labeldata-formData-subscription-option-id
- Removed
- Added extra
.add-to-cart-text wrapperelement around the text within the.sqs-add-to-cart-button-innerelement
- Changes on the
- Add
- Product Add-Ons
- Replaced
.pdp-product-add-onselement with.product-add-onselement - Removed various attributes from the
.add-on-add-to-cart-wrapperelementdata-is-product-add-ondata-current-context
- Changes on the
.sqs-add-to-cart-buttonelement- Removed
use-formclass - Removed various attributes
data-item-iddata-collection-iddata-product-typedata-formData-original-label
- Removed
- Classes within the
.icons-containerelement have changed.plus-icon→.add-icon.add-on-add-to-cart-loading→.loading-icon.checkmark-icon→.complete-icon
- Replaced
- Product Reviews
.reviewSummaryelement replaced with.product-review-summaryelement
Layout Examples
Please see some of these example layouts pre and post DOM changes below so you can use a tool like Diffchecker to compare the differences.
- Simple Layout
- Wrap Layout
Next Steps
- Audit your site for any custom code targeting product pages and familiarize yourself with changes described in this article.
- Migrate your site to Products V2 by going to your Site Settings > Selling > Products and follow the prompts. Complete this step between June 30 and August 30 to avoid automatic changes.
- After this step there is no option to return to the earlier version.
- Update your code that references the old selectors, classnames, and data-* attributes to match the new structure.
- Test your updates thoroughly in production and make adjustments as needed.
If you don’t opt in by the August 30, 2025 deadline, your site will be migrated automatically. Any unsupported or outdated custom code may stop working, potentially affecting how your product pages appear or behave. This update is not optional and there is no way to opt-out of making these changes.
FAQs
What exactly is changing?
We’re updating the DOM structure and changing the class and data attributes on Squarespace’s Store Page (aka Product List Page or PLP) or Product Detail Pages (PDP). These changes are foundational for enabling future improvements to commerce design and functionality.
Will I be able to preview changes before publishing?
No, the opt-in is a one-way migration and cannot be undone after you go through the process. We suggest familiarizing yourself with the changes ahead of time and setting aside time outside of peak business hours to make the update.
Is there downtime?
No, there is no site downtime.
Will shoppers still be able to checkout while I make changes?
Yes. There are no changes to checkout.
Will this only affect product pages, or other parts of my site too?
Only Product Detail Pages (PDPs) and Store Page will be affected. No other page types are impacted.
How do I know if I have custom code that’s affected?
If you’ve manually edited the custom code of your PDP or Store Page, or use custom code that targets class names on those pages, it’s likely to be affected. You’ll need to cross-check your custom code with our list of structural changes described above.
What’s the timeline for these changes?
- June 30: Ability to migrate begins. Starting June 30, you can access a migration mechanism from your Squarespace site; instructions will be provided.
- June 30 - August 30: Code migration period. Whether you signed up for the Circle migration service or you’re doing it on your own, the migration from the current to the new system must be completed within this time.
- September: All remaining sites that have not been manually updated will be migrated automatically.
It’s after June 30, 2025 and I don’t see the option to migrate. What’s going on?
Your site was automatically migrated because it had no custom code. You don’t need to take further action.
I have a 7.0 site, what does this mean for me?
7.0 sites will not be impacted by the migration, however they will not benefit from any updates or new releases we have planned for later this year. We highly recommend updating all sites from 7.0 to 7.1. You can read more about that here.
What happens if I don’t opt in by August 30?
If you don’t opt in by the deadline, your site will be migrated automatically. Any outdated custom code may stop working, potentially affecting how your site product pages appear or behave.
What’s the deadline to take action?
If you want to control the timing of your site’s migration, act before August 30.
What happens if I do nothing?
Your site will be automatically migrated after August 30. If your product pages rely on custom code for updated class names or data attributes, you may see visual issues or layout changes that require manual int.
Will my site break?
Not necessarily, but visual issues are possible if your custom code depends on classes or elements that are changing. That’s why we strongly recommend proactive updates.
Will my custom styles disappear?
Only if they target class names or structural elements that have changed or no longer exist. With proper updates, your site will look and function as expected.