Ecommerce for Custom Products in Odoo: Pricing, Parts Lists and Freight

7–10 minutes
1,599 words

Say you sell made-to-measure countertops, cut to size. A customer wants one 1,450 mm wide, in oak, with a rounded front edge. There’s no SKU for that, no price on file and no shipping weight. So somebody works out the price in a spreadsheet, somebody else works out what to cut, and the freight quote waits until both are done.

That’s how many shops run ecommerce for custom products. Can Odoo handle that out of the box? Only partly. Standard Odoo handles products whose options you can list in advance, but it can’t price a custom size the customer types in, or turn that size into a parts list and a shipping weight.

Key takeaways

  • Standard Odoo handles options you can list in advance: variants, flat option surcharges, pricelists, bills of materials and make-to-order.
  • It can’t price from a number the customer types, show fields based on earlier answers, or work out parts and shipping weight from the customer’s dimensions.
  • Apps on the Odoo store each cover one part of this, such as area pricing or formula quantities on a bill of materials.
  • We built one custom Odoo module that turns the customer’s numbers into a price, a parts list and a freight quote.

What standard Odoo handles for custom products

Quite a lot, if your options are a menu. Attributes and variants cover material and finish, and each option can add a flat amount to the price. Pricelists handle discounts, markups on cost and rounding. A bill of materials can change by variant, and with the make-to-order route, confirming a sale creates the manufacturing order. Shipping rules price freight from the weight and volume stored on each product.

If that describes your catalog, you probably need a product configurator, a phantom BOM or Odoo CPQ, not a custom module.

What standard Odoo can’t do for made-to-order products

Every one of those features assumes the product already exists in your catalog. The oak countertop doesn’t.

Odoo lets a customer type in a custom value, but it’s stored as text on the order line. Pricing, manufacturing and shipping all ignore it. The price extra on an option is a fixed amount, so it can’t multiply a width. Pricelist formulas start from the product’s sales price or cost, never from what the customer entered. Bill of materials quantities are fixed numbers. Shipping weight comes from the product record, which has no idea how wide this one is.

We’re not the only ones who’ve hit this. In a thread on the Odoo forum about selling by customer length and width, one company said Odoo doesn’t support it out of the box and that they paid a partner to build it. Their advice was to work out early where you need the dimensions: sales, the web shop, shipping weight, purchasing. They also had to move their minimum and maximum sizes from the product down to each variant.

The custom Odoo module we built

One custom Odoo module. It turns the customer’s numbers into a price, a parts list and the dimensions for a freight quote. The examples below use the countertop.

A pricing formula with conditional logic

The formula does math on the numbers the customer enters, and it handles conditional logic. For the countertop, that could mean a different rate above a certain width, or a different calculation for a rounded edge.

Fields that show up only when they apply

Fields appear or stay hidden based on earlier answers. For the countertop, choosing a rounded edge would bring up a radius field that a straight edge never shows. Standard Odoo can block combinations that don’t go together, but it can’t reveal a question based on an earlier answer.

Option prices on top of the formula

Some choices aren’t measurements, like oak over pine or a premium finish. Each option can carry its own price adjustment, added on top of what the formula calculated, so one price covers both the size and the choices.

Limits on what can be ordered

A formula will happily price a countertop longer than your saw can cut. Validation limits reject specs you can’t build or ship, so they don’t get priced in the first place.

A parts list for the workshop

The same numbers that set the price also produce the list of parts and materials for that order. It feeds Odoo’s make-to-order and material planning, so production works from the customer’s order instead of someone retyping it.

Quoting freight when the customer sets the size

A freight quote needs dimensions and weight. For a cut-to-size product, those only exist once the customer has entered their numbers. A 1,450 mm countertop and a 2,400 mm one ship very differently. So the module passes the calculated dimensions into the freight quote, instead of relying on a weight typed onto the product once.

After that hand-off, it’s ordinary freight automation, which we’ve covered in instant freight quoting in Odoo and keeping LTL freight from eating your margin.

Can an Odoo app price products by custom size?

Partly. There are good apps here, and if one covers what you sell, buy it before you pay for development.

Area pricing apps. Product Dimension Pro is a typical one. Staff enter height and width on the order line, it works out square meters, prices the line by area and passes the size to manufacturing. It’s built for banners, signage and printing, and for those it may be all you need. It has one pricing rule, though: price times quantity times area. It has no branching, no option surcharges on top, no limits beyond refusing a blank or zero size, no parts list and no freight.

The OCA product configurator. The Odoo Community Association’s free OCA product-configurator modules add a step-by-step wizard to sales and manufacturing orders. It’s made for picking from options, which is a different job from pricing a number the customer typed.

Formula quantities on a bill of materials. MRP BoM Line formula for quantity lets a component quantity be a formula that can read the customer’s custom values. That’s the parts-list half on its own, without pricing, limits or freight.

Here’s how they compare with standard Odoo and the module we built.

Standard OdooArea pricing appBoM formula moduleOur custom module
Price from the customer’s dimensionsNoArea onlyNoYes
Formula with conditional logicNoNoQuantities onlyYes
Fields shown based on earlier answersNoNoNoYes
Option prices on top of a calculated priceFlat extras onlyNoNoYes
Parts list from the customer’s dimensionsNoNoQuantities onlyYes
Freight from the calculated sizeNoNoNoYes

Even combined, the area app and the BoM module leave out the conditional pricing, the fields that depend on earlier answers and the freight hand-off, and each reads the customer’s numbers its own way.

When you don’t need a custom module

If you offer five sizes, make them variants. If you sell by the square meter and nothing else changes, an area pricing app will do. Custom work makes sense when customers can enter any size within a range, the price depends on more than area, and you’re tired of retyping orders into production and freight.

A custom module also assumes your web shop, stock and shipping already run in one system. If they don’t yet, start with why ecommerce businesses need ERP integration.

Frequently asked questions

Can Odoo price a product from the customer’s length and width?

Not out of the box. An area pricing app from the Odoo store can multiply a rate by width and height. Anything more, such as rates that change with size or options that change the calculation, needs a custom module.

What’s the difference between a configurable product and a made-to-order product?

A configurable product is built from options you can list in advance, so variants or a configurator handle it. A made-to-order product is built to a size or quantity the customer types in, so the price and parts list have to be calculated each time.

Can Odoo create a bill of materials from the customer’s dimensions?

Not in standard Odoo, where bill of materials quantities are fixed. A community module can turn line quantities into formulas, and a custom module can build the whole parts list from the order and pass it to make-to-order.

How do you quote freight when the customer sets the size?

Pass the calculated dimensions into the freight quote. Otherwise Odoo’s shipping rules read a fixed weight from the product, which is wrong for any custom size.

Will an area pricing app from the Odoo store be enough?

For banners, signage or anything priced purely by square meter, often yes. If your price depends on more than area, or you need a parts list or freight from the size, you’ll outgrow it.

Is this the same as custom order management software?

No. Order management software tracks custom orders after they’re placed. A made-to-order setup works earlier, turning the customer’s numbers into a price, a parts list and a freight quote.

Selling something cut or built to size?

Send us the fields your customers fill in, the limits you work to and what you cut or pull for each order. We’ll tell you what standard Odoo or an existing app will cover, and what’s worth building.

Talk to us about your Odoo build →

About the author

Nguyen Tran is the founder of Ministers.io. He has spent five years on Odoo ERP implementations, delivering five directly and advising on more than twenty, across ecommerce, retail, manufacturing, and maintenance, repair and operations (MRO).

Connect on LinkedIn