The screen heading reads Custom field definitions and the menu entry reads Custom fields. Both mean the same thing. Earlier versions of Spree called these metafields.
Creating a New Custom Field
To create a custom field definition go to Settings → Custom fields, under the Store group.
custom.warranty — along with Applies to, Type, and Storefront.
To add a new one, click Add custom field in the top right corner. The panel opens with the line “Define a typed field your team can fill in on any matching record.”

- Label - the display name for the field, shown in the dashboard and/or storefront, e.g.
Material - Namespace - used to group custom fields and avoid naming conflicts. Pre-filled with
custom- Leave it on
customfor internal or merchant-defined fields unless you have a reason to group fields separately - Avoid using common Spree model names like product, order, or variant as these may conflict with existing integrations
- Leave it on
- Key - the unique identifier for the field, combined with the namespace
- e.g.: custom.material, custom.internal_note
- Applies to - choose the record the custom field applies to (see full list below)
- Type - the format of data the field should accept (see examples below)
- Visible on storefront - a switch. Turn it on if shoppers should see the value
- Searchable - “Include values in storefront product text search (short text, long text, and number only).”
- Sortable - “Allow storefront product listings to sort by this field (short text and number only).”
Supported Records

- Addresses - e.g., delivery instructions
- Categories - e.g., display badge (“New”, “Sustainable”)
- Claims
- Collections
- Credit Cards - e.g., vault token
- Customers - e.g., loyalty tier
- Delivery Methods - e.g., carrier code
- Exchanges
- Fulfillments - e.g., fragile/handling notes
- Gift Cards - e.g., personal message
- Line Items - e.g., engraving or personalization notes
- Media - e.g., alt text, copyright, or display priority
- Newsletter Subscribers - e.g., subscription source
- Option Types - e.g., an extended description for color choices
- Option Values - e.g., color hex code
- Orders - e.g., internal comment, PO number
- Payment Methods - e.g., risk profile or processor ID
- Payment Sources - e.g., metadata from payment gateway
- Payments - e.g., external transaction reference
- Product Types
- Products - e.g., material, sustainability rating, care instructions
- Promotions - e.g., campaign name
- Refunds - e.g., refund reason detail
- Returns - e.g., return reason detail
- Sellers - e.g., seller profile details
- Stock Levels - e.g., warehouse bin location
- Stock Transfers - e.g., batch ID or receiving note
- Store Credits - e.g., usage restrictions
- Stores - e.g., store tagline or branding metadata
- Tax Rates - e.g., compliance category
- Variants - e.g., spec sheet URL, sizing details
Supported Data Types

- Short Text - for single-line strings, e.g., “Cotton” or “Blue”
- Long Text - multi-line content, e.g., care instructions
- Rich Text - text with formatting options, e.g., marketing blocks
- Number - any numeric value, e.g., 4.5 (rating), 12 (inches)
- Boolean - true/false flags, e.g., “Is this product fragile?” = true
- JSON - for structured data or multiple related attributes
Adding Custom Field Values
Once your custom field definition has been created, you can enter values in a few different ways:Individually in the Admin Dashboard
First, navigate to the relevant record (e.g., Product, Order, Fulfillment).


To make a field appear on a product form automatically, add it to a product type.
In Bulk (Products Only)
Product custom fields can also be imported or updated in bulk by:- Adding columns to your CSV file using this format:
custom_field.<namespace>.<key>(e.g.custom_field.custom.material) - Entering the desired values for each product row.
- Importing the file when uploading a new product catalog
The import template you download is generated for your store, and already ends with one column per custom field you have defined for products. See Import File Template.

