Mark Stott
+3
Apr 2, 2026
visibility 884
star star star star star
(5 votes)

Stott Robots Handler v7 for Optimizely CMS 13

Stott Robots Handler version 7 is now available for Optimizely PaaS CMS 13. This is includes updates to support the switch from a Site based architecture to an Application based architecture.

Robots Handler V7 initial interace

How does the change from Sites to Applications impact the user?

The data structure of Applications is subtly different to that of Sites. In CMS 12, sites were uniquely identified using a GUID. In CMS 13, Applications are uniquely identified using a string identifier. This breaks the relationship between existing robots.txt and llms.txt content and the sites they were configured to serve.

Users will have to reconfigure their robots.txt and llms.txt content when moving from CMS 12 to CMS 13. The content for both files is stored in the Dynamic Data Store and is matched to an active application before being displayed to the CMS Administrator or being served to end users.

The Environment Robots and the API Tokens are global configurations and are not bound to a specific site or application. When upgrading to version 7 and CMS 13, these features will retain their existing configuration.

What features does Stott Robots Handler have?

  • 🤖 Manage robots.txt content by Application and specific Host URL
  • 📄 Manage llms.txt content by Application and specific Host URL
  • 🔒 Override robots meta tags and response headers at an environment level to prevent indexing lower environments in search engines.
  • 🌐 APIs to support headless solutions
  • 🌐 APIs to support modification of robots.txt and llms.txt content directly within Optimizely Opal

What does this mean for Optimizely CMS 12?

Support for version 6 of the Stott Robots Handler is not going away. New functionality will be developed directly for version 7 and then backported to version 6 where appropriate. I can review the recent download stats on a version by version basis on nuget and I will use this as an indicator of the current market need.

I expect that it will take a few years for a significant portion of customers to move from CMS 12 to CMS 13. Therefore, I expect to maintain the CMS 12 version for the short to mid term.

Getting Started

Stott Robots Handler v7 is available for Optimizely PaaS CMS 13 on nuget.org and on api.nuget.optimizely.com. You can see the full installation instructions and package information over on the github page, including how to configure the add-on for use with Opti Id.

Getting started can be as simple as:

// Install the nuget package
dotnet add package Stott.Optimizely.RobotsHandler

// Add this to your services
services.AddRobotsHandler();

// Add this to your configure method
services.UseRobotsHandler();

// Add this to your _ViewImports.cshtml if you are running traditional
@addTagHelper *, Stott.Optimizely.RobotsHandler

Release 7.0.1

As of 24 June 2026, version 7.0.1 is now available on both nuget.org and nuget.optimizely.com. This hotfix includes:

  • Correcting the Content-Type header to include UTF-8 for both robots.txt and llms.txt.
  • Minor Cosmetic fixes:
    • Title bar is now visible again.
    • Containers no longer clash with Optimizely CMS built in styles resulting in excess padding.
  • Removed the “All Applications” option from the “Add new…” modals for both robots.txt and llms.txt content.
    • Validation already prevented users from saving a configuration without having selected a specific configuration.
  • Playwright tests now add confidence for future releases.

I am an OMVP and the author and maintainer of Stott Security and Stott Robots Handler for Optimizely CMS 12 & 13. You can find all of my content collated on https://www.stott.pro/ 

Apr 02, 2026

Comments

Mark Stott
Mark Stott Jun 24, 2026 08:11 AM

Update: I've added notes for bug fix release v7.0.1 to this article.  2 out of 3 bugs here are a direct result of the upgrade to CMS 13 and so it feels appropriate that they should live with the announcement blog.

error Please login to comment.
Latest blogs
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |