Product Manufacturer
First-Pass Node Dossier
This page is an evidence-backed node dossier generated from the domain hierarchy and node questionnaire.
What It Is
ProductManufacturer is the technical brand record in Pyle. It groups products under a brand identity, feeds storefront brand browse pages, and acts as a parent context for categories, collections, and product groups.
Parent hierarchy:
Catalog & MerchandisingTaxonomyProduct Manufacturer
Primary implementation paths:
packages/framework/src/Models/ProductManufacturer.phppackages/framework/src/Actions/ProductManufacturerpackages/framework/src/Http/Controllers/Api/Admin/ProductManufacturersController.php
What Users Can Do With It
Direct capabilities
Admin users can:
- create brands in Settings > Brands
- edit brand name, description, imagery, active state, visible state, featured state, and SEO fields
- delete a brand
- list, search, and filter brands through the admin API
- manage brands in bulk through Excel
- sync brands from ERP
Indirect capabilities
Other workflows depend on the brand record:
- products select a brand
- categories and collections can be associated with a brand
- storefront brand pages and brand filtering depend on visibility and active-product rules
- product groups are partly brand-scoped
Where It Is Managed
| Channel | Role | Notes |
|---|---|---|
| Admin Settings UI | Direct | User-facing name is Brand |
| Admin API | Direct | CRUD plus search/filter/include support |
| Product admin flows | Indirect | Products select a brand |
| Storefront | Indirect | First-class browse pages use the same record |
| Excel import/export | Direct | Brand rows are part of the product template |
| ERP bridge | Direct | Dedicated manufacturer sync request and service exist |
Sources:
packages/framework/src/Http/Controllers/Api/Admin/ProductManufacturersController.phppackages/storefront/src/Livewire/Storefront/Brands/Page.phppackages/storefront/src/Livewire/Storefront/Brand/Page.phppackages/framework/src/Actions/Import/Product/Sheets/ImportProductManufacturerRows.phppackages/erp-bridge/src/Requests/ProductManufacturers/GetProductManufacturersRequest.php
Channel-Level Field Coverage
Admin create dialog
The packaged create dialog exposes:
namedescriptionimage_linkactivevisiblefeatured
Source:
Admin edit dialog
The packaged edit dialog adds:
meta_titlemeta_descriptionslug
Source:
Admin API
The admin API allows CRUD and list shaping around fields such as:
namedescriptionslug- SEO fields
featuredimage_linkcover_image_link
It also supports includes and filters around product counts, price-zone counts, featured state, sample presence, and visible state.
Source:
packages/framework/src/Http/Controllers/Api/Admin/ProductManufacturersController.php
Model fields that exist but are not clearly exposed in the inspected packaged brand dialogs
Examples include:
external_idcodesku_prefixcover_image_linkcover_image_link_2sortextra_attributes
Source:
packages/framework/src/Models/ProductManufacturer.php
Configuration And Data Model
Key model characteristics:
- translatable
- searchable
- soft-deletable
- ERP-syncable
- activity-log aware
- emits activation and update events
Important field groups:
| Field Group | Purpose |
|---|---|
| identity | translated name, code, translated slug |
| storefront visibility | active, visible, featured |
| content | description, imagery, SEO fields |
| external control | external_id, sku_prefix, extra_attributes |
The visible() scope also requires:
visible = trueactive = true- at least one active product
Sources:
packages/framework/src/Models/ProductManufacturer.phppackages/framework/src/Actions/ProductManufacturer/CreateProductManufacturer.phppackages/framework/src/Actions/ProductManufacturer/UpdateProductManufacturer.php
Relationships
ProductManufacturer directly relates to:
productsproductGroupsproductCategoriesproductCollectionsproductVendors
Practical dependencies:
- product browse and filtering depend on the brand record
- collection and product-group behavior often inherits brand context
- price-zone-related API affordances already exist even though Pricing docs are not built yet
Source:
packages/framework/src/Models/ProductManufacturer.php
Rules And Downstream Effects
Important behavior:
- manufacturer codes are unique across active, inactive, and soft-deleted records
- when brand creation generates a code owned by another nondeleted brand, it returns an English-name validation error without changing the existing brand; normal restoration of a matching deleted brand remains supported
- deleting a product manufacturer deletes its product groups
- deactivating a manufacturer dispatches
DeactivateProductManufacturerProducts
This means a brand change is not just cosmetic. It can affect grouped catalog behavior and product availability.
Sources:
packages/framework/src/Models/ProductManufacturer.phppackages/framework/src/Listeners/ProductManufacturer/DeactivateProductsListener.phppackages/framework/src/Actions/Product/DeactivateProductManufacturerProducts.php
Integrations And Automation
Excel
Brand data is included in the product export template through product_manufacturers, and the import sheet supports create, update, and delete by UUID.
The sheet keeps the supplied code and normalizes it to lowercase. If another manufacturer owns that code, the row reports an error in the code column. This also applies to inactive and soft-deleted owners. Updating or restoring the same manufacturer by UUID may retain its own code.
If a code becomes occupied during insertion or update, the failed write is rolled back and reported as a row error. Later rows can still be processed.
Source:
packages/framework/src/Actions/Import/Product/Sheets/ImportProductManufacturerRows.php
ERP bridge
Manufacturers have a dedicated ERP request and sync path.
Source:
packages/erp-bridge/src/Requests/ProductManufacturers/GetProductManufacturersRequest.phppackages/framework/src/Services/ErpBridge/ProductManufacturer/ProductManufacturerErpSyncService.php
Where It Appears To End Users
ProductManufacturer is first-class in storefront browse behavior, but shoppers encounter it as a Brand.
The inspected storefront uses it for:
- brands index pages
- individual brand pages
- brand and category combined browse pages
- brand and collection browse pages
- nested product payloads
Sources:
packages/storefront/routes/web.phppackages/storefront/src/Livewire/Storefront/Brands/Page.phppackages/storefront/src/Livewire/Storefront/Brand/Page.phppackages/storefront/src/Livewire/Storefront/Brand/CategoryPage.phppackages/storefront/src/Livewire/Storefront/Brand/CollectionPage.phppackages/framework/src/Http/Resources/Storefront/ProductManufacturerResource.php
Current Documentation Takeaways
The three most important operator-level facts are:
ProductManufactureris the technical name, butBrandis the business and storefront name.- Brand visibility is operational, not cosmetic, because storefront brand lists require visibility, activation, and active products.
- Brand state changes can cascade into product and product-group behavior.
Open Questions
- The admin API already exposes price-zone-oriented includes and filters, but the first-pass Pricing documentation is not built yet.
- The inspected packaged brand dialogs do not strongly surface fields such as
sku_prefixorextra_attributes, so those remain integration-oriented for now.