huskai
variants shopify migration case-study

Why Haul's Variant System Leaves Shopify in the Dust

15 March 2026 · Dottie's Pet Boutique · 6 min read

The Problem Every Product Seller Knows

If you've ever managed a product catalogue on Shopify, you'll know the pain. You want to sell a collar in 19 colours, 7 sizes, and 6 fastening types. Shopify says: "Sure, that'll be 798 rows please."

19 colours × 7 sizes × 6 fastenings = 798 variant rows. For a single product.

Even with Shopify's recently increased variant limit, you're still managing 798 individual rows for one product. Every row needs its own SKU, price, and inventory count. And every time you add a colour or size, the number of rows multiplies.

We ran the numbers when we migrated Dottie's Pet Boutique from Shopify to Haul. Our Shopify export was 54,117 rows across 663 products — and only 147 of those had been converted to variants. We'd given up adding variants to the rest because it was too painful. Those 147 products alone accounted for over 53,000 rows, averaging 365 rows per product. If we'd converted the full catalogue, we'd have been looking at roughly 242,000 rows in a single CSV.

The same catalogue in Haul? 663 products, 3 variant groups, 32 options. That's it.

Haul's Shopify import preview showing 663 products, 176 with variants, and 2,753 images parsed from the CSV upload
The import preview after uploading Dottie's Shopify CSV — 663 products, 176 with variants, and 2,753 images detected automatically.

How Shopify Does Variants (and Why It Hurts)

Shopify uses what's called an "exploded" variant model. Every possible combination of options becomes its own row with its own SKU, price, and inventory count.

Let's say you sell a simple collar with:

  • 3 sizes: Small, Medium, Large
  • 4 colours: Red, Blue, Green, Black

That's 12 variant rows. Manageable. But real products aren't that simple. Add a fastening type (Clip Buckle, Belt Buckle, Martingale) and you're at 36. Add a hardware finish (Gold, Silver, Rose Gold) and you're at 108 — already over Shopify's old limit.

The real cost isn't just the row count. It's what happens when you need to make a change:

  • Add a new colour? You need to create rows for every size–fastening–hardware combination. That's 7 × 6 = 42 new rows for one colour.
  • Change the price of the Large size? You need to update every row where size = Large. That's 19 × 6 = 114 rows to edit.
  • Discontinue a fastening type? Delete rows across every colour and size combination.

It's spreadsheet hell, and it only gets worse as your catalogue grows.

How Haul Does It (and Why It's Better)

Haul uses a variant group model. Instead of exploding every combination into its own row, it keeps things logical:

Variant groups are reusable building blocks — "Size", "Colour", "Fastening Type". Each group has a set of options with optional price adjustments.

For that same collar:

GroupOptionsPrice Adjustment
SizeXS, S, M, L, XL, XXL, 3XL+£0 to +£3.50
Colour19 colours£0 each
FasteningClip Buckle, Belt Buckle, Martingale, Side Release, Toggle, Magnetic+£0 to +£1.50

Total options: 32. Not 798. Just 32.

The final price is calculated as:

Base price + Size adjustment + Colour adjustment + Fastening adjustment

So a Medium collar in Ocean Blue with a Belt Buckle might be:

£18.00 (base) + £0.50 (Medium) + £0.00 (Ocean Blue) + £1.50 (Belt Buckle) = £20.00

Simple. Transparent. No spreadsheet required.

The Template System: Set It Once, Use It Everywhere

Here's where it gets really powerful. Variant groups in Haul are reusable and global. You create them once, then assemble them into product templates.

A "Standard Collar" template might use Size + Colour + Fastening. A "Lead" template might use Length + Colour. A "Bow Tie" template might just use Size + Fabric.

When you create a new product, you pick a template and you're done. All the options are inherited. No copying, no pasting, no mistakes.

Add a new colour to the Colour group? It's instantly available on every product that uses that group. One change, hundreds of products updated. Try doing that on Shopify.

Haul's Shopify importer showing 5 detected variant structures, with the main Color + Fastening + Size template covering 147 products
Haul's Shopify importer automatically detects variant structures in your CSV and creates reusable templates. This is real data from the Dottie's migration — 5 unique structures across 663 products.

Real Numbers from Our Migration

When we moved Dottie's Pet Boutique from Shopify to Haul, the difference was staggering:

MetricShopifyHaul
CSV rows (147 variant products)54,117
Estimated full catalogue~242,000 rows
Products663663
Variant definitions365 rows per product (avg)32 options across 3 groups
To add 1 new colour42+ new rows per product1 option added to Colour group
To change Large pricingEdit 114+ rows per productChange 1 price adjustment
Management overheadEdit hundreds of rows per productEdit 32 options total

The Shopify export was over 50,000 rows of repetitive data. The same information in Haul is represented by 3 variant groups with 32 options between them. That's a reduction from tens of thousands of variant rows to just 32 configurable options — and every change you make propagates instantly across your entire catalogue.

Haul import confirmation screen showing 663 products, 176 with variants, 2,753 images to download, and 5 templates to create
The final confirmation step: 663 products, 176 with variants, 2,753 images — all imported in one go with the option to review as drafts first.

What This Means for Your Day-to-Day

Faster Product Creation

Instead of building out every combination manually, you pick a template, set a base price, and you're live. A product that took 20 minutes on Shopify takes 2 minutes on Haul.

Easier Price Changes

Seasonal sale on all Large items? Change the price adjustment once on the Size group. Done. No bulk CSV exports and re-imports.

No Combinatorial Explosion

Even though Shopify raised its variant limit, you still have to manage every individual combination as a separate row. On Haul, 50 colours, 10 sizes, and 8 fastenings is just 68 options — not 4,000 rows.

Cleaner Customer Experience

Customers see dropdown menus for each option group, not a scroll through 798 pre-built combinations. The price updates in real time as they make selections. It's intuitive and fast.

Consistent Catalogue

Because variant groups are shared across products, your naming is always consistent. No more "Lrg" on one product and "Large" on another because someone mis-typed a Shopify CSV.

Stock Without the Spreadsheet

Here's one that catches a lot of sellers off guard. If you don't track stock on Shopify, the variant explosion is still a nightmare — you've got 798 rows you never asked for, cluttering your admin, slowing down your exports, and making bulk edits a minefield.

And if you do track stock? It's even worse. Every single combination needs its own inventory count. Got 19 colours and 7 sizes? That's 133 stock levels to maintain for one product. Restock a colour across all sizes? That's 7 separate updates. Miss one and you've got a size showing as out of stock when it isn't.

Haul's built-in inventory manager handles stock at the product level by default, with the option to track per-variant where it matters. You get a dedicated low-stock dashboard, stock alerts, and bulk adjustment tools — without needing to wade through hundreds of variant rows just to update a number.

The Bottom Line

Shopify's variant model was designed for simple products — a t-shirt in 3 sizes and 4 colours. It breaks down the moment you have real product complexity. And for handmade, customisable products like ours? It's a nightmare.

Haul's variant group system was built for sellers like us. It's how variants should work: logical, reusable, and scalable. No row limits, no spreadsheet gymnastics, no compromises.

We moved 663 products from 54,117 Shopify rows into a system that just makes sense. If you're drowning in variant management, there's a better way.

Haul import complete screen showing 663 products imported successfully with 2,753 images queued for download
Import complete: 663 products, 2,753 images queued for background download. The whole migration took minutes, not days.

Dottie's Pet Boutique creates handmade, personalised collars and accessories for dogs and cats. They were one of the first shops to make the switch to Haul.

Interested in Haul? Learn more about Haul or see how Haul compares to Shopify.