Skip to content

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 & Merchandising
  • Attributes And Grouped Configurability
  • Product Attribute

Primary implementation paths:

  • packages/framework/src/Models/ProductAttribute.php
  • packages/framework/src/Actions/ProductAttribute
  • packages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.php
  • packages/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

ChannelRoleNotes
Admin Settings UIDirectThe packaged create and edit dialogs live under Settings/Attributes
Admin APIDirectProductAttributesController exposes CRUD and search
Category edit flowsIndirectCategories attach attributes as filter definitions
Product-group flowsIndirectProduct groups select attributes to build options and combinations
StorefrontIndirectAttributes appear through filters, product terms, and product-group options
Excel import/exportDirectProduct workbook sheets include attributes and terms
ERP bridgeDirectAttributes can be synchronized from ERP

Sources:

  • packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/CreateDialog.php
  • packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/EditDialog.php
  • packages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.php
  • packages/admin/src/Livewire/Admin/Settings/Categories/DataTable/EditDialog.php
  • packages/admin/src/Livewire/Admin/Settings/Collection/ProductGroups/Form/BaseDialog.php
  • packages/admin/src/Livewire/Admin/Tools/Excel/ExportDialog/ProductExport.php
  • packages/framework/src/Actions/Import/Product/Sheets/ImportProductAttributeRows.php
  • packages/erp-bridge/src/Requests/ProductAttributes/GetProductAttributesRequest.php

Channel-Level Field Coverage

Admin create dialog

The packaged create dialog exposes:

  • name
  • description
  • visible
  • editable

Source:

  • packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/CreateDialog.php

Admin edit dialog

The packaged edit dialog exposes:

  • name
  • description
  • slug
  • visible
  • editable

Source:

  • packages/admin/src/Livewire/Admin/Settings/Attributes/DataTable/EditDialog.php

Admin API

The admin API allows CRUD and query shaping around:

  • name
  • description
  • slug
  • visible
  • code

The admin resource returns the model payload directly.

Sources:

  • packages/framework/src/Http/Controllers/Api/Admin/ProductAttributesController.php
  • packages/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_id
  • code
  • product_attribute_group_id
  • sort
  • sort_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:

FieldPurpose
visiblewhether the attribute should be exposed in user-facing contexts
editablewhether the attribute is intended to be user-editable in flows that consume it
product_attribute_group_idhigher-level grouping hook not surfaced in the inspected packaged UI
sort, sort_byordering and sorting metadata

Create behavior:

  • generates translated slugs automatically
  • generates code from the English slug

Sources:

  • packages/framework/src/Models/ProductAttribute.php
  • packages/framework/src/Actions/ProductAttribute/CreateProductAttribute.php
  • packages/framework/src/Actions/ProductAttribute/UpdateProductAttribute.php

Relationships

ProductAttribute directly relates to:

  • productTerms()
  • productTypes() with pivot required
  • productVendors()
  • 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.php
  • packages/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, and sort_by
  • product groups can use the attribute to build option combinations that affect shopper product selection

Sources:

  • packages/framework/src/Models/ProductAttribute.php
  • packages/admin/src/Livewire/Admin/Settings/Categories/DataTable/EditDialog.php
  • packages/framework/src/Services/ProductGroup/Jobs/BuildProductGroup.php

Integrations And Automation

Excel

Attribute-related Excel surfaces include:

  • product_attributes
  • product_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.php
  • packages/framework/src/Actions/Import/Product/Sheets/ImportProductAttributeRows.php
  • packages/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.php
  • packages/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.php
  • packages/framework/src/Http/Resources/Storefront/ProductCategoryResource.php
  • packages/storefront/src/Livewire/Storefront/Product/ProductGroupBlock.php

Current Documentation Takeaways

  • ProductAttribute is 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 editable across all consuming workflows needs a later pass focused on the downstream forms and integrations.