Selling a Million Product Combinations on Shopify: Seal Skin Covers

Seal Skin Covers sells covers for cars, trucks and boats. Every cover has to fit a specific vehicle, which turns a modest-looking range into more than a million possible combinations of make, model, size and options.

Shopify isn't built to hold a million variants on its own, and a storefront that tried would be impossible to manage. The job was to make every combination findable and buyable while keeping product management in Shopify practical for the team.

1M+

Catalog combinations, mapped to a much smaller set of Shopify products.

Size-based

Boat cover prices calculated from the customer's dimensions.

10%

Of traffic saw the new platform first, before it was scaled up.

One Catalog, Two Pricing Rules

Car and boat covers needed different rules, so the catalog handles them separately.

  • Car covers: many similar configurations map to a small set of Shopify SKUs. The details that make each one unique, like fit and options, travel with the order as properties.
  • Boat covers: the price depends on the boat's dimensions. A pricing layer works out the total, and Shopify's Draft Orders API carries that exact price and configuration into checkout.

Shoppers get a cover priced for their exact vehicle, and the team still manages a sensible number of products in Shopify.

Two pricing rules: car cover configurations map to a few Shopify SKUs with their details kept as properties, while boat covers are priced by size and passed to checkout as a Draft Order.

Content, Catalog and Commerce, Kept Apart

Each system does the job it's best at:

  • Sanity holds marketing pages and editorial content, so the content team can publish without touching product rules.
  • A Ruby on Rails catalog resolves the million-plus combinations and configuration rules.
  • Shopify handles checkout and orders.

A Gatsby and React storefront brings them together and is served from Netlify. Popular pages are built ahead of time, less-visited ones are generated on demand, and the configurator and checkout stay connected to live APIs.

Architecture: Sanity content, a Rails catalog with over a million combinations and Shopify checkout feed a Gatsby and React storefront on Netlify, launched to 10% of traffic first.

Launching to 10% of traffic first

A new platform with this many moving parts shouldn't go live for everyone at once. We sent 10% of traffic to it first and watched uptime, checkout behaviour and catalog performance under real trading conditions before increasing exposure.

That approach let the team prove the most important buying paths with real customers, while the old storefront still handled most orders. The checks behind it are the same ones in our Shopify launch QA checklist.

What we'd tell anyone with a huge catalog

  1. Don't force every combination into Shopify variants. Map them to a smaller set of products and carry the details as properties.
  2. Keep pricing rules out of the theme. A dedicated pricing layer is easier to test and change.
  3. Separate content from configuration. Editors and catalog logic shouldn't block each other.
  4. Roll out gradually. A 10% launch turns a risky switch into a measured one.

Read the full Seal Skin Covers case study.

Technical Deep DiveSpell&Sell
Spell&Sell
  • 1M+ Combinations
  • Size-Based Pricing
3 min read