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).
Availability: Building attributes is Free — you can define your full catalog structure on any plan, inquiry-only included.
Tip: Already have your options in a spreadsheet? Use Import CSV to build a whole attribute — columns and option rows — from a
.csv,.xlsx, or.xlsfile in one step. See Building an attribute from a spreadsheet. And if you have a printed PDF catalog with option photos, the AI Catalog Photos matcher can attach those photos to your options for you.
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
Open your product in the Product Builder and go to the Setup tab. The Product Attributes section lists this product's attributes.
Step 2: Add Attribute
Click "Add Attribute" to create a new one.
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_name
Examples
| 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.
Tip: Want to go further — combine several attributes into one tidy line on a quote (like
OAK/MDF - 3/4"), or make an attribute print bold or uppercase? That's the Document Display editor, opened from the Document Display button at the top of the Setup tab. See Document Display & Attribute Formatting. (Commerce and up.)
Building an attribute from a spreadsheet (Import CSV)
The Import CSV button (top of the Product Attributes section) builds an entire attribute — its columns and all of its option rows — from a single spreadsheet, then drops you straight into the attribute builder to review it. This is broader than adding rows to an attribute you already made: it creates the whole thing in one step.
Accepted file types: .csv, .xlsx, and .xls.
How it works
- On the Setup tab, click Import CSV.
- Choose your file (drag and drop, or browse).
- TimberCloud reads the first row as column headers and every following row as an option, and infers a data type for each column (price, fraction, decimal, and so on — see Data Types).
- Review the proposed columns, types, and the "Name" column, then confirm.
File format
- First row: column headers (these become your attribute's columns)
- Every following row: one selectable option
Example:
Name,Price,Thickness,Weight
Cherry,25,0.75,0.8
Maple,30,0.75,0.5
Walnut,35,1.25,1.2
Tip: Keep a spreadsheet of each attribute (materials, finishes, edge profiles). It's the fastest way to stand up a big option list, and an easy backup if you ever need to rebuild.
Common 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 → Value
Setting 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 → Configurator tab
- Choose "Use a Template"
- 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.
Renaming an attribute on one product
Attributes are shared — the same Material attribute can appear on dozens of products. Sometimes you want it to read differently on one product without touching the shared name everywhere.
Hover an attribute in the Setup tab and click the pencil icon on its chip. Type a display label — for example, show a shared "Material" attribute as "Door Wood Species" on this product only. The original shared name still shows underneath as a small italic hint so you never lose track of what it really is.
Note: A display label changes only how the attribute is labeled on this product (and on the order form and documents). It does not rename the shared attribute or change its formula references —
material.pricestill works. Clear the label (or type the original name back) to return to the shared name.
Attribute Layout
Control how attributes are arranged on the order form. There are two modes:
Auto layout (default)
With Custom Layout off, attributes flow in a simple sortable grid. Drag and drop the attribute chips to reorder them; the order-form arrangement follows automatically. This is right for most products.
Custom Layout builder
Turn on the Custom Layout toggle to control the arrangement precisely. You build rows and drag attributes into them, so you can place two or three attributes side by side on one line and stack others below:
- Add Row creates a new empty row to drop attributes into.
- Auto-generate lays your current attributes out for you as a starting point.
- The builder flags problems before you save — an empty row with nothing in it, or an attribute that hasn't been assigned to any row.
Use Custom Layout when a product has many options and the default single-column flow feels long, or when certain choices naturally belong together (say, "Width" and "Height" on one line).
Required vs. optional
Mark an attribute as required so the customer must make a selection before submitting.
Tip: The Storefront Preview at the bottom of the Setup tab shows your layout exactly as customers will see it — check it after rearranging.
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
- The Product Builder — where the Setup tab and everything else lives
- Line Items — configure order-form fields (including value constraints)
- Pricing — use attributes in pricing formulas
- Match Photos from a Catalog — attach option photos from a PDF catalog
- Document Display & Attribute Formatting — combine and style attributes on documents
- Parts & Cut Lists — reference attributes in part dimensions
- Formula Builder — the step-based calculation builder