Tools
Documentation

Product Groups

Show every colour, print and cut of a style together on one product page — as a clean swatch row — while each one stays its own Shopify product.

LiveShopify appLast updated June 2026

Overview

Many fashion brands keep each colour of a style as a separate Shopify product — for collection-grid visibility, per-colour SEO, and clean inventory. The downside: a shopper landing on the navy version can’t see that it also comes in olive and black.

Product Groups closes that gap. It links those products together and renders them as a swatch row on every product page — without merging anything into variants. Each product keeps its own page, images, inventory and URL. This guide covers everything from your first grouping to every storefront setting.

How it works

You create one or more groupings. A grouping is one way of relating products, defined by a rule. Every product whose rule produces the same group key becomes a sibling in that group — equal peers, with no “master” product.

Behind the scenes, on each sync the app:

  • Reads your whole catalogue and applies each grouping's rule to extract a group key per product.
  • Creates or updates one metaobject per group, holding the ordered list of member products.
  • Writes a reference metafield back to each product so the storefront block can find its group instantly.

A product can belong to several groupings at once — for example a colour group and a print family — each rendered in its own way.

Install & set up

  1. 1

    Install the app

    Add Product Groups to your store from the Shopify App Store. It opens straight into your Shopify admin — no account or API keys to wire up.

  2. 2

    Create a grouping

    On the dashboard, choose New grouping, give it a name, and define how products relate (the rule — see below). For colour swatches that's usually a tag prefix or a metafield.

  3. 3

    Run Sync now

    Click Sync now. The app reads your catalogue, groups products by your rule, and writes the metaobjects and reference metafields. Large catalogues are read in the background, so you can leave the page.

  4. 4

    Review your groups

    Open the Groups list to see what was created, search and paginate, fix edge cases by hand, and optionally set swatch values like a colour name or hex.

  5. 5

    Add the storefront block

    In the theme editor, drop the Group switcher block onto your product template. Optionally enable collection-card swatches too (see below).

Grouping rules

A rule is a set of conditions combined with AND or OR. Each condition checks one product field with an operator. A condition can also be marked “use as group key”, meaning its matched value (or a regex capture group) becomes part of the key that decides which products are siblings.

Fields

Tag
Match against a product's tags — the most common source for colour groups (e.g. a shared style code in a tag).
Product type
Match the product type.
Vendor
Match the vendor / brand.
Title
Match against the product title.
SKU
Match the SKU of the product.
Metafield
Match a metafield value by namespace and key — ideal when an ERP already writes a style or group id.
Status
Match the product status (active, draft, archived) — used as a filter, not a key.

Operators

equals / is not
Exact match (case-insensitive).
starts with / doesn't start with
Prefix match — e.g. tags beginning with a style code.
ends with / doesn't end with
Suffix match.
contains / doesn't contain
Substring match.
matches / doesn't match regex
Regular expression — with a capture group you can extract just part of the value as the group key.
in / not in
Comma-separated list membership.

Example: one condition — Tag starts with style-, use as group key — groups every product sharing a style-1234 tag. Matching is case-insensitive.

Grouping settings

Each grouping has a Behavior card with one main toggle and an Advanced section:

Sync enabled
When off, this grouping is skipped during sync. Existing groups and the storefront keep working; only auto-updates pause.
Delete orphan groups on sync
Delete groups whose key no longer matches the rule. Off by default, to preserve manual changes you made in the Shopify admin.
Include single-product groups
Create a group even for a product with no sibling yet. A second product added later auto-joins. On the storefront a single-product group shows one swatch — useful for visual consistency across collection grids.
Skip draft and archived products
When on (recommended), only active products are grouped, so hidden products never appear on the storefront.
Auto-create collections for new groups
Automatically create (and, with Delete orphans on, delete) a linked Shopify collection per group during sync. Existing linked collections always stay in sync regardless of this toggle.
Publish groups as storefront pages
Make each group its own public page on your storefront. Best for outfit / print / pattern groupings. Needs a templates/metaobject.{type}.json file in your theme; Shopify renders a basic fallback if it's missing.

Swatch values (visual attributes)

Colour swatches can be driven by data you manage per product. A grouping can define visual attributes — typically a colour and a label — resolved in a cascade:

  • Colour: an image override → a hex value → a letter fallback. Hex can come from a source metafield (e.g. ERP-managed) with an optional app-managed override on top.
  • Label: the product title or a metafield such as a colour name.
  • Swatch image: upload and crop a swatch image right in the app for products that need a pattern or texture rather than a flat colour.

You edit these values directly in the Groups area; the storefront block reads the same metafields.

Managing groups

The Groups area gives you full control after a sync:

Groups list
Search and paginate across thousands of groups, with a coverage badge showing how complete each group's swatch values are.
Bulk actions
Select multiple groups to delete, or bulk create / remove their linked collections.
CSV import / export
Export groups to a CSV and re-import to edit names and membership in bulk.
Group detail
Drag to reorder members (keyboard-accessible), edit swatch values per product, and create a linked collection on the spot.
Overrides
Force-add a product to a group, or force-remove one, regardless of what the rule produced. Overrides survive every sync.

Product page block — “Group switcher”

An app block you add in the theme editor (no code). It reads the group from the product’s reference metafield and renders the swatch row. Settings are grouped:

Source

Grouping
Pick which grouping this block renders. Leave empty to use the manual handle below, or to auto-detect the first available grouping on the product.
Manual handle
Type a grouping handle directly, for when no grouping is picked above.

