Content (CMS)
Build custom content types, manage structured entries, and display dynamic content on your storefront.
Workfile includes a built-in headless CMS that goes beyond blog posts. Create custom content types — like testimonials, FAQs, team members, portfolios, or case studies — with structured fields, then display them on your storefront using CMS widgets in the page builder.
The blog is a special system content type that comes pre-configured. For blog-specific features, see Blog. This page covers custom content types you create yourself.
Key concepts
| Concept | Description | Example |
|---|---|---|
| Content Type | A schema defining the structure of your content | "Testimonial" with fields: name, photo, quote, rating |
| Entry | A single piece of content following a type's schema | One testimonial from "Rahul Mehta" |
| Collection Type | A content type with multiple entries (like a list) | Testimonials, Team Members, FAQs |
| Single Type | A content type with exactly one entry (like a page) | About Page content, Store Policies |
| Component | A reusable group of fields shared across types | "SEO Fields" component used in multiple types |
| Taxonomy | A way to categorize entries within a type | Testimonial categories: "Product", "Service", "Support" |
Creating a content type
Go to Content
Click Content in the sidebar to see your content types overview.
Click New Content Type
You'll see the content type builder with options for name, slug, icon, and kind.
Choose the kind
| Kind | Use case | Example |
|---|---|---|
| Collection | Multiple entries of the same structure | Testimonials, Team, Portfolio |
| Single | One entry only (like a singleton page) | About content, Store announcement |
Define fields
Add fields to your content type. Each field has a name, type, and configuration options.
Available field types
| Field Type | Description | Use case |
|---|---|---|
| Text | Short single-line text | Name, title, tagline |
| Rich Text | Formatted multi-line content | Description, bio, article body |
| Number | Numeric value (integer or decimal) | Rating, price, sort order |
| Date | Date or date-time picker | Event date, publish date |
| Boolean | True/false toggle | Featured, active, published |
| Select | Dropdown with predefined options | Status, category, priority |
| Media | Image or file from your media library | Photo, document, icon |
| Relation | Link to entries in another content type | Author → Team Member |
| JSON | Structured JSON data | Custom metadata, configuration |
| Color | Color picker | Brand color, accent |
| URL | Web address with validation | Website, social link |
| Email address with validation | Contact email |
Each field can be configured as:
- Required — must be filled before saving
- Unique — no two entries can have the same value
- Localized — different values per language (if multi-language is enabled)
Components (reusable field groups)
Components are reusable groups of fields that you can embed in multiple content types. This avoids duplicating the same field structure across types.
Example: SEO Component
Create a "SEO" component with fields:
- Meta title (text)
- Meta description (text)
- OG image (media)
Then add this component to any content type that needs SEO fields — blog posts, pages, products, etc.
Managing components
Go to Content → Component Library to create and manage reusable components. Each component has:
- A name and description
- A set of fields (same field types as content types)
- Usage count showing how many content types reference it
Use components for patterns that repeat across content types — like "Author Info" (name + photo + bio), "CTA Block" (heading + description + button URL), or "Social Links" (platform + URL pairs).
Managing entries
Creating entries
Click into any collection type → New Entry. Fill in the fields defined by the schema and save.
Entry statuses
| Status | Meaning |
|---|---|
| Published | Live on your storefront |
| Draft | Saved but not visible to customers |
Editing and deleting
Click any entry to edit it. Use the actions menu to delete entries. Deleting is permanent.
Displaying content on your storefront
Use CMS widgets in the Page Builder to display your content entries:
| Widget | Description |
|---|---|
| CMS Entry Grid | Display entries in a grid layout with cards |
| CMS Entry Carousel | Horizontal scrolling entries |
| CMS Entry Detail | Full entry content on a detail page |
| CMS Content Body | Render the rich text body of an entry |
| CMS Author Card | Author/person card with photo and bio |
| CMS Meta Bar | Date, category, and metadata display |
| CMS Tags | Tag list for an entry |
| CMS Share Buttons | Social sharing buttons |
| CMS Related Entries | Related content suggestions |
| CMS Pagination | Page navigation for entry lists |
| CMS Taxonomy Filter | Filter entries by taxonomy/category |
| CMS Taxonomy List | Display all taxonomies as a list |
| CMS Field Display | Render a specific field from an entry |
CMS widgets automatically pull data from your content types. Select which content type to display in the widget settings, and it renders entries using your storefront's theme.
Use cases
| Content Type | Fields | Display |
|---|---|---|
| Testimonials | Name, photo, quote, rating, company | CMS Entry Grid on homepage |
| Team Members | Name, photo, role, bio, social links | CMS Entry Grid on About page |
| FAQs | Question, answer, category | CMS Entry Grid with Taxonomy Filter |
| Portfolio | Title, images, description, client, date | CMS Entry Grid + Detail pages |
| Press Mentions | Publication, date, quote, link, logo | CMS Entry Carousel |
| Store Locations | Name, address, hours, map embed, phone | CMS Entry Grid on Contact page |
| Announcements | Title, message, type, expiry (Single) | Banner widget on all pages |
Think of content types as "custom databases" for your store. Anything that has a repeating structure and needs to be displayed on your storefront is a good candidate for a content type.
System content types
Your store comes with one system content type:
- Blog — pre-configured with title, body, excerpt, featured image, author, category, and tags. Managed from the dedicated Blog section.
System types can't be deleted or have their core fields modified, but you can add additional custom fields to them.