Attribute fields & types reference
Attributes are the custom, taxonomy-driven fields you attach to products — a Color dropdown, a Weight numeric, a Care instructions long-text block. This page is the field-by-field lookup for how an attribute is defined: its Type, its options, its Validation and Display settings, and the edge-case behaviors (numeric precision formatting, delete guards, the grouped listing) that you can't see from the form alone.
For the task of creating and editing attributes, see Manage attributes. For how attributes hang off categories and attribute groups, see How product taxonomy works and Manage attribute groups. To set attribute values on a specific product, see Set a product's categories & attributes.
Before you begin
Managing attribute definitions requires the products scope plus the relevant granular permission: attributes.create, attributes.update, attributes.archive, attributes.delete, or attributes.import. See Product permissions reference.
Data types
Every attribute has a Type that fixes what its value holds and how it's rendered. The default is String.
| Type | Holds | Notes |
|---|---|---|
| String | Short single-line text | The default. Can be flagged Is Link? to render as a hyperlink. Supports a Character Limit. |
| Longtext | Multi-line or rich text | Can be flagged Is HTML?. Supports a Character Limit. Has no Display (options) section. |
| Integer | Whole numbers | Supports Min and Max. |
| Numeric | Decimal numbers | Supports Min, Max, and Precision (digits). See Numeric precision formatting. A numeric attribute's value can back a relative pricing tier basis. |
| Checkbox | A yes/no | The value always reads back as true or false, never as text. Has no Display (options) section. |
| Date | A date | Date only, no time. |
| Date & time | A date plus a time | The Type list in the attribute dialog offers only the six types above. You can set a date-and-time attribute through an import or the API. |
Those seven are the complete set — anything else is rejected when you save.
Checkbox always reads back as true or false
A Checkbox attribute's value on a product comes back as a real true/false, not as the 1 or 0 behind it. Aside from the numeric precision formatting described below, Checkbox is the only type whose value is transformed before you see it.
Option lists
Any attribute that isn't Checkbox or Longtext can be marked Has Options? to become a pick-list — for example a Color attribute with a fixed set of swatches.
| Setting | Meaning |
|---|---|
| Has Options? | Whether the attribute is a pick-list. Turning it on reveals the options list. |
| Type (in the Display (options) section) | Single (pick one) or Multi (pick several). Defaults to Multi. |
| Allow Custom Value? | Whether someone can type a value that isn't on the list. |
| Option value | The option text itself, up to 255 characters. Blank lines are ignored when you save. |
| Option order | The order the options appear in, taken from the order you list them. |
In the dialog you type or paste options one per line into Type or Paste Options; each line becomes one option, in the order given. When you edit, options you take off the list are removed, and options that stay are matched by their text and kept — so reordering or editing around them doesn't disturb them.
The Display (options) section is hidden entirely for Checkbox and Longtext attributes — those types can't have options.
Validation, display & notes
The Validation section holds the limits that apply to the chosen type; the Display (options) section holds presentation settings; Notes is free text for your own reference.
| Setting | Applies to | Meaning |
|---|---|---|
| Character Limit | String, Longtext | Maximum text length. |
| Precision (digits) | Numeric | Decimal places to format the value to, 0–9. |
| Min | Integer, Numeric | Minimum allowed value. |
| Max | Integer, Numeric | Maximum allowed value. |
| Is Link? | String | Render the value as a hyperlink. |
| Is HTML? | Longtext | Treat the value as HTML. |
| Sort Order | All | The attribute's own position in a list. |
| Available for templates | All | See Template flag. |
| Notes | All | Free-text note, max 255 characters. Internal — never shown on products. |
Rules enforced when you save:
| Rule | Applies to |
|---|---|
| Required, max 255 characters, and unique across all attributes | Name |
| Required, one of the seven types | Type |
| Must be an existing attribute group | Attribute Group |
| Optional, max 255 characters | Notes |
The Validation section is shown for String, Longtext, Numeric, and Integer types only.
Numeric precision formatting
When you read an option value of a Numeric attribute that has Precision (digits) set, the value is formatted to that many decimal places before it's shown.
- The result is formatted text — precision
2turns a stored9.5into9.50, and1234.5into1,234.50with a thousands separator. - Because it's formatted for display, it may not reflect the full stored precision — a stored
9.567read at precision2comes back as9.57. - Formatting is applied only when both conditions hold: the type is Numeric and Precision (digits) is set. Otherwise the value is returned exactly as stored.
Grouped & ungrouped attributes
The taxonomy screens list attributes in two buckets:
| Bucket | Contents |
|---|---|
| Grouped | Each attribute group with its attributes nested inside, in each attribute's Sort Order. |
| Ungrouped | Attributes with no attribute group at all. |
To organize attributes into groups, see Manage attribute groups.
Template flag
Available for templates marks an attribute as usable in product templates — the reusable starting points you build products from. It's independent of type, options, and group. Turning it on doesn't change how the attribute behaves on an individual product; it only controls whether the attribute is offered when you build from a template.
What blocks a delete
Deleting an attribute checks whether anything still references it. Two independent kinds of usage are checked:
- Products — how many products carry a value for this attribute.
- Integration import mappings — any channel import mapping that points an incoming column at this attribute.
By default, either kind of usage blocks the delete. Choosing to delete anyway changes the outcome for one of them, but not both:
| Situation | Delete anyway? | Result |
|---|---|---|
| Used by products and/or import mappings | No | Blocked — you get a "currently used" message listing what still references the attribute. Nothing is deleted. |
| Used by products only | Yes | Deleted. The values on those products are detached and the attribute is removed. You're still told how many products were affected, so the impact is never silent. |
| Used by import mappings | Yes | Still blocked, with the impact details. Deleting anyway can't bypass this, because removing the attribute would silently break those channel import mappings. Remove or repoint the mappings first. |
Whether the delete is allowed or blocked, SKU.io always tells you the impact — how many products are affected, how many import mappings, and which ones — so the consequences are surfaced rather than hidden. There's no separate second confirmation step; that impact summary is the acknowledgment.
To see what a delete would affect before you try it, check the attribute in Manage attributes, which flags whether each attribute can be deleted and why not.
Next steps
- Manage attributes — the create / edit / archive / delete task steps.
- Manage attribute groups — group attributes for the taxonomy screens.
- Set a product's categories & attributes — attach attribute values to a product.
- How product taxonomy works — the category → attribute-group → attribute model.
- Relative pricing tiers — using a numeric attribute as a pricing basis.
- Import products from a spreadsheet — setting
attributes.{name}values in bulk.