Migrating a bath bomb, soap & handmade cosmetics store from WooCommerce to Shopify (2026)
How to migrate a bath bomb, handmade soap, or artisan cosmetics WooCommerce store to Shopify — EU cosmetics compliance, CPNP notification, ingredient lists, allergens, and artisan beauty Shopify setup.
Handmade cosmetics — bath bombs, soaps, scrubs, lotions, serums — are a thriving cottage industry that has grown significantly through platforms like Etsy and independent WooCommerce stores. The regulatory burden is considerable: every cosmetic product placed on the UK/EU market requires a Cosmetic Product Safety Report (CPSR) signed by a qualified assessor, must be registered with OPSS (UK) or CPNP (EU), and must display a full INCI ingredient list with allergen highlighting. A migration to Shopify doesn't change regulatory obligations, but it's an opportunity to ensure compliance data is properly structured and displayed.
Handmade cosmetics product categories
- Bath bombs: Fizzing bath products — citric acid + sodium bicarbonate base, often with oils, fragrance, and colourants
- Handmade cold process soap: Saponified oils — lye-based, cured 4–6 weeks — not technically a cosmetic until cured (check your Responsible Person's classification)
- Melt and pour soap: Glycerine base melted and poured with additives — cosmetic from day one
- Body scrubs: Exfoliating scrubs — salt/sugar based, with carrier oils
- Body butters and lotions: Leave-on cosmetics — higher regulatory scrutiny (leave-on vs rinse-off classification)
- Lip balms and lip care: Contact with mucous membranes — additional safety assessment criteria
- Face products: Serums, toners, face masks — highest regulatory scrutiny
- Candles: Not cosmetics (unless infused with skincare claims). If candles are sold alongside cosmetics, keep product categorisation separate.
- Gift sets: Bundled product sets — each component requires its own CPSR
Cosmetics compliance metafields
Regulatory
product.metafields.cosmetics.cpsr_reference(single_line_text) — CPSR document reference numberproduct.metafields.cosmetics.responsible_person(single_line_text) — UK Responsible Person name/company (required on packaging and in SCPN)product.metafields.cosmetics.scpn_notification_number(single_line_text) — UK Submit Cosmetic Product Notification (SCPN) referenceproduct.metafields.cosmetics.cpnp_notification_number(single_line_text) — EU CPNP notification number (if selling in EU)product.metafields.cosmetics.product_category(single_line_text) — Rinse-off / Leave-on / Aerosol — EU regulatory classificationproduct.metafields.cosmetics.minimum_durability_date(single_line_text) — Best-before date (for products stable 30 months or less). Products stable beyond 30 months use "Period After Opening" symbol instead.product.metafields.cosmetics.period_after_opening_months(number_integer) — PAO in months (e.g., 12M)
Ingredients
product.metafields.cosmetics.inci_ingredients(multi_line_text_field) — full INCI (International Nomenclature of Cosmetic Ingredients) ingredient list in descending order by weight. This is a legal requirement on all cosmetics.product.metafields.cosmetics.allergens_26(list.single_line_text) — from the 26 EU-regulated fragrance allergens present above 0.01% (leave-on) or 0.1% (rinse-off). These must be highlighted in the INCI list.product.metafields.cosmetics.fragrance_free(boolean) — no added fragranceproduct.metafields.cosmetics.essential_oils(list.single_line_text) — specific essential oils used (for transparency beyond INCI)
Ethics and certifications
product.metafields.cosmetics.vegan(boolean) — no animal-derived ingredientsproduct.metafields.cosmetics.cruelty_free(boolean) — not tested on animalsproduct.metafields.cosmetics.leaping_bunny_certified(boolean) — Cruelty Free International Leaping Bunny certificationproduct.metafields.cosmetics.organic_percent(number_integer) — percentage of organic ingredientsproduct.metafields.cosmetics.palm_oil_free(boolean) — no palm oil or derivativesproduct.metafields.cosmetics.plastic_free(boolean) — plastic-free packaging
INCI ingredient list on product pages
The INCI ingredient list must be visible on the product — on packaging (physical) and on the product page for online retail. This is a legal requirement, not optional:
- Display the full INCI list on every product page. Use a collapsible section or dedicated "Ingredients" tab so it doesn't clutter the product description but is always accessible.
- Allergen highlighting: the 26 regulated fragrance allergens present above threshold must be highlighted in bold in the INCI list. Render this in your theme: if the allergen is in the
allergens_26metafield, bold it in the INCI display. - "Suitable for" claims: if making claims like "Suitable for sensitive skin", ensure these are substantiated in your CPSR. Unsubstantiated claims are regulatory violations.
- Organic/natural claims: "Natural" and "Organic" are not legally defined for cosmetics in the UK/EU. Only make these claims if certified or if you can substantiate the percentage of natural/organic ingredients.
Batch code tracking
- Batch code requirement: all cosmetics must have a batch code on packaging for traceability. The batch code links back to production records (ingredients used, CPSR version, date of manufacture).
- In Shopify: batch codes are production-level data, not product-level. They're managed in your production records system, not in Shopify product metafields.
- If a recall is needed: batch code allows you to identify which orders contained the affected batch. You'll need order records linked to production batches — maintain this in a separate spreadsheet or inventory system.
Gift sets and bundles
- Each product in a gift set must have its own CPSR. A bundle of 3 products requires 3 separate CPSRs (one per product).
- Bundle packaging: the outer gift box may have different labelling requirements from individual products — display the full INCI list for each component on the outer packaging or in the box insert.
- In Shopify: gift sets as products — add the INCI ingredient lists for all components to the product page. Either combined or per component.
- Create gift set landing page: seasonal gift sets (Christmas, Mother's Day) with curated product bundles. Use product bundles app or create as distinct products.
Artisan cosmetics migration checklist
- Verify all products have valid CPSRs before migration (if not, resolve before going live on Shopify)
- Create cosmetics metafield namespace: cpsr_reference, responsible_person, scpn_notification_number, period_after_opening_months, inci_ingredients, allergens_26, vegan, cruelty_free, leaping_bunny_certified, plastic_free
- Migrate WooCommerce ingredient list custom fields to Shopify
inci_ingredientsmetafield - Build INCI ingredient list display on product pages with allergen bolding
- Display PAO (Period After Opening) symbol and months on all product pages
- Add Responsible Person details to product pages or legal/compliance page
- Create dedicated "Ingredients and Safety" section in product template
- Build collections: Bath Bombs, Soaps, Body Scrubs, Face Care, Gift Sets
- Enable vegan, cruelty-free, fragrance-free, plastic-free filters in Search & Discovery
- Create a cosmetics compliance page: CPSR explanation, responsible person details, batch code policy
- Test: ingredient list renders correctly on product page with allergens bolded
The INCI ingredient list requirement is the compliance item most commonly omitted from handmade cosmetics WooCommerce stores — and the most legally serious. Many small batch makers list ingredients in colloquial terms ("coconut oil, shea butter, lavender essential oil") rather than correct INCI nomenclature ("Cocos Nucifera (Coconut) Oil, Butyrospermum Parkii (Shea) Butter, Lavandula Angustifolia (Lavender) Oil"). The INCI names are legally required — common names alone do not comply with EU Cosmetics Regulation 1223/2009 (retained in UK law). Before migration, work with your CPSR assessor or a cosmetics consultant to compile the correct INCI lists for every product, and populate the metafield with the properly formatted list. If your INCI lists aren't correct on the current WooCommerce store, the migration is the right moment to fix them — not something to carry forward.
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.