Running an HVAC business with Odoo

How do I create equipment size variants in Odoo?

Workflow overview: How do I create equipment size variants in Odoo?
Workflow overview. Instructional screenshots show the actual demo interface.

Create native product variants in Odoo, assign separate references and price extras, and verify the selected variant on a saved draft quotation.

Alex needs separate catalogue choices for two equipment capacities. A native attribute creates two selectable variants; the office can check the selected reference and price on a draft quotation. The capacity labels are training examples and do not size an HVAC system.

Alex Rivera and Demo Air HVAC are fictional training examples. Prices, dates, quantities and business situations in this guide are illustrative.

Before you begin

Tested in stock Odoo 20.0-20260926 Community as the demo owner administrator, with official modules and standard configuration. Complete product import and the service quotation. Keep the H12 goods and S00001/S00002 intact. This uses a separate Goods template with Units, zero stock, a $1,000 base price and the existing fictional 6% tax. Use the existing Demo Property H08 customer and Demo Net 30 H06 terms.

Step-by-step workflow

Stock Odoo 20 Community, owner role. Enable native Variants, define two fictional training capacities with a200 price extra, assign separate references, then explicitly select3-ton in a saved unsent quotation. Capacity labels do not prove HVAC sizing or compatibility. Existing products, stock, orders, finance and CRM source labels remain intact.

Step 1. Enable Variants

Open Inventory → Configuration → Settings, check Variants, and choose Save. Reopen the settings to confirm it remains enabled. The setting exposes native product attributes and variant choices.

Action 1: Open the app menu. The actual target is highlighted in gold.
Open the app menu.
Action 2: Choose Inventory. The actual target is highlighted in gold.
Choose Inventory.
Action 3: Open Configuration. The actual target is highlighted in gold.
Open Configuration.
Action 4: Open Inventory Settings. The actual target is highlighted in gold.
Open Inventory Settings.
Action 5: Enable the native Variants setting. The actual target is highlighted in gold.
Enable the native Variants setting.
Action 6: Save Variants once and wait for the saved setting. The actual target is highlighted in gold.
Save Variants once and wait for the saved setting.
Action 7: Reopening retains Variants checked. The actual target is highlighted in gold.
Reopening retains Variants checked.

Step 2. Create the capacity attribute

Open Inventory → Configuration → Attributes → New. Enter Capacity H13, select Display Type Radio and Variant Creation Instantly. Add 2-ton (training) with Default Extra Price 0, and 3-ton (training) with Default Extra Price 200. Save and wait for the saved attribute before leaving the form.

Action 8: Open Configuration for Attributes. The actual target is highlighted in gold.
Open Configuration for Attributes.
Action 9: Choose Attributes. The actual target is highlighted in gold.
Choose Attributes.
Action 10: Open New to define one capacity attribute. The actual target is highlighted in gold.
Open New to define one capacity attribute.
Action 11: Name the attribute Capacity H13. The actual target is highlighted in gold.
Name the attribute Capacity H13.
Action 12: Keep Radio as Display Type. The actual target is highlighted in gold.
Keep Radio as Display Type.
Action 13: Keep Instantly as Variant Creation. The actual target is highlighted in gold.
Keep Instantly as Variant Creation.
Action 14: Add the first training capacity value. The actual target is highlighted in gold.
Add the first training capacity value.
Action 15: Enter 2-ton (training). The actual target is highlighted in gold.
Enter 2-ton (training).
Action 16: Keep the first Default Extra Price at zero. The actual target is highlighted in gold.
Keep the first Default Extra Price at zero.
Action 17: Commit the first value on the attribute heading. The actual target is highlighted in gold.
Commit the first value on the attribute heading.
Action 18: Add the second training capacity value. The actual target is highlighted in gold.
Add the second training capacity value.
Action 19: Enter 3-ton (training). The actual target is highlighted in gold.
Enter 3-ton (training).
Action 20: Set its Default Extra Price to 200. The actual target is highlighted in gold.
Set its Default Extra Price to 200.
Action 21: Commit the price extra on the attribute heading. The actual target is highlighted in gold.
Commit the price extra on the attribute heading.
Action 22: Review two values with zero and 200 price extras. The actual target is highlighted in gold.
Review two values with zero and 200 price extras.
Action 23: Save the attribute once and wait for both saved values. The actual target is highlighted in gold.
Save the attribute once and wait for both saved values.
Action 24: Reopening retains both native capacity values. The actual target is highlighted in gold.
Reopening retains both native capacity values.

Step 3. Apply the two values to a separate product

Open Inventory → Products → Products, search Demo Capacity Equipment H13, and choose New only if absent. Set Goods, Track Inventory checked, Units and Sales Price 1,000. On Attributes & Variants → Add a line, select Capacity H13 and both values. Save, wait for the saved record and reopen it. Check that the smart button shows 2 Variants.

