Parts
Parts define the individual components that make up your products. Once defined, parts are used for both shipping calculations (packaging and rate optimization) and production documents (build sheets).
Overview

When you configure parts for a product, TimberCloud uses them to:
- Calculate Shipping - Each part's dimensions and weight feed into the smart packaging algorithm
- Generate Build Sheets - Parts become rows in your production documents
- Optimize Packaging - Parts can ship assembled or as separate components
The Key Question
Parts configuration answers: What are the physical components of your product, and how should they be handled?
A cabinet door might have stiles, rails, and a panel. A dining table might have a tabletop, legs, and an apron. Defining these parts enables accurate shipping quotes and detailed production documents.
Creating Parts
Adding a New Part
- Navigate to your product
- Open the Parts or Shipping tab
- Click the "+" icon to add a part
- Configure the part properties
Part Properties
| Property | Description | Example |
|---|---|---|
| Name | Descriptive part name | "Stile", "Rail", "Panel", "Tabletop" |
| Quantity | Number per product | 2 stiles per door, 4 legs per table |
| Dimensions | Width, length, height | Static values or calculated formulas |
| Weight | Part weight | Auto, fixed, field-based, or calculated |
| Show on Cutsheet | Include in production documents | Yes/No |
| Package Separately | Ship in its own package | Yes/No (for fragile items) |
| Stackable | Can be stacked during shipping | Yes/No |
Ships Assembled Toggle
This critical setting determines how your product ships:
Ships Assembled = ON (Default)
- Product ships as a single unit
- Overall product dimensions used for packaging
- Parts still appear in build sheets for production
- Best for: finished goods, assembled furniture, completed items
Ships Assembled = OFF
- Product ships as separate pieces
- Each part is packaged individually by the algorithm
- Parts with "Package Separately" get their own boxes
- Best for: large furniture, kits, unassembled products
Dimension Configuration
Part dimensions can be set three ways:
Fixed Values
Fixed dimensions for parts that never change:
Width: 2.25
Length: 36
Height: 0.75Field Mapping
Map to line item fields or product attributes for dynamic sizing:
Width: width (from line item)
Length: height (from line item)
Height: Material.thickness (from attribute)Calculated (Calc)
Use formulas to combine fields with operations:
Width: design.stile_width + edge.lip_factor
Length: height - (rail_width * 2)
Height: material.thicknessShaker Door Example
| Part | Qty | Width Formula | Length Formula |
|---|---|---|---|
| Stile | 2 | design.stile_width | height + edge.lip_factor |
| Rail | 2 | design.rail_width | width - (stile_width * 2) |
| Panel | 1 | width - 5 | height - 5 |
Pieces Field Mapping
The Pieces configuration allows you to map part dimensions directly from product attributes and line item fields. This is what makes the Parts system so powerful — define specifications once on your product options, then reference them automatically in parts calculations.
Why This Saves Time: Without field mapping, you'd manually enter formulas for every part dimension. With field mapping, set up attribute parts once (Material.thickness, Design.stile_width) and all products using those attributes automatically get correct values. New product setup takes minutes instead of hours.
How Field Mapping Works
Instead of entering static values for every part dimension, you can map fields using dot notation:
AttributeName.part_name → ValueExample: A "Material" attribute with parts like thickness, density, and weight_per_sqft can be referenced as:
Material.thickness→ 0.75Material.density→ 45Material.weight_per_sqft→ 2.5
Setting Up Attribute Parts
First, define parts data on your product attributes:
- Go to Catalog → Attributes (or Settings → Products → Attributes)
- Edit an attribute (e.g., "Material", "Design", "Edge Profile")
- In the Parts section, add value fields:
| Attribute | Part Name | Example Values |
|---|---|---|
| Material | thickness | 0.75", 1", 1.5" per option |
| Material | density | Varies by wood species |
| Design | stile_width | 2.25", 2.5", 3" per style |
| Design | rail_width | 2.25", 2.5", 3" per style |
| Edge | lip_factor | Edge treatment offset |
- For each product option under that attribute, enter the specific values
Using Field Mappings in Parts
In the Parts/Pieces configuration:
- Navigate to your product → Parts tab
- For any dimension field (Width, Length, Height), click the dropdown
- Available fields are grouped:
- Line Items — Direct line item fields (width, height, depth, etc.)
- Product Options — Attribute parts using
Attribute.partnotation
Field Mapping Examples
Door Stile Part:
| Property | Mapping | Description |
|---|---|---|
| Name | "Stile" | Static text |
| Width | Design.stile_width | From Design attribute |
| Length | height | From line item height |
| Thickness | Material.thickness | From Material attribute |
Cabinet Side Part:
| Property | Mapping | Description |
|---|---|---|
| Name | "Side Panel" | Static text |
| Width | depth | From line item |
| Length | height | From line item |
| Thickness | Material.thickness | From attribute |
Accessing the Selected Option Name
To reference which option is selected (not its parts data), use the .name suffix:
Material.name → "Cherry"
Design.name → "Shaker"This is useful for displaying the material or style name on build sheets.
Visual Part Builder Integration
The Pieces field mapping connects directly to the Visual Part Builder, enabling automatic part calculations for doors, cabinets, and boxes.
Enabling Visual Templates
- Navigate to your product → Parts tab
- Select "Use Visual Templates" mode
- Choose a layout type (Door, Cabinet, Drawer Box, etc.)
- Map dimension fields from your product
Field Mapping for Visual Builder
The Visual Part Builder uses the same field mapping system:
| Builder Field | Common Mapping |
|---|---|
| Frame Width | width (line item) |
| Frame Height | height (line item) |
| Depth | depth (line item) |
| Thickness | Material.thickness (attribute) |
| Stile Width | Design.stile_width (attribute) |
| Rail Width | Design.rail_width (attribute) |
Why This Matters
With Pieces field mapping + Visual Part Builder:
- Define once — Set up stile widths, rail widths, thicknesses on attributes
- Reuse everywhere — All products using those attributes get correct values
- Visual verification — See real-time 2D/3D previews with actual dimensions
- Automatic cut sheets — Parts flow directly to production documents
- Accurate shipping — Part dimensions feed packaging calculations
Example: Shaker Door Configuration
Step 1: Define Attribute Parts
Design Attribute:
| Option | stile_width | rail_width |
|---|---|---|
| Shaker | 2.25 | 2.25 |
| Mission | 2.5 | 2.5 |
| Craftsman | 3.0 | 3.0 |
Material Attribute:
| Option | thickness | density |
|---|---|---|
| Maple | 0.75 | 44 |
| Cherry | 0.75 | 35 |
| Walnut | 0.75 | 38 |
Step 2: Map in Visual Builder
| Builder Field | Mapping |
|---|---|
| Frame Width | width |
| Frame Height | height |
| Stile Width | Design.stile_width |
| Rail Width | Design.rail_width |
| Thickness | Material.thickness |
Step 3: Result
When a customer orders a 24" × 36" Shaker door in Cherry:
- Stiles: 2.25" × 36" × 0.75"
- Rails: 2.25" × 19.5" × 0.75"
- Panel: 19" × 31" × 0.25"
All calculated automatically from the field mappings!
Visual Part Builder Layout Types
For doors, cabinets, and other complex products, the Visual Part Builder provides 12 layout types:
2D Door Types
- Door / Window — Traditional frame-and-panel
- Miter Door — 45° mitered corners
- M&T Door — Mortise & Tenon joinery
- Face Frame — Stiles and rails only
2D Panel Types
- Flat Panel — Simple single panel
- Floating Shelf — Shelf with mounting cleat
- Lumber — Linear board/lumber
3D Box Types
- Cabinet — Sides, top, bottom, back, shelves
- Drawer Box — Front, back, sides, bottom
- Bookshelf — Standing bookshelf
- Open Box — Open storage cubbies
- Chest — Blanket box with lid
The Visual Part Builder is ideal for:
- Cabinet doors with stiles, rails, and panels
- Cabinet boxes with configurable components
- Drawer boxes with standard construction
- Any product with predictable part relationships
Learn more about Visual Part Builder →
Weight Configuration
Each part can have its weight configured using one of four modes:
| Mode | Description | Best For |
|---|---|---|
| Auto | Calculated from freight class + dimensions | Products with consistent density |
| Fixed | Static weight value (lbs, oz, kg) | Simple parts with known weight |
| Field | Maps to a product attribute field | Variable weights by material |
| Calc | Custom formula calculation | Complex weight requirements |
Auto Mode (Default)
Uses the product's freight class to determine density, then calculates weight from part dimensions. Default density is 8 lbs/ft³ if no freight class is set.
Field Mode Example
Map to a "density" attribute on your product:
Source Field: material.density
Unit: lbs per cubic footThe system calculates: part_volume × material.density = weight
Calculation Mode Example
(width × height × depth / 1728) × material.density + 0.5This calculates cubic feet, multiplies by density, and adds 0.5 lbs for hardware.
Quantity Configuration
Part quantity can be dynamic based on order configuration:
Static Quantity
Fixed number of parts:
Quantity: 2 (always 2 stiles per door)Field Reference
Read from line item:
Quantity Field: shelf_count (customer specifies)Calculated Quantity
Formula-based:
Quantity Calculation: height / 12 (one brace per foot)Shipping Options
Package Separately
Enable when a part should never be combined with other parts:
- Fragile glass panels that need individual boxing
- Tabletops that exceed parcel limits
- Items with different freight classes
- Delicate components requiring special handling
When enabled, the packaging algorithm creates a separate consolidation group for this part type.
Stackable
Indicates whether multiple units can be stacked during shipping:
- ON: Parts can be stacked in packages (panels, flat components)
- OFF: Each part needs separate layer/space (fragile items)
Build Sheet Integration
Parts integrate directly with the Build Sheet Builder:
Using Parts as Row Source
- Open the Build Sheet Builder
- Select a table
- Set Row Source to "Parts"
- Each part becomes a row in your table
Available Columns
When using parts as row source:
| Column Type | Description |
|---|---|
| Part Name | The part's name |
| Quantity | Calculated quantity (expanded) |
| Dimensions | Width, length, height values |
| Material | Inherited from product option |
| Row Number | Sequential numbering |
| Weight | Calculated part weight |
Example Build Sheet
| # | Part | Qty | Width | Length | Material |
|---|---|---|---|---|---|
| 1 | Stile | 2 | 2.25" | 36" | Cherry |
| 2 | Rail | 2 | 2.25" | 19.5" | Cherry |
| 3 | Panel | 1 | 19" | 31" | Cherry Veneer |
Shipping Integration
When Ships Assembled is OFF, the packaging algorithm:
- Extracts each part as a separate item
- Calculates part dimensions from your configuration
- Determines optimal package type per part (Box or Pallet)
- Groups compatible parts into packages
- Separates parts marked "Package Separately"
- Applies weight calculations for accurate shipping rates
See Shipping & Logistics for packaging algorithm details.
Real-World Examples
Example 1: Shaker Cabinet Door (Ships Assembled)
Ships Assembled: ON - Product ships as complete door
| Part | Qty | Width | Length | Show on Cutsheet |
|---|---|---|---|---|
| Stile | 2 | 2.25" | height | Yes |
| Rail | 2 | 2.25" | width - 4.5" | Yes |
| Panel | 1 | width - 5" | height - 5" | Yes |
Result:
- Shipping uses overall door dimensions
- Build sheet shows all component cuts for production
Example 2: Dining Table (Ships Unassembled)
Ships Assembled: OFF - Product ships as separate pieces
| Part | Qty | Dimensions | Package Separately | Stackable |
|---|---|---|---|---|
| Tabletop | 1 | 72" × 42" × 2" | Yes (fragile) | No |
| Leg | 4 | 4" × 4" × 29" | No | Yes |
| Apron | 2 | 3" × 60" × 4" | No | Yes |
| Hardware Kit | 1 | 6" × 6" × 3" | Yes | No |
Result:
- Tabletop ships alone (pallet)
- Legs and aprons consolidate into boxes
- Hardware ships separately
- Build sheet shows all parts for production
Example 3: Custom Closet System
Ships Assembled: OFF - Variable components
| Part | Qty | Notes |
|---|---|---|
| Side Panel | 2 | Static quantity |
| Shelf | shelf_count | From customer selection |
| Top | 1 | Static |
| Back Panel | 1 | Stackable |
Result:
- Packaging adapts to customer's shelf count
- Build sheet expands to show all shelves
Measurements
Each part spec can specify its measurement type:
| Measurement | Description | Formula |
|---|---|---|
| Inches | Direct value | value |
| Feet | Linear feet | value / 12 |
| Board Feet | Lumber volume | (W × H × D) / 144 |
| Square Inches | Area | W × H |
| Square Feet | Area in sq ft | (W × H) / 144 |
| Linear Feet | Length in feet | length / 12 |
| Cubic Inches | Volume | W × H × D |
| Cubic Feet | Volume in cu ft | (W × H × D) / 1728 |
Reusable Parts Library
Create a library of parts that can be attached to multiple products:
Creating Reusable Parts
- Go to Catalog → Parts Library
- Click "Create Part"
- Define the part with specs
- Save to library
Attaching to Products
- Open product's Parts tab
- Click "Attach Existing Part"
- Select from library
- Part is linked to product
Benefits
- Consistency across products
- Single update propagates everywhere
- Faster setup for new products
Inventory Deductions
Parts can also drive inventory calculations. When configured, the system deducts materials based on part dimensions and quantities.
Setting Up Inventory Formulas
- Go to Product → Inventory tab
- Click "Create Formula" to open the Formula Builder
- Build a calculation using part dimensions
Common Inventory Formulas
| Material Type | Formula |
|---|---|
| Sheet Goods | Square Feet × qty × 1.10 (with 10% waste) |
| Lumber | Board Feet × qty |
| Edge Banding | Perimeter × qty |
| Linear Materials | Linear Feet × qty |
The same Formula Builder used for parts dimensions works for inventory calculations.
Build Sheet Generation
Parts automatically generate build sheets in order PDFs:
Build Sheet Contents
- Order Header - Customer and order details
- Line Items Table - Dimensions and quantities
- Parts Breakdown - Each part with calculated dimensions
- Material Summary - Grouped by material type
Validation Rules
Build sheet generation enforces:
- Quantities must be zero or positive
- Dimensions must be positive (non-zero)
- Invalid values fall back to safe defaults
Best Practices
- Use descriptive names - "Left Stile" vs "Part 1"
- Include all components - Even small hardware for accurate shipping
- Set accurate weights - Critical for reliable shipping quotes
- Mark fragile items - Use Package Separately for delicate parts
- Test with real orders - Verify calculations match actual products
- Use the library - Reusable parts save time and ensure consistency
Troubleshooting
Parts Not Appearing in Packages
- Verify Ships Assembled is set to OFF
- Check that part dimensions are valid (positive numbers)
- Ensure quantity is greater than 0
Incorrect Dimensions
- Review formula syntax
- Verify attribute field names match exactly
- Test with known input values
Build Sheet Missing Parts
- Confirm Show on Cutsheet is enabled
- Check that Row Source is set to "Parts"
- Verify parts are defined on the product
Weight Calculation Issues
- For Auto mode: verify freight class is set on product
- For Field mode: check field mapping is correct
- For Calc mode: verify formula syntax
Next Steps
- Visual Part Builder - Visual layout editor for doors and cabinets
- Shipping Options - Configure product shipping settings
- Formula Builder - Learn the step-based formula system
- Build Sheet Builder - Create visual production documents
- Shipping & Logistics - Packaging and rate shopping
- Build Sheets - View generated build sheets
- Inventory Management - Track stock and deductions