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.
Manage your products with k-sync
Connect your store, validate your products, optimize with AI, and push to Shopify in minutes. Free for up to 50 products.
Get started freeRelated reading
Managing products across Shopify and WooCommerce simultaneously (2026)
How to manage product data across both Shopify and WooCommerce at the same time — syncing catalogs, handling platform differences, inventory management, and choosing a central hub.
Shopify bulk editing: built-in vs k-sync — a complete comparison (2026)
A detailed comparison of Shopify's native bulk editing tools versus k-sync for product management — features, limitations, use cases, and when to use each approach.