Magento vs Sephora vs Dermstore vs Shopify Plus for skincare specialty DTC?
Different game depending on whether you’re building a brand or a retailer.
Sephora / Dermstore (TJX) / Ulta / Credo are retailer marketplaces, not platforms you build on. If you’re an indie brand the play is to list and run a DTC. They take 20–55% margin but they ship traffic. Most skincare brands above $2M GMV need both: marketplace presence + their own DTC for repeat / subscription revenue.
Shopify Plus wins for skincare DTC under ~$3M GMV with a single brand, single region, and no Rx-handoff. Octane AI handles the skin-quiz, ReCharge handles subs, Stamped handles reviews. Three apps + Shopify = working store in 4 weeks.
Magento wins above $3M GMV or when you need any of: multi-brand portal (K-beauty / J-beauty distribution), Rx-skincare handoff, ingredient + concern filtering past 25 facets (Shopify metafields choke), B2B + DTC on one store, multi-region with different ingredient bans per market.
The $0.15–$0.50 per-transaction Shopify Plus fees compound: at $5M GMV that’s $7,500–$25k/yr you could spend on Klaviyo or paid social instead. Magento has no per-tx tax.
Was this helpful?
Skin-quiz funnel — concern + age + budget → product reco. How do you build it?
The skin-quiz is the highest-leverage piece of any skincare DTC build. Three architecture patterns:
Octane AI ($50–$500/mo) — the default. Drag-and-drop builder, native Klaviyo + Shopify integration, has a Magento connector via custom REST endpoint. Drop a 6–10 question quiz on the homepage, output a 3-product AM/PM routine, write answers into Klaviyo as profile properties.
Typeform / Tally ($25–$99/mo) — cheaper, prettier, but you write the reco-logic webhook yourself. Best when the quiz output needs to be smart (e.g. age × concern × budget matrix). I default to this above 12 questions.
Custom Magento + Alpine.js — fastest UX (no third-party JS), full data ownership. ~$3k–$8k to build, but you own the routine-logic tree forever. The pattern I recommend above $5M GMV where the quiz is core IP.
Conversion lift on quiz-takers vs cold homepage visitors runs 2.4–3.1x across the skincare DTC builds I see. Curology, Function of Beauty, Prose, and Atolla all built their company around their quiz. It’s the funnel.
Klaviyo profile sync is mandatory: the quiz answers become Klaviyo tags (e.g. concern_acne, age_25_34, budget_premium) that drive 12–24 month replenishment flows.
The K-beauty + J-beauty retailer model on Magento uses multi-website setup: one Magento instance, multiple storefronts (one per brand), shared customer + inventory tables.
Architecturally:
Website per brand — cosrx.yourstore.com, beauty-of-joseon.yourstore.com, etc. Each gets its own Hyvä theme, hero, brand story, taxonomy. Customer logs in once, sees their orders across all brands.
Shared catalog with brand attribute — SKUs are tagged with the source brand. Storefronts filter the catalog to their brand only.
Per-brand admin user — the COSRX team gets admin access scoped to their brand only. Hyvä + Magento role-based ACL handles this natively.
Korea/Japan-specific build details:
INCI transliteration — ingredient names need Korean → English INCI mapping (e.g. “센텔라 아시아티카 추출물” → “Centella Asiatica Extract”). I use a custom attribute with both fields populated.
Different ingredient bans per region — e.g. methylene-bis-benzotriazolyl tetramethylbutylphenol is OK in Korea/Japan, flagged in California Prop 65. Need per-region SKU visibility rules.
Shipping from Asia — HS-code + duty pre-calc at checkout via Easyship, Zonos, or Passport Shipping. Korean brands love Easyship; Japanese brands lean Zonos.
Authorized distribution agreements are the legal gate, not the tech. Once signed, the Magento setup is 3–5 weeks per added brand.
The Dermstore + Sephora UX pattern: customer lands on a category page, filters by ingredient (retinol, niacinamide, vitamin C, AHA, BHA, peptides, hyaluronic acid, ceramides, squalane, salicylic acid, azelaic acid, tranexamic acid, bakuchiol, alpha arbutin, kojic acid) and by concern (acne, anti-aging, hyperpigmentation, sensitive, oily, dry, rosacea, eczema). Drives 35%+ of skincare PDP traffic in the data I see.
Implementation on Magento:
Two custom attributes — active_ingredients (multi-select, ~30 INCI values) and skin_concerns (multi-select, ~10 concern tags). Both filterable + layered-nav visible.
Tag at SKU level, not category level — one SKU can have 4 active ingredients and 3 target concerns. Category mapping is downstream of attribute tagging.
OpenSearch / Elasticsearch for the layered nav — native Magento 2.4+ uses OpenSearch and handles 50+ facets without slowdown. The Shopify metafield-based filter chokes past ~25 facets.
PDP badges — render “retinol 0.5%” / “niacinamide 10%” / “AHA 7%” concentration callouts inline. Customer is shopping by potency.
The Ordinary built their entire brand around ingredient transparency — concentration on the bottle, single-ingredient SKUs. Magento + EAV is a much better fit for that taxonomy than Shopify variants.
You can ship cash-pay Rx-skincare (tretinoin, clindamycin, azelaic acid, hydroquinone) without holding a pharmacy license — the trick is the handoff architecture.
Three partners:
Curology — US-only. Owns prescriber network + compounding pharmacy + Rx subscription billing. Best for US-only brands wanting Curology-style customised formulas. Partnership model: Curology white-labels your brand on their stack.
Apostrophe — US-only. Similar to Curology but more SKU-driven (you sell pre-formulated Rx, they prescribe + ship). Cleaner API for Magento integration; you keep the customer relationship.
Dermatica — UK + EU. Equivalent to Apostrophe for Europe. Integrates via partner API. Mandatory for any EU brand wanting Rx-skincare.
Architecture on Magento:
Medical intake form on your site — concerns, allergies, current meds, age verification, photo upload. Stored encrypted, transmitted to partner via signed JWT or HMAC handoff.
HIPAA-safe handoff — the intake data goes direct from customer browser to partner endpoint (not stored in Magento). Magento only stores the order + Rx-ID reference, never PHI.
Subscription billing on Magento — cash-pay subscription ($30–$80/mo) charged through ReCharge or Magento native subscriptions. Partner ships compounded Rx; Magento bills.
The pattern Curology, Apostrophe, and Dermatica all use is the same: retailer owns customer + billing, partner owns prescriber + pharmacy. Splits the regulatory burden cleanly.
Was this helpful?
Cert flags — COSMOS, EWG Verified, Leaping Bunny. How do you implement?
Certifications drive ~30% of skincare buyer decisions according to Ulta Conscious Beauty + Credo Beauty data. They’re a product attribute, not a content piece.
The certs that move conversion:
COSMOS Organic / COSMOS Natural — EU-led standard for natural/organic. Audit-based, ~$3k–$8k/yr per SKU range. Required for the natural-beauty segment.
EWG Verified / EWG Skin Deep — US-led, ingredient-safety focused. Free Skin Deep listing, $0–$3k for EWG Verified seal. Big in the “clean beauty” segment.
Leaping Bunny — cruelty-free certification. ~$500–$4,500/yr based on revenue. Mandatory for Sephora’s Clean+Planet Aware program.
Vegan Society / Certified Vegan — ~$300–$1,500 per SKU/year. Different from cruelty-free.
NSF / GMP — manufacturing-side certs that matter for FDA scrutiny.
FDA OTC Monograph — required for SPF products in the US (drug classification, not cosmetic).
Magento implementation: one multi-select attribute certifications with the 8–12 cert values. Render as filterable layered-nav facet + PDP badge row + JSON-LDHealthAndBeautyBusiness additionalProperty for rich-snippet visibility. AI Overviews + Google Shopping both surface cert flags now — getting these into structured data is worth the 2-day build.
Skincare routines are 60-day buys — serum lasts 30–60 days, moisturizer 60–90, cleanser 90–120. Subscription auto-ship is 60%+ of mature DTC skincare revenue. Without it the CAC math doesn’t close.
The three subscription managers:
ReCharge — $99–$499/mo. Industry default. Best Magento integration (official extension, well-maintained). Native Klaviyo + Loop Returns integration. Pattern I default to.
Bold Subscriptions — $49–$300/mo. Cheaper, lighter UX. Best for stores under $2M GMV where the budget is tight. Magento integration via Bold Commerce module.
Skio — newer (2021), passwordless mobile checkout, fastest growing. Best for mobile-first DTC where ~75% of subs originate on phone. Magento support via custom API integration (~$4k build cost).
The retention tooling on top of the subscription manager matters as much as the manager itself:
Target churn: under 6%/month for an established skincare DTC. Above 8% means the product fit is wrong or the routine reco from the quiz is off.
Was this helpful?
FDA cosmetic + EU EC 1223/2009 ingredient regulation — how do you handle?
Skincare ingredient regulation is the most under-built piece of every DTC skincare build I audit. The basics:
FDA cosmetic (US) — cosmetic regulation is light. MoCRA (Modernization of Cosmetics Regulation Act, 2022) tightened it: facility registration, adverse-event reporting, safety substantiation file required. Comply by Dec 2024.
EU EC 1223/2009 — banned-ingredients list (~1,300 substances), restricted-use list, mandatory CPSR (Cosmetic Product Safety Report) per SKU, EU Responsible Person required. The CPSR is the time-sink — $300–$1,500 per SKU from a contract toxicologist.
California Prop 65 — warning-label required for ~900 substances. Different ingredient list from EU EC 1223. Plenty of K-beauty SKUs sold in Korea are Prop 65 flagged in California.
FDA drug (US) — SPF is a drug, not a cosmetic. OTC Monograph compliance: specific actives, specific concentrations, specific labeling. SPF SKUs need separate workflow from cosmetic SKUs.
UK / Australia / Canada / Japan / Korea — each has its own ingredient list. Korea’s KFDA is closest to Japan’s; UK post-Brexit diverged slightly from EU; Canada (Health Canada) has its own Cosmetic Ingredient Hotlist.
Magento implementation: per-region SKU visibility rules. The same product hides in California if a Prop 65 ingredient is flagged. Custom attribute region_blocklist drives the rule. Mismatching is how you get a CARB letter or a class action. Worth getting right.
Was this helpful?
Multi-region — US vs EU vs Korea, different ingredient bans?
Yes — and this is where Magento beats Shopify by a wide margin for skincare specialty.
EU (EC 1223/2009) — ~1,300 banned, ~250 restricted-use. Strictest market.
Korea (KFDA) — closer to EU but allows some UV filters EU bans. Methylene-bis-benzotriazolyl tetramethylbutylphenol is the classic example: OK in Korea, banned in EU since 2024.
Japan (MHLW) — closer to Korea. Allows ~30 UV filters US FDA doesn’t yet (US FDA is famously slow on sunscreen approvals).
Australia (TGA) — closer to EU, but has its own AICIS chemical inventory.
Store view per region — us, eu, uk, au, kr, jp. Each gets its own catalog visibility rules.
Custom attribute allowed_regions — multi-select of region codes. A SKU containing methylene-bis-benzotriazolyl tetramethylbutylphenol gets kr,jp only. EU store view hides it natively.
Geo-routing at the CDN level — Cloudflare worker routes traffic to the correct store view based on IP. Customer can override but defaults are sane.
Shopify Markets shares the catalog — you can’t hide a SKU per-market without Liquid scripting and the SKU still indexes in Google for the wrong country. Magento hides at the store-view level natively, no JS hack.
Was this helpful?
Sephora-style sample + GWP (gift-with-purchase) at PDP — doable?
Yes — and skincare conversion lift on sample selection at PDP runs 12–22%. The Sephora pattern is the gold standard. Three implementation options:
Magento native “related products” + custom widget — for the simplest case (pick 1 free sample from a curated list). Cheapest path; ~$1.5k to build. The reco logic can pull from the customer’s quiz answers so the samples are personalised.
Aheadworks Free Gift ($199–$399 one-time) — cart-rule based GWP. Customer hits $50, picks a free 5ml deluxe sample from a list of 4. Native admin UI for marketing team.
Custom Magento module — tiered samples ($30 spend → 1 sample, $75 → 2 samples + tote, $150 → 3 samples + tote + brush). ~$4k–$8k to build. The pattern Sephora and Ulta both use.
Inventory mechanics: samples are 0-priced SKUs with separate stock counts. Auto-deplete on order; trigger reorder cron when sample stock drops below threshold (samples run out fast and angry customers complain). Cost-of-goods on samples is real — assume $0.40–$2.50 per sample, write it into the order P&L not the marketing budget.
GWP (gift-with-purchase) trigger logic: above $X, free deluxe-size moisturizer added automatically. Show the GWP visually in cart with “your free gift unlocked” messaging — this is the conversion lever, not the gift itself.
Bonus: sample-to-full-size conversion tracking. Tag the customer with which sample they got, trigger Klaviyo “loved your sample? get the full size” flow at day-10. Converts at 8–15%.
Custom enterprise: quoted in 24h, multi-week engagement. Adds Rx-handoff (Curology / Apostrophe / Dermatica integration: +$8k–$25k), multi-brand K-beauty / J-beauty portals (+$3k–$8k per added brand), B2B + DTC split (+$8k–$25k), multi-region with different ingredient bans (+$6k–$15k).
Ongoing: $1.5k–$5k/mo retainer for through-quarter ops (quiz iteration, subscription churn tuning, compliance audits, new brand onboarding).
Credentials I’ll show on the call:
Adobe-Certified Magento + Hyvä developer — 8 years on the platform, certified on Magento 2 architect track.
7+ years of beauty + skincare DTC builds across the US, EU, and Asia.
Public Upwork reviews (link on the page), GitHub, and 2–3 case-study walk-throughs of skincare/beauty stores I’ve shipped.
$25/hr is the canonical rate. The fixed-fee audit and build numbers above are real, not anchoring. If your project doesn’t fit cleanly into the audit / build / custom buckets, I’ll quote a custom scope in 24 hours after the call.
Was this helpful?
Edge cases — single-brand house (Drunk Elephant only) vs full multi-brand skincare retailer?
Two very different architectures.
Single-brand house (e.g. Drunk Elephant, Sunday Riley, Tatcha, COSRX, Beauty of Joseon — all running their own DTC). Architecture priorities:
One brand identity, one Magento website. No multi-website complexity.
Quiz funnel highly tuned to your brand’s SKU range — not a generic skincare quiz.
Subscription manager + replenishment central. 60%+ of revenue.
International expansion via store-view per region (US / EU / UK / AU / Canada).
Often direct partnership with Sephora / Ulta / Dermstore for retail distribution — Magento is the DTC channel, not the only channel.
Budget: $15k–$50k typical build, 6–12 weeks.
Full multi-brand skincare retailer (e.g. Dermstore, Credo Beauty, BeautyBay, Asos Face + Body, Cult Beauty, niche US K-beauty resellers). Architecture priorities:
Multi-website Magento (one storefront per featured brand) OR single storefront with strong brand taxonomy.
Wholesale ingestion from brand suppliers via PIM (Akeneo, Pimcore, Plytix) — ingredient data needs to be syndicated, not hand-typed.
Ingredient + concern filter is non-negotiable — customer comes for the variety, needs the filter to navigate.
Cert flags critical — COSMOS / EWG / Leaping Bunny become a filter that 30% of buyers use first.
Subscription auto-ship only on house-brand SKUs typically (or with brand-partner agreement).
Multi-region with different ingredient bans is the default, not the edge case.
Budget: $50k–$200k typical build, 12–24 weeks. B2B layer for brand-supplier portals adds another $25k–$60k.
Both fit Magento. The retailer model is where Shopify falls over (multi-website, PIM, 30+ ingredient facets, multi-region bans) and Magento is the obvious choice. The single-brand model fits both — pick Magento when subscription share >40%, Rx-handoff is in the roadmap, or international expansion is on the 12-month plan.
Was this helpful?
Request a quote
I'll reply within 2-4 hours business with a written quote and timeline.