Action 25: Open Products for a separate equipment template. The actual target is highlighted in gold.
Open Products for a separate equipment template.
Action 26: Choose Products. The actual target is highlighted in gold.
Choose Products.
Action 27: Search first to avoid a duplicate equipment template. The actual target is highlighted in gold.
Search first to avoid a duplicate equipment template.
Action 28: Choose New only because this training product is absent. The actual target is highlighted in gold.
Choose New only because this training product is absent.
Action 29: Name it Demo Capacity Equipment H13. The actual target is highlighted in gold.
Name it Demo Capacity Equipment H13.
Action 30: Keep Goods as Product Type. The actual target is highlighted in gold.
Keep Goods as Product Type.
Action 31: Keep Track Inventory checked. The actual target is highlighted in gold.
Keep Track Inventory checked.
Action 32: Keep Units as the product unit. The actual target is highlighted in gold.
Keep Units as the product unit.
Action 33: Set the training base Sales Price to 1,000. The actual target is highlighted in gold.
Set the training base Sales Price to 1,000.
Action 34: Review the existing illustrative 6% Sales Tax. The actual target is highlighted in gold.
Review the existing illustrative 6% Sales Tax.
Action 35: Open Attributes & Variants. The actual target is highlighted in gold.
Open Attributes & Variants.
Action 36: Add one native attribute line. The actual target is highlighted in gold.
Add one native attribute line.
Action 37: Find the saved Capacity H13 attribute. The actual target is highlighted in gold.
Find the saved Capacity H13 attribute.
Action 38: Select Capacity H13. The actual target is highlighted in gold.
Select Capacity H13.
Action 39: Find the 2-ton training value. The actual target is highlighted in gold.
Find the 2-ton training value.
Action 40: Select 2-ton (training). The actual target is highlighted in gold.
Select 2-ton (training).
Action 41: Find the 3-ton training value. The actual target is highlighted in gold.
Find the 3-ton training value.
Action 42: Select 3-ton (training) as the second value. The actual target is highlighted in gold.
Select 3-ton (training) as the second value.
Action 43: Commit both values on the product heading. The actual target is highlighted in gold.
Commit both values on the product heading.
Action 44: Review one capacity line containing both values. The actual target is highlighted in gold.
Review one capacity line containing both values.
Action 45: Save this new template once and wait for two variants. The actual target is highlighted in gold.
Save this new template once and wait for two variants.
Action 46: The saved template now has 2 Variants. The actual target is highlighted in gold.
The saved template now has 2 Variants.
Action 47: Open the two generated variants. The actual target is highlighted in gold.
Open the two generated variants.
Action 48: The list shows 1,000 and 1,200 with zero On Hand. The actual target is highlighted in gold.
The list shows 1,000 and 1,200 with zero On Hand.

Step 4. Give each variant its own reference

Click 2 Variants. The list shows $1,000 for 2-ton and $1,200 for 3-ton. Open the first variant and set Internal Reference H13-2T; save. Open the second and set Internal Reference H13-3T; save and reopen. Both remain at zero On Hand. The $200 value extra is added to the $1,000 template price.

Action 49: Open the 2-ton variant in form view. The actual target is highlighted in gold.
Open the 2-ton variant in form view.
Action 50: Set Internal Reference H13-2T. The actual target is highlighted in gold.
Set Internal Reference H13-2T.
Action 51: Commit the first reference on the variant heading. The actual target is highlighted in gold.
Commit the first reference on the variant heading.
Action 52: Save the 2-ton reference once. The actual target is highlighted in gold.
Save the 2-ton reference once.
Action 53: Use Next to open the second saved variant. The actual target is highlighted in gold.
Use Next to open the second saved variant.
Action 54: Set Internal Reference H13-3T. The actual target is highlighted in gold.
Set Internal Reference H13-3T.
Action 55: Commit the second reference on the variant heading. The actual target is highlighted in gold.
Commit the second reference on the variant heading.
Action 56: Save the 3-ton reference once. The actual target is highlighted in gold.
Save the 3-ton reference once.
Action 57: Reopening retains H13-3T. The actual target is highlighted in gold.
Reopening retains H13-3T.

Step 5. Choose the capacity in a new quotation

Open Sales → Orders → Quotations → New → New Quotation. Select existing Demo Property H08, then Add Line and search the Description product picker for the training equipment. Select its product entry. In Configure your product, explicitly choose 3-ton (training) +$200, Quantity 1, and review [H13-3T] and $1,200. Choose Confirm in this dialog. Searching by H13-3T still opened the configurator with the first value selected in this test, so check the option rather than assuming the search selected it.

