Case study · Furniture & home furnishings
CABA Design — Shopify to shop floor and 3PL on Odoo 18
How TechUltra made Odoo 18 Enterprise the operations backbone for CABA Design — a direct-to-consumer home-furnishings group — so a single order runs from Shopify checkout through make-to-order manufacturing, US and China third-party logistics, multi-carrier shipping, and after-sales, without leaving the ERP.
- Anabei
- Chicory Home
- Diorama Living
- Inside Weather
- Numi Studio
- Platform
- Odoo 18 Enterprise
- Industry
- Furniture & home furnishings (DTC)
- Market
- United States, with China inbound supply
- Model
- Shopify storefront + make-to-order + 3PL
Last updated
Overview
What TechUltra delivered
One Odoo 18 Enterprise platform spanning commerce intake, order control, the product master for a made-to-order catalog, sale-line manufacturing, US and China 3PL, multi-carrier shipping, inbound containers and landed cost, cross-docking, after-sales, and forward inventory projection — delivered as a set of maintainable custom applications rather than one monolithic customization.
About CABA Design
CABA Design Co. is a California-based house of direct-to-consumer home brands — Anabei, Chicory Home, Diorama Living, Inside Weather, and Numi Studio — spanning machine-washable sofas from $699, washable weatherproof outdoor seating, custom California-made furniture, and shelving. The group describes its model as building "sustainable, high quality furniture brands while giving customers unparalleled choice in design through our customization and modularity," and runs operations teams in both the USA and Asia.
One order, end to end
- Shopify Checkout & payment
- Sale order Holds, zip routing
- Make or pick Sale-line MO or 3PL
- Ship Parcel, white-glove, freight
- After-sales Return, refund, credit note
Challenges to solve
Eight problem areas shaped the build. They are the pattern a DTC brand hits once it both manufactures and fulfills through third parties — not an audited account of any one month at CABA Design.
-
Split systems
Checkout and payments live in Shopify. Manufacturing, warehousing, and the general ledger live in the ERP. Without a bridge, the two halves of the same order are reconciled by hand.
-
Re-keying risk
Web orders, refunds, and payment disputes copied manually into operations is where money and orders go missing — and it scales badly with volume.
-
Wrong release to the floor
Incomplete or risky orders still reach the plant or the 3PL. Stopping production on one line without cancelling the whole sale is not something a standard connector can do.
-
Routing complexity
Destination zip code and service level together decide which warehouse ships and which carrier is booked. That logic belongs on the order, not in a spreadsheet.
-
Generic manufacturing
Made-to-order furnishings can't be planned as anonymous stock. Vanilla work orders don't model nesting or CNC work driven by a specific sale line.
-
3PL visibility
Standard picking states — ready, done — don't describe what a US or China warehouse floor actually does across pick, pack, print, pull, and ship.
-
Inbound blind spots
Container arrivals and landed cost sit apart from 3PL receipts, so freight and duty post against the wrong quantity and inbound stock is invisible until it lands.
-
After-sales lag
A high mix of cancel, return, replace, and refund against the original web order — finishing in one system and never in the other.
TechUltra's solution approach
Odoo owns operations and finance. Shopify stays the storefront. The deliberate decision was not to rebuild the webshop in Odoo — the customer-facing experience already worked, and the problem was everything that happened after the customer paid.
- Odoo 18 Enterprise as the system of record for operations and finance
- A hub, not a new webshop — Shopify stays the customer-facing storefront
- One order record carrying hold, make, 3PL, ship, and credit note
- Service-aware fulfillment — parcel, white-glove, and freight rules by product and zip
- Manufacturing driven from the sale line, with nesting and batch work orders
- A 3PL control tower with its own status process, pick lists, and in-stock checks
- Carrier booking and tracking from the delivery, inside the ERP
- Customer-service requests that create warehouse and accounting documents
Architecture — layered on Odoo 18 Enterprise
- Operations UX & labels Backend, barcode sessions, pick and container labels
- Carrier desk & CS intake Parcel, express, freight, final mile; service requests
- Custom commerce · 3PL · manufacturing Shopify, order desk, containers, cross-dock, after-sales, projection
- Odoo 18 Enterprise Sales, Inventory, Delivery, Manufacturing, Purchase, Accounting
One sale order, five destinations
Sale order
Created from the Shopify checkout
-
Order desk
Fraud and line holds, zip routing
-
Manufacturing
Sale-line MO, nesting, batches
-
3PL
US and China status, pick lists
-
Carriers
Parcel, express, freight, final mile
-
After-sales
Return, refund, replace, credit note
Functional & technical scope
Ten connected domains, from web checkout through to forward planning.
Capability matrix
| Domain | Capabilities |
|---|---|
| Commerce | Shopify orders, payments, refunds, disputes, gift cards, SKU mapping |
| Order desk | Fraud hold, line-level production holds, zip-based 3PL and carrier assignment, expedite and reroute |
| Product | Swatch and swatch kits, packaging and bins, white-glove rules, lead time, weekly capacity |
| Manufacturing | Manufacturing order from the sale line, nesting and renesting, work-order batches, commitment dates |
| 3PL warehouse | US and China status process, pick lists, merged batch picking, available-in-stock checks |
| Shipping | Rate, book, and track parcel, express, freight, and final mile from the delivery |
| Inbound | Containers, China in-transit, cross-dock, landed cost, multi-level purchase approval |
| After-sales | Cancel, refund, return, replace, credit notes, delivery claims |
| Planning | Confirmed move register, finished-goods and component projection by location |
| Finance | Typed credit notes, payment capture, chargeback follow-up, landed-cost posting |
Technology foundation
- Odoo 18 Enterprise — Sales, Inventory, Delivery, Manufacturing, Purchase, Accounting, Stock Barcode, Payments
- Custom applications for commerce intake, order control, 3PL, containers, cross-dock, after-sales, and inventory projection
- Connected systems at product level — Shopify for the storefront, ShipStation, FedEx, and freight carriers for fulfillment
- Scheduled jobs for order ingest, holds, 3PL status, tracking, projection, and after-sales processing
- Warehouse documents — US and China pick lists, merged batch lists, product, location, and container labels
- A background job queue for inventory-projection rebuilds
There is no Odoo webshop or customer portal storefront in this build. Shopify remains the customer-facing channel throughout.
Feature deep-dives
Ten capability areas, each tied to a business problem and the work TechUltra delivered.
Shopify Order, Payment & Dispute Intake
Web commerce becomes an Odoo sales order — including the money movement.
Business problem
- Orders sit in Shopify while production and the warehouse sit in the ERP
- Refunds and payment disputes are easy to miss in the general ledger
- Gift cards and multi-store catalogs don't map cleanly to standard Odoo products
What TechUltra delivered
- Store instances mapped to Odoo locations and carriers, so the storefront a customer bought from decides where the order ships from
- Orders, order updates, payments, and disputes processed into sales and accounting documents
- Fulfillment tracking posted back toward Shopify so the customer sees it where they bought
- Gift-card records held alongside the web order, and SKU mapping between Shopify products and Odoo variants
| Capability | Role | Odoo area |
|---|---|---|
| Order create and update | Operations | Sales |
| Payment and refund capture | Finance | Accounting · Payments |
| Dispute / chargeback follow-up | Finance | Accounting |
| Gift cards | Commerce, finance | Sales |
| SKU mapping | Merchandising | Product |
Order Control — Holds, Routing, Expedite
Stop, steer, or rush an order without leaving Odoo — and without cancelling the sale.
Business problem
- Risky or incomplete orders still reach the plant or the 3PL
- Destination zip should decide warehouse and carrier, not a spreadsheet
- Rush jobs and emergency reroutes happen in chat instead of on the order
What TechUltra delivered
- A fraud flag and customer blacklist on the sales order
- Line-level production holds with a reason and a scheduled release date — one line stops, the order survives
- Supply-chain region, zip, and carrier assignment on the order, including freight zip types
- Operations actions to expedite or reroute fulfillment after the order is placed, plus a lock group for controlled editing
| Capability | Role | Odoo area |
|---|---|---|
| Fraud hold and blacklist | Order desk, finance | Sales |
| Line hold and release | Planning, customer service | Sales |
| Zip to 3PL / carrier | Operations | Sales · Delivery |
| Expedite and reroute | Operations | Sales · 3PL |
Furnishings Product Master
Swatch, service level, packaging, and capacity carried on the SKU itself.
Business problem
- Standard Odoo products don't carry swatch, white-glove, or CNC file data
- Packaging and bin rules live in warehouse tribal knowledge
- Weekly production capacity is planned outside the ERP
What TechUltra delivered
- Swatch codes and swatch-kit handling for a made-to-order fabric catalog
- Parcel versus white-glove service on the product, including force-white-glove rules
- Bins, pallets, delivery packages, and box dimensions held against the product
- Lead-time lines, weekly capacity records, and 4×4 product barcode labels
| Capability | Role | Odoo area |
|---|---|---|
| Swatch and CNC file | Merchandising, plant | Product · Manufacturing |
| White-glove rules | Operations | Product · Delivery |
| Packaging and bins | Warehouse | Inventory |
| Weekly capacity | Planning | Product |
Sale-Line Manufacturing & Nesting
The customer's order becomes shop-floor work, not an anonymous stock replenishment.
Business problem
- Made-to-order furnishings can't be planned as anonymous stock manufacturing orders
- Cut-part and CNC work needs nesting, not only a bill of materials
- Plant dates have to stay aligned with the promise date the 3PL is working to
What TechUltra delivered
- A manufacturing order raised from the sale line, carrying attributes, lot, storage location, and labor cost
- Nesting and renesting with recorded reasons, so a re-cut is traceable rather than invisible
- Work-order batching, block events, and operation tickets for the floor
- A scheduled update of manufacturing commitment dates, and plant-facing inventory reporting for the China side
| Capability | Role | Odoo area |
|---|---|---|
| Manufacturing order from sale line | Planner | Manufacturing · Sales |
| Nesting and batch work orders | Shop floor | Manufacturing |
| Commitment dates | Planning, 3PL | Manufacturing |
| Operation tickets | Supervisors | Manufacturing |
US & China 3PL Control
A warehouse status process layered on top of standard Odoo pickings.
Business problem
- Standard ready / done picking states don't describe 3PL pick-pack-ship
- China and US floors need different documents against the same order record
- Promised ship dates ignore whether components are actually at the 3PL
What TechUltra delivered
- A 3PL status path running from ready through pick, receive, print, pull, ship, and done
- A dedicated 3PL application — order lists, local tracking, vendor receipts, and manifests
- Pick lists for standard and China work, plus merged batch lists for grouped picking
- A daily available-in-stock check across finished goods and bill-of-materials components, with carrier status updates on the global 3PL flow and barcode pick sessions on the floor
| Capability | Role | Odoo area |
|---|---|---|
| 3PL status board | Warehouse, operations | Inventory · Sales |
| Pick lists and batch print | 3PL floor | Inventory |
| Available in stock | Planning | Inventory · Manufacturing |
| Barcode pick session | 3PL floor | Stock Barcode |
Multi-Carrier Shipping Desk
Rate, book, and track from the delivery — parcel, express, freight, and final mile.
Business problem
- Labels are booked in carrier portals while the ERP only stores a pasted tracking number
- The same catalog ships parcel, express, and freight depending on the item and the address
- Return labels for customer-service cases are a second manual process
What TechUltra delivered
- Rate, book, and tracking retrieval from the delivery through ShipStation
- FedEx labels, address validation, outbound tracking, and return labels
- Freight booking with claim fields, plus final-mile quoting, booking, and proof-of-delivery retrieval
- Carrier zone assignment derived from the destination zip, and a unified tracking history on the sales order
| Capability | Role | Odoo area |
|---|---|---|
| Parcel labels | Warehouse | Delivery |
| Express and return labels | Warehouse, customer service | Delivery |
| Freight and final mile | Operations | Sales · Delivery |
| Zone from zip | Operations | Delivery |
Inbound Containers & Landed Cost
Ocean, air, and ground inbound tied to 3PL receipts and to inventory value.
Business problem
- China and US inbound is tracked in a spreadsheet rather than against the 3PL order
- Freight and duty post to the wrong receipt quantity
- Purchase spend needs approval before it becomes inbound stock
What TechUltra delivered
- A container document covering water, air, and ground shipments, including China covers
- In-transit processing that updates the related 3PL work as a container moves
- Container tracking with load, ship, and arrival dates
- Landed cost applied on the 3PL receipt with a dedicated costing document, plus multi-level purchase approval upstream
| Capability | Role | Odoo area |
|---|---|---|
| Container record | Logistics | Inventory · Purchase |
| China in-transit | 3PL, planning | Inventory |
| Landed cost | Finance | Inventory · Accounting |
| Purchase approval | Procurement | Purchase |
Cross-Dock to Open Orders
Inbound stock can ship straight out without a full putaway cycle.
Business problem
- Inbound sits in putaway while customer orders wait for exactly that SKU
- Deciding which waiting orders can be cross-docked is a manual meeting
What TechUltra delivered
- A cross-dock document listing potential orders, selected orders, and the inbound lines that cover them
- A status path from draft through post to done
- Outbound label generation for the selected orders as part of posting
| Capability | Role | Odoo area |
|---|---|---|
| Potential order list | Planning | Inventory · Sales |
| Cross-dock post | Warehouse | Inventory |
| Outbound labels | Warehouse | Delivery |
After-Sales — Return, Refund, Replace
Customer-service requests finish as warehouse and accounting documents.
Business problem
- Agents work in a ticket tool; the warehouse and finance never see the complete request
- Refunds can over-refund shipping or tax when prior credits are ignored
- Replacements and delivery claims are tracked in email
What TechUltra delivered
- Request types for cancel, refund, return, replace, and order modification, raised against the original web order
- Return pickings, return boxes, and carrier return labels generated from the request
- A Shopify refund and/or an Odoo credit note — including cases where no material comes back
- Replacement-order linkage, delivery claims with internal status and freight-claim fields, and exchange handling on return accounting
| Capability | Role | Odoo area |
|---|---|---|
| Request intake | Customer service | Custom application |
| Return logistics | Warehouse | Inventory · Delivery |
| Refund and credit note | Finance | Accounting · Commerce |
| Replace and claims | Customer service, operations | Sales |
Inventory Projection
Forward cover for finished goods and components at 3PL locations.
Business problem
- Live on-hand stock doesn't show China lead time or the next sixty days of component cover
- Buyers reconcile three spreadsheets — demand, inbound, and 3PL stock
What TechUltra delivered
- A confirmed stock in/out register by day, warehouse, and product
- Finished-goods and component projection combining demand, lead time, and remaining days of cover
- A daily rebuild of the forward component stock view by parent warehouse location
| Capability | Role | Odoo area |
|---|---|---|
| Confirmed move register | Planning | Inventory |
| Finished-goods / component projection | Planning, buyers | Inventory · Manufacturing |
| Forward daily view | Planning | Inventory |
Operational transformation
A qualitative before-and-after. The "before" is the typical pre-platform pattern for a brand that both makes and 3PLs from the same order — not an audited baseline, and no time-saved or error-rate figures are claimed.
-
Before
Shopify and the ERP updated separately
After
Web order, payment, and dispute land in Odoo as documents
-
Before
Holds managed in chat or spreadsheets
After
Line-level holds and zip routing carried on the sale order
-
Before
Manufacturing detached from the web order
After
Manufacturing order from the sale line, with nesting and dates
-
Before
3PL status lived only in the warehouse tool
After
US and China status process, pick lists, and in-stock checks in the ERP
-
Before
Labels booked in carrier portals
After
Parcel, express, and freight rated and booked from the delivery
-
Before
Containers and landed cost off-system
After
Container to 3PL receipt to landed cost on the right quantity
-
Before
Returns and refunds finished in one system
After
One request producing the return, the refund, and the credit note
-
Before
Component cover planned in Excel
After
Projection and forward component cover by 3PL location
Business value
-
One operational record
Checkout, make, move, ship, and money all attach to the same order.
-
Controlled release
Production or shipping can be stopped on a line without cancelling the customer's sale.
-
Destination-aware fulfillment
Warehouse and carrier follow from the destination zip and the service level the product requires.
-
Plant tied to the order
Nesting and work-order batches originate from the sale line, so the floor knows whose furniture it is cutting.
-
3PL visibility
Status, pick lists, and available-in-stock checks span both the US and China operations.
-
Shipping inside the ERP
Labels and tracking without a second system of record for fulfillment.
-
Inbound costing
Container cost lands on the receipt that actually updates 3PL stock.
-
Closed after-sales
Return, refund, replace, and credit note complete together rather than in two systems.
Why CABA Design chose TechUltra
- Beyond order import — Shopify through manufacturing, 3PL, carriers, and refunds
- Furnishings literacy — swatches, white-glove delivery, nesting, and China inbound treated as first-class, not add-ons
- 3PL depth — a status process, pick lists, available-in-stock checks, and separate US and China paths
- A carrier desk in the ERP covering parcel, express, freight, and final mile
- After-sales completion — a service request through to return, refund, replacement, and credit note
- Planning, not only transactions — projection and forward component cover
- Modular delivery — commerce, warehouse, plant, and finance built as maintainable applications
- Honest scope — we don't sell inactive connectors or unverified results
Related reading: our Odoo integration service, the e-commerce industry page, and third-party logistics on Odoo.
Similar use cases
| Profile | Parallel from CABA Design |
|---|---|
| DTC furnishings and furniture brands | Swatch, white-glove, sale-line manufacturing |
| Shopify brands that also manufacture | Web order to manufacturing order to ship |
| US brands with China inbound | Containers, in-transit, landed cost |
| 3PL or hybrid warehouse operations | Status board, pick lists, in-stock checks |
| Multi-carrier shippers | Parcel, express, and freight booked from Odoo |
| High return / replacement volume | Service request to credit note and storefront refund |
| Split make-and-fulfill networks | One order spanning plant and 3PL |
| Planning with long inbound lead times | Component projection by location |
Client profile — sources
Company facts in the About CABA Design panel come from the client's own published material. Delivery detail comes from TechUltra's engagement record.
- CABA Design Co. — company site
CABA Design Co.
Positioning, mission statement, leadership, and US / Asia operations roles.
- CABA Design Co. — Our Brands
CABA Design Co.
Brand roster and entry price points — Anabei, Chicory Home, Diorama Living, Inside Weather, Numi Studio.