Heading

Heading text
Text shown above the row, e.g. “Other colors”. Use [count] to insert the number of group members. Leave blank to hide the heading.

Swatch style

Style
Color swatch (hex / image cascade), Product image, Custom image, or Text only.
Width / Height
Swatch dimensions in pixels (16–200).
Corner radius
Roundness of each swatch (0–50%).
Pill shape
For text mode: sharp, rounded, or full pill.
Image fit
Cover (may crop) or Contain (may letterbox).
Image loading
Eager or lazy.
Spacing
Gap between swatches (0–24px).

Colours & image sources

Hex source metafield
Metafield holding the colour hex (default custom.hex) — e.g. one your ERP manages.
Hex override metafield
An app-managed override hex that wins over the source.
Image override metafield
Swatch image override (default custom.swatch_image_override).
Custom image metafield
Image used in Custom image mode (default custom.swatch_image).

Labels

Show label
Never, below each swatch, as a hover tooltip, or a single dynamic label that updates on hover.
Dynamic label prefix
Optional text shown before the dynamic label.
Label source
Product title, or a metafield (default custom.color_name).
Spacing below heading/label
Vertical spacing (0–32px).

Selected (current) product

Show current product
Whether the current product appears in its own row (it's never hidden by default).
Highlight
How the current swatch is marked: border, underline, dot, or dim only.
Thickness / Distance / Color
Fine-tune the highlight.
Border on non-selected
Optionally outline the other swatches too, with a chosen colour and padding.

Stock & availability

When a member is out of stock
Show as-is, dim, cross out + dim, or hide.
Move out-of-stock to end
Push sold-out swatches to the end of the row.
Hide products outside current market
Respect Shopify Markets availability.
Size availability
Optionally highlight when the currently selected size is unavailable on a sibling (set your size option name).

Overflow & spacing

When swatches don't fit
Wrap to the next line, horizontal scroll (with fade + optional arrows), or collapse to a “+N” button.
Collapse options
Visible count before collapsing, custom singular/plural overflow labels, and +N button border/colours.
Margins
Outer top / right / bottom / left margin around the whole row.

Collection cards

To show swatches on product cards (collection grid, search, related products), turn on the Group card swatches app embed for styling, then render one snippet in your product-card template:

{% render 'pg-card-swatches', product: card_product %}

The snippet accepts optional arguments — an explicit grouping handle (and a fallback), a mode (swatch / product image / custom image), metafield paths for hex and image, an image_source, and eager loading. The app-embed settings control how they look:

Swatches
Width, height, corner radius, spacing, image fit, and an optional border with colour.
Stock
Show / dim / cross out out-of-stock members, or hide them entirely on cards.
Overflow
Wrap, horizontal scroll, or collapse to “+N” — with threshold, labels, and button/scroll colours.
Outer margin
Top / right / bottom / left spacing around the card swatches.
Custom CSS
Scoped CSS under .pg-card-swatches for any fine-tuning the controls don't cover.

Syncing

Sync is always something you trigger — there are no automatic product webhooks. That’s a deliberate design decision: a typical fashion catalogue generates thousands of product updates a day from ERP, POS and other apps, and reacting to all of them would be noisy and unpredictable.

Click Sync now whenever you want groups rebuilt — after a colour drop, a range change, or a catalogue import. Each sync only writes what actually changed, and your manual ordering inside a group is preserved.

Pricing

Billing runs through Shopify, so it appears on your normal Shopify invoice — no separate payment details.

Free
€0

One grouping, up to 25 groups. Enough to run colour swatches on a focused catalogue — and it doubles as your free trial, with no time limit.

Pro
€29.99 /mo

Unlimited groupings and up to 500 groups per grouping. Fits almost any catalogue.

Scale
€49.99 /mo

Everything unlimited — for catalogues where a single grouping needs more than 500 groups. Switch tiers any time.

FAQ

Will this merge my products into variants?

No. Every product stays its own Shopify product — its own page, images, inventory and SEO. Product Groups only adds a reference between them, so the storefront can show them together as a swatch row.

Do I have to edit my theme code?

Almost none. The product-page swatch row is an app block — you drag the “Group switcher” block onto your product template in the theme editor, with no code at all. Showing swatches on collection cards is the one exception: you turn on the app embed and add a single {% render 'pg-card-swatches' %} line to your product-card template.

How do products get grouped?

You define a rule — for example, tags that start with a shared style code, or a metafield your ERP writes. Products whose rule produces the same group key become siblings. You can also force-add or force-remove individual products with overrides.

Can a product be in more than one grouping?

Yes. A product can belong to several groupings at once — say a colour group and a print family — each with its own rule, metaobject type, and storefront block.

How often does it sync?

Whenever you click Sync now. There are no automatic product webhooks — a deliberate choice, so an ERP or POS import can't trigger thousands of background runs. You stay in control of when groups rebuild.

What happens when a grouped product sells out?

The storefront block can dim, cross out, hide, or reorder out-of-stock members live. Group membership itself only changes when you next run Sync now.

Will it slow my store down?

The storefront block is intentionally light — its CSS and JS are split out and loaded lazily, so the impact on your product page stays well within Shopify's performance guidance.

Support

Stuck on a setup, or spotted something off? We build this app ourselves, so you reach the people who actually work on it — no ticket queue.

Email supportReplies within one working day · 09:00–18:00 CET

See also our privacy policy.