Action 58: Open the app menu for the draft quotation. The actual target is highlighted in gold.
Open the app menu for the draft quotation.
Action 59: Choose Sales. The actual target is highlighted in gold.
Choose Sales.
Action 60: Open the New quotation menu. The actual target is highlighted in gold.
Open the New quotation menu.
Action 61: Choose New Quotation without applying a template. The actual target is highlighted in gold.
Choose New Quotation without applying a template.
Action 62: Find the existing Demo Property H08 customer. The actual target is highlighted in gold.
Find the existing Demo Property H08 customer.
Action 63: Select the existing customer. The actual target is highlighted in gold.
Select the existing customer.
Action 64: Add one equipment line. The actual target is highlighted in gold.
Add one equipment line.
Action 65: Search Description for H13-3T. The actual target is highlighted in gold.
Search Description for H13-3T.
Action 66: Select the actual equipment product entry. The actual target is highlighted in gold.
Select the actual equipment product entry.
Action 67: The configurator initially has 2-ton selected; check deliberately. The actual target is highlighted in gold.
The configurator initially has 2-ton selected; check deliberately.
Action 68: Explicitly choose 3-ton (training) with the 200 extra. The actual target is highlighted in gold.
Explicitly choose 3-ton (training) with the 200 extra.
Action 69: Keep Quantity one in the native configurator. The actual target is highlighted in gold.
Keep Quantity one in the native configurator.
Action 70: Review H13-3T and the 1,200 price before Confirm. The actual target is highlighted in gold.
Review H13-3T and the 1,200 price before Confirm.
Action 71: Confirm the selected variant in the configurator. The actual target is highlighted in gold.
Confirm the selected variant in the configurator.
Action 72: Review one H13-3T Unit at 1,200 on the actual line. The actual target is highlighted in gold.
Review one H13-3T Unit at 1,200 on the actual line.
Action 73: Find Demo Net 30 H06 Payment Terms. The actual target is highlighted in gold.
Find Demo Net 30 H06 Payment Terms.
Action 74: Select the existing payment term. The actual target is highlighted in gold.
Select the existing payment term.
Action 75: Commit the quotation fields on its heading. The actual target is highlighted in gold.
Commit the quotation fields on its heading.
Action 76: Review 1,200 untaxed, 72 demo tax and 1,272 total. The actual target is highlighted in gold.
Review 1,200 untaxed, 72 demo tax and 1,272 total.

Step 6. Save and reopen the unsent quote

Set Payment Terms Demo Net 30 H06. Check the line has H13-3T, quantity one, Units and Unit Price $1,200. The training 6% tax gives $72 and a $1,272 total. Choose Save manually, wait for S00003, then reopen. Verify the variant and total. The quotation remains a draft; no stock receipt or delivery was created.

Action 77: Save the new quotation once and wait for S00003. The actual target is highlighted in gold.
Save the new quotation once and wait for S00003.
Action 78: Reopening retains the same unsent S00003. The actual target is highlighted in gold.
Reopening retains the same unsent S00003.
Action 79: The saved equipment remains H13-3T, one Unit at 1,200. The actual target is highlighted in gold.
The saved equipment remains H13-3T, one Unit at 1,200.
Action 80: The saved quotation total remains 1,272. The actual target is highlighted in gold.
The saved quotation total remains 1,272.
Action 81: The quotation remains a draft; sizing and delivery were not performed. The actual target is highlighted in gold.
The quotation remains a draft; sizing and delivery were not performed.

Check the result

Active template 19 has two native variants: product 19 H13-2T at $1,000 and product 20 H13-3T at $1,200. Both have zero stock. Saved draft S00003 selects product 20, one Unit at $1,200, $72 demo tax and $1,272 total; it retains customer/address records 7/8/9 and term 11. S00001/S00002 remain draft at $275.60 each. Original H12 quantities remain five filters, one capacitor and zero condensers.

If your screen differs

Training capacity labels do not prove equipment compatibility, load calculations or sizing. Price extras were verified with the current base price; other pricelist rules need separate testing. Wait for a new record to finish saving before reloading: the verification run produced an extra training template during an early reload, then archived that unused copy through Odoo. Search and reopen the existing product before creating another. Customer acceptance, purchasing, stock delivery and technical selection were not performed.

Frequently asked questions

How do I create product variants in Odoo? Enable Variants, create a native attribute with reviewed values, and apply both values to a separate product's Attributes & Variants tab. This Instantly example generated two saved variants with distinct Internal References.
Can Odoo product variants have different prices? The tested template price is $1,000. Its 2-ton value has no extra; the 3-ton value adds $200. Selecting 3-ton in the native configurator produced a saved draft line at $1,200 before the fictional tax.
Does an Odoo equipment variant verify HVAC compatibility? This lesson records catalogue choices and quote prices. The training capacity labels do not verify load calculations, compatible equipment or the correct system for a property.

Continue building the business

Continue with customer pricelists, whose pricing rules require their own native verification.

Talk to an Odoo partner

Bring your current process and the result you need to Onward to plan your Odoo workflow. Talk to an Odoo partner.