Line Items
Line items define the order-form fields that customers fill out when configuring your product. These are the dimensions, quantities, and other specifications needed to build and price each item.
Overview
Line items are the rows in an order. Each row represents one configuration of your product.
Example Order Form:
| QTY | Width | Height | Notes |
|---|---|---|---|
| 2 | 24 1/2 | 34 1/2 | Kitchen |
| 3 | 12 | 24 3/4 | Bathroom |
| 1 | 14 1/2 | 30 3/4 | Pantry |
The fields shown (QTY, Width, Height, Notes) are your line item configuration.
Default Line Items
When you create a new product, three fields are included by default:
| Field | Type | Description |
|---|---|---|
| qty | Number | Quantity of items |
| width | Number | Item width |
| height | Number | Item height |
You can customize these defaults or add additional fields.
Adding Line Item Fields
Step 1: Open Line Items
Navigate to your product and click the Line Items tab.
Step 2: Add Field
Click the "+" icon to add a new field.
Step 3: Configure Field
| Setting | Description |
|---|---|
| Name | Internal field name (used in formulas) |
| Label | Display label shown to customers |
| Data Type | Type of input (see Data Types) |
Data Types
Each line item field has a data type that controls input behavior:
| Type | Description | Example Input |
|---|---|---|
| Number | Standard numeric input | 24, 36.5 |
| Fraction | Fractional measurement | 24 1/2, 3/4 |
| Decimal | Decimal number | 24.50, 0.75 |
| Integer | Whole numbers only | 1, 2, 10 |
| Price | Currency value | $25.00 |
| Description | Text field | "Custom notes" |
| Boolean | Yes/No toggle | Yes, No |
| List | Dropdown selection | Select from options |
| Block | Visual spacer | (Empty column) |
Choosing the Right Type
- Fraction for customer-facing dimensions (easier to read)
- Decimal when precise numeric values are needed
- Number for general numeric input
- List when customers should pick from predefined options
- Description for notes or special instructions
Field Settings
Click the edit button on any field to access its settings:
Basic Settings
| Setting | Description |
|---|---|
| Name | Internal field name |
| Label | Customer-facing label |
| Data Type | Input type |
| Default Value | Pre-populated value |
| Required | Must be filled before submission |
Document Visibility
Control where each field appears:
| Setting | Description |
|---|---|
| Invoice | Show on customer invoice |
| Cut Sheet | Show on production cut sheet |
| Labels | Include on product labels |
| Packing Slip | Show on packing slip |
| Quality Control | Include in QC checklist |
| Visible to Customer | Show in customer portal |
Default Values
Fields can have default values that pre-populate:
Static Default
Enter a fixed value that appears by default:
- Default width:
24 - Default quantity:
1
Attribute Default
Pull the default from an attribute:
- Default thickness from
material.thickness - Default price from
material.price
Conditional Default
Set defaults based on other field values using Field Change Rules.
Value Constraints
Number fields can enforce a minimum and/or maximum allowed value. This prevents customers from submitting out-of-spec orders — for example, a width below your machine's minimum or a thickness thicker than your stock.
Enabling Value Constraints
- On the Line Items tab, edit a number field.
- Open the Value Constraints section.
- Toggle Enable Value Constraints.
- Set a Minimum, a Maximum, or both. Leave either blank to leave that side open-ended.
| Setting | Description |
|---|---|
| Enable Value Constraints | Turns range validation on for this field |
| Minimum | Lowest value the customer may enter (leave blank for no lower limit) |
| Maximum | Highest value the customer may enter (leave blank for no upper limit) |
How customers experience it
When constraints are enabled, the storefront validates the field in real time as the customer types (with a brief debounce) and gives clear feedback:
- The allowed range is shown in the field's placeholder and helper text, e.g.
Range: 1/4 - 5/4,Min: 1, orMax: 0.5. - Fractions and mixed fractions are accepted alongside decimals —
1/4,3/4,5/4,2 1/4, and0.75are all valid input, which matches how woodworking measurements are usually written. - A clear error appears when a value is out of range, replacing the helper text — for example "Value must be at least 1/4" or "Value must be at most 5/4".
Empty values aren't checked against the range (use Required separately if the field must be filled in). Constraints apply only to number fields.
Tip: Set both bounds in the units your formulas expect. Because the storefront accepts
1/4and2 1/4, you can express tight tolerances naturally without forcing customers to convert to decimals.
Using Line Items in Formulas
Line item fields can be referenced in Pricing and Parts calculations. Both are built with the step-based Formula Builder (or generated for you by the AI Pricing Assistant) — there is no JavaScript code editor.
Reference Format
Reference a line item field directly by its internal name. In the Formula Builder you pick the field from the field list, and it's inserted as a reference:
width
height
qty
depthAttribute values use dot notation (for example material.price or material.thickness).
Example: Square-Foot Pricing
To charge per square foot, build the formula in the Formula Builder from a few steps:
- Add a Square Feet measurement (TimberCloud computes
width × height ÷ 144for you), or multiply thewidthandheightfields yourself. - Multiply that result by the
material.priceattribute field.
You can also describe this in plain English to the AI Pricing Assistant — for example "charge the material price per square foot" — and it builds the same step-based formula for you to review and accept. See Pricing for the full walkthrough.
Example: Part Dimensions
Part dimensions can reference line item fields:
- Stile length:
height + lip_factor - Rail length:
width - (stile_width * 2)
Single Line Item Mode
New products are single line item by default. To let a product take more than one line item per order, enable Multi Line Item in product settings:
| Feature | Multi Line Item on | Multi Line Item off (default) |
|---|---|---|
| Rows | Multiple | One only |
| Add Row | Yes | No |
| Best For | Custom manufacturing | Simple products |
When Multi Line Item is off:
- Customers can only configure one item per order
- No "Add Row" button appears
- Good for products with fixed configurations
List Fields
Create dropdown selections for line items:
Creating a List Field
- Add a new line item field
- Set data type to List
- Define the options
List Options
Each option has:
- Label: Display text
- Value: Internal value (for formulas)
Example: Room Selection
| Label | Value |
|---|---|
| Kitchen | kitchen |
| Bathroom | bathroom |
| Bedroom | bedroom |
In formulas, reference as room to get the selected value.
Best Practices
Naming
- Use lowercase, single-word names internally (
width,height) - Use clear labels for customers ("Width (inches)")
- Be consistent across products
Required Fields
- Mark essential fields as required
- Don't over-require—only fields truly needed
- Consider customer workflow
Value Constraints
- Set min/max on dimension fields to keep orders within what you can actually build
- Express limits as fractions when that's how your shop measures (e.g. min
1/4) - Pair constraints with Required so a critical dimension is both present and in range
Document Settings
- Invoice: Customer-relevant fields only
- Cut Sheet: Production-relevant fields
- Keep documents focused and readable
Mobile Considerations
- Fewer fields = better mobile experience
- Use appropriate keyboard types (number fields show number keyboard)
- Group related fields logically
Common Configurations
Cabinet Door
| Field | Type | Required | Invoice | Cut Sheet |
|---|---|---|---|---|
| qty | Number | Yes | Yes | Yes |
| width | Fraction | Yes | Yes | Yes |
| height | Fraction | Yes | Yes | Yes |
| hinge_side | List | Yes | Yes | Yes |
| notes | Description | No | No | Yes |
Drawer Box
| Field | Type | Required | Invoice | Cut Sheet |
|---|---|---|---|---|
| qty | Number | Yes | Yes | Yes |
| width | Fraction | Yes | Yes | Yes |
| height | Fraction | Yes | Yes | Yes |
| depth | Fraction | Yes | Yes | Yes |
| slide_type | List | Yes | Yes | Yes |
Simple Product
| Field | Type | Required | Invoice | Cut Sheet |
|---|---|---|---|---|
| qty | Number | Yes | Yes | Yes |
| color | List | Yes | Yes | No |
| size | List | Yes | Yes | Yes |
Field Change Rules
Field Change Rules allow one line item field to automatically update other fields when its value changes. This enables dynamic form behavior without custom code.
Common Use Cases
| Trigger | Action | Example |
|---|---|---|
| Boolean toggle | Set multiple fields | "Has Rails" → sets Top Rail = 2", Bottom Rail = 3" |
| List selection | Copy attribute value | Select "Oak" → auto-fill grain direction |
| Number field | Set conditional values | Width > 48 → set "Oversized" = true |
Creating Rules
- Edit a line item field
- Expand Field Change Rules section
- Click Add Rule
- Configure the condition and actions
Condition Operators
When the field value changes, check if it meets a condition:
| Operator | Description | Example |
|---|---|---|
| Equals | Matches exact value | width = 24 |
| Not Equals | Does not match value | material ≠ "MDF" |
| Greater Than | Numeric comparison | height > 36 |
| Less Than | Numeric comparison | qty < 10 |
| Greater Than or Equal | Inclusive comparison | width ≥ 24 |
| Less Than or Equal | Inclusive comparison | depth ≤ 12 |
| Contains | Text includes substring | notes contains "rush" |
| Is Empty | Field has no value | notes is empty |
| Is Not Empty | Field has a value | room is not empty |
Action Types
When a condition is met, perform one or more actions:
| Action | Description | Use Case |
|---|---|---|
| Set Value | Set a specific value | Set top_rail = "2.25" |
| Clear Value | Remove the current value | Clear notes field |
| Copy from Another Field | Copy value from sibling field | Copy width to height |
| Copy from Product Attribute | Copy value from selected attribute option | Copy material thickness from selected wood type |
Example: "Has Rails" Toggle
A common pattern for cabinet doors:
Trigger Field: has_rails (Boolean)
Rule:
- When
has_railsequalstrue:- Set
top_rail= "2 1/4" - Set
bottom_rail= "3" - Set
stile_width= "2 1/4"
- Set
This auto-fills rail dimensions when the toggle is enabled.
Example: Material-Based Values
Auto-fill values based on product attribute selection:
Trigger Field: edge_type (List)
Rule:
- When
edge_typeequals"Applied Edge":- Set
edge_thicknessfrom attributeEdge.thickness - Set
edge_materialfrom attributeEdge.name
- Set
Display as Fraction
For numeric values being set, enable Display as Fraction to convert decimal values to fractional format:
2.25→2 1/40.5→1/2
Multiple Actions per Rule
A single rule can trigger multiple actions. All actions execute when the condition is met.
Multiple Rules per Field
Add multiple rules with different conditions. Rules are evaluated in order when the field changes.
Visibility Conditions
Visibility Conditions control when a field is shown or hidden based on other values. Use this to create dynamic forms that adapt to user selections.
Enabling Visibility Conditions
- Edit a line item field
- Expand Visibility Condition section
- Toggle Enable
- Configure the condition
Condition Sources
Control visibility based on two types of sources:
Line Item Field
Show/hide based on another field in the order form:
| Setting | Description |
|---|---|
| Based on | Line Item Field |
| Line Item Field | Select the controlling field |
| Condition | Choose operator (equals, not equals, etc.) |
| Value | The value to compare against |
Example: Show "Grain Direction" only when "Has Grain" is true
Product Attribute
Show/hide based on a selected product attribute option:
| Setting | Description |
|---|---|
| Based on | Product Attribute |
| Product Attribute | Select the attribute (Material, Edge, etc.) |
| Property to Check | Option Name or specific part value |
| Condition | Choose operator |
| Value | The value to compare against |
Example: Show "Veneer Edge Width" only when Material.name equals "Walnut"
Example: Material-Specific Fields
Show grain direction only for wood materials:
| Setting | Value |
|---|---|
| Based on | Product Attribute |
| Product Attribute | Material |
| Property to Check | Option Name |
| Condition | Equals |
| Value | Oak |
The "Grain Direction" field will only appear when the customer selects Oak material.
Example: Boolean-Controlled Fields
Show detail fields only when a toggle is enabled:
| Setting | Value |
|---|---|
| Based on | Line Item Field |
| Line Item Field | has_hinge_boring |
| Condition | Equals |
| Value | True (On) |
The "Hinge Spacing" and "Hinge Cup Size" fields only appear when hinge boring is enabled.
Example: Numeric Threshold
Show oversized handling field when dimensions exceed limits:
| Setting | Value |
|---|---|
| Based on | Line Item Field |
| Line Item Field | width |
| Condition | Greater Than |
| Value | 48 |
The "Oversized Handling" dropdown appears only for items wider than 48".
Preview
When configuring a visibility condition, a preview shows the rule in plain language:
"Grain Direction" will be shown when "Material" → "Option Name" equals "Oak"
Troubleshooting
Field Not Appearing
- Verify the field is saved
- Check visibility settings (Visible to Customer)
- Refresh the product page
- Check visibility conditions — the field may be hidden by a condition
Value Out of Range
- Confirm the customer's entry is between the field's Minimum and Maximum
- Remember fractions count toward the same range (e.g.
2 1/4=2.25) - If valid values are being rejected, double-check the min/max you set on the field
Formula Reference Errors
- Field names are case-sensitive
- Check for spaces in field names
- Verify the field exists on the product
Default Value Issues
- Ensure attribute reference is correct
- Check that the attribute option has a value
- Test with a new order
Rules Not Triggering
- Verify the condition matches your test value exactly
- Check that the target field exists
- Ensure the rule is on the correct source field
- For attribute-based rules, verify the attribute name matches
Visibility Condition Not Working
- Ensure the condition is enabled
- Verify the source field/attribute name matches exactly
- For attribute-based conditions, check that the attribute has been selected
- Test with different values to verify the condition logic
Next Steps
- Attributes — Define selectable options
- Pricing — Use line items in pricing formulas
- AI Pricing Assistant — Describe pricing in plain English
- Parts — Reference line items in part specs
- Formula Builder — Step-based calculation builder