Line Items
Line items define the order form fields that customers fill out when placing an order. 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 the formula system.
Using Line Items in Formulas
Line item fields are referenced in Pricing and Parts formulas.
Reference Format
Reference line item fields directly by name:
width
height
qty
depthExamples in Pricing
// Square foot pricing
const sqFt = (width * height) / 144;
return sqFt * material.price;Examples in Parts
Part dimensions can reference line item fields:
- Stile length:
height + lip_factor - Rail length:
width - (stile_width * 2)
Single Line Item Mode
For retail-style products, enable Single Line Item Only in product settings:
| Feature | Standard Mode | Single Line Item |
|---|---|---|
| Rows | Multiple | One only |
| Add Row | Yes | No |
| Best For | Custom manufacturing | Simple products |
When enabled:
- 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
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
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
- Parts - Reference line items in part specs
- Formula Builder - Visual calculation builder