The production-ready Medusa DTC Starter is outRead the announcement
P

Product attributes

Custom attributes module for Medusa v2 with support for text, number, file types and units of measurement

npm install @empty-complete-org/medusa-product-attributes
Category
Version
1.3.1
Last updated
3 months ago
Monthly downloads
Loading downloads
medusa-product-attributes logo

Medusa Product Attributes

A flexible attribute system for Medusa v2 — text, number, file, boolean, with units and category inheritance

npm version npm downloads CI Status GitHub commit activity License

Medusa v2 TypeScript Node.js

Telegram


Features

FeatureDescription
Text AttributesArbitrary text values for products
Numeric AttributesNumbers with units (kg, m, pcs, etc.)
File AttributesFile uploads: certificates, 3D models, manuals
Boolean AttributesYes/No values
Category InheritanceAttributes cascade from parent to child categories
Global AttributesApplied to every product automatically
TemplatesReusable blueprints — apply to any category in one click
Auto SlugLabels are transliterated (Russian, Chinese, any script)
Smart File NamingUploaded images renamed to
i18nEnglish and Russian out of the box, extensible

Requirements

DependencyVersion
Medusa^2.13
Node.js>=20
TypeScript^5.0

Quick Start

Installation

1. Add the plugin to configuration

2. Run migrations

npx medusa db:migrate

3. Done!

The plugin automatically creates tables and registers admin widgets.


Screenshots

Category widget with inheritance

Category widget

Product attribute values

Product widget

Settings — Global Attributes & Templates

Settings page


Usage

Admin

  1. Category attributes — open any category, the "Attributes" widget appears below details. Add custom attributes (inherited by subcategories), or pick from a template.
  2. Global attributes — Settings → Product Attributes → Globals tab. Applied to every product automatically.
  3. Templates — Settings → Product Attributes → Templates tab. Reusable blueprints.
  4. Product values — open any product, the "Characteristics" widget shows all inherited + global attributes with inputs.

API

Storefront (Store API)

The plugin ships a read-only module link between and , so attribute values are queryable straight from the Store API via the parameter — no extra setup in your app:

carries the attribute metadata (, , , ). The singular alias works as well.

The same relation is available anywhere Query is, e.g. in workflows or API routes:

Programmatic usage


Attribute types

TypeAdmin inputStored in
text input
number input + unit badge,
upload button (URL),
select Yes/No

Project Structure


Development


Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

Made with ❤️ for the Medusa community