$75M skincare brand: DTC + Sephora + Amazon + 3PL on NetSuite OneWorld.

Anonymized engagement summary. Identifying details have been generalized. Pending written approval before naming the client.

The shape

  • Industry: Skincare / clean beauty
  • Revenue: $75M
  • Channels at start: Shopify DTC, Amazon Vendor Central, one 3PL (ShipBob)
  • Channels at end: Same plus Sephora retail (newly launched)
  • Stack at start: QuickBooks Online + Cin7 + spreadsheet apparatus for retailer compliance and lot tracking
  • Stack at end: NetSuite OneWorld with SuiteCommerce DTC, SPS Commerce for Sephora EDI, Celigo for Amazon Vendor Central, ShipBob integration

Why they moved

The triggering event was a Sephora launch on the calendar. Three months out, ops realized the existing stack would not survive retailer compliance — chargebacks already ran 1.8% on Amazon and would have run higher with Sephora’s tighter ASN timing.

Scope

OneWorld with 2 subsidiaries (US parent + Canadian sub). SuiteCommerce for DTC. SPS Commerce for Sephora EDI. Celigo for Amazon VC. Custom integration to ShipBob. Advanced Inventory with lot tracking and FEFO picking. Recall workflow design. Pricing waterfall (MSRP, Sephora cost, Amazon cost, distributor cost) modeled in NetSuite.

5-month implementation. Discovery 3 weeks, Design 4 weeks, Build 9 weeks, Test/UAT 3 weeks, Cutover + Hypercare.

Approach

Discovery was unusually channel-heavy. Week 1 was channel-by-channel order flow walkthroughs. Week 2 was the SKU rationalization audit and pricing waterfall design. Week 3 was integration architecture and lot/recall design.

The biggest design decision was where the pricing waterfall lived. Initial inclination was to keep it in spreadsheets and feed prices to NetSuite per channel. We pushed back — that’s the architecture they were already running and it was breaking. The waterfall got modeled in NetSuite as price levels on the item record with channel-specific rules. Margin reporting per SKU per channel actually ties out now.

SKU rationalization happened pre-cutover, not post. 1,200 SKUs at audit, 720 at cutover. Cut variants that were channel-specific repeats, cut SKUs with 12-month no-ship history, and consolidated pack-size variants where retailers accepted alternates.

Outcomes

MetricBeforeAfter (month 6)
Inventory sync lag3 daysReal-time
Retailer chargebacks1.8%0.14%
SKU count1,200720
Sephora launchAt riskLive, on time

What worked

  • Sephora launch as forcing function. Hard external deadline kept scope honest. No “let’s add this too” expansions during Build.
  • SKU rationalization pre-cutover. Saved months of post-go-live cleanup. The line we drew (12-month no-ship, channel-specific variants) was defensible to merchandising.
  • Pricing waterfall in NetSuite, not in spreadsheets. Took 2 weeks longer in Design but eliminated a recurring monthly reconciliation that would have outlived us by years.

What we’d do differently

  • Recall workflow tabletop earlier. We designed the recall workflow during Build. Operations did not exercise it until UAT. A tabletop in Design would have surfaced 2–3 small workflow gaps earlier.
FAQ

Frequently asked questions

01 What was wrong with QuickBooks + Cin7?
Three things. (1) Inventory sync between Cin7, Shopify, and Amazon ran on a 3-day lag — Sephora orders were being committed against stock that was already gone. (2) Chargebacks averaged 1.8% of retail-channel revenue. (3) Lot tracking was happening on a side spreadsheet, which made the upcoming SKU expansion (entering Ulta) operationally risky.
02 Why NetSuite over staying on Cin7 + adding Sephora EDI?
Two reasons. (1) Cin7 is a strong inventory platform but not a strong financials platform — finance was already running a parallel reconciliation between Cin7 and QuickBooks. (2) The brand's growth trajectory and channel expansion plan (3 retailers, 2 international markets within 24 months) was beyond Cin7's mid-market design point.
03 What did SKU rationalization look like?
Pre-migration audit found 1,200 active SKUs of which 340 had not shipped in 12 months and 180 were channel-specific variants that could be consolidated. Cut to 720 SKUs at cutover. Cleaner reporting day one and a much shorter item master to manage during channel expansion.