You have been adding products to your Shopify store for months. Maybe years. You now have 200 products, or 500, or more. Many of them are variations of the same item: the same shirt in different colors, the same table in different finishes, the same candle in different scents.

You want to connect them with color swatches so customers can switch between options on the product page. You install Rubik Combined Listings. You create your first product group. It takes about a minute. That feels fine.
Then you look at the rest of your catalog and do the math. 200 products, grouped in sets of 4 or 5, means roughly 40 to 50 groups. At one minute each, that is an hour of clicking, selecting, and naming. Nobody wants to spend their afternoon on that.
That is exactly the problem bulk grouping solves. Instead of creating groups one at a time, you run detection on your entire catalog, review the results, and create all the groups at once. The whole process takes a few minutes regardless of how many products you have.
How bulk grouping works
Bulk grouping follows four steps:
- Choose a detection method. The app can analyze your product titles, read specific product tags, or check metafield values. Title pattern matching is the most common choice and works for most stores without any preparation.
- Configure your options. Pick a separator character (or let the app auto-detect), set the option name (like “Color” or “Material”), and choose the minimum group size.
- Review detected groups. The app shows you every group it found. You can rename groups, remove products, add missing ones, or deselect groups you do not want to create.
- Create all groups at once. The app creates your groups in the background. You get an email when it is done.
The detection step does the heavy lifting. It scans your entire product catalog and figures out which products belong together based on patterns in your data. Let’s look at each detection method.
Title pattern matching: the one that works for most stores
Most Shopify merchants already have a naming convention in their product titles. You might not think of it as a “pattern,” but it is one. If your products are named things like:
- Summer Shorts – Yellow
- Summer Shorts – Blue
- Summer Shorts – Green
Then the app can see that “Summer Shorts” is the group name and “Yellow,” “Blue,” and “Green” are the option values. The dash is the separator. That is title pattern matching in its simplest form.
But it goes much further than simple dash splitting.
Multiple separator types
The app recognizes three separator characters:
- Dash (-): “Summer Shorts – Yellow”
- Pipe (|): “Winter Coat | Red”
- Slash (/): “Basic Tee / Small”
You can choose a specific separator if you know which one your titles use. Or you can choose Auto-detect, which tries all three and picks up whichever patterns exist in your catalog. If some products use dashes and others use pipes, auto-detect handles both.
Reverse detection
Not every store puts the group name first. Some merchants name their products the other way around:
- Red – Sport Leggings
- Green – Sport Leggings
- Black – Sport Leggings
Here the option value (the color) comes before the separator, and the group name comes after. The app handles this automatically. It first tries the normal direction (group name before separator). For any products that do not match, it tries the reverse direction. The result is the same: a group called “Sport Leggings” with values “Red,” “Green,” and “Black.”
Fuzzy word matching: no separator needed
This is where it gets interesting. Many stores do not use separators at all. The color or variant is just part of the title:
- Red Sport Leggings
- Green Sport Leggings
- Black Sport Leggings
No dash, no pipe, no slash. Just words. The app still detects these. It compares product titles word by word and finds the longest shared portion. In this case, “Sport Leggings” is the shared suffix. The remaining word (“Red,” “Green,” “Black”) becomes the option value.
This works in both directions. If the shared part is at the beginning of the title, that becomes the group name:
- Mountain Sunset Poster Large
- Mountain Sunset Poster Medium
- Mountain Sunset Poster Small
The shared prefix is “Mountain Sunset Poster.” The differing words (“Large,” “Medium,” “Small”) become the option values. No configuration needed.
Longest match wins
The matching algorithm always chooses the longest possible shared portion. This matters for products with long, specific names. Take these sneakers:
- New Balance 990v2 MiUSA Teddy Santis Marblehead
- New Balance 990v2 MiUSA Teddy Santis Navy
- New Balance 990v2 MiUSA Teddy Santis Red
A naive algorithm might match on “New Balance” and try to throw every New Balance shoe into one group. The app does not do that. It finds the longest shared prefix: “New Balance 990v2 MiUSA Teddy Santis.” Only products that share that full prefix get grouped together. Your other New Balance shoes stay in their own groups.
Auto-detect: the four-pass cascade
When you choose Auto-detect as your separator, the app does not just try one method. It runs four passes on your catalog, each one picking up products that previous passes missed:
- Separator, normal direction. Tries dash, pipe, and slash. Everything before the separator is the group name.
- Separator, reverse direction. Same separators, but now everything after the separator is the group name. Catches products like “Red – Sport Leggings.”
- Word matching by shared prefix. For remaining unmatched products, finds groups that share the same starting words.
- Word matching by shared suffix. For any still unmatched, finds groups that share the same ending words.
Each pass only looks at products that were not already grouped by a previous pass. This means a store with mixed naming conventions (some products using dashes, some using no separators) still gets fully detected in a single run.
Case does not matter
All matching is case-insensitive. “Boots – Green” and “boots – blue” are recognized as the same group. The app uses the casing from the first product it encounters as the group name, but it will not create duplicate groups just because one title is capitalized differently.
Product tags: for stores with structured tagging
If your products already have tags that indicate which group they belong to, you can use tag-based detection instead of title matching. This is useful when your product titles do not follow a consistent pattern but you have already organized products with tags.
The tag format is:
RUBIK::GroupName::OptionName::OptionValue
For example, a blue summer shorts product would have the tag:
RUBIK::Summer Shorts::Color::Blue
You can also include color values for visual swatches during the review step:
RUBIK::Summer Shorts::Color::Blue::#3B82F6
This method gives you full control over group names and option values. It requires adding tags to your products beforehand, but the naming does not need to follow any title convention. Products can be called anything.
Metafields: for advanced setups
If your store uses Shopify metafields to store product relationships or attributes, you can group products by shared metafield values. You specify which metafield contains the group identifier and which one contains the option value. Products that share the same group metafield value get grouped together.
This is the most flexible method but also the most technical. It is best suited for stores that already have metafield data set up through another app or a custom workflow.
The review step: check everything before creating
After detection runs, you see every group the app found. Nothing is created yet. This is your chance to review and adjust.
Each detected group shows the group name, the number of products, and a checkbox. You can:
- Rename a group. Click the group name to edit it inline. The detected name comes from your product titles, but you can change it to anything.
- Change the option name. The default is whatever you set in step 2 (like “Color”), but you can change it per group. A furniture store might use “Color” for most groups but “Size” for one specific group.
- Expand a group to see the individual products with their thumbnails and detected option values.
- Edit option values. If the detected value is not quite right (maybe it picked up extra words from the title), you can edit it directly.
- Remove a product from a group. If the detection included a product that does not belong, remove it. If a group drops below 2 products, it gets automatically deselected.
- Add a product that detection missed. Click the plus button next to the product count to open Shopify’s product picker. If the product’s title contains the group name, the option value is automatically extracted.
- Deselect entire groups you do not want to create. Uncheck the checkbox and that group will be skipped.
The review step also warns you if any products already belong to an existing group. You will see a warning banner with a link to the existing group’s edit page, so you can decide what to do.
Background creation and email notification
When you click create, the app starts building your groups in the background. You see a progress bar showing how many groups have been created so far. You do not need to keep the page open. The app sends you an email when all groups are done.
If you change your mind mid-way, you can cancel the job. Groups that were already created stay. The remaining ones are skipped.
What this looks like with real product titles
Here are some real naming patterns from Shopify stores and what the app detects from each one:
Fashion store with dash separators:
- “Ribbed Tank Top – Ivory” + “Ribbed Tank Top – Black” + “Ribbed Tank Top – Dusty Rose”
- Group: Ribbed Tank Top, values: Ivory, Black, Dusty Rose
Furniture store without separators:
- “Scandinavian Oak Dining Table Large” + “Scandinavian Oak Dining Table Small”
- Group: Scandinavian Oak Dining Table, values: Large, Small
Sneaker store with long product names:
- “Nike Air Max 90 Essential White” + “Nike Air Max 90 Essential Black” + “Nike Air Max 90 Essential Grey”
- Group: Nike Air Max 90 Essential, values: White, Black, Grey
Candle store with color-first titles:
- “Lavender – Signature Candle” + “Vanilla – Signature Candle” + “Cedar – Signature Candle”
- Group: Signature Candle, values: Lavender, Vanilla, Cedar (reverse detection)
Print-on-demand store with Printify titles:
- “Mountain Sunset Tee – Navy” + “Mountain Sunset Tee – Heather Grey” + “Mountain Sunset Tee – Forest Green”
- Group: Mountain Sunset Tee, values: Navy, Heather Grey, Forest Green
In every case, the app extracts the group name and option values automatically. You just review and confirm.
Tips for getting the best results
- Use auto-detect. Unless you know for certain that every product uses the same separator, auto-detect is the safest choice. It tries all separator types first, then falls back to word matching for anything it missed.
- Check your titles before running detection. Products with identical titles cannot form a group (the app needs different option values). If you have two products both called “Blue Hoodie” with no other distinguishing words, rename one of them first.
- Products need a featured image. Products without a featured image are automatically excluded from detection. Make sure your products have images before running bulk grouping.
- Already-grouped products are excluded by default. If you have already created some groups manually, those products will not appear in the detection results. This prevents duplicate groups.
- You can run detection multiple times. If the results are not what you expected, go back, adjust your settings, and run it again. Nothing is created until you explicitly click the create button in the review step.
Try it on your store
Bulk grouping is available on all plans. The number of groups you can create depends on your plan, but the detection and review features work the same way regardless.
If you have not installed the app yet, install Rubik Combined Listings from the Shopify App Store. Once installed, go to Product Groups and click the “Bulk create groups” button at the top of the page.
For a detailed walkthrough of each step, see the bulk grouping documentation.
If you already have the app and have been creating groups one at a time, give bulk grouping a try. It will save you a lot of time.





