This article follows one custom rug through CommerceServer, from the quote to the purchase order and delivery to the warehouse. It builds on One B2B job from quote to purchase order, which covers the pricing, charges and invoice for a whole job, and on What software for a flooring or rug wholesaler has to handle. The rug, the mill and the prices here are illustrative.

The example: one rug for a design firm
A designer wants a 12 ft by 15 ft wool rug in a custom color for a client's living room. An overseas mill makes it. The mill charges $52 per square yard, and the design firm buys at a trade price of $85 per square yard.
The rug is 180 square feet, or 20 square yards. At $85 per square yard it sells for $1,700. At $52 per square yard it costs $1,040, a difference of $660 before freight and other costs.
Step 1: Define the rug on the quote
The rep opens a quote for the design firm and creates the custom rug from the quote itself. The form asks for:
- a name and a description
- the style or design code
- the width and length, in feet or inches
- the color and the material
- the mill, the mill's product code for the rug, and the cost with its unit, such as $52 per square yard
- the sell price with its unit, such as $85 per square yard
A few rules keep the record clean. The cost and its unit are entered together, and so are the price and its unit. A custom rug has exactly one mill, and it must be an active vendor. If the rep leaves the product code blank, CommerceServer creates one, and it rejects a code that already exists. The rug is saved in one step: the whole record is saved, or none of it is.
If the rug is close to something already in the catalog, the rep can start from a copy of that product. The original product does not change.
The rug is saved as a product in a Custom Rugs category, tracked in inventory and shipped like any other product. It stays after the quote closes, so the next designer who wants the same rug, or a variation, starts from a complete record.
Step 2: Price it before the mill confirms
Mills can take days to confirm a price for a custom size or color. The rep does not have to guess: the sell price can be left blank while the mill confirms.
A blank price does not mean a free rug. A quote line without a price is marked "price not set", and CommerceServer will not turn the quote into an order until every line has a price. When the rep types in a price that differs from the price list, the line is marked as an override, so a reviewer can see which prices were typed in.
The rep enters the size, and CommerceServer converts it to square yards and prices the line by area.
Step 3: Turn the quote into an order
When the designer approves, the rep converts the quote to a sales order and records the design firm's own purchase order number and payment terms. The quote and the order are the same record, so the rug, its size, its notes and its price are already on the order. CommerceServer will not convert an empty quote or one with a missing price.
After conversion the rug's details are protected. On a sales order only an administrator can change them, and nobody can once the order is finalized. A rep cannot change the size after the designer has approved it.
Step 4: Order it from the mill
From the sales order, the buyer chooses the rug line and the mill. CommerceServer already knows the mill and its cost for this rug. It shows how much of the line still has to be ordered and any purchase order that already covers it. The rug goes onto a new purchase order to the mill, or onto a draft already open for that mill.
The purchase order carries the details from the sales order line: the size, the specifications and the notes. The buyer adds the delivery warehouse, a sidemark for the designer's job, the expected ship date and any special instructions, then prints the purchase order to send to the mill. The purchase order and the sales order link to each other.
A purchase order is a draft until the buyer places it. Placed means you have ordered from the mill. It does not mean the mill has confirmed.
When the buyer places it, CommerceServer creates a record for the rug, marked on order and held for the designer's order line. It stays held for that order unless staff change the hold.
Step 5: Track it until it arrives
Staff record each stage from the mill's notices. When the mill ships, the buyer records the shipment with the expected arrival date and the shipment reference, and the rug moves to in transit. When it arrives, the warehouse receives it into a location with the date received. It is now in stock and still held for the designer's order. It is the same rug record the whole way.

The sales order has its own status: open, converted to an order, paid, fulfilled or voided.
The designer's questions are when the rug ships and when it arrives.
Our client now runs its own custom workflow, custom business rules and custom reporting, all supported in CommerceServer. It never had that in 15 years on Zoho. Every feature and report it asked for was built, plus the B2B portal. How our client left Zoho in one month tells that story.
What staff still do
CommerceServer does not email the purchase order to the mill. The buyer prints it and sends it. It does not record the mill's confirmation, and it does not take shipment updates from the mill or a carrier. Staff enter those from the notices they receive. A quote does not reserve stock; goods are held once there is a sales order.
Check your last custom rug order
Find the last custom rug you sold and follow it through your current system:
- Was the size typed more than once? Does the purchase order match the quote exactly?
- Was the mill's cost known before the designer approved the price?
- Could anyone change the size after the designer approved it?
- Does the purchase order point back to the customer's order?
- When the rug arrived, was it held for that customer, or could it have gone to someone else?
- Could you tell the designer today where the rug is without calling the mill?
If any answer depends on someone's memory or a note on a desk, that is where custom rug orders go wrong.
Show us your last custom rug order
CommerceServer is built, run and continually improved by one accountable team, with the improvement capacity agreed for each engagement. Tell us about your current system, or read how full service works.