A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Graham Carr
Jan 13, 2026
  37
(1 votes)

A day in the life of an Optimizely OMVP: Introducing Optimizely Style Manager

Managing display templates in Optimizely CMS (SaaS) has traditionally required working directly with the REST API or managing JSON configuration files manually. Today, I'm excited to share a new open-source tool that brings a visual, user-friendly interface to display template management: Optimizely SaaS Style Manager.

What Are Display Templates?

In Optimizely CMS (SaaS), display templates (also known as "styles") define how content editors can customise the visual presentation of content. They allow you to create predefined styling options for Sections, Rows, and Columns within Visual Builder, giving content editors flexibility without requiring developer intervention for every design change.

Each display template can include:

  • A unique key for identification
  • Display name shown to content editors
  • Base type (Section, Row, or Column)
  • Associated content type for context-specific styling
  • Custom settings with various editor types (text, boolean, number, dropdown)

The Challenge

While the Optimizely CMS API provides full CRUD operations for display templates, managing them through raw API calls or JSON files presents several challenges:

  • No visual interface for browsing existing templates
  • Manual JSON editing prone to syntax errors
  • Difficult to migrate templates between environments
  • No search or filtering when you have many templates

Enter Style Manager

Style Manager is a Blazor-based web application that connects directly to your Optimizely CMS instance via the REST API, providing a complete management interface for display templates.

Key Features

1. Full CRUD Operations
Create, view, edit, and delete display templates through an intuitive form-based interface. No more hand-crafting JSON or making raw API calls.

2. Smart Search & Filtering
Quickly find templates using text search across keys and display names, or filter by base type (Section, Row, Column). With debounced input, the interface stays responsive even with large template collections.

3. Dynamic Settings Management
Configure template settings visually with support for multiple editor types:

  • String - Text input fields
  • Boolean - Toggle switches
  • Number - Numeric inputs
  • Select - Dropdown menus with custom choices

Add, remove, and reorder settings and choices without touching JSON.

4. Content Type Integration
The new searchable content type dropdown fetches available content types directly from your CMS instance. Simply start typing to filter, use keyboard navigation, and select the appropriate content type for your template.

5. Import & Export
Transfer templates between environments with ease:

  • Export all templates or select specific ones to download as JSON
  • Import by pasting JSON or uploading a file
  • Conflict resolution - choose to skip or overwrite existing templates
  • Detailed results showing success/failure for each imported template

6. Secure OAuth Authentication
Style Manager uses OAuth 2.0 client credentials flow with automatic token caching and refresh. Your API credentials are configured once, and the application handles authentication transparently.

Getting Started

Prerequisites

Configuration

Update appsettings.json with your API credentials:


    "OptimizelyApi": {
    "BaseUrl": "https://api.cms.optimizely.com/preview3",
    "TokenUrl": "https://api.cms.optimizely.com/oauth/token",
    "ClientId": "your-client-id",
    "ClientSecret": "your-client-secret"
  }
}

Running the Application

dotnet run

Navigate to https://localhost:5001 and start managing your display templates.

Use Cases

Environment Migration

Developing new templates in a staging environment? Export them as JSON and import into production with a few clicks. The conflict resolution feature ensures you won't accidentally overwrite templates that have diverged.

Template Auditing

Need to review all templates for a specific content type? Use the search and filter capabilities to quickly locate and audit relevant templates.

Rapid Prototyping

Create and iterate on template configurations through the visual interface, then export the final JSON for version control or documentation.

Team Collaboration

Share exported JSON files with team members for review before importing to shared environments. The preview feature shows exactly what will be created or updated.

Technical Architecture

Style Manager is built with modern .NET technologies:

  • ASP.NET Core Blazor with Interactive Server rendering for a responsive SPA experience
  • Tailwind CSS for a clean, utility-first design
  • HttpClient with DelegatingHandler pattern for transparent authentication
  • System.Text.Json for efficient JSON serialization

The application follows clean architecture principles with clear separation between:

  • Pages - Blazor components for UI
  • Services - Business logic and API communication
  • Models - Data transfer objects matching the Optimizely API schema

What's Next?

This is just the beginning. Potential future enhancements include:

  • Bulk operations for managing multiple templates simultaneously
  • Template versioning to track changes over time
  • Validation rules for settings values
  • Template duplication for creating variations quickly
  • Dark mode for late-night template management sessions

Conclusion

Optimizely SaaS Style Manager transforms display template management from a developer-centric API task into an accessible, visual workflow. Whether you're a developer looking to speed up template creation or a technical content manager who needs to audit existing templates, Style Manager provides the tools you need.

The application is open source and available for you to use, modify, and contribute to. Give it a try and let us know how it improves your Optimizely CMS workflow!

Style Manager uses the Optimizely CMS REST API to manage display templates. Ensure your API credentials have appropriate permissions for the operations you need to perform.

Graham Carr, Solutions Architect

I am an experienced Solutions Architect with over 28 years’ experience in a wide range of products and technologies. I have helped companies deliver their digital vision from concept all the way through to delivery. I have a particular passion for DXPs (Digital Experience Platforms) and am a certified developer for Optimizely as well as a Platinum OMVP.

You can also follow me on https://adayinthelife.pro

Jan 13, 2026

Comments

Johan Kronberg
Johan Kronberg Jan 13, 2026 04:26 PM

Great work!

Please login to comment.
Latest blogs
Content modelling in Optimizely: Why your initial delivery decisions matter more than you think

The architectural shortcuts you take in sprint zero don't just create technical debt, they define whether your platform scales gracefully or crumbl...

Tom Robinson | Jan 12, 2026 |

A day in the life of an Optimizely OMVP: Introducing Query Library and Request Logs: Two Powerful New Features for OptiGraphExtensions v5

I am excited to announce two new features for OptiGraphExtensions v5 that give Optimizely CMS administrators greater visibility and control over...

Graham Carr | Jan 12, 2026

Indexing Geta Categories in Optimizely Graph

Different ways to fully use categories in headless architecture.

Damian Smutek | Jan 9, 2026 |

Building an custom Optimizely Opal tool with OCP SDK

Recently I have been working on some custom Opal tools and when looking on hosting options it was a no brainer to utilise Optimizely's OCP platform...

JSpencer | Jan 8, 2026

Event Mechanism on Contact Creation in Optimizely Commerce 14

In Optimizely Commerce 14, there is no traditional event or callback exposed for customer contact creation or updates. Instead, contact lifecycle...

Francisco Quintanilla | Jan 7, 2026 |