Warehouse + Commerce Combo

Pairing your warehouse with B2B storefront ordering for end-to-end commerce.

Chapter 1 — Why This Combo Exists

When customers can place orders themselves, you stop being a data-entry shop. Commerce OS gives them the storefront; Warehouse OS does the actual work. The combo is mandatory because Commerce OS literally depends on Warehouse OS.

Every order placed on the storefront becomes a fulfillment order in your warehouse — same queue your operators already work.

Chapter 2 — Roles in This Combo

RoleWhat's different in the combo
company_adminMarks SKUs catalog-visible, configures buyer profiles, sets per-buyer pricing.
operations_managerSees orders flowing in from buyers automatically — no manual entry.
operatorPicks/packs/ships buyer orders the same way as any other fulfillment order.
customer_buyer / customer_admin / customer_ship_nowNow actually meaningful — they can place real orders.

Chapter 3 — Linking the Catalog to the Item Master

The customer-facing catalog isn't separate data; it's a view onto your Item Master with the right toggles set.

Step-by-step

  1. Open a SKU at /console/business/wms/item-master.
  2. Tick Visible in Catalog.
  3. Set a customer-facing Display Name if it should differ from the internal name.
  4. Optionally set a Public Price (used when a buyer doesn't have a contracted price).
  5. Save.

Repeat for every SKU you want orderable. Catalog visibility can also be filtered per buyer profile (Chapter 4 of the Commerce OS guide).

Inventory thresholds

You can hide a SKU from the catalog when stock drops below a threshold to prevent over-selling. Configure on the SKU: Catalog Min Available. If available_units < threshold, the SKU shows "out of stock" in the storefront.

Chapter 4 — Order-to-Fulfillment End-to-End

StepWhoWhereWhat happens
1. Browsecustomer_buyer/console/customer/catalogSees catalog filtered by buyer profile.
2. Add to cartcustomer_buyer(in-page cart)Quantities + ship-to.
3. Submit ordercustomer_buyercheckoutTrenvar creates a fulfillment order with owner_customer_id = buyer.
4. Pick task generatedsystem/console/operator/fulfillmentAppears in pick queue.
5. Pickoperator/console/operator/fulfillmentStandard pick flow.
6. Pack + labeloperator/console/operator/fulfillmentStandard pack and label.
7. Status updatesystem/console/customer/ordersBuyer sees status updates live.
8. Shippedsystemcustomer email + portalTracking number + carrier link emailed.
No re-entry
Buyer orders flow into the same /console/operator/fulfillment queue your team already works. There's no separate "buyer orders" workflow.

Chapter 5 — Inventory Visibility from the Customer Side

Customers can see their own stock — but only their own.

If your tenant has 3PL OS too, the inventory at /console/customer/inventory shows the customer's owned stock. Without 3PL OS, the catalog screen still works but personal-stock inventory views might be limited.

OS comboCustomer's inventory view
Warehouse + Commerce onlyCatalog only — what they can order. No "their" inventory because there isn't multi-customer ownership.
Warehouse + Commerce + 3PLFull per-customer inventory + catalog + orders.

Chapter 6 — Ship-Now Wizard Handoff

For one-off shipments without an order, the Ship-Now wizard gives a buyer a label.

Ship-Now is gated by OS combination
Ship-Now is enabled when the tenant has Warehouse OS but does not have Transport OS or Air Cargo OS. This is intentional: if you have Transport OS, dispatch jobs replace ad-hoc labels.

Wizard flow

  1. Buyer opens /console/customer/ship-now.
  2. Picks ship-from address (warehouse default).
  3. Picks ship-to (saved address or new).
  4. Carrier + service.
  5. Parcel details (weight, dimensions, contents).
  6. Submit. Trenvar calls the carrier API → returns label PDF + tracking.
  7. Optionally creates a tiny fulfillment record for billing.

Chapter 7 — Shopify-to-Warehouse Pipeline

Buyers with their own Shopify store can connect it. Their Shopify orders flow into your warehouse automatically.

Customer setup

  1. Buyer opens /console/customer/integrations.
  2. Clicks Connect Shopify.
  3. Enters Shopify store URL.
  4. Approves the OAuth scopes.
  5. Connection shows as Connected; click Sync Now for an initial pull.

What happens on each sync

  • Trenvar pulls all paid orders since the last sync.
  • For each Shopify order: matches SKUs to your Item Master, creates a fulfillment order with owner = the buyer's customer record.
  • Order appears in your operator queue.
  • Status updates flow back to Shopify (mark as fulfilled, add tracking).
SKU mapping required
If a Shopify order has a SKU you don't have in Item Master, sync flags it as an exception. Either create the SKU or map it to an existing one.

Chapter 8 — Common Pitfalls

"Buyer doesn't see anything in the catalog"

  • SKUs aren't marked Visible in Catalog.
  • Buyer profile catalog visibility filter excludes them.
  • Stock is below catalog threshold for everything.

"Order placed but didn't appear in operator queue"

  • Customer record's portal access for ordering is off.
  • SKU mapping mismatch (Shopify case).
  • Buyer profile is suspended.

"Buyer sees the wrong price"

  • Buyer profile pricing override is set wrong.
  • Public price on the SKU is stale — update.
  • Buyer logged in but cached an old session — sign out and back in.

"Ship-Now button is missing"

  • Tenant has Transport OS or Air Cargo OS on, which disables Ship-Now by design.
  • Buyer's role is missing customer.orders.create.

Chapter 9 — Full Worked Example: Buyer Order to Shipped in 4 Hours

A customer_buyer at Acme Corp places an order on the storefront. Operator picks/packs/ships. Buyer sees status updates throughout. Walkthrough with concrete timestamps.

Day 0, Hour 0 (10:00) — Acme's buyer signs in

  1. Lisa, customer_buyer at Acme, opens www.trenvar.com/your-tenant/login.
  2. Lands on /console/customer/catalog (her role's default).
  3. Browses the catalog — filtered by Acme's buyer profile (apparel SKUs only, contracted prices).

Hour 0:15 — Lisa places the order

  1. Adds 12 × SKU-BLUE-SHIRT-M, 8 × SKU-RED-SHIRT-L to cart. Total $580 at Acme's contracted prices.
  2. Clicks Cart → Proceed to Checkout.
  3. Picks default ship-to address (Acme's NY warehouse, pre-loaded by you).
  4. Enters PO Number "ACM-PO-2026-512".
  5. Clicks Submit Order.
  6. Confirmation: "Order O-20260503-001 received."

Hour 0:16 — order lands in operator queue

  1. Trenvar creates fulfillment order FO-20260503-001 with owner=Acme, recipient=NY warehouse, lines from Lisa's cart.
  2. Pick task auto-generated. Appears in /console/operator/fulfillment Pick tab.

Hour 1 (11:00) — operator picks

  1. Operator Maria sees the new pick task (priority normal, age <1h).
  2. Walks the pick path. Scans HU + SKU at each stop. Picks 12 + 8.
  3. Click Complete Pick. Lisa's portal at /console/customer/orders updates: status → picked.

Hour 2 (12:00) — pack + label

  1. Maria moves the order to Pack tab.
  2. Packs into 1 carton: 20 shirts, 4.2 kg, 40×30×20 cm.
  3. Click Complete Pack. Lisa's portal: status → packed.
  4. Generate Shipping Label → FedEx Ground. Tracking number 1Z999... received from carrier.
  5. Maria prints label, sticks it on the carton, hands to FedEx pickup.
  6. Click Mark Dispatched. Lisa's portal: status → dispatched with FedEx tracking link.

Day 0, Hour 4 (14:00) — Lisa watches it leave

  1. Lisa logs in again. Sees order status with timeline: open 10:15 → picked 11:08 → packed 11:52 → dispatched 12:14.
  2. Click the FedEx tracking link → carrier's site shows "Picked up by carrier".

Day 2 — delivered

  1. FedEx delivers the carton at Acme's NY warehouse.
  2. Lisa's portal status updates from carrier tracking: delivered.

End of month — invoiced

  1. Acme's monthly invoice includes:
    • Order Fulfillment line: $1.50 per order × 14 orders this month = $21.00.
    • Shipping Label line: $0.20 × 14 = $2.80.
    • Storage accrual lines from /console/business/storage/accrual.
    • Tax.
  2. Lisa or her AP team pays via Stripe Pay Now in the portal. Invoice flips to Paid.

Customer self-served end-to-end. Your team did pick/pack only. No phone calls, no manual entry, no chasing.

Appendix A — Glossary (Combo-Specific)

Cross-cutting terms specific to Warehouse + Commerce. For per-OS terms, see the Warehouse OS and Commerce OS guides' glossaries.

Buyer order — A customer-submitted order via the storefront. Lands in your fulfillment queue with Source = customer_portal.

Catalog-to-warehouse mapping — The connection between a Visible-in-Catalog SKU shown to a buyer and the actual Item Master record + inventory the warehouse picks against.

Self-service ordering — When customers place orders themselves through the catalog/cart instead of you entering them manually.

Shopify pipeline — Shopify orders → OAuth-connected sync → fulfillment orders in your warehouse → tracking pushed back to Shopify on dispatch.

SKU mismatch / Sync exception — When a Shopify order has a SKU that doesn't exist in your Item Master. The order can't auto-fulfill until you map or create the missing SKU.

Trenvar Support
Email info@trenvar.com  ·  www.trenvar.com

End of Warehouse + Commerce Combo Guide  ·  v1.0  ·  May 2026