Attributes
Attributes define the choices customers make when ordering a product—materials, finishes, edge profiles, hardware, glass styles, and any other selectable option. Most attributes are tables of selectable options, but an attribute can also collect free text from the customer or display a read-only note.
Overview
Attributes are organized into tables with customizable columns. In the most common setup, each row represents one option the customer can select.
Example: Material Attribute
| Name | Price | Thickness | Weight |
|---|---|---|---|
| Cherry | $25 | 3/4 | 0.8 |
| Maple | $30 | 3/4 | 0.5 |
| Walnut | $35 | 5/4 | 1.2 |
When a customer selects "Cherry," your pricing and parts formulas can reference material.price (25), material.thickness (0.75), or material.weight (0.8).
Tip: Already have your attributes in a spreadsheet or PDF catalog? You can let the AI Product Builder read them and build the attribute tables (and even a starting pricing formula) for you, instead of typing each row by hand. See AI Product Builder.
Input Types
Each attribute has an Input Type that controls how it behaves on the order form. Open an attribute's Table Settings and choose:
| Input Type | Behavior |
|---|---|
| Dropdown | The classic selectable options table—the customer picks one row (e.g., a material or finish). This is the default and the most common type. |
| Text Input | The customer types free text (e.g., engraving text or a special note) instead of choosing from a list. |
| Description | A read-only note or description block shown inline among the other attributes. The customer doesn't select anything—use it to explain a group of options or add guidance. |
Only Dropdown attributes use the rows/options table below. Text Input and Description attributes don't need option rows.
Creating an Attribute
Step 1: Open Product Attributes
Navigate to your product and click the Attributes tab.
Step 2: Add Attribute
Click the "+" icon to create a new attribute.
Step 3: Define Structure
| Field | Description |
|---|---|
| Attribute Name | The label shown to customers (e.g., "Material", "Edge Profile") |
| Input Type | Dropdown, Text Input, or Description (see Input Types above) |
| Table Headers | The data columns for this attribute (e.g., "Price", "Thickness") — Dropdown attributes only |
Note: The "Name" column is automatically included for Dropdown attributes—you don't need to add it.
Step 4: Choose Data Types
For each column, select the appropriate data type (see Data Types below).
Step 5: Add Rows
After saving the structure, add rows to a Dropdown attribute's table. Each row represents one selectable option.
Data Types
Each column in your attribute table needs a data type:
| Type | Description | Example |
|---|---|---|
| Price | Currency value | $25.00 |
| Fraction | Fractional measurement | 3/4, 1 1/2 |
| Decimal | Decimal number | 0.75, 1.5 |
| Integer | Whole number | 1, 2, 10 |
| Description | Text value | "Standard finish" |
| Boolean | Yes/No toggle | Yes, No |
| List | Dropdown selection | Select from predefined options |
| Block | Empty spacer | (Visual separator) |
Choosing the Right Type
- Price for costs and upcharges
- Fraction for dimensions that customers see (3/4", 1 1/2")
- Decimal for calculations (thickness in formulas)
- Description for text information
- Boolean for yes/no features
Using Attributes in Formulas
Attributes are referenced in Pricing, Parts, and Inventory formulas. They're consumed by the step-based Formula Builder and the AI Pricing Assistant—not a code editor.
Reference Format
attribute_name.column_nameExamples
| Reference | Returns |
|---|---|
material.price | Selected material's price value |
material.thickness | Selected material's thickness |
edge.upcharge | Selected edge option's upcharge |
hardware.name | Selected hardware option's name |
In the Formula Builder
- Click "Add Step"
- Select "Field" as the operand type
- Choose the attribute from the dropdown
- Select the column/property
In a Pricing Formula
In the Formula Builder, attribute fields combine with measurements and operators to build a price. For example, to charge for area at the selected material's price plus the selected edge's upcharge, you'd add steps that reference material.price and edge.upcharge alongside a Square Feet measurement—no code required.
Prefer to describe it in plain English? Open Product → Pricing → "AI Assistant" and type something like "charge material price per square foot plus the edge upcharge." The AI Pricing Assistant builds the step-based formula for you, which you can accept, revise, or open in the Formula Builder.
Attribute Behaviors
Beyond the basic options table, each attribute has settings (in Table Settings) that control when it shows and how it behaves across line items.
Conditional Visibility
Show or hide an attribute based on another field or attribute selection. For example, hide the glass-style attribute unless a glass door style is chosen. Configure this in the Conditional Visibility section.
Match Across Items
Turn on Match across items to force the same selection across every line item on an order—useful when the whole order must use one wood species or one finish. You can mark specific options as exempt so they're always allowed even when the lock is on.
Single Use Part
Enable Single Use Part to keep an attribute from carrying onto newly added line items (it stays disabled on new items).
Pre-fill on New Item
Enable Pre-fill on New Item to automatically copy the current selection onto each new line item, so customers don't have to re-pick a common choice.
Document Visibility
Control which printed/exported documents an attribute appears on with per-document flags:
- Show on Invoice
- Show on Quote
- Show on Acknowledgement
- Show on Cut Sheet
- Show on Packing Slip
Use these to keep internal-only details (like a part number) off customer-facing documents while still showing them on the cut sheet.
CSV Import/Export
Speed up attribute setup with CSV files. (You can also generate attributes from spreadsheets, PDFs, and photos with the AI Product Builder—CSV import remains available for precise, manual control.)
Exporting Attributes
- Open the attribute you want to export
- Click the "Export CSV" button
- Save the file for backup or editing
Importing Attributes
- Prepare a CSV with headers matching your attribute structure
- Click "Import CSV"
- Select your file
- Review and confirm the import
CSV Format
Your CSV should have:
- First row: Column headers (must match attribute columns)
- Subsequent rows: Option values
Example:
Name,Price,Thickness,Weight
Cherry,25,0.75,0.8
Maple,30,0.75,0.5
Walnut,35,1.25,1.2Common Attributes
Here are common attributes for woodworking products:
Materials
| Column | Type | Purpose |
|---|---|---|
| Name | Text | Material name |
| Price | Price | Cost per unit |
| Thickness | Decimal/Fraction | Stock thickness |
| Density | Decimal | For weight calculations |
Edge Profiles
| Column | Type | Purpose |
|---|---|---|
| Name | Text | Profile name |
| Price | Price | Price per linear foot |
| Image | Description | Reference image path |
Designs/Styles
| Column | Type | Purpose |
|---|---|---|
| Name | Text | Design name |
| Price | Price | Additional cost |
| Stile Width | Decimal | Frame dimension |
| Rail Width | Decimal | Frame dimension |
Finishes
| Column | Type | Purpose |
|---|---|---|
| Name | Text | Finish name |
| Price | Price | Price per unit |
| Lead Time | Integer | Additional days |
Parts Data for Visual Part Builder
Attribute columns can be referenced as "parts" data in the Parts & Pieces configuration and Visual Part Builder. This is what makes automatic part calculations possible.
How It Works
When you add columns like thickness, stile_width, or rail_width to an attribute, these values become available for field mapping using dot notation:
AttributeName.column_name → ValueSetting Up Parts Columns
Example: Material Attribute with Parts Data
| Name | Price | thickness | density | weight_factor |
|---|---|---|---|---|
| Cherry | $25 | 0.75 | 35 | 2.1 |
| Maple | $30 | 0.75 | 44 | 2.4 |
| Walnut | $35 | 0.75 | 38 | 2.2 |
These columns can be referenced as:
Material.thickness→ 0.75 (for Cherry)Material.density→ 35 (for Cherry)Material.weight_factor→ 2.1 (for Cherry)
Example: Design Attribute with Frame Dimensions
| Name | Price | stile_width | rail_width | panel_reveal |
|---|---|---|---|---|
| Shaker | $0 | 2.25 | 2.25 | 0.125 |
| Mission | $15 | 2.5 | 2.5 | 0.125 |
| Craftsman | $25 | 3.0 | 3.0 | 0.1875 |
These columns can be referenced as:
Design.stile_width→ 2.25 (for Shaker)Design.rail_width→ 2.25 (for Shaker)Design.panel_reveal→ 0.125 (for Shaker)
Using Parts Data in Visual Part Builder
In the Visual Part Builder configuration:
- Open your product → Parts tab
- Select "Use Visual Templates"
- For each dimension field, map to attribute columns:
| Builder Field | Mapping | Source |
|---|---|---|
| Thickness | Material.thickness | Material attribute |
| Stile Width | Design.stile_width | Design attribute |
| Rail Width | Design.rail_width | Design attribute |
| Lip/Reveal | Design.panel_reveal | Design attribute |
Benefits of Parts Data
- Define once, use everywhere — Stile widths, thicknesses defined on attributes apply to all products using them
- Automatic calculations — Visual Part Builder computes stile lengths, panel sizes automatically
- Consistent cut sheets — Production documents always reflect the correct values
- Easy maintenance — Update an attribute, and all products get the new values
Best Practice: Parts Column Naming
Use lowercase, snake_case names for parts columns that will be referenced in formulas:
| Good | Avoid |
|---|---|
thickness | Thickness |
stile_width | Stile Width |
rail_width | Rail Width |
panel_reveal | Panel Reveal |
This ensures consistent referencing in formulas and field mappings.
Attribute Layout
Control how attributes appear in the order form:
Display Order
Drag and drop attributes to reorder them in the customer-facing form.
Grouping
Group related attributes together for a cleaner interface.
Required vs. Optional
Mark attributes as required to ensure customers make a selection.
Best Practices
Naming
- Use clear, customer-friendly names
- Be consistent across products
- Avoid abbreviations in customer-facing names
Structure
- Keep attribute tables focused (one concept per attribute)
- Use appropriate data types for calculations
- Include all values needed for formulas
- Use Description input-type attributes to add inline guidance without a separate line item
Maintenance
- Review and update prices regularly
- Archive discontinued options rather than deleting
- Use CSV export for backups
Troubleshooting
Attribute Not Appearing in Formulas
- Verify the attribute is saved
- Check that column names are lowercase in formula references
- Refresh the formula builder
- Confirm the attribute's Input Type is Dropdown (Text Input and Description attributes don't expose selectable column values)
Attribute Not Showing on the Order Form
- Check the Conditional Visibility rule—the attribute may be hidden until another selection is made
- Confirm it isn't marked Single Use Part if you expected it on a newly added line item
Import Errors
- Ensure CSV headers match exactly
- Check for special characters in values
- Verify data types match (numbers vs. text)
Calculation Issues
- Confirm the correct column is referenced
- Check for null/empty values in attribute rows
- Test with known values
Next Steps
- Line Items - Configure order form fields (including value constraints)
- Pricing - Use attributes in pricing formulas
- AI Product Builder - Generate attributes from spreadsheets, PDFs, and photos
- Parts - Reference attributes in part dimensions
- Visual Part Builder - Visual layout editor with auto-calculation
- Formula Builder - Visual calculation builder