Migrating a paint & decorating supplies store from WooCommerce to Shopify (2026)
How to migrate a paint, decorating supplies, or wallcoverings WooCommerce store to Shopify — colour variant handling, paint finish metafields, coverage calculator, tester pot setup, trade account pricing, and paint retail Shopify setup.
Paint retail has a unique challenge: a single paint brand may offer 200–300 colours in the same product range. Shopify's 100-variant limit makes it impossible to list all colours as variants of a single product — paint colour catalogues require either a different product structure or a custom options approach. Combined with finish variants (matt, eggshell, satin, gloss), size variants (tester, 1L, 2.5L, 5L), and the need for a coverage calculator tool, paint is one of the most technically complex product categories to migrate to Shopify.
Paint product categories
- Interior emulsion: Matt, silk, eggshell finishes. Wall and ceiling paint. Various colours in each range.
- Exterior paint: Masonry paint, exterior wood paint, exterior metal paint. Durability and weather resistance metafields.
- Primer and undercoat: Multi-surface primer, wood primer, metal primer, stain blocker. Base type (oil, water).
- Specialist paints: Chalk paint, limewash, mineral paint, anti-mould paint, fire retardant paint, floor paint, radiator paint.
- Gloss and satin: Woodwork paint, door paint, skirting paint. Full gloss, satin, eggshell variants.
- Tester pots: Small sample size (typically 75 ml or 125 ml) to test colour on wall before purchasing full size.
- Brushes and rollers: Paint brushes (various sizes and materials), roller covers, roller frames, extension poles.
- Preparation products: Sugar soap, wall filler, caulk, masking tape, dust sheets.
- Wallpaper: See the wallpaper section in the rugs/textiles guide for wallpaper-specific product structure.
Colour range variant management
The 100-variant limit is the defining constraint for paint retail. A range with 200 colours × 4 finish options × 4 sizes = 3,200 combinations — completely unworkable as Shopify variants. Solutions:
Option A: One product per colour
- Create a separate product for each colour: "Farrow & Ball No. 18 — Stiffkey Blue", "Farrow & Ball No. 79 — Borrowed Light", etc.
- Variant: Size (Tester 100ml, 1L, 2.5L, 5L)
- Variant: Finish (Matt, Eggshell, Full Gloss) — where multiple finishes exist for the same colour
- This approach allows full inventory tracking per colour and full SEO benefit per colour (each colour has its own URL and can rank for "[Brand] [Colour Name] paint").
- Challenge: product catalogue becomes very large (200+ products per paint range). Requires consistent bulk upload tooling and naming conventions.
Option B: Custom options (no Shopify variants)
- Use a product customisation app (Infinite Options, Bold Product Options) to present colour, finish, and size as custom fields without creating Shopify variants.
- One product per paint range: "Farrow & Ball Estate Emulsion". Customer selects colour (dropdown of 200 options), finish (dropdown), and size (dropdown).
- Inventory: no per-variant inventory tracking (print-to-order / mix-to-order model — most independent paint retailers mix to order anyway).
- Challenge: no SEO per colour. No per-combination inventory. Not suitable for retailers who stock pre-mixed colours.
Option C: Hybrid — product per range, colour as custom field
- Separate products per range and finish: "Farrow & Ball Estate Emulsion — Matt". Variant: Size (1L, 2.5L, 5L). Colour as a custom line item property (dropdown of available colours).
- This is the most practical approach for paint specialists — it maintains product page SEO per range/finish, allows inventory by size, and handles large colour ranges without exploding the product count.
Paint metafields
product.metafields.paint.finish(single_line_text) — "Dead matt", "Matt", "Silk", "Eggshell", "Satin", "Semi-gloss", "Full gloss"product.metafields.paint.coverage_m2_per_litre(single_line_text) — "14 m² per litre" — used in coverage calculatorproduct.metafields.paint.recommended_coats(single_line_text) — "2 coats" — for coverage calculation accuracyproduct.metafields.paint.base_type(single_line_text) — "Water-based", "Oil-based", "Solvent-based"product.metafields.paint.voc_level(single_line_text) — "Zero VOC", "Low VOC (<10 g/L)", "Medium VOC", "High VOC" — important for sensitive users and enclosed spacesproduct.metafields.paint.drying_time_hours(single_line_text) — "Touch dry: 2 hours. Recoat: 4 hours."product.metafields.paint.application_method(multi_line_text) — "Brush", "Roller", "Spray gun"product.metafields.paint.surface_type(multi_line_text) — "Plasterboard", "Plaster", "Wood", "Metal", "Masonry"product.metafields.paint.interior_exterior(single_line_text) — "Interior only", "Exterior only", "Interior and exterior"product.metafields.paint.tintable(boolean) — true if can be tinted to custom colour at point of saleproduct.metafields.paint.colour_code(single_line_text) — brand colour number/name: "No. 18", "RAL 9010", "BS 08 B 29"product.metafields.paint.colour_family(single_line_text) — "Blue", "Green", "Neutral", "White", "Yellow", "Red", "Grey", "Black" — for colour family filtering
Coverage calculator
- A coverage calculator on paint product pages converts interested browsers into confident buyers — and increases average order value by correctly sizing the quantity needed.
- Inputs: room width (metres), room length (metres), ceiling height (metres), number of coats, number of doors and windows (to deduct).
- Calculation: (perimeter × height − door/window area) × coats ÷ coverage per litre = litres required. Then round up to next available size and recommend that quantity.
- Display: "For your room, you need approximately 4.2 litres — we recommend 2 × 2.5 L tins."
- Implementation: JavaScript calculator embedded on product page template. Pass the
paint.coverage_m2_per_litreandpaint.recommended_coatsmetafields to the calculator as data attributes.
Tester pots
- Tester pots (75–125 ml) are typically separate products or separate variants from full-size tins. Customers buy testers before committing to full sizes — testers are a conversion tool, not a revenue centre.
- Best approach: create a tester pot as a separate, lower-priced variant of the main paint product (if using Option A or C above) or as a separate product category ("Tester Pots") for Option B.
- Tester pot upsell: when a customer adds a tester to cart, recommend the corresponding full-size product with a "ready to order the full size?" prompt.
- Tester to full-size conversion: if you track which colours are ordered as testers, you can retarget tester buyers with a follow-up email 1–2 weeks later: "Did you love your tester? Order the full size."
Trade decorator accounts
- Professional decorators are significant buyers — volume discounts of 10–20% are standard in the trade.
- Verification: trade card holders (Dulux Decorator Centre trade card, Guild of Master Craftsmen, etc.) or VAT-registered sole traders. Implement a trade application form with verification.
- Trade-specific pricing: use Shopify B2B (Plus) or a wholesale app (Wholesale Club, B2B Wholesale) for trade pricing tiers.
- Bulk ordering: trade customers often order multiple 5L tins of the same colour. Ensure bulk order forms and palletised delivery options are available.
Paint migration checklist
- Decide colour variant structure: one product per colour (best for SEO), custom options (simplest), or hybrid (most practical)
- Create paint metafield namespace: finish, coverage_m2_per_litre, recommended_coats, base_type, voc_level, drying_time_hours, surface_type, interior_exterior, colour_family
- Set up size variants: Tester, 500ml, 1L, 2.5L, 5L, 10L
- Build coverage calculator JavaScript for product page template
- Pass coverage_m2_per_litre and recommended_coats metafields to calculator
- Enable colour family, finish, VOC level, and surface type filters in Search & Discovery
- Set up tester pot products or variants with full-size upsell recommendation
- Configure trade decorator account application and pricing tier
- Test: coverage calculator → correct quantity recommendation for given room dimensions
- Test: colour family filter → correct products returned
The coverage calculator is the most consistently underinvested conversion tool in paint retail ecommerce, despite being the single question every paint buyer has before purchasing: "How much do I need?" A customer who cannot quickly determine the right quantity either over-buys (returns the extra, which is an inconvenience and a cost) or under-buys (needs to reorder, which is a delay and frustration). A simple room dimensions calculator that recommends the exact quantity and tin configuration — "order 2 × 2.5 L tins" rather than "you need 4.2 litres" — removes the last barrier to confident purchase and frequently increases order value by guiding customers to the right quantity rather than letting them guess conservatively.
Migrate your store with k-sync
Connect your WooCommerce store, validate your products, and push to Shopify in minutes. Free for up to 50 products.
Get started freeRelated reading
Migrating a luggage and travel accessories store from WooCommerce to Shopify (2026)
How to migrate a luggage, travel bags, or travel accessories WooCommerce store to Shopify — luggage specifications, airline compliance, TSA lock, warranty and durability claims, and luggage retail Shopify setup.
Migrating a motorcycle accessories store from WooCommerce to Shopify (2026)
How to migrate a motorcycle accessories, biker gear, or motorbike parts WooCommerce store to Shopify — helmet safety standards, CE-rated protective clothing, type approval for parts, fitment compatibility, and motorcycle retail Shopify setup.