Product Attribute
First-Pass Node Dossier
This page is an evidence-backed node dossier generated from the domain hierarchy and node questionnaire.
What It Is
ProductAttribute defines reusable attribute dimensions such as color, finish, or other product characteristics. It is a catalog configuration node that feeds product terms, category filters, and product-group option behavior.
Parent hierarchy:
Catalog & MerchandisingAttributes And Grouped ConfigurabilityProduct Attribute
Primary implementation paths:
packages/framework/src/Models/ProductAttribute.phppackages/framework/src/Actions/ProductAttributepackages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.phppackages/admin/src/Livewire/Admin/Settings/Attributes
What Users Can Do With It
Direct capabilities
Admin users can:
- create attributes
- edit attribute names, descriptions, slugs, visibility, and editability
- delete attributes
- search, list, show, update, and delete attributes through the admin API
- create, update, and delete attributes through Excel import
Indirect capabilities
Other workflows consume attributes without making the attribute record itself the main object being edited:
- products use attribute terms
- categories use attributes as shopper-facing filters
- product groups use attributes to build option-selection combinations
- product types can be related to attributes with required flags
Where It Is Managed
| Channel | Role | Notes |
|---|---|---|
| Admin Settings UI | Direct | The packaged create and edit dialogs live under Settings/Attributes |
| Admin API | Direct | ProductAttributesController exposes CRUD and search |
| Category edit flows | Indirect | Categories attach attributes as filter definitions |
| Product-group flows | Indirect | Product groups select attributes to build options and combinations |
| Storefront | Indirect | Attributes appear through filters, product terms, and product-group options |
| Excel import/export | Direct | Product workbook sheets include attributes and terms |
| ERP bridge | Direct | Attributes can be synchronized from ERP |
Sources:
packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/CreateDialog.phppackages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/EditDialog.phppackages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.phppackages/admin/src/Livewire/Admin/Settings/Categories/DataTable/EditDialog.phppackages/admin/src/Livewire/Admin/Settings/Collection/ProductGroups/Form/BaseDialog.phppackages/admin/src/Livewire/Admin/Tools/Excel/ExportDialog/ProductExport.phppackages/framework/src/Actions/Import/Product/Sheets/ImportProductAttributeRows.phppackages/erp-bridge/src/Requests/ProductAttributes/GetProductAttributesRequest.php
Channel-Level Field Coverage
Admin create dialog
The packaged create dialog exposes:
namedescriptionvisibleeditable
Source:
packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/CreateDialog.php
Admin edit dialog
The packaged edit dialog exposes:
namedescriptionslugvisibleeditable
Source:
packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/EditDialog.php
Admin API
The admin API allows CRUD and query shaping around:
namedescriptionslugvisiblecode
The admin resource returns the model payload directly.
Sources:
packages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.phppackages/framework/src/Http/Resources/Admin/ProductAttributeResource.php
Model fields that exist but were not visible in the inspected packaged UI
The model also contains fields not surfaced in the inspected dialogs:
external_idcodeproduct_attribute_group_idsortsort_by
Source:
packages/framework/src/Models/ProductAttribute.php
Configuration And Data Model
Key model characteristics:
- translatable:
name,description,slug - soft-deletable
- searchable
- ERP-syncable
Important fields:
| Field | Purpose |
|---|---|
visible | whether the attribute should be exposed in user-facing contexts |
editable | whether the attribute is intended to be user-editable in flows that consume it |
product_attribute_group_id | higher-level grouping hook not surfaced in the inspected packaged UI |
sort, sort_by | ordering and sorting metadata |
Create behavior:
- generates translated slugs automatically
- generates
codefrom the English slug
Sources:
packages/framework/src/Models/ProductAttribute.phppackages/framework/src/Actions/ProductAttribute/CreateProductAttribute.phppackages/framework/src/Actions/ProductAttribute/UpdateProductAttribute.php
Relationships
ProductAttribute directly relates to:
productTerms()productTypes()with pivotrequiredproductVendors()productGroupAttributes()
It also appears indirectly in:
- category attribute filters
- product-group option mapping
- storefront product-term and filter displays
Sources:
packages/framework/src/Models/ProductAttribute.phppackages/framework/src/Models/ProductCategory.php
Rules And Downstream Effects
Important rules and effects:
- deleting an attribute deletes related product-group attributes
- deleting an attribute deletes related product terms
- categories can attach the attribute as a filter with pivot settings such as
featured,sort, andsort_by - product groups can use the attribute to build option combinations that affect shopper product selection
Sources:
packages/framework/src/Models/ProductAttribute.phppackages/admin/src/Livewire/Admin/Settings/Categories/DataTable/EditDialog.phppackages/framework/src/Services/ProductGroup/Jobs/BuildProductGroup.php
Integrations And Automation
Excel
Attribute-related Excel surfaces include:
product_attributesproduct_terms
The same product workbook also carries related category-filter and product-group-adjacent data.
Sources:
packages/admin/src/Livewire/Admin/Tools/Excel/ExportDialog/ProductExport.phppackages/framework/src/Actions/Import/Product/Sheets/ImportProductAttributeRows.phppackages/framework/src/Actions/Import/Product/Sheets/ImportProductTermRows.php
ERP bridge
Attributes have a DTO-backed ERP request and sync layer and the model is ERP-syncable.
Sources:
packages/framework/src/Models/ProductAttribute.phppackages/erp-bridge/src/Requests/ProductAttributes/GetProductAttributesRequest.php
Where It Appears To End Users
ProductAttribute is usually not a top-level end-user concept in the packaged product.
It appears indirectly through:
- category filters
- product term displays on product pages and resources
- product-group option selectors
Sources:
packages/framework/src/Http/Resources/Storefront/ProductAttributeResource.phppackages/framework/src/Http/Resources/Storefront/ProductCategoryResource.phppackages/storefront/src/Livewire/Storefront/Product/ProductGroupBlock.php
Current Documentation Takeaways
ProductAttributeis a foundational configuration node, but most operators meet it through categories, products, and product groups rather than as a standalone concept.- The packaged settings UI is intentionally small compared with the downstream impact attributes can have.
- Attributes are a strong example of a node that deserves technical documentation first and only later may justify a standalone end-user concept page.
Open Questions
- The model includes
product_attribute_group_id, but this first pass did not identify a packaged UI for managing attribute groups directly. - The exact operator meaning of
editableacross all consuming workflows needs a later pass focused on the downstream forms and integrations.