How to set different product descriptions per variant on Shopify (combined listings)

Shopify natively gives one description to a product, regardless of how many variants it has. The “Linnea Sofa” page shows the same boucle vs leather vs linen description across all fabric options. For furniture, apparel, lighting, and any category where each variant has its own care instructions, fabric content, dimensions, or country of origin, this is a real friction point. Customers pick a fabric and want fabric-specific information; instead they get generic catch-all copy. Combined listings fixes this by giving each variant (a separate product under the hood) its own complete description.
This post walks through how to set different product descriptions per variant on Shopify using combined listings. The architecture is the same one we use for per-variant titles, prices, URLs, and images. We build Rubik Combined Listings, and per-variant descriptions are particularly important for stores selling materials with distinct properties.
In this guide
- Why native variants share one description
- How combined listings give per-variant descriptions
- What changes per variant
- Setup walkthrough
- Examples by product type
- FAQ
- Related reading
Why native variants share one description
In Shopify’s data model, the description (officially called body_html) is a product-level field. There is no variant-level description. Variants only carry option values, prices, SKUs, inventory, and an image reference. Any variant-specific text has to live in the master description, usually as paragraphs covering all options at once or as a generic catch-all.
Some merchants use metafields to fake per-variant text. It works for short snippets, but for full descriptions (300+ words with fabric content, care, dimensions, warranty, country of origin, sustainability claims), metafield workarounds get unwieldy. The more durable architecture is to split into separate products and group with combined listings.
How combined listings give per-variant descriptions
Each grouped product is a real Shopify product with its own body_html field. So the camel boucle Linnea Sofa has its own boucle-specific description: hand-loomed in Belgium, OEKO-TEX certified, recommended for low-traffic spaces. The walnut leather Linnea Sofa has its own leather-specific description: top-grain leather, 8-week production lead time, professional cleaning recommended.

Combined listings groups the products visually on the storefront. The customer sees one card on the collection page with fabric swatches; clicking a swatch routes to the right product page with the right description. From the shopper’s perspective it feels like one sofa with multiple fabrics; from the SEO perspective it’s 8 distinct pages with 8 distinct descriptions.
What changes per variant
- Fabric or material content. Boucle composition vs leather grade vs linen weave
- Care instructions. Spot-clean only, machine wash, dry clean, professional restoration
- Lead time. In-stock variants ship in 5 days; made-to-order leather variants take 8 weeks
- Warranty. Different fabric warranties for different materials
- Country of origin. Different fabrics may be sourced from different regions
- Sustainability claims. OEKO-TEX, FSC, organic certifications differ per fabric
- Cushion fill or hardware specs. Materials differ across variants
Setup walkthrough
- Create a separate Shopify product for each variant where the description differs meaningfully
- Write a unique description for each product. Don’t duplicate the same paragraphs across siblings, or you create thin-content SEO risk.
- Install Rubik Combined Listings and group the products together
- Add swatches and configure the visual settings to match your theme
- Save and preview. Each product page now shows its own description; storefront swatches let customers switch between siblings.

“The app worked wonderfully and Umid was very helpful in setting it up in my store, with our products being configured differently. It now works a treat, thank you!”
WeatherBeeta, New Zealand, 2026-03-18, Rubik Combined Listings on the Shopify App Store
Examples by product type
| Product | What changes per variant |
|---|---|
| Sofa (8 fabrics) | Fabric content, care, certifications, lead time |
| Pendant light (4 finishes) | Finish coating, bulb compatibility, weight |
| Sheet set (3 fabrics) | Thread count, weave description, care |
| Watch (3 strap materials) | Strap material, water resistance changes, care |
| Rug (2 pile materials) | Pile material, cleaning, durability rating |
See the live demo store, watch the tutorial video, or read the getting started guide.
FAQ
Can I set different descriptions for variants without combined listings?
Not natively. Shopify has no variant-level description field. Metafield workarounds exist but get fragile for full-length descriptions. Combined listings (separate products + grouping) is the durable architecture.
Will Google penalize me for splitting?
Not if descriptions are unique per product. Duplicate descriptions across siblings risk thin-content penalties. Write fabric-specific paragraphs that don’t overlap, and use proper schema markup so Google understands the relationship.
Does this require Shopify Plus?
No. Rubik Combined Listings runs on every Shopify plan.
How do I keep descriptions consistent across siblings?
Use a shared template for the section that doesn’t change (brand intro, returns policy, design philosophy) and customize the variant-specific paragraphs (fabric content, care, certifications). Shopify metafield definitions can hold reusable blocks.
Can I bulk-update descriptions across grouped products?
Yes, via Shopify’s bulk editor or via Matrixify. Update each grouped product’s description independently; the combined listings group stays intact.
What if descriptions are mostly identical except for one paragraph?
If only one paragraph changes per variant, native variants + a metafield for the variable paragraph is simpler. Switch to combined listings only when descriptions diverge meaningfully or when other axes (title, URL, price) also need to differ.