<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by Scott Reed</title> <link>https://world.optimizely.com/blogs/scott-reed/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>Supercharging Optimizely DXP Troubleshooting with the Azure Copilot Observability Agent</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/10/supercharging-optimizely-dxp-troubleshooting-with-the-azure-copilot-observability-agent/</link>            <description>&lt;p&gt;If you&amp;rsquo;ve logged into the Azure portal recently to check the Application Insights for your Optimizely DXP environment, you might have noticed a new toggle in the Logs UI labelled simply:&amp;nbsp;&lt;strong&gt;&quot;Agent.&quot;&lt;/strong&gt; And as you create a new query, being prompted with help from the Observability Agent&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src=&quot;/link/e079e0af11884b5991b56be2b21969dc.aspx&quot; width=&quot;698&quot; height=&quot;326&quot; /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Application Insights gives us many very useful tools, including recent updates such as Grafana dashboards that can help us view key information about our application. We technical specialists in the Optimizely DXP stack should be familiar with working within the investigate, monitoring, and usage areas.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However, one key pain point has been working with and remembering Kusto Query Language (KQL) but with recent updates in Application Insights and this default enabled on the Optimise DXP, this can now be a lot easier.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Instead of writing complex Kusto Query Language (KQL) to figure out why your modern Optimizely Commerce 15 checkout is dragging, or why your CMS 12 editors are experiencing slow load times, you can now ask plain-English questions.&lt;/p&gt;
&lt;p&gt;In this post, we&amp;rsquo;ll explore how to leverage this AI agent specifically for web apps running on Optimizely DXP, focusing on the exact types of telemetry, anomalies, and performance metrics that matter most for modern CMS 12/13 and Commerce 14/15 solutions.&lt;/p&gt;
&lt;h2&gt;The Modern Optimizely DXP Telemetry Landscape&lt;/h2&gt;
&lt;p&gt;Before we talk to the AI, we need to understand the data. Optimizely DXP environments (Integration, Preproduction, Production) automatically wire up Application Insights. For applications running on modern .NET (like CMS 12/13 and Commerce 14/15), this captures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Requests:&lt;/strong&gt; Server-side ASP.NET Core page loads, Content Delivery API calls, and Optimizely Graph queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependencies:&lt;/strong&gt; SQL Database queries, external API calls (payment gateways, ERPs), and internal Optimizely services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exceptions:&lt;/strong&gt; Server-side errors and handled exceptions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom Events:&lt;/strong&gt; Business logic milestones captured via &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;TelemetryClient&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Historically, correlating a spike in &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;Exceptions&lt;/span&gt; with a slowdown in &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;Dependencies&lt;/span&gt; required mastery of KQL &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;join&lt;/span&gt; statements. Now, the Observability Agent handles the translation. Let&#39;s look at how this plays out across the platform.&lt;/p&gt;
&lt;h2&gt;Scenario 1: Debugging Commerce 14/15 Checkout and Asynchronous Operations&lt;/h2&gt;
&lt;p&gt;Optimizely Commerce 14 and 15 fully embrace asynchronous programming. A modern checkout process involves validating a serialised cart, recalculating promotions, calling an external tax API, communicating with a payment provider, and finally using &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;SaveAsPurchaseOrderAsync()&lt;/span&gt; to convert the cart.&lt;/p&gt;
&lt;p&gt;If conversion rates drop, the culprit is often a silent performance degradation in one of these external or asynchronous steps.&lt;/p&gt;
&lt;h3&gt;The Old Way (KQL)&lt;/h3&gt;
&lt;p&gt;To find the average duration of the order saving operation over the last 24 hours, you&amp;rsquo;d have to write:&lt;/p&gt;
&lt;pre style=&quot;background: #f4f6f8; color: #1a1a1a; border: 1px solid #d0d7de; border-radius: 4px; padding: 12px; overflow-x: auto; font-family: Consolas,Menlo,monospace; font-size: 14px; white-space: pre;&quot;&gt;dependencies
| where name contains &quot;SaveAsPurchaseOrder&quot; or name contains &quot;IOrderRepository.SaveAsync&quot;
| where timestamp &amp;gt; ago(24h)
| summarise AvgDuration = avg(duration), Count = count() by bin(timestamp, 1h)
| render timechart
&lt;/pre&gt;
&lt;h3&gt;The Copilot Way&lt;/h3&gt;
&lt;p&gt;Toggle the &quot;Agent&quot; switch to &lt;strong&gt;On&lt;/strong&gt; and simply type:&lt;/p&gt;
&lt;blockquote style=&quot;border-left: 4px solid #0b6e4f; margin: 16px 0; padding: 8px 16px; background: #f7faf9;&quot;&gt;
&lt;p&gt;&lt;em&gt;&quot;Show me a timechart of the average duration for dependency calls related to IOrderRepository.SaveAsync over the last 24 hours, grouped by hour.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;What to Look For in Commerce 14/15:&lt;/h3&gt;
&lt;p&gt;When using the agent, focus your queries on the known bottlenecks of a modern e-commerce platform:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cart Serialisation Latency:&lt;/strong&gt; Commerce 14/15 stores active carts as JSON in the &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;SerializableCart&lt;/span&gt; table. Ask the agent: &lt;em&gt;&quot;Are there any SQL dependencies related to the SerializableCart table taking longer than 500ms today compared to yesterday?&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Third-Party Payment Delays:&lt;/strong&gt; &lt;em&gt;&quot;Show me the failure rate and average response time for external HTTP dependencies calling &#39;api.stripe.com&#39; (or your payment provider) over the last 7 days.&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promotion Engine Overhead:&lt;/strong&gt; &lt;em&gt;&quot;Did the average request duration of the /checkout API endpoint increase after our deployment at 2 PM today?&quot;&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can also ask the agent to find root causes: &lt;em&gt;&quot;Why did checkout requests fail more frequently between 2 PM and 4 PM today?&quot;&lt;/em&gt; The Copilot will analyse exceptions and dependency failures during that window and summarise the findings.&lt;/p&gt;
&lt;h2&gt;Scenario 2: Diagnosing CMS 12/13 Rendering and Headless Delivery&lt;/h2&gt;
&lt;p&gt;With CMS 12 and 13 running on ASP.NET Core, performance is incredibly fast out of the box. However, bottlenecks usually occur around custom block rendering, complex tag helpers, or heavy utilisation of Optimizely Graph and Content Delivery APIs in headless architectures.&lt;/p&gt;
&lt;h3&gt;Uncovering Headless and Search Bottlenecks&lt;/h3&gt;
&lt;p&gt;If your frontend Next.js application relies heavily on Optimizely Graph or Search &amp;amp; Navigation, a poorly optimised GraphQL query or &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;.Filter()&lt;/span&gt; statement will cause cascading slowdowns.&lt;/p&gt;
&lt;p&gt;Try prompting the Observability Agent with:&lt;/p&gt;
&lt;blockquote style=&quot;border-left: 4px solid #0b6e4f; margin: 16px 0; padding: 8px 16px; background: #f7faf9;&quot;&gt;
&lt;p&gt;&lt;em&gt;&quot;Identify the top 5 slowest outgoing HTTP requests to our Optimizely Graph or Search endpoints over the last 3 days. What CMS pages or API routes were users requesting when these slow calls happened?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The agent will automatically correlate the &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;dependencies&lt;/span&gt; table with the &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;requests&lt;/span&gt; table, saving you the hassle of writing complex cross-table joins.&lt;/p&gt;
&lt;h3&gt;Investigating ASP.NET Core Memory and Caching&lt;/h3&gt;
&lt;p&gt;CMS 12/13 utilises heavily optimised memory caching in .NET Core. If the cache is invalidated too frequently, you&#39;ll see a spike in SQL queries to the core CMS database.&lt;/p&gt;
&lt;blockquote style=&quot;border-left: 4px solid #0b6e4f; margin: 16px 0; padding: 8px 16px; background: #f7faf9;&quot;&gt;
&lt;p&gt;&lt;em&gt;&quot;Has there been an unexpected spike in dependency calls to the core CMS SQL database in the last 12 hours compared to the previous week? If so, what are the most common SQL commands being executed?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If an editor publishes a massive content change that clears a large portion of the cache, the Copilot can help you correlate that spike in database traffic directly to the time the editor hit &quot;Publish.&quot;&lt;/p&gt;
&lt;h2&gt;Scenario 3: Post-Deployment Verification on DXP&lt;/h2&gt;
&lt;p&gt;Deploying modern .NET applications to Optimizely DXP involves swapping slots in Production. The moments immediately following a slot swap are critical. Instead of staring at a raw stream of logs, you can use the Copilot as an active monitor.&lt;/p&gt;
&lt;h3&gt;The Post-Deployment Checkup&lt;/h3&gt;
&lt;p&gt;After a deployment finishes, open the App Insights logs, activate the Agent, and ask:&lt;/p&gt;
&lt;blockquote style=&quot;border-left: 4px solid #0b6e4f; margin: 16px 0; padding: 8px 16px; background: #f7faf9;&quot;&gt;
&lt;p&gt;&lt;em&gt;&quot;Summarise the health of the application over the last 60 minutes. Have any new exception types appeared that were not present in the 24 hours prior?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The AI will parse the &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;exceptions&lt;/span&gt; table, filter out the normal background noise, and highlight genuinely new errors&amp;mdash;like a missed dependency injection in your &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;Startup.cs&lt;/span&gt; or a misconfigured &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;appsettings.json&lt;/span&gt; binding introduced by your latest Commerce 15 release.&lt;/p&gt;
&lt;p&gt;If it finds something, you can follow up conversationally:&lt;/p&gt;
&lt;blockquote style=&quot;border-left: 4px solid #0b6e4f; margin: 16px 0; padding: 8px 16px; background: #f7faf9;&quot;&gt;
&lt;p&gt;&lt;em&gt;&quot;For that new InvalidOperationException related to dependency injection, what was the exact stack trace?&quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Best Practices for AI-Assisted Telemetry&lt;/h2&gt;
&lt;p&gt;While the Azure Copilot Observability Agent is a game-changer for Optimizely developers, it works best when you guide it properly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Enrich Your Telemetry:&lt;/strong&gt; Use &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;ITelemetryInitializer&lt;/span&gt; in your CMS 12/13 codebase to inject custom properties. Add the &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;CurrentLanguageBranch&lt;/span&gt; or &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;CustomerGroup&lt;/span&gt; to every request. You can then ask the agent: &lt;em&gt;&quot;Are authenticated B2B users experiencing slower API response times than anonymous users?&quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Track Custom Events:&lt;/strong&gt; Log specific business events like &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;TrackEvent(&quot;ItemAddedToCart&quot;)&lt;/span&gt; or &lt;span style=&quot;font-family: Consolas,Menlo,monospace; color: #0b6e4f;&quot;&gt;TrackEvent(&quot;GraphQueryExecuted&quot;)&lt;/span&gt;. This allows you to ask the agent business-centric questions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be Specific with Timeframes:&lt;/strong&gt; Vague questions yield vague answers. Always specify the time window (e.g., &quot;between 10 AM and noon UTC yesterday&quot;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The addition of the Azure Copilot Observability Agent to Application Insights drastically lowers the barrier to entry for deep telemetry analysis in modern Optimizely environments. By focusing your natural language queries on the specific architectural patterns of CMS 12/13 (like ASP.NET Core caching and Graph API calls) and Commerce 14/15 (like asynchronous cart processing), you can dramatically reduce your mean time to resolution (MTTR) and ensure a blazingly fast digital experience.&lt;/p&gt;
&lt;h2&gt;How can Niteco help you?&lt;/h2&gt;
&lt;p&gt;Niteco is the largest global certified Optimizely CMS and Commerce partner, and we are experts and specialists in the Optimizely agent platform. We have recently attended Opticon New York 2026 as a sponsored partner, and we&#39;ll be coming back next week to London. Come and find us at our stand, or by looking for our yellow trousers.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin: 20px 0 8px 0;&quot;&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; box-sizing: border-box; width: 23%; min-width: 190px; margin: 0 1% 16px 0; padding: 16px; background: #f7f7f5; border-top: 4px solid #F8D749; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 4px 0; font-size: 44px; line-height: 1.1; font-weight: 300; color: #16171a;&quot;&gt;#1&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; font-weight: bold; letter-spacing: 3px; text-transform: uppercase; color: #16171a;&quot;&gt;Optimizely&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px; line-height: 1.5; color: #444;&quot;&gt;The largest global partner. Powered by technical excellence and innovation. Accelerated by AI.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; box-sizing: border-box; width: 23%; min-width: 190px; margin: 0 1% 16px 0; padding: 16px; background: #f7f7f5; border-top: 4px solid #F8D749; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 4px 0; font-size: 44px; line-height: 1.1; font-weight: 300; color: #16171a;&quot;&gt;400+&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; font-weight: bold; letter-spacing: 3px; text-transform: uppercase; color: #16171a;&quot;&gt;AI-trained experts&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px; line-height: 1.5; color: #444;&quot;&gt;Certified by leading platforms like Optimizely, Microsoft, Contentful &amp;amp; Adobe.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; box-sizing: border-box; width: 23%; min-width: 190px; margin: 0 1% 16px 0; padding: 16px; background: #f7f7f5; border-top: 4px solid #F8D749; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 4px 0; font-size: 44px; line-height: 1.1; font-weight: 300; color: #16171a;&quot;&gt;2000+&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; font-weight: bold; letter-spacing: 3px; text-transform: uppercase; color: #16171a;&quot;&gt;Successful projects&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px; line-height: 1.5; color: #444;&quot;&gt;We have vast experience from years of delivering digital platforms for clients in diverse sectors.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; box-sizing: border-box; width: 23%; min-width: 190px; margin: 0 1% 16px 0; padding: 16px; background: #f7f7f5; border-top: 4px solid #F8D749; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 4px 0; font-size: 44px; line-height: 1.1; font-weight: 300; color: #16171a;&quot;&gt;9&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; font-weight: bold; letter-spacing: 3px; text-transform: uppercase; color: #16171a;&quot;&gt;Optimizely MVPs&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px; line-height: 1.5; color: #444;&quot;&gt;Largest team with OMVPs. Meaning the best &amp;amp; most experienced Optimizely minds will work with you.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;As Optimizely&#39;s largest certified partner in Optimizely CMS, Commerce, and the agent platform, we can help you with any of your strategic initiatives globally around content, commerce, or your organisational AI.&lt;/p&gt;
&lt;p&gt;If you would like help getting more out of your Optimizely DXP telemetry, get in touch with us at Niteco: &lt;a href=&quot;https://niteco.com/contact-us/&quot;&gt;https://niteco.com/contact-us/&lt;/a&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/10/supercharging-optimizely-dxp-troubleshooting-with-the-azure-copilot-observability-agent/</guid>            <pubDate>Thu, 08 Oct 2026 09:10:07 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely Agent Platform - October 2026 State of Play</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/10/optimizely-agent-platform---october-2025-state-of-play/</link>            <description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;A month ago I wrote up my takeaways from Opticon New York (&lt;a href=&quot;/link/fecc835a60ef4678891f74e1fcbf06ea.aspx&quot;&gt;Opticon New York &amp;amp; The Strategy on Upgrading to CMS 13 &amp;amp; Commerce 15&lt;/a&gt;). The headline was that Opal has grown up: the platform as a whole is now the &lt;strong&gt;Optimizely Agent Platform&lt;/strong&gt;, and the AI chat you work with day to day is now &lt;strong&gt;Mark&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The trouble is that the pace of delivery has been relentless. The 2026 release notes alone run to well over an hour of reading, with something shipping almost every week, and features have been renamed, moved, merged and superseded along the way. If you are a solution architect or technical lead trying to answer the simple question &lt;em&gt;&quot;what does the platform actually do today, and how is it put together?&quot;&lt;/em&gt;, it is genuinely hard to get a clean picture.&lt;/p&gt;
&lt;p&gt;So this post is my attempt at a &lt;strong&gt;state-of-play roundup as of early October 2026&lt;/strong&gt;, broken down by the core building blocks of the platform, with a focus on the architecture, configuration and governance details that matter when you are designing real solutions. Wherever I can, I call out &lt;strong&gt;what changed and when&lt;/strong&gt; using the official &lt;a href=&quot;https://docs.optimizely.com/agent-platform/release-notes&quot;&gt;release notes&lt;/a&gt;, and I flag the places where the documentation is still catching up.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;FYI, I know this is quite a long document, and it is mostly AI-generated, with my review added in. It should be a really good update for anyone who&#39;s used the platform, trying to keep up with all the changes. I&#39;ll probably do one of these every 6 months.&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on sources.&lt;/strong&gt; Everything here is based on the &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs&quot;&gt;Agent Platform documentation&lt;/a&gt;, the &lt;a href=&quot;https://docs.optimizely.com/agent-platform/release-notes&quot;&gt;2026&lt;/a&gt; and &lt;a href=&quot;https://docs.optimizely.com/agent-platform/release-notes/2025-agent-platform-release-notes&quot;&gt;2025&lt;/a&gt; release notes, and Optimizely&#39;s Opticon announcements, as they stood on 5 October 2026. Screenshots marked as from the documentation are reproduced with permission. Things move fast, so always double-check the docs before you commit to a design.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also &lt;a href=&quot;https://drive.google.com/file/d/1VLziEiYH4mSGEkiC3VrGJOTP_pSIwF0-/view?usp=sharing&quot;&gt;https://drive.google.com/file/d/1VLziEiYH4mSGEkiC3VrGJOTP_pSIwF0-/view?usp=sharing&lt;/a&gt; is a version of this document as a nice infographic for easier digestion&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;TL;DR for architects&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Area&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Where we are today&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Naming&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Opal &amp;rarr; &lt;strong&gt;Optimizely Agent Platform&lt;/strong&gt; (effective 1 September 2026). &lt;strong&gt;Mark&lt;/strong&gt; is the personified AI; &lt;strong&gt;Mark-1 / Mark AI&lt;/strong&gt; is the post-trained model family; &lt;strong&gt;Mark-IQ&lt;/strong&gt; is the context layer; &lt;strong&gt;Mark-Bench&lt;/strong&gt; is the open-source benchmark. The docs still say &quot;Opal&quot; almost everywhere.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Models&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Six inference levels (Quick &amp;rarr; Code) mapped to Gemini or Claude models. Admins pick a default &lt;strong&gt;model provider&lt;/strong&gt; per instance; specialised agents can override both provider and level. Mark&#39;s own post-trained models are announced as &quot;coming soon&quot;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Orchestration&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Chat automatically delegates to &lt;strong&gt;sub-agents&lt;/strong&gt; (Mini / Fast / Deep tiers) in isolated contexts, with parallel fan-out, no recursion and a per-turn dispatch budget.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Skills&lt;/strong&gt; (formerly Instructions), &lt;strong&gt;Brands&lt;/strong&gt;, &lt;strong&gt;Memory&lt;/strong&gt;, &lt;strong&gt;Personal files&lt;/strong&gt; and &lt;strong&gt;RAG&lt;/strong&gt; (CMP, Graph, and now your own artifacts).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;System tools, connector tools, &lt;strong&gt;remote MCP servers&lt;/strong&gt; (bring your own as of July) and &lt;strong&gt;custom tools&lt;/strong&gt; via SDKs for TypeScript, Python and C#. A large CMS 13 (PaaS) tool set landed from May onwards.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Agent Directory (70+ prebuilt), Agent Library (curated launcher), specialised agents, workflow agents (now with Code steps, parallel loops, nested workflows, trigger priority and version history).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Autonomy&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Virtual Teammates&lt;/strong&gt; with their own Opti ID, memory and scheduled jobs, plus &lt;strong&gt;Team Messages&lt;/strong&gt; as the collaboration layer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Input guardrails, the &lt;strong&gt;Quality&lt;/strong&gt; tab (Output Evaluation, Execution Guardrails, Execution Advisor), Safe URL Browsing, agent sharing/visibility, custom roles, exportable audit logs and version history.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Commercials&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Credits pooled across products, fixed complexity bands since March 2026, 200 complimentary credits per instance per month until the end of 2026.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;1. What&#39;s in a name? Opal, Agent Platform and Mark&lt;/h2&gt;
&lt;p&gt;Let&#39;s get the naming sorted first, because it is the single biggest source of confusion right now.&lt;/p&gt;
&lt;p&gt;Optimizely&#39;s support centre now labels the category as &quot;Agent Platform (previously Opal)&quot; and states that the rename to &lt;strong&gt;Optimizely Agent Platform&lt;/strong&gt; took effect on 1 September 2026, with &lt;strong&gt;Mark&lt;/strong&gt; (for Marketing) as the personification of the platform. At Opticon the brand was split into four parts:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Name&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Optimizely Agent Platform&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The overall platform: agents, workflows, tools, skills, governance and the admin app.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mark&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The personified AI you talk to. In practice, this is what we used to call Opal Chat and the in-product assistant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mark AI / Mark-1&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;A family of post-trained, open-weight-based models built specifically for marketing tasks. Optimizely positions these as roughly 10x more cost-efficient than frontier models on the same marketing work. The press release states they are &lt;strong&gt;coming soon&lt;/strong&gt; to all Agent Platform customers, so treat these as announced rather than generally available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mark-IQ&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The data and context layer the models draw on, including your experimentation history and web analytics.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mark-Bench&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;An open-source benchmark of 285 tasks across 15 marketing functions with more than 6,000 grading criteria.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On Mark-Bench, it is worth being precise about the numbers, because two sets are in circulation. The Opticon press release reports Agent Platform at a 67% all-pass rate against 60% for Claude Code, at half the cost, on default configurations. Optimizely&#39;s own Camp Opticon write-up quotes 58% versus 52% at 2.1x cheaper. Both come from Optimizely running its own benchmark, so if you are using them in a business case, cite which figure and the configuration behind it.&lt;/p&gt;
&lt;h3&gt;The docs are mid-migration&lt;/h3&gt;
&lt;p&gt;As of today (early October 2026) the documentation still uses &quot;Optimizely Opal&quot; in nearly every page title, the release notes are still called &quot;Optimizely Opal release notes&quot;, and the product UI in the doc screenshots still says Opal.&amp;nbsp;So you will see three names for the same thing depending on where you look. In this post I use &lt;strong&gt;Agent Platform&lt;/strong&gt; for the platform and &lt;strong&gt;Mark (Opal Chat)&lt;/strong&gt; for the chat experience, and I keep the documentation&#39;s feature names where they have not changed.&lt;/p&gt;
&lt;h3&gt;Other renames and retirements in 2026&lt;/h3&gt;
&lt;p&gt;The platform rename is not the only one. These are the changes I have seen trip people up:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;When&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;What changed&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;14 Jan 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The &lt;strong&gt;Connections&lt;/strong&gt; tab moved into &lt;strong&gt;Settings &amp;rarr; Product Connections&lt;/strong&gt;.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Old guides point to the wrong place.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;14 Jan 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;New tools and registries are &lt;strong&gt;disabled by default&lt;/strong&gt;; admins must enable them.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;New system tools will not appear in agents until switched on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;5 Feb 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Skills (then &quot;Instructions&quot;) became &lt;strong&gt;inactive by default&lt;/strong&gt; on creation.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;You must toggle &lt;strong&gt;Active&lt;/strong&gt; on.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;24 Feb 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&quot;Threads&quot; and &quot;conversations&quot; standardised to &lt;strong&gt;chats&lt;/strong&gt;.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Cosmetic, but affects training material.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;18 Mar 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The &lt;strong&gt;creativity&lt;/strong&gt; (temperature) setting was removed from specialised agents because newer models no longer support it.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Existing values are ignored, not errors.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;7 May 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Instructions renamed to Skills&lt;/strong&gt;. Existing instructions now live under &lt;strong&gt;Context &amp;rarr; Skills&lt;/strong&gt;, with no behaviour change.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The biggest terminology change before the rebrand.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;7 May 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;The 128-tool cap on dynamic tool lookups was removed.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Bigger tool catalogues are now practical.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;4 Jun 2026&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;cms_geo_apply and cms_geo_analysis (CMS SaaS) were&amp;nbsp;&lt;strong&gt;decommissioned&lt;/strong&gt;, replaced by the general CMS content tools.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Update any agents or workflows that reference them.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h2&gt;2. How the platform processes a request&lt;/h2&gt;
&lt;p&gt;Before going into features, it helps to understand the runtime model, because almost every feature plugs into one of its stages. Each prompt goes through roughly the following pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prompt and intent extraction.&lt;/strong&gt; Mark works out what you are actually asking for.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Skills.&lt;/strong&gt; Relevant skills are selected and injected into the system prompt.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contextual intelligence.&lt;/strong&gt; Product data, content knowledge and workspace context are added.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool selection.&lt;/strong&gt; The right tools and agents are chosen for the job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input generation and validation.&lt;/strong&gt; Parameters are built and checked. If they are invalid, Mark asks you for clarification instead of calling the model, which saves credits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM interaction.&lt;/strong&gt; Foundation models are called through business accounts, and your data is not used for training.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execute and refine.&lt;/strong&gt; Tools and agents run, and the output is re-evaluated and iterated on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response.&lt;/strong&gt; The result comes back, often as a canvas or an action card.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/E5TkJugsaS9HVfUjUaaVK_how-opal-works-diagram.png?format=webp&quot; alt=&quot;How Opal processes a request, from prompt to tailored response&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The way the docs describe the relationship between the building blocks is still the best mental model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Skills&lt;/strong&gt; define &lt;em&gt;how&lt;/em&gt; the AI behaves and uses tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools&lt;/strong&gt; provide &lt;em&gt;capabilities&lt;/em&gt;, such as reading data or taking action.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Specialised agents&lt;/strong&gt; package tools and skills into one well-defined task.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflow agents&lt;/strong&gt; chain agents together behind a trigger.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Virtual Teammates&lt;/strong&gt; (new in August) sit on top as persistent, autonomous roles that own jobs over time.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;3. Models and inference&lt;/h2&gt;
&lt;p&gt;This is the area that has changed most under the bonnet in 2026, and it has direct cost and quality implications.&lt;/p&gt;
&lt;h3&gt;Multi-model by design&lt;/h3&gt;
&lt;p&gt;The Agent Platform launched on Google Gemini and from&amp;nbsp;&lt;strong&gt;15 March 2026&lt;/strong&gt; Anthropic&#39;s Claude models (accessed via Google Vertex AI) joined the line-up, with &lt;strong&gt;Anthropic becoming a sub-processor&lt;/strong&gt; under the Optimizely DPA. If you are working with a client&#39;s legal or procurement team, that is the notice to point them to. Optimizely also states that the choice of model does not change how credits are consumed.&lt;/p&gt;
&lt;p&gt;On &lt;strong&gt;24 June 2026&lt;/strong&gt; model provider selection arrived at both the instance level and the specialised-agent level. Admins now choose a &lt;strong&gt;Default Model Provider&lt;/strong&gt; in &lt;strong&gt;Settings &amp;rarr; Chat&lt;/strong&gt;. The docs position Gemini as fast, cost-effective and good for creative writing, and Claude as stronger for complex tool orchestration and code generation. Specialised agents can override the instance default.&lt;/p&gt;
&lt;h3&gt;Inference levels&lt;/h3&gt;
&lt;p&gt;The inference level controls both the model and how much &quot;thinking&quot; it does before responding. &lt;strong&gt;Balanced&lt;/strong&gt; is the default.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Inference level&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Best for&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Google model&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Claude model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Quick&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Simple, fast tasks&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.5-flash-lite (medium thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-haiku-4-5 (medium thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Standard&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Everyday tasks without deep reasoning&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.8-flash (low thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-sonnet-5 (no thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Balanced&lt;/strong&gt; (default)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Everyday tasks that benefit from reasoning&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.8-flash (medium thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-sonnet-5 (high thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Complex&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Multi-step planning and analysis&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.8-flash (high thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-sonnet-5 (x-high thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Nuanced evaluation and strategy&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.1-pro (medium thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-opus-5 (high thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Code&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Code, plus anything needing maximum reasoning&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;gemini-3.1-pro (high thinking)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;claude-opus-5 (x-high thinking)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;Model mapping as published in the &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/inference-level&quot;&gt;Inference level&lt;/a&gt; documentation (updated 2 October 2026).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The mapping is managed by Optimizely and changes without any action on your side. Two recent examples: on 14 August the Complex and Code levels were upgraded to claude-opus-5, and on 13 September the Standard, Balanced and Complex levels moved to Gemini 3.8 Flash. Note that the current table shows Complex on claude-sonnet-5 with x-high thinking rather than Opus, so the August note appears to have been superseded. &lt;strong&gt;Treat the inference-level page as the source of truth, not the release notes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Admins set the organisation-wide default for chat; agent creators set a level per specialised agent that overrides it.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 368px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/ishgeJd8GwqaqGXYYFgF3_inference-level.png?format=webp&quot; alt=&quot;Setting the default inference level in Opal settings&quot; width=&quot;860&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Sub-agents (released 17 September)&lt;/h3&gt;
&lt;p&gt;This is one of the most architecturally interesting releases of the year, and it has gone a bit under the radar. When chat (or a specialised agent) hits a self-contained sub-task, it now hands it off to a &lt;strong&gt;sub-agent&lt;/strong&gt; that runs in its own isolated context and returns only the final result. Intermediate tool calls and documents never enter your conversation.&lt;/p&gt;
&lt;p&gt;The motivation is classic context engineering: avoiding context bloat (re-reading huge tool outputs every turn) and split attention (one model juggling unrelated objectives).&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Tier&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Inference level&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Extended thinking&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Typical use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mini&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Quick&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;No&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Extraction, classification, reformatting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Fast&lt;/strong&gt; (default)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Balanced&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Yes&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;General delegation needing judgement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Deep&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Yes, with a higher token budget&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Sustained multi-step reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The key technical behaviours:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Parallel fan-out.&lt;/strong&gt; Independent sub-tasks are dispatched concurrently; dependent ones run in sequence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-turn continuation.&lt;/strong&gt; A sub-agent can be resumed with its context intact.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No recursion.&lt;/strong&gt; Delegation tools are stripped from sub-agents, so there are no unbounded chains.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Per-turn dispatch budget.&lt;/strong&gt; Individual calls and fan-out slots share one cap per turn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instance default provider.&lt;/strong&gt; Sub-agents never override the configured model provider.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero configuration.&lt;/strong&gt; They are installed and managed by Optimizely, cannot be edited or deleted, and do not appear in the Agent Directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The practical gotcha is in your logs. One chat message can now produce several rows in &lt;strong&gt;Agent Activity Logs&lt;/strong&gt; (search for &quot;sub&quot;), each with its own credit total, attributed to the user who started the chat, with the model provider shown as &lt;strong&gt;Instance Default&lt;/strong&gt;. Rows sharing the same execution time indicate fan-out. If a client asks why one question produced five log entries, this is why, and Optimizely&#39;s position is that it is the same work routed more cheaply rather than extra work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/172d765d80e040ed85c50dc98299aba6.aspx&quot; width=&quot;1271&quot; height=&quot;445&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;4. The chat experience (Mark / Opal Chat)&lt;/h2&gt;
&lt;p&gt;Chat is still where most users meet the platform. It is available in the global navigation across Optimizely One and at &lt;a href=&quot;https://opal.optimizely.com&quot;&gt;opal.optimizely.com&lt;/a&gt;. (likely to be changed soon)&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img src=&quot;/link/605e7e540ce44ee1b0d59f5c0f7ed5d7.aspx&quot; width=&quot;1061&quot; height=&quot;291&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img src=&quot;/link/c03135f0b4bf4c3da60a929b9d0bd0d3.aspx&quot; width=&quot;1062&quot; height=&quot;391&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;What&#39;s new in chat in 2026&lt;/h3&gt;
&lt;p&gt;The chat has matured from a simple prompt box into a proper agent console. In rough chronological order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;January.&lt;/strong&gt; CSV uploads, Markdown in the input box, a toggle for the history panel, and dark mode and font-size settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;February.&lt;/strong&gt; Upload of .xlsx and .docx files, and an immediate &quot;thinking&amp;hellip;&quot; indicator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;March.&lt;/strong&gt; &lt;strong&gt;Skill mentions&lt;/strong&gt; (type &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/&lt;/span&gt; to apply a skill) and &quot;save this as a skill&quot; directly from a conversation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;April.&lt;/strong&gt; &lt;strong&gt;Message queuing&lt;/strong&gt; (keep typing while Mark works), pinned conversations, recency-sorted history and undo for pasted content.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;May.&lt;/strong&gt; &lt;strong&gt;Chat modes&lt;/strong&gt; to match output depth to the task, &lt;strong&gt;action cards&lt;/strong&gt; (rich, interactive inline components instead of plain text), &lt;strong&gt;chat pills&lt;/strong&gt; (one-click starter prompts), &lt;strong&gt;memory&lt;/strong&gt;, and &lt;strong&gt;multi-turn mode&lt;/strong&gt; for specialised agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;June.&lt;/strong&gt; A live &lt;strong&gt;activity stream&lt;/strong&gt; with inline tool status and &quot;context pickup pills&quot; showing what context was pulled in, Escape to stop a response, PowerPoint and Word generation (via the &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;code_execution&lt;/span&gt; tool) and an &lt;strong&gt;image editor&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;June 30.&lt;/strong&gt; The &lt;strong&gt;Agent Library&lt;/strong&gt; on the chat homepage and &lt;strong&gt;Personalize Opal&lt;/strong&gt;, a pinned onboarding agent that walks new users through connecting tools and building skills.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;July.&lt;/strong&gt; &lt;strong&gt;Conversation compaction&lt;/strong&gt; (automatic and manual checkpoints for long chats), &lt;strong&gt;editing sent messages&lt;/strong&gt;, rotating contextual tips, &lt;strong&gt;Agent Builder&lt;/strong&gt; and &lt;strong&gt;Skill Builder&lt;/strong&gt; inside chat, and &lt;strong&gt;Safe URL Browsing&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;September.&lt;/strong&gt; &lt;strong&gt;RAG for artifacts&lt;/strong&gt;, so chat can draw on your own canvases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For architects, compaction and sub-agents together are the important pair: they are Optimizely&#39;s answer to long-running, tool-heavy conversations getting slower, dumber and more expensive over time.&lt;/p&gt;
&lt;h3&gt;Chat everywhere: in-product and third-party surfaces&lt;/h3&gt;
&lt;p&gt;Chat is embedded across the stack, and that list keeps growing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMS 13.&lt;/strong&gt; The Optimizely.Cms.OpalChat adds Opal to the platform under verson 13.2.0 but 13.2.0 and onwards have Mark chat is built directly in to the CMS (requires DXP and Opti ID)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMS 12&lt;/strong&gt; (since October 2025, requires DXP and Opti ID), &lt;strong&gt;CMS SaaS&lt;/strong&gt;, &lt;strong&gt;Commerce Connect&lt;/strong&gt; (since September 2025), &lt;strong&gt;Configured Commerce&lt;/strong&gt;, &lt;strong&gt;PIM&lt;/strong&gt; (January 2026), &lt;strong&gt;CMP&lt;/strong&gt;, &lt;strong&gt;Web and Feature Experimentation&lt;/strong&gt;, &lt;strong&gt;Personalization&lt;/strong&gt;, &lt;strong&gt;Analytics&lt;/strong&gt;, &lt;strong&gt;ODP&lt;/strong&gt; and &lt;strong&gt;Product Recommendations&lt;/strong&gt; (beta from May 2026).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slack.&lt;/strong&gt; Now a verified app in the Slack Marketplace (February 2026).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Copilot&lt;/strong&gt; and &lt;strong&gt;Google Agentspace / Gemini Enterprise&lt;/strong&gt;, the latter using the Agent-to-Agent (A2A) protocol for cross-vendor agent collaboration (both since September 2025).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;5. The context layer: Skills, Brands, Memory, Personal files and RAG&lt;/h2&gt;
&lt;p&gt;If tools are what the platform can &lt;em&gt;do&lt;/em&gt;, this layer is what it &lt;em&gt;knows&lt;/em&gt;. It is also the part that has evolved the most conceptually this year, and it effectively forms the user-facing side of what Optimizely now calls Mark-IQ.&lt;/p&gt;
&lt;h3&gt;Skills (formerly Instructions)&lt;/h3&gt;
&lt;p&gt;Skills are the reusable rules, context and behavioural guidelines that shape output, such as brand voice, product taxonomies, personas, compliance language or output formats. They come in two scopes: &lt;strong&gt;organisation skills&lt;/strong&gt; (admin-managed) and &lt;strong&gt;personal skills&lt;/strong&gt; (user-managed, since 30 March).&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 1110px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/l_stRVPc54VVzstPTlMGQ_components-of-a-skill.png?format=webp&quot; alt=&quot;The components of a skill&quot; width=&quot;752&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Each skill has a name, watchers, version history, an active flag, a &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/shortcut&lt;/span&gt;, a scope, a &lt;strong&gt;When to use&lt;/strong&gt; activation trigger, the &lt;strong&gt;core skill&lt;/strong&gt; body (rich text or Markdown), attached reference files, and a &lt;strong&gt;Where to use&lt;/strong&gt; setting to scope it to a specific product instance.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/FmfPTLEdueHxalNaUtjnp_core-skill.png?format=webp&quot; alt=&quot;Editing the core skill in Markdown or rich text&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How selection actually works&lt;/strong&gt; matters a lot when you are designing a skills library:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;All active skills available to the user are gathered.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool-triggered skills&lt;/strong&gt; are applied automatically whenever their tools are in play, with no further evaluation.&lt;/li&gt;
&lt;li&gt;The remaining skills are judged by a relevancy model that reads your latest message, the conversation history and each skill&#39;s &lt;strong&gt;Keywords or phrases&lt;/strong&gt; field.&lt;/li&gt;
&lt;li&gt;Matched skills are added to the system prompt.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Two consequences are easy to miss. First, the relevancy model looks &lt;strong&gt;only&lt;/strong&gt; at the &lt;em&gt;When to use&lt;/em&gt; field and ignores the skill&#39;s name and body during selection. Second, it is deliberately &lt;strong&gt;inclusive&lt;/strong&gt;: it would rather include a borderline skill than miss a relevant one, and it matches semantically. A skill about &quot;marketing promotions&quot; can fire for a prompt about strawberries on sale. The fix is to write tight activation criteria, using &quot;ONLY use for&amp;hellip;&quot;, explicit &quot;Do NOT use for&amp;hellip;&quot; exclusions, synonyms for narrow concepts, and mutually exclusive boundaries between related skills. Leaving &lt;em&gt;When to use&lt;/em&gt; blank makes a skill shortcut-only.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/pe0Ve4qJMd5M5dXpWor55_tool-skills.png?format=webp&quot; alt=&quot;Configuring a tool-triggered skill&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The skills toolchain has also grown up considerably:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;When&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;5 Feb&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Status column added; skills inactive by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;30 Mar&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Personal skills; create skills from a chat; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/&lt;/span&gt; skill mentions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;14 Apr&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Redesigned &lt;strong&gt;Activation Trigger&lt;/strong&gt; section; better disambiguation when editing from chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;7 May&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Instructions &amp;rarr; Skills&lt;/strong&gt; rename&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;26 May&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;File-explorer UI for skill files; PPTX/DOCX support in skills (with code execution)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;27 May&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Skills section in specialised agents, with a &lt;strong&gt;Choose skills&lt;/strong&gt; picker to insert skills at exact points in a prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;24 Jun&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Skill watching; &lt;strong&gt;import/export&lt;/strong&gt; across instances; scope switcher between personal and organisation; skill preview in the agent editor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;30 Jun / 29 Jul&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Skills builder&lt;/strong&gt; GA, then Skill Builder inside chat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Brands (25 August) - Not fully out yet&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Brands&lt;/strong&gt; are a structured record of a brand&#39;s assets, colours, typefaces and usage rules, managed under &lt;strong&gt;Context &amp;rarr; Brand&lt;/strong&gt;. The clever bit architecturally is that &lt;strong&gt;publishing a brand turns it into a skill&lt;/strong&gt;, so you get a single source of truth that image generation, decks, documents and social images all read from, instead of each feature holding its own copy. Brands move through Draft, Published and Default states, and an organisation can hold several brands with one default. Marketers can also bootstrap a brand on the fly when none exists.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/u99QJ0i969KoCcnlVnKgv_brand-overview.png?format=webp&quot; alt=&quot;The Brand page under Context&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;For multi-brand clients this is a significant change. Previously you had to emulate this with a pile of brand-voice skills.&lt;/p&gt;
&lt;h3&gt;Memory (7 May) and Personal files (21 September)&lt;/h3&gt;
&lt;p&gt;Memory and personal files are now one system, and the implementation will look very familiar to anyone who has worked with coding agents: &lt;strong&gt;it is file-based.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Personal files&lt;/strong&gt; are a persistent, per-user document store under &lt;strong&gt;Context &amp;rarr; Personal Files&lt;/strong&gt;, with a browser-based editor for text and Markdown files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory&lt;/strong&gt; lives in that same store. &lt;strong&gt;FACTS.md&lt;/strong&gt; holds short durable facts, named notes files hold broader context, and &lt;strong&gt;RECENTS.md&lt;/strong&gt; is a running summary of recent conversations and agent activity that Mark maintains. &lt;strong&gt;MEMORY.md&lt;/strong&gt; is generated by Mark and is read-only.&lt;/li&gt;
&lt;li&gt;Memories are captured either automatically or on request (&quot;remember that&amp;hellip;&quot;).&lt;/li&gt;
&lt;li&gt;When &lt;strong&gt;Enable personal context&lt;/strong&gt; is turned on for a specialised agent, context files such as &lt;strong&gt;AGENTS.md&lt;/strong&gt; and &lt;strong&gt;MEMORY.md&lt;/strong&gt; are made available to the agent before it starts. You can restrict the agent to a &lt;strong&gt;working directory&lt;/strong&gt; (for example &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/context/agents/support&lt;/span&gt;) rather than exposing the whole store.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/T3Mw2AkhKTW61HyS_Wt2p_view-memories.png?format=webp&quot; alt=&quot;Viewing memory files in Personal Files&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/6TlhobVIXskXcKoj725RO_pesonal-files.png?format=webp&quot; alt=&quot;The Personal Files editor&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The distinction the docs draw is useful when you explain it to clients: &lt;strong&gt;skills capture how work gets done; memory captures who you are and what you are working on.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Retrieval-augmented generation (RAG)&lt;/h3&gt;
&lt;p&gt;RAG has expanded in three steps this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;7 May. RAG for CMP.&lt;/strong&gt; Permission-aware semantic and keyword retrieval across campaigns, tasks, assets, work requests and briefs, exposed as &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;rag_retrieve_from_cmp&lt;/span&gt; (structured) and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;rag_retrieve_from_cmp_as_csv&lt;/span&gt; (tabular). Alongside it came &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;rag_retrieve_from_optimizely_graph&lt;/span&gt; for CMS and CMP content via &lt;strong&gt;Optimizely Graph&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;24 June.&lt;/strong&gt; Folder and path filtering for CMP assets, &lt;strong&gt;relevancy explanations&lt;/strong&gt; for suggested assets, and &lt;strong&gt;EU-region RAG&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;17 September. RAG for artifacts.&lt;/strong&gt; Chat can now search your own canvases, respecting artifact permissions and including artifacts shared with you.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Retrieval, embedding and indexing all happen inside Optimizely&#39;s infrastructure, and every query respects the user&#39;s roles and permissions. Admins can turn RAG on or off for direct chat under &lt;strong&gt;Settings &amp;rarr; RAG Configuration&lt;/strong&gt;, but note that &lt;strong&gt;agents can use RAG regardless of that setting&lt;/strong&gt;, which is important if you are relying on the toggle for governance.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 386px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/2r8-QfX7E328za8VmjsrV_enable-rag-in-chat.png?format=webp&quot; alt=&quot;The Enable RAG in Chat setting&quot; width=&quot;1062&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is exactly where the CMS 13 upgrade story from my last post comes back in: &lt;strong&gt;Graph is the bridge&lt;/strong&gt; that gets CMS and Commerce content into the agent platform&#39;s retrieval layer.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;6. Tools: system, connector, remote MCP and custom&lt;/h2&gt;
&lt;p&gt;Tools are the actions. There are three families, and the year&#39;s big story is the arrival of &lt;strong&gt;MCP&lt;/strong&gt; as a first-class citizen.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 1172px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/w0geSGrNPUffwHrKbpJC3_tools-tab-numbered-list.png?format=webp&quot; alt=&quot;The Tools tab, with registries, filters and chat enablement&quot; width=&quot;903&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Tools area is now split into four tabs: &lt;strong&gt;Connectors&lt;/strong&gt; (each user links their own third-party accounts), &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Registries&lt;/strong&gt; and &lt;strong&gt;External Providers&lt;/strong&gt; (remote MCP servers and auth providers). You can filter tools by type (&lt;strong&gt;Remote MCP&lt;/strong&gt; or &lt;strong&gt;Opal Tools&lt;/strong&gt;), control per registry whether tools are active and whether they are enabled in chat, and restore chat defaults. Note that agents started from chat can use a registry&#39;s tools even when that registry is disabled for chat.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 510px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/C5D5n7xk_DuEjYKRPyp7l_registeries-tab-numbered-list.png?format=webp&quot; alt=&quot;The Registries tab with discovery URLs and sync&quot; width=&quot;1053&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;System tools for Optimizely products&lt;/h3&gt;
&lt;p&gt;Optimizely-maintained tools now cover practically every product. The ones that matter most for CMS and Commerce architects:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMS 13 (PaaS)&lt;/strong&gt;, which arrived from 22 May:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Content types:&lt;/strong&gt; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_list_content_types&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_get_content_type_details&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_create_content_type&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_update_content_type&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_delete_content_type&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Property groups:&lt;/strong&gt; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_list_property_groups&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_create_property_group&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Content:&lt;/strong&gt; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_get_content_data&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_update_content_item&lt;/span&gt; (creates a draft if no key is given), &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_delete_content_item&lt;/span&gt; (moves to the waste basket), &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_publish_content_item&lt;/span&gt; (immediate or scheduled), &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_create_content_variation&lt;/span&gt; (locale variations)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preview:&lt;/strong&gt; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_get_content_preview_url&lt;/span&gt;, which lets the agent fetch and analyse rendered HTML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO and GEO:&lt;/strong&gt; &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_seo_analysis&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_seo_edit&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_geo_analysis&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_geo_apply&lt;/span&gt; (writes JSON-LD into a &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;JsonLdTemplates&lt;/span&gt; property as a draft)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Display templates and media&lt;/strong&gt; (29 July): &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_list_display_templates&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_get_display_template&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_create_display_template&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_update_display_template&lt;/span&gt;, and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;paas_cms_upload_media&lt;/span&gt; (pulls a file from a public URL into CMS media)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the GEO tools were &lt;strong&gt;removed from CMS SaaS&lt;/strong&gt; in June but &lt;strong&gt;exist for CMS 13 PaaS&lt;/strong&gt;. Do not assume parity between the two tool sets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Optimizely Graph&lt;/strong&gt; (CMS SaaS, CMS 12 and CMS 13): &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;graph_content_type_schema&lt;/span&gt;, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;graph_content_graphql_executor&lt;/span&gt; and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;graph_content_search_tool&lt;/span&gt; (January), plus &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;graph_pinned_result&lt;/span&gt; and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;graph_synonyms&lt;/span&gt; (14 August), so agents can now &lt;strong&gt;tune search relevance&lt;/strong&gt;, not just query it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Commerce:&lt;/strong&gt; Commerce Connect became a &lt;strong&gt;product connection&lt;/strong&gt; on 13 March, alongside the &lt;strong&gt;Product Promotion&lt;/strong&gt; agent for Commerce Connect; Configured Commerce has system tools and a &lt;strong&gt;Restriction Group Creation&lt;/strong&gt; agent; and Product Recommendations has a growing &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;pr_*&lt;/span&gt; tool set for category, search, trend and algorithm performance reports and page management.&lt;/p&gt;
&lt;p&gt;Beyond that there are tool sets for CMP (work requests, campaigns, milestones, structured content, asset updates), Experimentation and Personalization (including ten &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;exp_ve_*&lt;/span&gt; Visual Editor DOM tools that power the AI variation development agent), Analytics, ODP, Campaign, PIM and Content Recommendations.&lt;/p&gt;
&lt;h3&gt;Connector tools and remote MCP&lt;/h3&gt;
&lt;p&gt;The connector catalogue exploded this year. Highlights include Microsoft 365 (Teams, Outlook, and from 18 September OneNote and &lt;strong&gt;sensitivity labels&lt;/strong&gt; on OneDrive and SharePoint), Google Workspace (Docs, Sheets, Slides, Calendar and Gmail), Google Ads, Google Search Console, GA4, LinkedIn Ads, OpenAI Ads, Adobe Analytics, Salesforce CRM, Amplitude, Mixpanel, WordPress, Zoom, Crunchbase and Figma.&lt;/p&gt;
&lt;p&gt;Remote MCP arrived in stages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;30 March.&lt;/strong&gt; Remote MCP connector tools (starting with Atlassian and Conductor), with &lt;strong&gt;user-level authentication&lt;/strong&gt;: the admin enables the server for the organisation, and each user authenticates their own account so actions carry their own identity and permissions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7 May.&lt;/strong&gt; Notion, Contentsquare, Contentful, Gamma, GitHub, Sanity and ClickUp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;29 July.&lt;/strong&gt; &lt;strong&gt;Bring your own remote MCP server&lt;/strong&gt;, plus HubSpot and ZoomInfo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;18 September.&lt;/strong&gt; Braze and Fullstory, and &lt;strong&gt;Contentful Global and EU endpoints&lt;/strong&gt; for data residency.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;User-level authentication is the most important architectural point here. It gives you proper action attribution and per-user data scoping for third-party systems, rather than a single shared service account.&lt;/p&gt;
&lt;h3&gt;Custom tools&lt;/h3&gt;
&lt;p&gt;When nothing off the shelf fits, you build a custom tool. The contract is straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;tool manifest&lt;/strong&gt; describing name, description, typed parameters, the execution endpoint and auth requirements.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;discovery endpoint&lt;/strong&gt; (typically &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/discovery&lt;/span&gt;) that returns the manifest. If it is unreachable or malformed, the tools simply will not appear.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;execution endpoint&lt;/strong&gt;, typically a POST with a JSON body returning JSON.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication.&lt;/strong&gt; Notably, the docs state that &lt;strong&gt;only Opti ID is supported for tool authentication&lt;/strong&gt; at the moment, with other providers in the works.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since 1 April, parameters support &lt;strong&gt;nested schemas&lt;/strong&gt; (objects within objects, arrays of objects and enums), which makes richer integrations far less awkward. Tools are hosted either on &lt;strong&gt;Optimizely Connect Platform (OCP)&lt;/strong&gt; or anywhere publicly reachable, and they are registered as a registry with a discovery URL that you can re-sync.&lt;/p&gt;
&lt;p&gt;Official SDKs:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Language&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Install&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;TypeScript / JavaScript&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;npm install @optimizely-opal/opal-tools-sdk&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Express middleware, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;@tool()&lt;/span&gt; decorators, parameter validation, auth helpers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Python&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;pip install optimizely-opal.opal-tools-sdk&lt;/span&gt; (import as &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;opal_tools_sdk&lt;/span&gt;)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;FastAPI integration, auto &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;/discovery&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;C# / .NET&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;See note below&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;ASP.NET Core integration, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;[Tool]&lt;/span&gt; and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;[RequiresAuth]&lt;/span&gt; attributes, DI support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A small but real gotcha for .NET teams: the docs currently show the install command as &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;Install-Package OptimizelyOpal.OpalToolsSDK&lt;/span&gt;, but link to a NuGet listing named &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;Optimizely.Opal.Tools&lt;/span&gt;. Check NuGet for the current package ID before you pin it in a project.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;7. Agents&lt;/h2&gt;
&lt;h3&gt;The four kinds of agent&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Type&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Who builds it&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Agent Directory agents&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Optimizely&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Prebuilt, installable agents. There are now 70+ listed in the credits reference alone. Since &lt;strong&gt;25 August they auto-update&lt;/strong&gt; when Optimizely publishes a new version (on by default).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Agent Library&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Optimizely (curated)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;A browsable launcher on the chat homepage with more than 45 agents runnable in one click, without installation (30 June).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Specialised agents&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;You&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;One well-defined task, with your prompt template, tools, skills, variables, model provider and inference level.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Workflow agents&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;You&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Multi-step automations of triggers, logic and agents. Still described in the docs as &lt;strong&gt;private GA and not available on all instances&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 572px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/riQIZv2U-uUAyVJt84u0R_agents-reusable-content-block.png?format=webp&quot; alt=&quot;The Agents page in the Opal app&quot; width=&quot;1208&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Directory agents worth knowing as a CMS or Commerce architect&lt;/h3&gt;
&lt;p&gt;The Directory has shifted from generic content helpers towards agents that act directly on the platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CMS 13 (PaaS):&lt;/strong&gt; Content Model Creation, Page Builder, Content Analysis, GEO Schema Optimization and SEO Metadata Implementation. The Content Analysis agent produces a Markdown instruction set for a content type that the Page Builder agent then uses, which is a neat pattern for on-model content generation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CMS SaaS&lt;/strong&gt; equivalents, plus Content Refresh Analysis and FAQ Creation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commerce:&lt;/strong&gt; Product Promotion (Commerce Connect) and Restriction Group Creation (Configured Commerce).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experimentation:&lt;/strong&gt; Experiment Conflict Checker, Backlog Prioritization (PIE scoring), Value Estimator, Program Overview, Program Health Review, Feature Experimentation Governance, and the &lt;strong&gt;Feature Flag Implementation&lt;/strong&gt; agent, which outputs a portable &lt;strong&gt;SKILL.md&lt;/strong&gt; for implementing a flag in your codebase. That is a nice nod towards developer agent tooling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI search and AEO:&lt;/strong&gt; GEO Auditor, the Conductor AEO Gap Finder, AI Brand Visibility and Competitive Share of Voice agents, Profound Citation Gap Analysis, and Agent Visibility Analytics Insights.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Specialised agents: what&#39;s new&lt;/h3&gt;
&lt;p&gt;The agent editor has quietly become quite sophisticated over 2026:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versioning&lt;/strong&gt; with view, restore and branch-from-version (January).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt template shortcuts&lt;/strong&gt; for inserting variables, tools and skills inline; &lt;strong&gt;case-insensitive, unique variables&lt;/strong&gt;; &lt;strong&gt;array/list inputs&lt;/strong&gt; (May).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example shots&lt;/strong&gt; in the prompt template (February) and &lt;strong&gt;preferred output examples&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSON export and import&lt;/strong&gt; for moving agents between instances (April).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-turn interaction mode&lt;/strong&gt; in chat (May). Note that specialised agents always run single-turn inside workflows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model provider and inference level per agent&lt;/strong&gt; (June).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sharing and visibility&lt;/strong&gt; (30 June): private, named people or the whole organisation, with view, run, edit and delete permission levels. New agents default to &lt;strong&gt;private&lt;/strong&gt; where the feature is enabled, and it is not available on all tiers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Builder&lt;/strong&gt; in chat (29 July), so agents can be created and iterated on conversationally.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personal context and working directory&lt;/strong&gt; settings (September).&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;60-minute timeout&lt;/strong&gt; (since November 2025) to stop runaway executions burning credits.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Workflow agents: what&#39;s new&lt;/h3&gt;
&lt;p&gt;Workflow agents are made up of &lt;strong&gt;triggers&lt;/strong&gt; (chat, schedule, webhook and email), &lt;strong&gt;logic&lt;/strong&gt; (conditions, loops and code) and &lt;strong&gt;agents&lt;/strong&gt;.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/qRVER8BLyJNTg0gYmDQkh_review-workflow-components.png?format=webp&quot; alt=&quot;The structure of a workflow agent&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This has been the busiest area for releases:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;When&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Jan&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Add a trigger first when building&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Mar&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Builder-first creation flow; &lt;strong&gt;multi-branch conditions&lt;/strong&gt; in a single node; email trigger improvements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Apr&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Webhook trigger redesign with product instance selection and default CMP auth headers; &lt;strong&gt;parameter generation logs&lt;/strong&gt;; helper messages for chat triggers; JSON download and copy; case-sensitive conditions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;May&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Workflow &lt;strong&gt;import/export&lt;/strong&gt;; loop validation; schedule start time and &lt;strong&gt;no end date&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Jun&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Execution-log export to CSV/Excel with date ranges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;29 Jul&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Nested workflows&lt;/strong&gt;; &lt;strong&gt;static versus predicted parameters&lt;/strong&gt; (lock a variable or let the LLM fill it); &lt;strong&gt;Agent Update Warning&lt;/strong&gt; before editing an agent used by a workflow; &lt;strong&gt;Version History&lt;/strong&gt; for workflows; a new &lt;strong&gt;Execution Status Taxonomy&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;17 Sep&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Code step&lt;/strong&gt; (Python, JavaScript or Bash, with no external service needed); &lt;strong&gt;Run iterations in parallel&lt;/strong&gt; on loops; &lt;strong&gt;trigger priority&lt;/strong&gt; (Standard versus Background) so batch runs do not delay interactive ones&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;/link/016a9f6001bc4762a3718cf3cb8653a2.aspx&quot; width=&quot;696&quot; height=&quot;1110&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Code step is a big deal. Previously, any deterministic transformation, such as parsing, maths or reshaping JSON between agents, meant either burning an LLM call or standing up a custom tool. Now it can live inline in the workflow. Together with nested workflows and static parameters, workflow agents are becoming a reasonable low-code orchestration layer rather than just a chain of prompts.&lt;/p&gt;
&lt;p&gt;A credit note: a workflow&#39;s cost is &lt;strong&gt;the sum of the specialised agents it invokes, with no overhead for the workflow itself&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;8. Virtual Teammates and Team Messages&lt;/h2&gt;
&lt;p&gt;This was the headline Opticon launch, released on &lt;strong&gt;25 August (Not availible to everyone yet, especially partners)&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;What a Virtual Teammate is&lt;/h3&gt;
&lt;p&gt;A Virtual Teammate is a persistent AI worker built from the same components you already have, namely &lt;strong&gt;tools&lt;/strong&gt;, &lt;strong&gt;agents and workflows&lt;/strong&gt;, and &lt;strong&gt;jobs&lt;/strong&gt; (workflows it runs on its own, on a schedule or on events), wrapped in a persistent identity with memory, a persona and a defined role. The distinction from an agent is &lt;strong&gt;continuity&lt;/strong&gt;: an agent runs when you invoke it, whereas a teammate keeps working, holds context, improves from feedback and collaborates with other teammates.&lt;/p&gt;
&lt;p&gt;The launch roster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chief of Staff:&lt;/strong&gt; daily and weekly briefs, meeting prep and recaps, and competitive intelligence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Marketing Analyst:&lt;/strong&gt; scheduled, decision-ready GA4 reports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SEO &amp;amp; AI Search Analyst:&lt;/strong&gt; reasons across Search Console, GA4, Conductor and AI Visibility Analytics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CRO Manager:&lt;/strong&gt; monitors behaviour, analyses competitor UX and &lt;strong&gt;stages experiment configurations&lt;/strong&gt; in Optimizely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Personalization Strategist:&lt;/strong&gt; builds and runs personalisation campaigns end to end.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Identity and access: the architect&#39;s checklist&lt;/h3&gt;
&lt;p&gt;This is the bit to get right in any implementation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each teammate gets &lt;strong&gt;its own Opti ID account&lt;/strong&gt; (its own login and email, flagged as a virtual user). It shows up alongside people and fits into existing access and audit processes, and &lt;strong&gt;its usage is tracked separately from human usage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;does not consume a product seat&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It gets &lt;strong&gt;only the access you grant it&lt;/strong&gt;, with nothing inherited automatically from the person who hired it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inside Optimizely products it acts as itself. Outside Optimizely it acts through accounts a human connects on its behalf&lt;/strong&gt;, usually the person who hired it. It cannot authorise third-party connections on its own.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;CMS 13 and CMS SaaS&lt;/strong&gt; there is an extra step: after granting the teammate a role in the Opti ID Admin Center, you must also add it to the relevant content under &lt;strong&gt;Settings &amp;rarr; Set Access Rights&lt;/strong&gt; in CMS, with only the rights its jobs need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: 439px;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/rTp0e_qht88QPTmqoQQ70_access-rights.png?format=webp&quot; alt=&quot;Granting a Virtual Teammate access rights in CMS&quot; width=&quot;908&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That last point is another reason &lt;strong&gt;Opti ID is non-negotiable in CMS 13&lt;/strong&gt;: Virtual Teammates are first-class principals in the identity layer, so the same governance you apply to people applies to them.&lt;/p&gt;
&lt;h3&gt;Autonomy controls&lt;/h3&gt;
&lt;p&gt;By default a teammate &lt;strong&gt;drafts and proposes, and a human approves&lt;/strong&gt; via Team Messages. As confidence builds you can allow specific actions to run automatically within boundaries you set, and you configure its persona, values, who it may talk to, and which tools it can read, write or run. Admins enable teammates for the organisation and can pause or deactivate them; users and agent builders hire and configure their own. You can even switch identity to work in the platform &lt;em&gt;as&lt;/em&gt; the teammate.&lt;/p&gt;
&lt;h3&gt;Team Messages&lt;/h3&gt;
&lt;p&gt;Team Messages is the real-time collaboration layer for people, teammates and agents, offering direct messages, group chats and channels, with sharing of files, agents and artifacts, mentions and persistent history. It follows you across products (an unread badge appears on the IM icon in CMP, Experimentation and elsewhere), and teammates also join meetings and share transcript summaries in Teams and Slack.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/Nf41dmYPbtQnknCTcpzNT_team-messages.png?format=webp&quot; alt=&quot;Team Messages&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Alongside it sit the &lt;strong&gt;Tracker&lt;/strong&gt; and &lt;strong&gt;Notifications&lt;/strong&gt; (in-app tray, Notification Center, browser notifications since May, and skill-update and guardrail notification categories since June).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;9. Quality, safety and governance&lt;/h2&gt;
&lt;p&gt;If Virtual Teammates are the accelerator, this is the brake, and it is what makes autonomous operation defensible to a client&#39;s risk team.&lt;/p&gt;
&lt;h3&gt;Input guardrails (29 July)&lt;/h3&gt;
&lt;p&gt;You define rules in plain language about what users may ask, and the platform &lt;strong&gt;trains a classifier&lt;/strong&gt; to enforce them. This is useful for keeping usage on-topic and compliant without hand-maintaining block lists.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/9602487681be43c885477790206c12d5.aspx&quot; width=&quot;925&quot; height=&quot;755&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;The Quality tab for specialised agents (1 June)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/VU6IVwwlUlIrd7XwYC9En_quality-tab-overview.png?format=webp&quot; alt=&quot;The Quality tab for a specialised agent&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Quality tab gives you three mechanisms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Output Evaluation.&lt;/strong&gt; An AI judge scores every run against &lt;strong&gt;up to 10 criteria&lt;/strong&gt;, a &lt;strong&gt;baseline score between 75% and 95%&lt;/strong&gt; (in 5% steps) and &lt;strong&gt;up to five examples&lt;/strong&gt;. This builds on the preferred-output examples from December 2025 and the ability (January 2026) to promote past runs to evals.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution Guardrails.&lt;/strong&gt; These learn what &quot;normal&quot; looks like for an agent and progress through &lt;strong&gt;Learning &amp;rarr; Watching &amp;rarr; Enforcing&lt;/strong&gt; as successful runs accumulate. You control sensitivity and whether flagged runs are stopped automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution Advisor.&lt;/strong&gt; This has no configuration screen; it acts on what the other two detect. It &lt;strong&gt;recovers flagged runs&lt;/strong&gt; with corrective guidance, &lt;strong&gt;retries failed tool calls&lt;/strong&gt; with adjusted input, and &lt;strong&gt;reviews sensitive tool calls&lt;/strong&gt; (email, publish, delete) with inline &lt;strong&gt;Approved&lt;/strong&gt; or &lt;strong&gt;Blocked&lt;/strong&gt; verdicts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each run therefore carries two independent verdicts, an &lt;strong&gt;Evaluation Score&lt;/strong&gt; and a &lt;strong&gt;Guardrail Status&lt;/strong&gt;, and a run can pass one and fail the other. The docs suggest starting with Output Evaluation and adding guardrails once behaviour has stabilised, which matches how I would roll it out.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/JvGh28VWtIFjb4mIDrVNQ_access-the-quality-tab-4.png?format=webp&quot; alt=&quot;Accessing Output Evaluation and Execution Guardrails&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Safe URL Browsing (29 July)&lt;/h3&gt;
&lt;p&gt;Every URL is screened before the platform browses it. &lt;strong&gt;Standard&lt;/strong&gt; (always on) checks Google Web Risk for malware, social engineering and unwanted software. &lt;strong&gt;Advanced&lt;/strong&gt; (opt-in per instance under &lt;strong&gt;Settings &amp;rarr; Chat&lt;/strong&gt;) adds a &lt;strong&gt;Cloudflare Radar deep scan&lt;/strong&gt; in parallel, which can add up to 30 seconds of latency for URLs Cloudflare has not seen recently. Only &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;http&lt;/span&gt; and &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;https&lt;/span&gt; are accepted, &lt;strong&gt;redirect targets are screened too&lt;/strong&gt; (which closes the open-redirect bypass), and &lt;strong&gt;links in emails processed by email triggers are also checked&lt;/strong&gt;. Blocked requests return no partial content, only the threat category.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/8iZ7543ngHYoQ2I-3fiyJ_advanced-url-safety-checks.png?format=webp&quot; alt=&quot;Advanced URL safety checks setting&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If a client&#39;s firewall blocks the platform from scanning their sites, there is a published allowlist of separate &lt;strong&gt;non-EU and EU egress IPs&lt;/strong&gt;, last updated on 22 July. Check the admin guide for the current list rather than copying it from old project documentation.&lt;/p&gt;
&lt;h3&gt;Roles, auditability and change control&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Roles:&lt;/strong&gt; Opal Administrator, &lt;strong&gt;Agent Builder&lt;/strong&gt; (new on 24 February, for people who build agents without being admins) and Opal User, plus &lt;strong&gt;custom roles&lt;/strong&gt; in the Opti ID Admin Center.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit:&lt;/strong&gt; Created By, Triggered By and Modified By on agents and skills; credit usage per run in logs; execution-log export with date ranges for specialised and workflow agents; and the Execution Status Taxonomy (July).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change control:&lt;/strong&gt; version history for specialised agents, skills and workflows; watchers on skills and agents; and the Agent Update Warning before editing an agent a workflow depends on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Human in the loop for side effects:&lt;/strong&gt; for example, &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;send_email&lt;/span&gt; shows a confirmation &quot;island&quot; in chat (since December 2025), and Execution Advisor can gate sensitive tool calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kill switch:&lt;/strong&gt; generative AI can be turned off for an organisation in the Opti ID Admin Center. Be aware that turning it off means contacting Optimizely Support to re-enable it.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;10. Artifacts and canvases&lt;/h2&gt;
&lt;p&gt;Outputs have also grown well beyond chat text:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Canvas&lt;/strong&gt; (December 2025) is the working surface for documents, HTML, React/Next.js, CSV and PowerPoint content, with downloads in the relevant formats (February), an &quot;Edit in canvas&quot; button, a raw Markdown mode (May) and &lt;strong&gt;space-level sharing permissions&lt;/strong&gt; with view, edit and manage access (June).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Artifacts page&lt;/strong&gt; (May) is a single searchable home for everything you have created, with &lt;strong&gt;sharing&lt;/strong&gt; and, since September, &lt;strong&gt;RAG over artifacts&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PowerPoint and Word&lt;/strong&gt; creation and editing (June), when the &lt;span style=&quot;font-family: Consolas,Menlo,Monaco,monospace; font-size: 0.92em; color: #0b5d3b;&quot;&gt;code_execution&lt;/span&gt; tool is enabled, now on-brand by default thanks to Brands.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;image editor&lt;/strong&gt; (June) offers element detection and selection, brush transforms, batch edits and smart aspect ratios. (below)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitless 1:1 Personalization&lt;/strong&gt; (June) generates landing pages per target account or segment, which is the capability I covered from the keynote last month.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/link/f6d36291e8c64c828f338e6a63d67219.aspx&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;11. Administration, data residency and credits&lt;/h2&gt;
&lt;h3&gt;Administration essentials&lt;/h3&gt;
&lt;p&gt;The setup order has not changed: &lt;strong&gt;connect your product instances first&lt;/strong&gt; under &lt;strong&gt;Settings &amp;rarr; Product Connections&lt;/strong&gt;. If an instance is not connected, it cannot use the platform&#39;s features.&lt;/p&gt;
&lt;p style=&quot;font-size: 0.85em; color: #555; margin-top: 2px;&quot;&gt;&lt;img style=&quot;max-width: 100%; height: auto;&quot; src=&quot;https://cdn.images.archbee.com/BrbvVORKJ5iIeSMZye5kI/JRB_-VY_6VeSpeT0aSP3p_product-connections.png?format=webp&quot; alt=&quot;Product Connections in Opal settings&quot; /&gt; &lt;em&gt;Source: Optimizely Agent Platform documentation&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Other settings to know about are the default model provider and inference level, RAG in chat, Advanced URL safety, and the &lt;strong&gt;email domain&lt;/strong&gt; used for outbound email. Be careful with the email domain: it is a single subdomain prefix per instance, and &lt;strong&gt;it cannot be changed once set&lt;/strong&gt;. Users without Opti ID can also be enabled (see &quot;Enable Opal for non-Opti ID users&quot; in the docs).&lt;/p&gt;
&lt;h3&gt;Data residency&lt;/h3&gt;
&lt;p&gt;The platform is hosted in the &lt;strong&gt;US and the EU&lt;/strong&gt;, with the region chosen on your order form. Everyone uses the same URL, and routing to your region happens behind the scenes. Customer inputs and outputs are stored long-term in North America or the EU (Belgium), with no per-country selection. However, &lt;strong&gt;prompt processing goes through global model endpoints&lt;/strong&gt; for availability and performance, so a prompt may be processed in any region, although the LLM does not retain it and the output returns to your region. EU app hosting arrived on 4 June and EU RAG on 24 June. If a client has strict residency requirements, that processing nuance is the one to raise early.&lt;/p&gt;
&lt;h3&gt;Credits and cost&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Credits are &lt;strong&gt;pooled across all eligible Optimizely products&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Since &lt;strong&gt;1 March 2026&lt;/strong&gt;, usage falls into &lt;strong&gt;fixed complexity bands&lt;/strong&gt; for predictability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every instance gets 200 complimentary credits per month from 1 October 2025 until 31 December 2026.&lt;/strong&gt; This is worth noting for 2027 budgeting.&lt;/li&gt;
&lt;li&gt;There are &lt;strong&gt;no per-user credit limits&lt;/strong&gt;. You control spend by controlling who has access.&lt;/li&gt;
&lt;li&gt;Usage is visible in the Opti ID &lt;strong&gt;Usage and billing dashboards&lt;/strong&gt;, with monthly notifications, and in the redesigned &lt;strong&gt;Opal Agent Usage&lt;/strong&gt; dashboard (30 June), which shows executions, credits, top agents and users, and weekly active users.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Complexity band&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Average credits per invocation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;Chat and basic agents&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;XS&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;S&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;M&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;L&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;130&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;XL&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;200&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To give a sense of scale from the published per-agent figures: SEO Metadata Implementation for CMS 13 averages 120&amp;ndash;200 credits, GEO Schema Optimization 40&amp;ndash;60, Content Model Creation 30&amp;ndash;80 and the Conductor AEO Gap Finder 180&amp;ndash;200.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who pays&lt;/strong&gt; depends on the trigger: for chat and in-product invocations it is the invoking user, but for &lt;strong&gt;schedule, webhook and email triggers it is the user who created the trigger&lt;/strong&gt;. Keep that in mind when you design shared automations. In practice, you probably want a dedicated owner (or, increasingly, a Virtual Teammate) owning scheduled workflows, so usage reporting stays meaningful.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;12. 2026 at a glance&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; background: rgb(232, 241, 236); font-weight: bold; white-space: nowrap;&quot;&gt;Month&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left; background: #e8f1ec; font-weight: bold;&quot;&gt;Headline releases&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Jan&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Specialised agent versioning; prompt template shortcuts; Graph tools; CMS SaaS content tools; Experimentation and Personalization system tools; PIM chat; tools disabled by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Feb&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Agent Builder role&lt;/strong&gt; and custom roles; Slack Marketplace app; canvas downloads; example shots; Visual Editor, CMP and Analytics tool sets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Mar&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Claude models join (15 March); fixed-band credits (1 March); &lt;strong&gt;Commerce Connect product connection&lt;/strong&gt;; &lt;strong&gt;personal skills&lt;/strong&gt;; user-level auth for connectors; first &lt;strong&gt;remote MCP&lt;/strong&gt; connectors; credit usage in logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Apr&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;Agent JSON import/export; message queuing; nested parameter schemas for custom tools; &lt;strong&gt;CMS 13 Opal Chat NuGet&lt;/strong&gt;; Idea Builder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;May&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Instructions &amp;rarr; Skills&lt;/strong&gt;; &lt;strong&gt;memory&lt;/strong&gt;; Artifacts page; notifications; chat modes, action cards and chat pills; &lt;strong&gt;RAG for CMP and Graph&lt;/strong&gt;; &lt;strong&gt;CMS 13 content tools&lt;/strong&gt;; more remote MCP servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Jun&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Quality tab&lt;/strong&gt;; EU hosting and EU RAG; model provider selection; skill import/export; PPTX/DOCX generation; image editor; &lt;strong&gt;Agent Library&lt;/strong&gt;; agent sharing and visibility; Limitless 1:1 Personalization; Teams and Outlook tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Jul&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Agent Builder and Skill Builder in chat&lt;/strong&gt;; &lt;strong&gt;input guardrails&lt;/strong&gt;; Safe URL Browsing; conversation compaction; &lt;strong&gt;nested workflows&lt;/strong&gt;; workflow version history; &lt;strong&gt;bring-your-own remote MCP&lt;/strong&gt;; CMS 13 display template and media tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Aug&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Virtual Teammates&lt;/strong&gt;; &lt;strong&gt;Team Messages&lt;/strong&gt;; &lt;strong&gt;Brands&lt;/strong&gt;; Directory auto-update; Graph synonyms and pinned results; CMS 13 Page Builder and Content Analysis agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid rgb(200, 211, 205); padding: 6px 10px; vertical-align: top; text-align: left; white-space: nowrap;&quot;&gt;&lt;strong&gt;Sep&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #c8d3cd; padding: 6px 10px; vertical-align: top; text-align: left;&quot;&gt;&lt;strong&gt;Rename to Agent Platform and Mark&lt;/strong&gt;; Mark-1, Mark-IQ and Mark-Bench announced; &lt;strong&gt;sub-agents&lt;/strong&gt;; &lt;strong&gt;RAG for artifacts&lt;/strong&gt;; workflow &lt;strong&gt;Code step&lt;/strong&gt;, parallel loops and trigger priority; &lt;strong&gt;personal files&lt;/strong&gt;; LinkedIn and OpenAI Ads connectors; Braze and Fullstory MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For context, at the start of the 2025 release notes Opal was essentially a chat assistant embedded in individual products. The platform pieces, namely specialised agents, workflow agents, the Agent Directory, system tools and custom tools, only arrived on &lt;strong&gt;9 September 2025&lt;/strong&gt;. Everything in the table above has been built in the thirteen months since.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;13. What this means for solution architects&lt;/h2&gt;
&lt;p&gt;Pulling this together, these are the points I would take into any design conversation right now:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Upgrade the foundations first.&lt;/strong&gt; Opti ID (identity for humans &lt;em&gt;and&lt;/em&gt; teammates), Graph (retrieval, search tuning and agent access to content) and product connections are the prerequisites for nearly everything above. This is the practical reason the CMS 13 and Commerce 15 upgrade is a strategic decision, not just a version bump.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Treat skills as code.&lt;/strong&gt; With import/export, versioning, watchers and a selection model that only reads &lt;em&gt;When to use&lt;/em&gt;, a skills library deserves the same discipline as any shared configuration: naming conventions, scoped activation criteria with explicit exclusions, review, and promotion between instances.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decide your integration pattern deliberately.&lt;/strong&gt; For each external system, the choice is now between an existing connector, a vendor&#39;s remote MCP server, your own remote MCP server, or a custom tool (on OCP or self-hosted). User-level auth on MCP and connectors gives better attribution; custom tools currently authenticate with Opti ID only.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Put deterministic logic in deterministic places.&lt;/strong&gt; Use workflow Code steps and static parameters for anything that does not need an LLM, and keep specialised agents small and single-purpose.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design for cost visibility.&lt;/strong&gt; Choose the inference level per agent rather than defaulting everything to Pro, expect sub-agent rows in logs, and be deliberate about who owns scheduled and webhook triggers, since they pay.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layer governance before autonomy.&lt;/strong&gt; Input guardrails, Output Evaluation, then Execution Guardrails, and only then let Virtual Teammates act without approval, scoping their Opti ID roles and CMS access rights to exactly what their jobs need.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use the docs carefully.&lt;/strong&gt; They are excellent but moving fast: naming is mid-migration, workflow agents are still flagged as private GA, release notes can be superseded by reference pages (as with the inference mapping), and at least one SDK package ID is inconsistent. When it matters, verify in your own instance.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Twelve months ago, Opal was a promising chat assistant with a brand-new agent builder. Today the Optimizely Agent Platform has a multi-model runtime with managed sub-agent delegation, a layered context system (skills, brands, memory, files and RAG), an open tool ecosystem built around MCP, low-code workflows with real code execution, autonomous Virtual Teammates with their own identities, and a governance stack to keep it all in check. Mark is the friendly face on top, and Mark&#39;s own post-trained models are next.&lt;/p&gt;
&lt;p&gt;For those of us designing solutions on Optimizely, the platform is no longer an add-on to CMS or Commerce. It is becoming the operational layer that sits across them, and the quality of what it can do depends directly on how well the underlying platform is connected through Opti ID, Graph and the product connections.&lt;/p&gt;
&lt;p&gt;If you would like help shaping your agent platform strategy, building custom tools and MCP integrations, or getting onto CMS 13 and Commerce 15 so you can use all of this, get in touch with us at Niteco: &lt;a href=&quot;https://niteco.com/contact-us/&quot;&gt;https://niteco.com/contact-us/&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Key references&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Agent Platform documentation: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs&quot;&gt;https://docs.optimizely.com/agent-platform/docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2026 release notes: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/release-notes&quot;&gt;https://docs.optimizely.com/agent-platform/release-notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2025 release notes: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/release-notes/2025-agent-platform-release-notes&quot;&gt;https://docs.optimizely.com/agent-platform/release-notes/2025-agent-platform-release-notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Inference level and model mapping: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/inference-level&quot;&gt;https://docs.optimizely.com/agent-platform/docs/inference-level&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sub-agents overview: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/sub-agents-overview&quot;&gt;https://docs.optimizely.com/agent-platform/docs/sub-agents-overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills overview: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/skills-overview&quot;&gt;https://docs.optimizely.com/agent-platform/docs/skills-overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tools overview: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/tools-overview&quot;&gt;https://docs.optimizely.com/agent-platform/docs/tools-overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create custom tools (SDKs): &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/create-custom-tools&quot;&gt;https://docs.optimizely.com/agent-platform/docs/create-custom-tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Virtual Teammates overview: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/virtual-teammates-overview&quot;&gt;https://docs.optimizely.com/agent-platform/docs/virtual-teammates-overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Quality tab overview: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/quality-tab-overview&quot;&gt;https://docs.optimizely.com/agent-platform/docs/quality-tab-overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Credits: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/agent-platform-credits&quot;&gt;https://docs.optimizely.com/agent-platform/docs/agent-platform-credits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Administrator guide: &lt;a href=&quot;https://docs.optimizely.com/agent-platform/docs/get-started-with-agent-platform-for-administrators&quot;&gt;https://docs.optimizely.com/agent-platform/docs/get-started-with-agent-platform-for-administrators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mark models and Mark-Bench press release (1 September 2026): &lt;a href=&quot;https://www.prnewswire.com/news-releases/optimizely-introduces-purpose-built-ai-models-for-marketing-that-deliver-frontier-level-quality-at-a-fraction-of-the-cost-302865074.html&quot;&gt;https://www.prnewswire.com/news-releases/optimizely-introduces-purpose-built-ai-models-for-marketing-that-deliver-frontier-level-quality-at-a-fraction-of-the-cost-302865074.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My Opticon New York write-up: &lt;a href=&quot;/link/fecc835a60ef4678891f74e1fcbf06ea.aspx&quot;&gt;https://world.optimizely.com/blogs/scott-reed/dates/2026/9/opticon-new-york--the-strategy-on-upgrading-to-cms-13-/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/10/optimizely-agent-platform---october-2025-state-of-play/</guid>            <pubDate>Mon, 05 Oct 2026 10:45:21 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely Graph - Provisioning, User Management &amp; Developer Instances</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/optimizely-graph-user-management--developer-instances/</link>            <description>&lt;p&gt;Upgrading to Optimizely CMS 13 marks a major architectural shift as Optimizely Graph takes over as the central query and delivery engine, retiring the legacy Search &amp;amp; Navigation system. Delivering these enterprise solutions at Niteco frequently reveals a common hurdle: the initial confusion surrounding user access. Graph utilizes a new beta management interface, and before developers or content teams can even see it in their product dropdown, explicit permissions must be configured within the Opti ID Admin Center.&lt;/p&gt;
&lt;h2&gt;Provisioning an instance&lt;/h2&gt;
&lt;p&gt;If you are on the &lt;strong&gt;SaaS &lt;/strong&gt;product, you already have an instance of Optimizely Graph created for you, so you can skip this step. If you are moving to &lt;strong&gt;PaaS&lt;/strong&gt; &lt;strong&gt;CMS13&lt;/strong&gt;, you first need to make sure you have an instance.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is first achieved by navigating into your DXP management portal for your project&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Access &lt;a href=&quot;https://paasportal.episerver.net/&quot;&gt;https://paasportal.episerver.net/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Select the project you want to enable Graph for&lt;/li&gt;
&lt;li&gt;Switch to the API tab&lt;/li&gt;
&lt;li&gt;Click on Enable Graph Service (note that if you had a pre-CMS13 instance, it may be showing a &quot;Prepare for CMS 13&quot; which will provision you another instance that you can use during the CMS13 project in parallel to the CMS12 version)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/link/fa8b2e64a25a49039f5f88612420bc55.aspx&quot; width=&quot;958&quot; height=&quot;163&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This should then enable the Graph service, which shouldn&#39;t take too long. It will tell you it&#39;s done and provide you with all of the access keys straight away that you can use for integration, preproduction, and production (don&#39;t worry about having to note these down straight away. Unlike some other API credentials, these can always be viewed)&lt;/p&gt;
&lt;p&gt;Once this is done, you can provision user access.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Provisioning User Access via Opti ID&lt;/h2&gt;
&lt;p&gt;Optimizely Graph leverages Opti ID for authentication, meaning access is completely governed by the Admin Center. By default, a new Graph instance will not automatically appear for all users in the product dropdown in the Optimizely Home. To unblock a team, access must be manually assigned through the admin portal (this needs to be done by someone with &lt;strong&gt;admin &lt;/strong&gt;access in the admin center via https://home.optimizely.com/)&lt;/p&gt;
&lt;div&gt;This can be done two ways:
&lt;ol&gt;
&lt;li&gt;Navigating to a user directly and adding the product (search user, click, add product access)&lt;/li&gt;
&lt;li&gt;Going through the products tab and importing a user or a CSV&lt;/li&gt;
&lt;/ol&gt;
I&#39;m going to explain the latter.&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the Products tab&lt;/li&gt;
&lt;li&gt;Click on Graph (you should then see all of the instances)&lt;/li&gt;
&lt;li&gt;Click any instance that you want to add users to&lt;/li&gt;
&lt;li&gt;You&#39;ll see all of the users that are currently in that instance. In the top right-hand corner, click on&amp;nbsp;&lt;strong&gt;Invite User. &lt;/strong&gt;(Also, handily, here you can import a CSV if you have multiple users, which makes it a lot easier. You can download the format when you click on&amp;nbsp;&lt;strong&gt;Import users with CSV&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;When adding a user, add their email, and then under product access select&amp;nbsp;&lt;strong&gt;Add Product Access&lt;/strong&gt;, it will prepopulate this instance and just give them the required permission level, such as Administrator.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Complete this and save it, and then the user will have access.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/link/09070232071c4604a86332eb4753bf0a.aspx&quot; width=&quot;475&quot; height=&quot;244&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Users who are given access should get an email invite, and then they will see Graph inside their dropdown of products at https://home.optimizely.com/.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/872708dd22ac40e4a1075d9df9416116.aspx&quot; width=&quot;305&quot; height=&quot;295&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Navigating the Search Management Portal&lt;/h2&gt;
&lt;p&gt;The Graph management system is currently in a &lt;strong&gt;BETA&lt;/strong&gt;&amp;mdash;officially known as the Search Management portal&amp;mdash;provides centralized oversight for your search implementation. The left-hand navigation is categorized into distinct operational areas&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;. &lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Health &amp;amp; Monitoring:&lt;/strong&gt; Contains the Search Overview and Performance dashboards for tracking metrics like total queries and click-through rates&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;. &lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Search Tools:&lt;/strong&gt; Provides editorial control over the search experience through features like Pinned Results and Synonyms&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;. &lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Developer:&lt;/strong&gt; Houses the Development Accounts section for managing isolated testing instances&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;. &lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Generating Developer Accounts for Sandbox Testing&lt;/h2&gt;
&lt;p&gt;A critical feature for engineering teams building headless implementations or testing complex Graph queries is the ability to spin up isolated sandbox environments. These self-service development instances ensure that experimental queries and prototype integrations do not impact production data. These temporary accounts support up to 50 queries per second and automatically expire 90 days after creation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Within the Search Management portal, navigate to the &lt;strong&gt;Developer&lt;/strong&gt; heading in the sidebar and select &lt;strong&gt;Development Accounts&lt;/strong&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;. &lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fill out the required provisioning fields: Developer First Name, Developer Last Name, Developer Email, and the target hosting Region. The email address provided here will be granted administrator access to the new instance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Create Developer Instance&lt;/strong&gt; and wait for the provisioning process to complete.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The system will display a one-time credentials screen containing the Instance Name, Instance ID, Portal URL, AppKey, Secret, and a read-only Single key.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These credentials are only displayed once upon creation. It is imperative to copy and store them securely in a password manager immediately, as they cannot be retrieved once the window is closed. With these keys secured, developers can connect their local CMS 13 environments directly to the temporary Graph instance and begin querying.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/8d309394fb474f30a5acd69483091a05.aspx&quot; width=&quot;651&quot; height=&quot;479&quot; /&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/optimizely-graph-user-management--developer-instances/</guid>            <pubDate>Mon, 28 Sep 2026 15:15:39 GMT</pubDate>           <category>Blog post</category></item><item> <title>WebMCP providing understandable actions to agents in Optimizely</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/webmcp-providing-understandable-actions-to-agents-in-optimizely/</link>            <description>&lt;h1&gt;WebMCP is coming to Optimizely: a strategic view for CMS and Commerce teams&lt;/h1&gt;
&lt;p&gt;At Opticon 2026 in New York, Alex Atzberger framed Optimizely&#39;s strategy around three experiences: the marketer experience, the customer experience, and the agent experience. The first two are familiar territory. The third is the one that changes how we plan a site, and WebMCP is the most concrete piece of it.&lt;/p&gt;
&lt;p&gt;The premise is simple. Your site now has two audiences. Humans arrive through search, ads and email, and interact with the interface you designed for them. AI agents arrive on a customer&#39;s behalf, running in that customer&#39;s browser, and try to complete the same tasks through the same interface. Today they do that badly. They read the screen, guess which button does what, and break the moment a designer moves something. The result is a slow, unreliable experience that the brand has no control over and no visibility into.&lt;/p&gt;
&lt;p&gt;WebMCP is the proposed fix, and the shift it represents is worth understanding before the implementation detail arrives.&lt;/p&gt;
&lt;p&gt;And what&#39;s more it was announced that WebMCP support will be coming automatically to the platform, so similar to how we can help fix AEO and GEO issues, agents and the DXP platform will give you features to be able to add this to your website!&lt;/p&gt;
&lt;h2&gt;What WebMCP?&lt;/h2&gt;
&lt;p&gt;Instead of leaving an agent to work out what your interface does, the site tells it.&lt;/p&gt;
&lt;p&gt;A page can publish a short, structured list of the actions it supports: search the catalogue, choose a size, book an appointment, request a brochure, check an order, start a return. Each action has a name, a description, and a defined set of inputs. The agent picks from that menu rather than guessing, and the action runs in the customer&#39;s own browser window, visibly, so the person can see what is happening and step in.&lt;/p&gt;
&lt;p&gt;That last part matters commercially. The action executes inside your site, in your session, under your rules. Your brand, your pricing logic, your validation and your design decisions all stay intact. This is the opposite of the alternative future, where agents scrape your content, complete tasks in an interface you do not own, and reduce your brand to a data source.&lt;/p&gt;
&lt;p&gt;WebMCP is a proposed web standard being incubated at the W3C, led largely by engineers from Google and Microsoft. It is the browser-side counterpart to the server-side integrations many teams have already started building. Optimizely shipped a server-side MCP server for Experimentation earlier in 2026, which lets an agent work with your experimentation programme on behalf of an authorised user. WebMCP addresses the other side of the equation: not your team&#39;s tools, but your customers&#39; journeys on your live site.&lt;/p&gt;
&lt;h2&gt;Where the standard actually is&lt;/h2&gt;
&lt;p&gt;Set expectations carefully, because this is early.&lt;/p&gt;
&lt;p&gt;Chrome and Edge both have developer trials running. Brave and ChatGPT&#39;s desktop app have shipped early support. Firefox and Apple are engaged in the standards process but have not committed to implementing it, and the specification is still changing. Nobody should be building a business case on WebMCP delivering measurable revenue this quarter.&lt;/p&gt;
&lt;p&gt;What it does justify is a place on the roadmap and a set of preparatory decisions, most of which have value whether or not the standard lands as expected. That is the useful framing for a client conversation: this is not a bet on one specification, it is groundwork for agent-mediated traffic that is already arriving. Optimizely reported agent-related traffic growing around 6% month over month in its own data.&lt;/p&gt;
&lt;h2&gt;What Optimizely showed, and what is still unclear&lt;/h2&gt;
&lt;p&gt;Optimizely previewed WebMCP as part of the agent experience story at Opticon 2026, alongside agent-facing measurement: AI citations, brand mentions, share of voice, and which pages are receiving machine rather than human requests. The stated direction is that these capabilities become part of the platform rather than a per-project custom build.&lt;/p&gt;
&lt;p&gt;What has not been published in detail, at the time of writing, is the shape of that delivery: which products get it first, whether it surfaces through Forms and Visual Builder or through developer tooling, and on what timeline. If you are planning around specifics, get them from your Optimizely contact rather than from conference coverage, including this article.&lt;/p&gt;
&lt;h2&gt;Where this is useful on a content site&lt;/h2&gt;
&lt;p&gt;The strategic question is not &quot;how do we support agents&quot;. It is &quot;which actions on our site are worth an agent completing reliably&quot;. That list is usually shorter and more obvious than people expect.&lt;/p&gt;
&lt;p&gt;On a content-led site, the strongest candidates are the interactions that already have a clear structure and a clear business value attached:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enquiry and lead capture.&lt;/strong&gt; Brochure requests, contact forms, event registration, quote requests. These are the highest-intent actions on most sites and the ones most damaged by friction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Booking and appointments.&lt;/strong&gt; Complex date and time selection is exactly where agents struggle and where drop-off is highest for humans too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search and filtered discovery.&lt;/strong&gt; A faceted listing is a set of choices you have expressed as an interface. The underlying capability is easy for an agent to use well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-step journeys.&lt;/strong&gt; Applications, eligibility checks, configurators. Anywhere a visitor currently works through several screens to reach an answer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Account self-service.&lt;/strong&gt; Change a detail, download a document, check a status.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quinnipiac University, which runs around 17 sites on Optimizely, pointed at precisely this class of task at Opticon: booking a campus visit, requesting information. Nothing exotic. Just the things people came to the site to do.&lt;/p&gt;
&lt;p&gt;There is a second-order effect worth raising with content teams. Nazanin Ramezani made the point at Opticon that as generating channel variations gets easier, managing the source content repository becomes the harder part of the job. The same logic applies to actions. If your taxonomy is thin and your product data is inconsistent, the descriptions of your actions will be vague, and vague descriptions get used incorrectly or ignored. Content and data quality stop being a hygiene issue and become a performance issue.&lt;/p&gt;
&lt;h2&gt;Where this is useful on a B2C storefront such as Customized Commerce&lt;/h2&gt;
&lt;p&gt;For consumer commerce on Customized Commerce, the value concentrates in three places.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting the right product into the basket.&lt;/strong&gt; Consumer catalogues are option-heavy, and the valid combinations are messy. The navy is out of stock in a 12; the longer leg length only comes in three colours. An agent reading two dependent dropdowns will get this wrong some of the time, and it will get it wrong quietly, putting the wrong item into a basket the shopper then buys. Your product data already holds the correct answer. Letting the site resolve an option request, rather than letting an agent infer it, turns the most likely failure into a point of difference. On a fashion, homeware or consumer electronics site, this is the single most valuable action to get right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Repeat and low-consideration purchases.&lt;/strong&gt; Reordering consumables, refilling a subscription, adding to a wishlist, registering interest in an out-of-stock line. These are the journeys where the customer has no interest whatsoever in your interface and every interest in the outcome. They are also, conveniently, low risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Post-purchase self-service.&lt;/strong&gt; Order tracking, delivery changes, returns and exchanges. High volume, low margin for error, and a direct line to both customer service cost and repeat purchase rate.&lt;/p&gt;
&lt;p&gt;Running these actions inside the shopper&#39;s own session is what makes them viable. The session already knows the market and currency, the signed-in customer, the delivery preferences, the current basket and the promotions applied to it. An external integration has to reconstruct all of that before it can answer a question as ordinary as &quot;what does this cost me, delivered, by Friday?&quot;. Keeping the action on your site means it simply answers.&lt;/p&gt;
&lt;h2&gt;Where to start&lt;/h2&gt;
&lt;p&gt;Three things are worth doing in the next quarter, none of which depend on the specification settling.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Inventory your actions.&lt;/strong&gt; List the things customers actually come to your site to do, and rank them by business value. If an action cannot be described clearly and briefly, that tells you something about the journey rather than about WebMCP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit the data underneath the top three.&lt;/strong&gt; Product options, availability, taxonomy, form routing. This is the work that determines whether agent-assisted journeys succeed, and it improves the human experience in the meantime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decide how you will recognise agent traffic.&lt;/strong&gt; Before it grows large enough to distort your reporting and your testing programme.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The technology here will not be the hard part. The hard part is the same thing every Opticon takeaway eventually circles back to: knowing which actions matter, having data structured well enough to describe them, and having governance robust enough to let something other than a human trigger them. None of that is blocked on a specification reaching maturity. It can start now.&lt;/p&gt;
&lt;p&gt;When we have more information about the specifics of the Optimizely implementation, I&#39;ll provide another article. Until then, I wanted this article to highlight where Optimizely is going around the agent experience and the new WebMCP technology.&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/webmcp-providing-understandable-actions-to-agents-in-optimizely/</guid>            <pubDate>Tue, 08 Sep 2026 09:11:49 GMT</pubDate>           <category>Blog post</category></item><item> <title>Opticon New York &amp; The Strategy on Upgrading to CMS 13 &amp; Commerce 15</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/opticon-new-york--the-strategy-on-upgrading-to-cms-13-/</link>            <description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Well, another exciting Opticon in New York City wrapped up last week and it was certainly one of the most fun and exciting ones I&#39;ve been to,&lt;/p&gt;
&lt;p&gt;Niteco was there in force with our whole leadership and delivery team for UK and USA and it was a blast!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/5b71901e80a54069a99c19bd8ae160fe.aspx&quot; width=&quot;666&quot; height=&quot;466&quot; /&gt;&lt;/p&gt;
&lt;div&gt;As part of my takeaways from Opticon, I&#39;m going to break it down into two sections:
&lt;ol&gt;
&lt;li&gt;All the key announcements and what it means for your company and organisation&lt;/li&gt;
&lt;li&gt;A bit more about the strategy around CMS13 and Commerce15 upgrades&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Opticon Takeaways&lt;/h2&gt;
&lt;p&gt;Obviously, as expected, this year, one of the biggest pieces of excitement following the launch of Opal a year ago is everything that has been achieved and delivered on that platform and the amazing heights that the platform has grown to in the last year.&lt;/p&gt;
&lt;h3&gt;Opal is now a fully agentic platform and had a rename&lt;/h3&gt;
&lt;p&gt;Opal has now expanded in masses of capabilities in its agentic structure, workflows, and the addition of new features at Opticon. As part of this, there was a rename in how we talk about this&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The platform as a whole is now the Optimizely agent platform&lt;/li&gt;
&lt;li&gt;The specific marketing operational models (that are post trained) and agent experience are specifically now called Mark (Mark - Eting :p)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Virtual Teamates allow automomous operation&lt;/h3&gt;
&lt;p&gt;Although we have had workflows for a little while now that can be scheduled or triggered, Virtual Teamates now bring a layer of autonomous operation as an AI specific teammate that can do specific operations and work with the team &lt;a href=&quot;https://www.optimizely.com/solutions/virtual-teammates&quot;&gt;https://www.optimizely.com/solutions/virtual-teammates&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Teamates have an Opti ID identity, making them a unique member of the team&lt;/li&gt;
&lt;li&gt;They have user memory to allow all the activities they are working on to be remembered the same way as any user&lt;/li&gt;
&lt;li&gt;Teammates have specific profiles with resume style skills that explain they goals such as SEO &amp;amp; AI Search Analyst or Chief of Staff&lt;/li&gt;
&lt;li&gt;Teammates are optimised for the AI operations they do, which means using Mark&#39;s post-training models. This is faster, more effective, and cheaper!&lt;/li&gt;
&lt;li&gt;Teammates are autonomous and can interact on their own and can collaborate using chat with other agents and humans in the platform and with connected systems like Microsoft Teams and Slack&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Marketing Benchmark&lt;/h3&gt;
&lt;p&gt;While many AI models out there have specific benchmarking profiles that allow models to be tested and validated (which is a continuous source of how different frontier models are graded when they are released), there has been no benchmark system for marketing-specific models.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Therefore, Optimizely has created one and has open sourced it so it can be used with any other marketing AI models. They are using this to grade their own system of their post-trained models and can show that not only is it 10 to 20 times cheaper for the marketing models they are better that their tasks&lt;/p&gt;
&lt;p&gt;There are 285 tasks, 6,523 criteria. Optimizely Agent Platform scored 67% vs. Claude Code&#39;s 60%, at 2x efficiency.&lt;/p&gt;
&lt;h3&gt;Optimization and personalization updates&lt;/h3&gt;
&lt;p&gt;Optimizely covered more around continuous optimisation and one-to-one limitless personalization.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;With the new agentic experience in filters, dynamic landing pages can be created based upon any request, allowing true one-to-one, limitless personalization and newer &amp;nbsp;self-improving digital experiences will allow personalization to continually optimise itself based upon a loop of optimisation processes with built-in guardrails allow true optimized automation.&lt;/p&gt;
&lt;h3&gt;AI is not a cost cutter. It is a growth strategy&lt;/h3&gt;
&lt;p&gt;One of the key takeaways from Alex here was that we should look at these AI tools as a way of providing growth and reducing areas of friction for our human employees. By taking away painstaking and laborious tasks from employees and providing them to AI, we should be opening those employees up to empower their ability to drive growth and creativity in their areas of expertise. Allow the humans to be the ones driving creativity and driving new ideas, and take away the stuff that they dislike doing, the stuff that&#39;s monotonous, and give that to AI.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Instead of seeing AI as a way of reducing human employees or cutting costs, we look at it as a way of freeing up those employees to do things that they can do to make the company better.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;Support growth instead of reducing costs.&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Optimizely CMS 13 + Commerce 15: A platform upgrade for connectivity&lt;/h2&gt;
&lt;p&gt;It has not been that long since we had the big CMS 12 and Commerce 14 releases, which were so much of a major re-platform (as they moved from .NET Framework to .NET Core) that they required large amounts of investment in doing upgrades. They had masses of technical changes that needed to be actioned based upon whether plugins still existed, whether the technology still existed, or whether we needed to strategically change how the solutions were worked. This large amount of investment has had customers questioning whether they need to move to CMS 13 and Commerce 15, and if the level of investment is going to be the same cost.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;No, it isn&#39;t&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;CMS13 and Commerce15 are still on the same fundamental technology, now supporting .NET 10. This means that a lot of the challenges that we faced when it comes to an upgrade (because we had a large technology change) are not the same ones we will be facing when it comes to an upgrade.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;What CMS 13 and Commerce 15 do include is a couple of key pieces of technology that are integrated with the platforms that have changed.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Opti ID&lt;/strong&gt; - Opti ID is a single sign-on solution through Optimizely&#39;s own identity platform built on Okta, which then allows you to use your own identity platforms, such as Entra, to identify individual users. Opti ID is a framework upgrade that is required for CMS 13 because it connects that single identity across all Optimizely products, such as Graph, CMS, Commerce, CMP, and, most importantly, the Optimizely agent platform.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizely Graph&amp;nbsp;&lt;/strong&gt;- Search and navigation is an old platform by now and has many architectural, performance, and technological issues that have been solved with Optimizely Graph. However, the key part of Optimizely Graph is that this platform allows the indexing of all of your CMS and commerce content, and even external content, into one single source of truth. This source of truth can be integrated not only through backend keys but through frontend keys, when it comes to frontend hosting (such as the Optimizely frontend hosting, Vercel or Netlify), but also to any other connected system, such as a chatbot or AI. This is a key piece of technology for connectivity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizely Agent Platform (Mark)&amp;nbsp;&lt;/strong&gt;- With Opti ID and Graph connected, we can get the CMS properly, fully integrated with context and knowledge of the user and all of the data into the Optimizely agent platform (which allows us to have complex agent-based workflows across CMS, commerce, and CMP). Now, with the new Virtual Teamates, 1 to 1 personalization and complicated workflows, we can automate aspects of website optimisation around GEO/AEO experimentation and delivering fresh content personalised to the individual user&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizely Connect Platform&amp;nbsp;&lt;/strong&gt;- With direct native integration into the Optimizely Connect platform, we can now connect CMS13 directly into other external data sources and workflows so that the platforms can integrate seamlessly without needing development effort. And with Graph here, we have all of the data to connect these systems together as effortlessly as possible.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimizely DAM&amp;nbsp;&lt;/strong&gt;- With Graph being the fundamental connectivity system, we can now have the Optimizely DAM, the CMS, and the Optimizely Agent platform all connected together. With the new pricing model from Optimizely, we can also move content assets that used to be in Azure Blob Storage over to the Optimizely DAM, which is included for any CMS13 customer, saving licence costs.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;Why CMS 13 and Commerce 15 are a strategy for your organisation&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;As we have mentioned here, these products that we&#39;re integrating, which are the core heart of an upgrade, are there to be able to drive connectivity and integration for your system. You can now see that the content management system is not just a siloed place for content for your website. Now that it&#39;s connected via graph, through the agent platform, through the connect platform, through the DAM, it can be directly integrated across the workflow of your marketing organisation.&lt;/p&gt;
&lt;p&gt;It is now a central place to connect all of your strategy around your website, to connect your agentic vision, and integrate with any of your systems that you need it to be able to provide a forward strategy for 2026 and beyond.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here at Niteco, we have invested in the last number of years in providing AI-driven accelerators to take you from CMS 11 to 12 and 12 to 13, and from Commerce 13 to 14 and 14 to 15. We have delivered over 500 upgraded websites with our expertise through our AI delivery and upgrade teams and our specialist solution architects. We can help you drive your path to upgrade faster, providing your business with the tools it needs without needing to wait for the delivery. Our automated processes, validation, and testing processes can drive this delivery in weeks rather than quarters, contact us today to help with your staregy and upgrade delivery &lt;a href=&quot;https://niteco.com/contact-us/&quot;&gt;https://niteco.com/contact-us/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;As you can see, Optimizely has been pushing the boundaries on their agentic platform throughout the last year and is providing many, many new features. The velocity of feature deliveries has gone up over double what was delivered in 2025, to what&#39;s been delivered in 2026. With the addition of Virtual Teamates, limitless personalization, autonomous optimisation, and the upgrades that we can deliver into CMS 13 and Commerce 15, we are truly connecting Optimizely into the best platform for marketers. Where the operation of both human creativity and agentic comes together to provide the best opportunity for your organisation and its future. And on top of everything they&#39;ve delivered by providing an open-source framework for grading marketing models, Optimizely are showing their continued investment and drive into making their platform the best in the world as an AI agentic platform for marketers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For help realising this workflow or providing streamlined, super-fast upgrades, contact Niteco, and we can help you with your digital strategy and accelerating fast, optimised upgrades.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niteco.com/contact-us/&quot;&gt;https://niteco.com/contact-us/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/9/opticon-new-york--the-strategy-on-upgrading-to-cms-13-/</guid>            <pubDate>Mon, 07 Sep 2026 10:25:20 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely London developer meetup 2026: a round up </title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/7/optimizely-london-developer-meetup-2026-a-round-up-/</link>            <description>&lt;p&gt;Well, what can I say?&lt;/p&gt;
&lt;p&gt;Last night we wrapped up! Yet another London Developer Meetup, hosted at the superb Lightwell venue&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/76833ab648a340cda1bd972ff738f2f5.aspx&quot; width=&quot;638&quot; height=&quot;336&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And this is also a celebration of my 10th year of co-hosting/hosting this meetup, something that has been very dear to my heart because of my love of the Optimizely community. It&#39;s always been the greatest of pleasures to organise these and help people get together, because the people I&#39;ve met, the friends I&#39;ve made, and the conversations we&#39;ve had over a couple of beers have always made everything seem more vibrant and exciting and have really made my life so much better. Thank you to everyone who&#39;s been to any of these and connected with me. You&#39;re all amazing.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;So the night, we had a great packed line up of talks&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src=&quot;/link/e95702782ac841ea9c0db1f42bd290d4.aspx&quot; width=&quot;830&quot; height=&quot;725&quot; /&gt;&lt;/p&gt;
&lt;p&gt;So we kicked off with a bit of an intro and a retro from myself and Mark, talking a little bit about where we were ten years ago and sharing a number of photos!&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As a really touching point, our Niteco UK/US leader and friend Mark Welland (&lt;a href=&quot;https://www.linkedin.com/in/markwelland/&quot;&gt;https://www.linkedin.com/in/markwelland/&lt;/a&gt;) arranged a couple of videos to celebrate my 10 years from Patrick Lam &lt;a href=&quot;https://www.linkedin.com/in/patrickpclam/&quot;&gt;https://www.linkedin.com/in/patrickpclam/&lt;/a&gt; Nicola Ayan (&lt;a href=&quot;https://www.linkedin.com/in/nicolaayan/)&quot;&gt;https://www.linkedin.com/in/nicolaayan/)&lt;/a&gt; and the big dog and CEO of Optimizely Alex Atzberger (&lt;a href=&quot;https://www.linkedin.com/in/aatzberger/)&quot;&gt;https://www.linkedin.com/in/aatzberger/)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;these are all such lovely videos, and it was really, really kind of everyone to put together such touching thoughts. It really meant the world to me.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And then we had all of the talks. Every single one of the talks was well thought out, well presented, and engaging, and I want to thank every single one of the speakers. Rather than recap it all here, you can actually view the recorded and live streamed output masterfully created by my good friend Jacob Pretorius (&lt;a href=&quot;https://www.linkedin.com/in/jacobpretorius/&quot;&gt;https://www.linkedin.com/in/jacobpretorius/&lt;/a&gt;) here&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ocnckRb179s&quot;&gt;&lt;img src=&quot;/link/e5c3a7bebafc4f94a2fbc3c7f94177a1.aspx&quot; width=&quot;948&quot; height=&quot;554&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and also a big thank you to Techspace and the amazing food spread that they put on. We&#39;ve been coming here a number of years, and it really is a great venue. Also, thank you so much to Satata (&lt;a href=&quot;https://www.linkedin.com/in/satatasatez/&quot;&gt;https://www.linkedin.com/in/satatasatez/&lt;/a&gt;). Patrick and Shamim (&lt;a href=&quot;https://www.linkedin.com/in/shamim605/&quot;&gt;https://www.linkedin.com/in/shamim605/&lt;/a&gt;) for helping organise this and a big thank you to every one of the speakers today.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mark Evard - &lt;a href=&quot;https://www.linkedin.com/in/everard/&quot;&gt;https://www.linkedin.com/in/everard/&lt;/a&gt; and thank you so much for all the kind words.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Guilherme Menezes -&amp;nbsp;&lt;a href=&quot;https://www.linkedin.com/in/guilherme-menezes-0521a715a/&quot;&gt;https://www.linkedin.com/in/guilherme-menezes-0521a715a/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Minesh Shah - &lt;a href=&quot;https://www.linkedin.com/in/minesh-shah-dev/&quot;&gt;https://www.linkedin.com/in/minesh-shah-dev/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Graham Carr - &lt;a href=&quot;https://www.linkedin.com/in/carrgraham/&quot;&gt;https://www.linkedin.com/in/carrgraham/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Simon Chapman - &lt;a href=&quot;https://www.linkedin.com/in/sgchapman/&quot;&gt;https://www.linkedin.com/in/sgchapman/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Andrew Markham - &lt;a href=&quot;https://www.linkedin.com/in/markham-andrew/&quot;&gt;https://www.linkedin.com/in/markham-andrew/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks everyone for attending, and I look forward to next year.&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/7/optimizely-london-developer-meetup-2026-a-round-up-/</guid>            <pubDate>Fri, 03 Jul 2026 11:50:58 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely London Dev Meetup 2026</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/5/optimizely-london-dev-meetup-2026/</link>            <description>&lt;p&gt;Well, everyone, it&#39;s that time of the year again, and we have another London Developer meet up coming for this summer. The date is set for the 2nd of July, and we&#39;re back at the Lightwell in London &lt;a href=&quot;https://www.techspace.co/locations/worship-street/events&quot;&gt;https://www.techspace.co/locations/worship-street/events&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This year marks a whole 10 years of either helping or directly planning the London developer meet up for Optimizely. It has been the greatest of pleasures to help support the community, and I&#39;ve made so many great friends in this time. I hope you can all come down to London to celebrate with me this year and celebrate what a great community we have.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This year, we have speakers from a range of MVPs. We have Optimizely coming, and hopefully Cloudflare as well, to talk about AI within the Cloudflare platform.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The register link will be up soon, and I will update this blog post, but for now please mark this on your calendar. If you&#39;re interested in contributing at this dev meetup, please contact me on Slack.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/fe078acbc4644ca98c1f89d69630712b.aspx&quot; /&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/5/optimizely-london-dev-meetup-2026/</guid>            <pubDate>Fri, 15 May 2026 08:02:56 GMT</pubDate>           <category>Blog post</category></item><item> <title>Supercharging Optimizely Forms: Introducing Dynamic Email Routing &amp; Conditional Submissions</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/3/supercharging-optimizely-forms-introducing-dynamic-email-routing--conditional-submissions/</link>            <description>&lt;h1&gt;Supercharging Optimizely Forms: Introducing Dynamic Email Routing &amp;amp; Conditional Submissions&lt;/h1&gt;
&lt;p&gt;Optimizely Forms is a powerhouse for gathering user data, but as implementations grow in complexity, we often run into a common limitation with the built-in &quot;Send email after form submission&quot; actor: it&#39;s a bit static.&lt;/p&gt;
&lt;p&gt;In a typical enterprise scenario, you don&#39;t just want one email going to one place. You might need to route a lead to the &quot;Sales&quot; team if they select a specific department, or perhaps you only want an email sent if the user ticks a &quot;Request Callback&quot; box.&lt;/p&gt;
&lt;p&gt;To solve this, I&amp;rsquo;ve released an open-source package: &lt;strong&gt;ScottReed.Optimizely.Forms.DynamicEmailRouting&lt;/strong&gt;. It&amp;rsquo;s a custom post-submission actor for CMS 12 that brings dynamic routing and complex conditional logic directly into the Forms UI.&lt;/p&gt;
&lt;h2&gt;The Problem: The &quot;One-Size-Fits-All&quot; Email&lt;/h2&gt;
&lt;p&gt;The default email actor is great for simple notifications. However, once you need logic like &lt;em&gt;&quot;If Department is &#39;Support&#39;, send to support@company.com&quot;&lt;/em&gt; or &lt;em&gt;&quot;Only send this internal alert if &#39;Priority&#39; is &#39;Critical&#39;&quot;&lt;/em&gt;, you&#39;re usually forced to write custom code for every specific form or clutter the CMS with multiple overlapping actors.&lt;/p&gt;
&lt;h2&gt;The Solution: Dynamic Email Routing&lt;/h2&gt;
&lt;p&gt;This package extends the core functionality of the built-in email actor but adds two powerful layers: &lt;strong&gt;Email Routing&lt;/strong&gt; and &lt;strong&gt;Conditional Logic&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/link/c78d0dec2dd1401caeb7a445717a36e7.aspx&quot; width=&quot;1050&quot; height=&quot;272&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;1. Dynamic Email Routing&lt;/h3&gt;
&lt;p&gt;Instead of a single hardcoded &quot;To&quot; address, you can now define a mapping table. You select a form field, define a value to match, and specify the recipient. If no match is found, it gracefully falls back to the primary &quot;To&quot; address.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/link/f80e3f2362264b098a27fa060e82694f.aspx&quot; width=&quot;869&quot; height=&quot;133&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;2. Conditional Logic (AND/OR)&lt;/h3&gt;
&lt;p&gt;Sometimes you don&#39;t want an email sent at all unless specific criteria are met. The actor allows you to add multiple conditions using &quot;is&quot; and &quot;is not&quot; operators. You can toggle between &quot;Match ALL&quot; (AND) or &quot;Match ANY&quot; (OR) logic.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/link/47e7253160a4452bb7a5f3c1042093c5.aspx&quot; width=&quot;869&quot; height=&quot;167&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Technical Implementation: Under the Hood&lt;/h2&gt;
&lt;p&gt;For the developers curious about how this is built, the package leverages several Optimizely extension points to ensure a &quot;native&quot; feel.&lt;/p&gt;
&lt;h3&gt;The Actor &amp;amp; Model&lt;/h3&gt;
&lt;p&gt;The core logic resides in &lt;code&gt;DynamicEmailRoutingActor&lt;/code&gt;, which inherits from &lt;code&gt;SendEmailAfterSubmissionActor&lt;/code&gt;. This is crucial because it allows us to reuse the existing &lt;code&gt;EmailTemplateActorModel&lt;/code&gt; features&amp;mdash;like the rich text editor, the &quot;Insert Placeholder&quot; dropdown, and the standard From/Subject fields&amp;mdash;without reinventing the wheel.&lt;/p&gt;
&lt;h3&gt;The UI (Dojo &amp;amp; Protected Modules)&lt;/h3&gt;
&lt;p&gt;To provide a seamless editor experience, the package uses the &lt;strong&gt;Protected Module pattern&lt;/strong&gt;. On build, the client-side resources (Dojo editors and language files) are zipped into a protected module folder.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve implemented three custom Dojo editors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;EmailRoutingEditor.js&lt;/code&gt;: Handles the dynamic table for routing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ConditionMatchEditor.js&lt;/code&gt;: A simple dropdown for logic selection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ConditionsEditor.js&lt;/code&gt;: Manages the conditional rules.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Localization&lt;/h3&gt;
&lt;p&gt;All labels and the actor name are localized via XML files embedded within the module, ensuring it fits perfectly into the Optimizely UI language settings.&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Installation is a standard NuGet affair. Because it uses an &lt;code&gt;IConfigurableModule&lt;/code&gt; for auto-registration, there&#39;s zero configuration required in your &lt;code&gt;Startup.cs&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Install via NuGet:&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://nuget.optimizely.com/packages/scottreed.optimizely.forms.dynamicemailrouting/&quot;&gt;https://nuget.optimizely.com/packages/scottreed.optimizely.forms.dynamicemailrouting/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dotnet add package ScottReed.Optimizely.Forms.DynamicEmailRouting
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Configuration:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ensure your SMTP is configured in &lt;code&gt;appsettings.json&lt;/code&gt; (the actor uses the standard Optimizely SMTP client).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the CMS, add the &lt;strong&gt;Dynamic email routing&lt;/strong&gt; actor to your Form Container.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Define your routes and conditions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;[Image Placeholder: Selecting the Dynamic Email Routing actor in the Form Settings tab]&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Extensibility&lt;/h2&gt;
&lt;p&gt;The project is built with extensibility in mind. If you need more complex operators (like &quot;contains&quot; or &quot;starts with&quot;), you can easily extend the &lt;code&gt;EvaluateConditions&lt;/code&gt; logic in the actor or contribute to the repository!&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;By moving this logic into the CMS UI, we empower editors to manage complex workflows themselves without needing a deployment for every routing change.&lt;/p&gt;
&lt;p&gt;You can find the full source code, documentation, and a test Alloy site on GitHub: &#128073; &lt;a title=&quot;null&quot; href=&quot;https://github.com/scottreed/Optimizely-Dynamic-Form-Submission&quot;&gt;scottreed/Optimizely-Dynamic-Form-Submission&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d love to hear your feedback or see your PRs!&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/3/supercharging-optimizely-forms-introducing-dynamic-email-routing--conditional-submissions/</guid>            <pubDate>Mon, 30 Mar 2026 15:46:11 GMT</pubDate>           <category>Blog post</category></item><item> <title>Reducing Web Experimentation MAU Using the REST API</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2026/2/reducing-web-experimentation-mau-using-the-rest-api/</link>            <description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;Optimizely Web Experimentation counts an MAU based upon the script snippet rendering for evauluation of web experiement. Therefore when you globally install a snippet in a website you can be counting MAUs with pages that don&#39;t need to be counted. There could also be some page types that don&#39;t need web ex as there will never be an experiement on it. See&amp;nbsp;&lt;a href=&quot;https://support.optimizely.com/hc/en-us/articles/4410284235789-Monitor-monthly-active-users-MAUs&quot;&gt;https://support.optimizely.com/hc/en-us/articles/4410284235789-Monitor-monthly-active-users-MAUs&lt;/a&gt; for imformation around this consumption.&lt;/p&gt;
&lt;p&gt;It&#39;s suggested in the article to not render the script or opt out using the following script&lt;/p&gt;
&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  window[&quot;optimizely&quot;] = window[&quot;optimizely&quot;] || [];
  window[&quot;optimizely&quot;].push({
   &quot;type&quot;: &quot;optOut&quot;,
   &quot;isOptOut&quot;: true
  });
&amp;lt;/script&amp;gt;
&amp;lt;script src=&amp;rdquo;https://cdn.optimizely.com/js/{project_id].js&amp;rdquo;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However how do we know!&lt;/p&gt;
&lt;p&gt;I&#39;m Scott Reed, a solution architect at Niteco &lt;a href=&quot;https://niteco.com/&quot;&gt;https://niteco.com/&lt;/a&gt;. In this blog post, I&#39;ll set out a POC I&#39;ve created to test resolving this decision.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;The REST API for web experimentation can return active experiments for a specific project using a user bearer token &lt;a href=&quot;https://docs.developers.optimizely.com/web-experimentation/reference/list_experiments&quot;&gt;https://docs.developers.optimizely.com/web-experimentation/reference/list_experiments&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Therefore it&#39;s possible for us to plug in logic to know if a domain/subpage has an active experiment.&lt;/p&gt;
&lt;p&gt;As a proof of concept (I have not used in a real project yet) I have created &lt;a href=&quot;https://github.com/scottreed/Optimizely-Web-Experimentation-Evaluator/&quot;&gt;https://github.com/scottreed/Optimizely-Web-Experimentation-Evaluator/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This project is a POC around evaulating Optimizely Web Experimentation via the REST API using the bearer token for a web experimentaion user.&lt;/p&gt;
&lt;p&gt;Web experimentation Counts its monthly active users based upon a script being just rendered into the page to evaluate if an experiment needs to be run. This means that whenever you render a web experimentation snippet, even if there is no need to run it, it will evaluate and for an unique user count as an MAU.&lt;/p&gt;
&lt;p&gt;This can increase costs as you&#39;re counting users that don&#39;t need to run this is especially important with multi-site where you might not be running experiments on specific sections of pages or subsites.&lt;/p&gt;
&lt;div class=&quot;markdown-heading&quot;&gt;
&lt;h2 class=&quot;heading-element&quot;&gt;Project Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This is a standard project with the following&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET 8.0&lt;/li&gt;
&lt;li&gt;ASP.NET Core 8.0&lt;/li&gt;
&lt;li&gt;Optimizely SDK&lt;/li&gt;
&lt;li&gt;Minimal API&lt;/li&gt;
&lt;li&gt;In Memory Cache&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot;&gt;
&lt;h2 class=&quot;heading-element&quot;&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The project has the following features&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Return a list of experiments from the web experimentation REST API based upon the past in status flags.&lt;/li&gt;
&lt;li&gt;Filtering the list of experiments based upon multiple path criteria (e.g., a sub-path or the route of the website).&lt;/li&gt;
&lt;li&gt;A Boolean in the&amp;nbsp;&lt;code&gt;ExperimentFilterService&lt;/code&gt;&amp;nbsp;service to allow returning experiments if they have no URL matching criteria.&lt;/li&gt;
&lt;li&gt;In-memory caching of experiments so they don&#39;t need to be constantly re-evaluated with a 15-minute window.&lt;/li&gt;
&lt;li&gt;A minimal API that matches the webhook JSON Post format. This webhook can be configured in the settings for a project and notifies you when a project has a change. This minimal API will clear the cache based upon the project ID.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot;&gt;&lt;img src=&quot;/link/d470289b073f44bca839c9fdca6e9ff9.aspx&quot; width=&quot;1237&quot; height=&quot;1034&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;markdown-heading&quot;&gt;To note on the above image, I set it to return archived projects as well because I needed to do some testing. However, when running this project, it would be better to adjust it to be just active and running projects.&amp;nbsp;&lt;/div&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Using this we can actively know from backend code if we need not render (or opt) the web experiementation script. This way we can specifically stop MAU counting and reduce cost to ONLY what&#39;s needed!&lt;/p&gt;
&lt;p&gt;To note this is just the evaulator so if you need to override this and still render (for tracking / audience criteria or other features) you can adapt this.&lt;/p&gt;
&lt;p&gt;As this is just a POC and a thought idea let me know if you have an concer&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2026/2/reducing-web-experimentation-mau-using-the-rest-api/</guid>            <pubDate>Fri, 13 Feb 2026 09:27:28 GMT</pubDate>           <category>Blog post</category></item><item> <title>Connecting the Dots Between Research and Specification to Implementation using NotebookLM</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/10/connecting-the-dots-between-research-and-specification-to-implementation-using-notebooklm/</link>            <description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;As part of my day to day role as a solution architect I overlap with many clients, partners, solutions and technologies. I am often documenting meetings, requirements, technical solutions and having to provide my team information for the sprint work to action the required goals for the client. Also in my case the development team is in Vietnam and non english native speakers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There&#39;s a lot of challenges I face&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having accurate documentation that is easy query, adapt and output in anyway I want&lt;/li&gt;
&lt;li&gt;Creating great output for the teams that overcome questions and technical or language barriers&lt;/li&gt;
&lt;li&gt;Maintaining information over multiple meetings and across different sources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have created a video using NotebookLM of this blog post after publishing to show how it can easily create video outputs&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=E3IbCCQ-XA4&quot;&gt;https://www.youtube.com/watch?v=E3IbCCQ-XA4&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Enter NotebookLM, the Google AI research tool with amazing features&lt;/h2&gt;
&lt;p&gt;Think of NotebookLM not just as a note-taking app, but as a dynamic knowledge management system powered by the latest in AI. It&#39;s designed to take all your scattered information, understand it, and then help you synthesize it into something truly useful. Here are some of its core features that will make your dev heart flutter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Source Connectivity on Steroids:&lt;/strong&gt; Forget copy-pasting entire articles or losing track of where that crucial snippet came from. NotebookLM lets you upload various sources &amp;ndash; PDFs, Google Docs, even web pages &amp;ndash; and treats them as a unified knowledge base. Imagine having all your project&#39;s architectural diagrams, API documentation, and sprint retrospective notes in one searchable, interconnected space. No more &quot;where did I see that again?&quot; moments. This is a game-changer for solution architects like me, who need to cross-reference multiple documents to ensure design consistency and avoid technical debt.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI-Powered Summarization &amp;amp; Key Takeaways:&lt;/strong&gt; This is where the magic truly happens. Once your sources are loaded, NotebookLM can instantly generate summaries, extract key concepts, and even answer specific questions &lt;em&gt;based on the content of your sources&lt;/em&gt;. Need a quick overview of the authentication flow discussed in three different design documents? Ask NotebookLM. Want to know the estimated effort for a particular feature based on your team&#39;s past sprint reviews? It can do that too. This feature is invaluable for developers trying to quickly grasp the essence of complex systems or for solution architects presenting high-level overviews to stakeholders.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intelligent Q&amp;amp;A and Brainstorming:&lt;/strong&gt; Ever wish you could just &lt;em&gt;talk&lt;/em&gt; to your documentation? Now you can! NotebookLM allows you to ask natural language questions about your sources. It&#39;s like having a rubber duck debugging session, but with an AI that actually &lt;em&gt;understands&lt;/em&gt; your project&#39;s context. Beyond answering direct questions, it can also act as a brainstorming partner, helping you generate new ideas, explore different approaches, or even draft initial code snippets based on your project&#39;s specifications. Imagine asking, &quot;Given these API specs, what are some potential error handling strategies?&quot; and getting intelligent, context-aware suggestions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&quot;Ask Your Sources&quot; &amp;ndash; The Ultimate Debugging Buddy:&lt;/strong&gt; Picture this: you&#39;re debugging a tricky issue, and you&#39;re pretty sure the answer is buried deep within a technical spec or a previous incident report. Instead of endless scrolling and searching, simply ask NotebookLM, &quot;What are the known limitations of the &lt;code&gt;UserService&lt;/code&gt; regarding concurrent requests?&quot; It will scan all your connected sources and pinpoint the relevant information, saving you precious hours of head-scratching. This is where NotebookLM truly shines as a productivity booster for every developer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple Outputs Allowing Many Ways To Absort&lt;/strong&gt;: The sources fed in in to a Notebook can be outputted in many ways. Want an Audio output for a podcast or a video overview on any specific topic that can easily be created with Veo 3 giving flavour to the videos. Want to create a Mind map, a report, flashcard or quiz and you can do all this. It really allows you to output the documentation any way you like, empowering different ways of learning&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Notebooks for Every Occasion:&lt;/strong&gt; Organize your knowledge into distinct notebooks for different projects, features, or even personal learning. This keeps everything tidy and ensures that your AI assistant is always focused on the relevant context. As a solution architect, I can create separate notebooks for each project, encompassing everything from initial discovery to deployment strategies, ensuring all information is readily accessible and logically grouped.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Seamless Integration (with Google Workspace):&lt;/strong&gt; If your team lives in Google Docs, you&#39;re in luck! NotebookLM integrates seamlessly, allowing you to easily pull in your existing documents and leverage your current collaborative workflows. This reduces friction and makes adoption a breeze.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;How NotebookLM Benefits Your Learning and Investigation&lt;/h2&gt;
&lt;p&gt;I have been using NotebookLM to collate information on projects, technologies and integration in to a single source of truth that I can query and output in many different source.&lt;/p&gt;
&lt;p&gt;In a very real example I have used a very cool extension called NotebookLM Web Importer &lt;a href=&quot;https://chromewebstore.google.com/detail/notebooklm-web-importer/ijdefdijdmghafocfmmdojfghnpelnfn?hl=en&quot;&gt;https://chromewebstore.google.com/detail/notebooklm-web-importer/ijdefdijdmghafocfmmdojfghnpelnfn?hl=en&lt;/a&gt; to do the following for my own learning&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Import all of Jon Jones Optimizely YouTube videos in to a NotebookLM for querying and exploration&lt;/li&gt;
&lt;li&gt;Import each of the Optimizely document sections in to a NotebookLM for querying&lt;/li&gt;
&lt;li&gt;Importing integration meetings from Integration overlap meetings a client has started using to generate formatted Requirements in text and video&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example here is the CMS 12 documentation&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/f2b3a2f989fb4f238f4a912264c64ab8.aspx&quot; width=&quot;1089&quot; height=&quot;706&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This then allows me to query the information via Mind maps, videos and queries outputs as it&#39;s own AI chatbot.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/c86c5a7fd7ab4509a9965a62c2eded16.aspx&quot; width=&quot;1094&quot; height=&quot;628&quot; /&gt;&lt;/p&gt;
&lt;p&gt;or many other types of output&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/32959d9f1f1b4e8784cfc398da20e000.aspx&quot; width=&quot;405&quot; height=&quot;720&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is a really amazing tool and the fact it can do this from URLs, Documents, YouTube Videos and notes is amazing.&lt;/p&gt;
&lt;p&gt;It also allows you take outputs from the chat and convert them in to notes or create your own notes then even reference them back as sources creating a great feedback loop.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/66b35c185d764e929e7c3d51a2375211.aspx&quot; width=&quot;731&quot; height=&quot;369&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;How NotebookLM Benefits Your Development Team (and Makes Your Solution Architect Happy!)&lt;/h2&gt;
&lt;p&gt;This also translates in to creating better documentation for the team you can copy in to DevOps, Jira or your solution of choice with rich mind maps, audio podcasts, video allowing faster and easier adoption of information.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Faster Onboarding for New Devs:&lt;/strong&gt; New team members can quickly get up to speed by having all project documentation, design decisions, and common FAQs consolidated and easily digestible through NotebookLM&#39;s summarization and Q&amp;amp;A features.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reduced Context Switching:&lt;/strong&gt; Spend less time hunting for information across different tools and platforms. With NotebookLM, your critical knowledge is centralized, allowing you to stay focused on coding and problem-solving.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Improved Design Cohesion &amp;amp; Reduced Rework:&lt;/strong&gt; Solution architects can ensure that development teams are consistently referencing the latest approved designs and technical specifications. NotebookLM can highlight discrepancies or areas needing clarification, leading to more robust and aligned solutions from the get-go.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Smarter Decision-Making:&lt;/strong&gt; By quickly accessing and synthesizing information from various sources, teams can make more informed decisions, whether it&#39;s choosing a new technology, refining an architectural pattern, or resolving a critical bug.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Empowered Developers:&lt;/strong&gt; Give your developers the tools to self-serve information, reducing reliance on senior team members for basic queries and freeing up valuable time for more complex problem-solving.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A Solution Architect&#39;s Dream:&lt;/strong&gt; For us solution architects, NotebookLM is like having an extra brain. It helps us quickly synthesize complex information from multiple stakeholders, validate architectural decisions against existing documentation, and communicate design rationales more effectively. Imagine being able to instantly pull up all the discussions around a specific design constraint before a review meeting!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Optimizely Setup and Extension&lt;/h2&gt;
&lt;p&gt;By using &lt;span class=&quot;truncate font-medium text-sm&quot;&gt;NotebookLM Web Importer for bulk URLs and Gemini to parse and extract links from the Docs pages I&#39;ve connected the following.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;&lt;img src=&quot;/link/589aeb0d0b2145d3be5a6583b9ceab51.aspx&quot; width=&quot;659&quot; height=&quot;417&quot; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;CMS 12 Documentation&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;Bulk import the following URLs&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;https://docs.developers.optimizely.com/content-management-system/docs/getting-started&lt;br /&gt;https://support.optimizely.com/hc/en-us/articles/33309043090189&lt;br /&gt;https://support.optimizely.com/hc/en-us/articles/25432213670413&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/hipaa-enabled-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/learning-path&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/developer-prerequisites&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/what-is-a-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/technology-stack&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/pluggable-ui&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/alloy-demonstration-templates&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/installing-and-upgrading&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/initial-configuration&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-model-and-views&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-and-editing-content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/media-support&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-tree-and-routing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/listings-and-navigation&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/security-checklist&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/deployment-learning-path&lt;br /&gt;https://support.optimizely.com/hc/en-us/articles/19965302094989-User-interface&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/set-up-a-development-environment&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/learn-basic-editing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-starter-project&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/documentation-videos&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/set-up-cms-12&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/system-requirements-for-optimizely&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/installing-optimizely-net-5&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/nuget-package-families-in-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/resolving-nuget-dependency-conflicts-in-project-sdk-packagereference-model&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/upgrade-to-cms-12&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/breaking-changes-in-content-cloud-cms-12&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/why-upgrade-to-content-cloud-cms-12&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/upgrade-assistant&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/upgrade-to-cms-core-12170&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuration&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-cmsui&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-dataaccess-and-dynamicdatastore&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-moduleconfig&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/changing-edit-and-admin-view-urls&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/link-validation&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/initialization&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-an-initialization-module&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/dependency-injection&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/deploying-content-cloud&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/planning-deployments&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/deployment-scenarios&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/managing-cloud-licenses&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/deploying-to-azure-webapps&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/deploying-to-windows-servers&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/setting-up-multiple-sites&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/installing-database-schema&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/automatic-schema-updates&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-delivery-network-cdn-configuration&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/database-mode&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-your-email-server&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/create-a-docker-file&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/storing-utc-date-and-time-in-the-database-legacy&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/host-a-frontend-with-optimizely&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/develop-the-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/blob-storage-and-providers&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configure-a-custom-blob-provider&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/how-to-add-azure-blob-provider-to-your-net-core-application&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/caching&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/object-caching&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/read-only-object-cache&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/monitoring-memorycache&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/client-resources&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/dynamic-data-store&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-dynamic-data-store&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/indexing-properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/mapping-stores&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/supporting-linq&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/identity-and-date-and-time-management&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/event-management&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/developing-an-event-provider&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/how-to-add-azure-event-provider-to-your-net-core-application&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/event-management-api&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/file-providers&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/globalization&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/globalization-scenarios&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/localizing-the-user-interface&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-a-custom-localization-provider&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/localization-service-1&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/localization-service&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/determining-languages&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/add-a-custom-language&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/activity-logging&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/logging-options&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/logging&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/routing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/partial-routing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/example-of-news-partial-routing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/blob-routing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/internationalized-resource-identifiers-iris&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/scheduled-jobs&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/search&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/searching-and-filtering&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/adding-search-providers&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/searching-for-pages-based-on-page-type&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/security&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-security-policy&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/cookie-usage&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/integrate-azure-ad-using-openid-connect&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/aspnetidentity&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/mixed-mode-authentication&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/permissions-to-functions&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/decoupled-setup&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/virtual-roles&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/filter-javascript-from-properties-and-files&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/synchronization&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/using-notifications&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/usage-examples&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/user-interface&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/adding-a-module-initializer&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/command-pattern&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/global-toolbar-commands-plug-in&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/plugging-in-commands&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/command-builders&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-cms-user-interface&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-shell-modules&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/context-sensitive-components&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-react-component&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-component&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/debugging-cms-ui&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/describing-content-in-the-ui&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/dialogs&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/introduction-to-dojo&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/drag-and-drop&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/editing-objects&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/ui-wrapper-types&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configuring-the-default-editor-wrapper&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/enabling-headless-content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/extending-the-navigation&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/using-menu-providers&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/upgrading-navigation&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/adding-and-configuring-menu-items&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/how-to-highlight-parent-menu-items&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/extending-the-tasks-pane-with-custom-queries&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/message-service-pool&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/plug-in-areas&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/plugging-in-a-gadget&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/publish-and-subscribe-messaging-system&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/service-locator&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/shell-profile&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/store-architecture&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/views&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-view&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/modifying-a-view-through-configuration&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-component-1&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-container&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/replacing-a-component-globally&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/hiding-or-controlling-access-to-a-component&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/plugging-in-components-into-a-view&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/websocket-support&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/develop-content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-types&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-templates&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-versions&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-approvals&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/selecting-content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/multilingual-content&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/grouping-content-types-and-properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/icontentrepository-and-datafactory&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/persisting-icontent-instances&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/validating-object-instances&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/attributes&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/resolving-current-content-context&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/refactoring-content-type-classes&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-a-page-programmatically&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/edit-hints-in-mvc&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/inline-edit-settings&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/built-in-property-types&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/property-attributes&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/generic-propertylist&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/property-value-list&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-metadata-properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/custom-properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/writing-custom-attributes&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/restricting-content-types-in-properties&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/single-or-multiple-list-options&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/built-in-auto-suggestion-editor&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/using-a-block-as-a-property&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/editing&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/on-page-editing-with-client-side-rendering&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/creating-an-editor-widget&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/registering-a-custom-editor&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/assets-and-media&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/media-types-and-templates&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/working-with-media&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/content-assets-and-folders&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/custom-editing-preview-for-media&lt;br /&gt;https://docs.developers.optimizely.com/content-marketing-platform/docs/cmp-dam-asset-picker&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/cmp-dam-in-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/cmp-dam-in-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/cmp-content-repository&lt;br /&gt;https://docs.developers.optimizely.com/content-marketing-platform/docs/dam-assets-migration-using-the-api&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/configured-commerce-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/install-configured-commerce-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/manage-website-elements-with-configured-commerce-and-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/odp-cms-1&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/odp-cms&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/architecture&lt;br /&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/dxp-overview&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/install-and-configure-optimizely-graph-on-your-site&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/synchronize-from-optimizely-content-management-system&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/event-driven-synchronization&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/scheduled-synchronization&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/conventions-api&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/smooth-rebuild&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/enable-and-disable-website-languages&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/paas-cms-core-openid&lt;br /&gt;https://docs.developers.optimizely.com/content-management-system/docs/upgrade-to-cms-12&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;Commerce Conect Documentation&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;Bulk import the following URLs&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/system-overview&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/breaking-changes-for-commerce-14&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/getting-started&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/setting-up-your-development-environment&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/creating-your-project&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/adding-e-commerce-functionality&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/recommendations-for-commerce-projects&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/caching&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/events&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/globalization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/initialization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/logging&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metadata-plus&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/routing&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/scheduled-jobs&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/workflows-and-activities&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/set-up-opal-ai&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/dashboard-overview&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/business-foundation&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/object-configuration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/generating-typed-business-foundation-classes&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/sql-meta-model&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/extending-meta-models&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/exporting-and-importing-meta-models&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/working-with-sql-records&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/working-with-entity-objects&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/filtering-and-sorting&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/business-meta-model&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metaclassmanager-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metaclass-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metaenum-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metafield-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metafieldbuilder-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/metatype-class&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/meta-class-references&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalogs&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/guidelines-for-working-with-catalogs&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/importing-catalog-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/multi-site-for-catalogs&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-content&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/product-variants&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/bundles-and-packages&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/dynamic-packages&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/url-segment-and-seo-uri&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/categorizations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/related-entries&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-events&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/commerce-rendering-templates&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-content-provider&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/properties&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/publish-content-version-setting&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/lowest-price-in-a-period-of-time&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/translate-content-with-optimizely-opal&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/assets-and-media&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/asset-url-resolver&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/asset-importer&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/product-associations-relations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/event-driven-catalog-indexing&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-product-search&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/low-level-apis&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-object-model&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/catalog-dto-and-object-models&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/meta-classes-and-meta-fields&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/configuration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/option-configuration-classes&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/feature-specific-commerce-configurations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/user-interface-configuration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/customers&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/customer-object-model-and-database-diagrams&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/customer-groups&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/organization-models&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/deployment&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/deploying-commerce-to-azure-web-apps&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/single-server-deployment&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/performance-optimization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/automatic-schema-updates&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/marketing&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/new_promotions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/promotions-engine&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/custom-promotions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/hiding-promotion-types&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/exclude-products-from-promotions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/promotion-exclusions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/coupons&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/custom-facets-in-the-marketing-overview&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/markets&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/countries-and-regions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/currencies&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/multi-market-examples&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/orders&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/multi-site-for-orders&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/order-system-overview&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/order-manipulation&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/order-processing&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/extend-components&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/extend-search-result-display&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/extending-order-classes&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/extending-order-status&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/changing-default-implementation&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/rounding-totals-for-currencies&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/order-events&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/recording-order-activities&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/shopping-carts&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/serializable-carts&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/searching-for-orders-using-ordercontext&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/searching-for-orders-using-abstractions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/using-the-return-order-form&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-intro&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-line-item-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-shipping-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-tax-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-order-form-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-order-group-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-return-line-item-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-return-order-form-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/calculating-orders-return-purchase-order-calculator&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/payments&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/payment-gateways&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/payment-plugins&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/set-up-payment-service&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/authorizetokenex-installation-and-configuration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/bolt-installation&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/personalization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/recommendations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/installing-and-configuring-the-native-integration-package&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/exporting-your-catalog-to-episerver-perform&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/activating-widgets&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/tracking-and-recommendations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/an-api-overview&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/server-side-api-integration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/client-side-api-integration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/improvements-with-tracking&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/customizing-exported-product-information&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/pricing&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/pricetype-examples&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/pricing-examples&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/reports&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/collect-data-for-reports&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/collecting-subscription-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/search&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/configuring-optimizely-find-search-provider&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/creating-a-search-provider&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/customizing-search&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/configuring-facets-and-filters&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/find-integration&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/indexing-catalog-content&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/filtering-catalog-content&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/overriding-default-conventions&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/disabling-product-update-events&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/raise-price-and-inventory-event-updates&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/indexing-variants-in-a-product-document&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/indexing-poco-objects-instead-of-catalogcontentbase&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/exclude-market-filter-from-filter-for-visitor&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/controlling-automatic-indexing-when-content-changes&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/security&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/authorization-and-authentication&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/support-for-openid-connect-in-customized-commerce&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/shipping&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/shipping-methods&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/shipping-gateways-and-providers&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/multi-shipment-examples&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/transaction-tracking&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/warehouses-and-inventories&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/inventory-requests&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/database-changes-for-inventory-service&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/warehouses-and-inventories-examples&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/multi-warehouse-implementations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/optimizely-graph-for-commerce-connect&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/commerce-connect-14-odp&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/commerce-connect/docs/commerce-connect-campaign&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;DXP Documentation&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class=&quot;truncate font-medium text-sm&quot;&gt;Bulk import the following URLs&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/dxp-overview&lt;/div&gt;
&lt;div&gt;https://support.optimizely.com/hc/en-us/articles/39443611409037&lt;/div&gt;
&lt;div&gt;https://www.google.com/search?q=https://docs.developers.optimizely.com/digital-experience-platform/docs/hipaa-enabled-cms&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/cms-platform-plus&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/requirements&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/getting-started-with-dxp&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/cloud-accelerator-package&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/development-considerations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/environments&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/performance-considerations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/content-management-system/docs/cookie-usage&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/delivery-assurance-concepts&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/failover&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/login-options&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/content-management-system/v1.0.0-CMS-SaaS/docs/host-a-front-end-with-optimizely&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/headless-optimizely&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/environment-configurations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/multisite-development&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/cdn-recommendations&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/bring-your-own-cloudflare-zone&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/image-resizing-using-cdn&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/configure-cache-headers&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/consumption-metrics&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/logging&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/content-management-system/docs/logging-options&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/custom-database-tables&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/custom-maintenance-page&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/configuring-the-email-server&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/session-state&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/warming-up-sites&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/customize-health-checks&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-and-seo&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/accessing-azure-information&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/troubleshooting&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/application-performance-management&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/vpn-connections&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploying&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/smooth-deploy&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/creating-a-new-cms-site-and-deploying&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploying-an-existing-cms-site&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/creating-a-new-commerce-site-and-deploying&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploying-an-existing-commerce-site&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/going-live&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deployment-api&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploy-using-code-packages&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploy-using-source-environment&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deploy-using-powershell&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/code-package-format&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/internal-namespaces&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/authentication&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/storage-containers&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/export-database&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/self-service-for-dxp&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-foundation-demo-sites&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/creating-an-optimizely-cloud-account&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/content-authoring&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/dxp-self-deployment-guide&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/manage-app-settings&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/content-synchronization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/purging-cdn-cache&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/restarting-a-web-app&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/export-the-database-to-bacpac-file&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-platform-security&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/user-interface-security&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/web-application-firewall&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/restricting-environment-access&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/gdpr-guidelines&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/asking-for-consent&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/using-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/collecting-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/storing-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/fetching-and-updating-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/deleting-data&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/data-breaches&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/product-specific-gdpr-guidelines&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-content-cloud&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-commerce-cloud&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-campaign&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-search-navigation&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-personalization&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-forms&lt;/div&gt;
&lt;div&gt;https://docs.developers.optimizely.com/digital-experience-platform/docs/optimizely-community-api&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Using NotebookLM creates an amazing space for combining all of the information together and joining the dots. It allows output that you can consume as videos, audio (which allows for a podcast style custom learning), mid maps and note outputs. It really revolutionises learning and combining information and by plugging this in to development teams as well it creates a powerful place for many different activies either research, task planning or anything else.&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/10/connecting-the-dots-between-research-and-specification-to-implementation-using-notebooklm/</guid>            <pubDate>Wed, 22 Oct 2025 14:49:36 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely London Dev Meetup 10th July 2025</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/7/optimizely-london-dev-meetup-10th-july-2024/</link>            <description>&lt;h2&gt;Overview &amp;amp; Agenda&lt;/h2&gt;
&lt;p&gt;As 2025 rolled around this year it was time for another one of our much beloved developer meetups in London.&lt;/p&gt;
&lt;p&gt;This year, I took us back to the Lightwell in London &lt;a href=&quot;https://www.techspace.co/locations/worship-street/events&quot;&gt;https://www.techspace.co/locations/worship-street/events&lt;/a&gt; as last year&#39;s dev meetup had been so successful. So with eager eyes and much excitement Niteco UK took to London to host this years events.&lt;/p&gt;
&lt;p&gt;A a great bonus this year we had a great UK Niteco team roster with the additions of Jill George&amp;nbsp;as our Senior Sales and Client Director in the UK and Polly Walton joining as Director of Growth and Innovation (and Platinum OMVP) along side Mark,&amp;nbsp;Jacob&amp;nbsp;and Myself.&lt;/p&gt;
&lt;p&gt;For the lineup we had a range of amazing speakers from agency&#39;s and OMVPs and Optimizely&lt;/p&gt;
&lt;p&gt;18:30 &amp;ndash; 18:50 :: &lt;strong&gt;Minesh Shah (Netcel) - Frontend Hosting With Optimizely&lt;/strong&gt;&lt;br /&gt;18:55 - 19:15 :: &lt;strong&gt;Tom Bramley (Optimizely) - Content Manager, AI translations, Opal and CMS 13&lt;/strong&gt;&lt;br /&gt;19:20 - 19:40 :: &lt;strong&gt;Scott Reed (Niteco) - Application Insights, Refining Data and View Logs&lt;/strong&gt;&lt;br /&gt;20:10 - 20:30 :: &lt;strong&gt;Andrew Markham (UNRVLD) - Introduction to the new Opti Connect Platform&lt;/strong&gt;&lt;br /&gt;20:35 - 20:55 :: &lt;strong&gt;Jacob Pretorius (Niteco) &amp;ndash; Edge Logs&lt;/strong&gt;&lt;br /&gt;21:00 - 21:20 :: &lt;strong&gt;Daniel Halse (Netcel) - Graph Integration with Configured Commerce&lt;/strong&gt;&lt;br /&gt;21:25 - 21:45 :: &lt;strong&gt;Jeremey Brown (UNRVLD) - Laying the Foundation: PaaS CMS for Greenfield Projects&lt;/strong&gt; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is my round up of the different talks which can be reviewed @ &lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&lt;/a&gt; and thanks to the excellent Jacob Pretorius who is not only an OMVP but a master of video recording and kindly recorded all the sessions for us :-) !!!&lt;/p&gt;
&lt;h2&gt;Minesh Shah (Netcel) - Frontend Hosting With Optimizely&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=76s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=76s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Minesh from Netcel is a long time speaker, OMVP and friend and as per usual kicking us off with an exciting talk on another new beta/platform feature. For this talk we would be delving in to the new Optimizely Frontend Beta offered as a new hosting option to the head when working with Optimizely.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/086ba5e44fe14c3981510a00449cdd0f.aspx&quot; width=&quot;447&quot; height=&quot;254&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Key takeaways from this talk for me were&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.optimizely.com/beta/&quot;&gt;https://www.optimizely.com/beta/&lt;/a&gt; the place to get all the latest cutting edge features&lt;/li&gt;
&lt;li&gt;Optimizely now provides an Azure based hosting platform for the CMS hosting as apposed to needing services like Vecel or Netlify therefore keeping the service all within Optimizely&lt;/li&gt;
&lt;li&gt;The same great features such as the PaaS portal and WAF/CDN with Cloudflare come as part of it&lt;/li&gt;
&lt;li&gt;Deploy using the same Deployment API we use for CMS 12&lt;/li&gt;
&lt;li&gt;Does not compile the solution just deploys the packaged code&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tom Bramley (Optimizely) - Content Manager, AI translations, Opal and CMS 13&lt;/h2&gt;
&lt;p&gt;From Optimizely for a second year in a row we had the amazing Tom Bramley joining this year to talk all things CMS and AI. I was very excited for some of these updates especially around CMS 13&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=1248s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=1248s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/e173de990d7443ddb1ca9ffad429b5a0.aspx&quot; width=&quot;444&quot; height=&quot;333&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Builder will be even better that expected and is coming early 2026 with a pre released in Q4 with full documentation&lt;/li&gt;
&lt;li&gt;Opal will have a range of new features for CMS PaaS content creation with more information coming soon&lt;/li&gt;
&lt;li&gt;New graph improvements to match some of the missing Search and Navigation functions which is very cool&lt;/li&gt;
&lt;li&gt;Embedded DAM for SaaS and for PaaS will become the future replacing the standard Asset system&lt;/li&gt;
&lt;li&gt;Content Manager allows management of content outside of just page structures with a robust editing platform. Very much feels like the labs addon &lt;a href=&quot;https://github.com/episerver/episerver-labs-content-manager-docs&quot;&gt;https://github.com/episerver/episerver-labs-content-manager-docs&lt;/a&gt; coming to the main product&lt;/li&gt;
&lt;li&gt;Frontend Beta and Optimizely Connect Platform are exciting new featues (covered in other talks in this blog)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below are core details on the public available CMS 13 release as it was discussed in Tom&#39;s talk!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://drive.google.com/file/d/1gKlHbnapUNQFuQYZgwgE6lhg54GMLHjI/view?usp=sharing&quot;&gt;https://drive.google.com/file/d/1gKlHbnapUNQFuQYZgwgE6lhg54GMLHjI/view?usp=sharing&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Scott Reed (Niteco): Application Insights, Refining Data and View Logs&lt;/h2&gt;
&lt;p&gt;For my talk I wanted to go over the core features of Application Insights and how to debug issues to allow developers to fully make use of their toolbox.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=2329s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=2329s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/b3fce81bc50a4377a210e2f6b42a4f64.aspx&quot; width=&quot;435&quot; height=&quot;326&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My core aims on this talk are that developers should understand application insights and it&#39;s core parts.&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Application Map for dependency and error investigation&lt;/li&gt;
&lt;li&gt;Performance, Failure, Metrics and KQL for investigating sources of errors and performance problems&lt;/li&gt;
&lt;li&gt;Missing features and things I&#39;d like&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For investigating errors and service problems follow &lt;a href=&quot;/link/9b7a4d80dff74b2e90265a700f872459.aspx&quot;&gt;https://world.optimizely.com/blogs/scott-reed/dates/2025/4/identifying-spike-requests-and-issues-in-application-insights/&lt;/a&gt; which covers the points discussed in my talk and below is my full presentation&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1STQvBxWjkiQzRQQwDEOcRA7Njae9MBs6/edit?usp=sharing&amp;amp;ouid=114149295479135606577&amp;amp;rtpof=true&amp;amp;sd=true&quot;&gt;https://docs.google.com/presentation/d/1STQvBxWjkiQzRQQwDEOcRA7Njae9MBs6/edit?usp=sharing&amp;amp;ouid=114149295479135606577&amp;amp;rtpof=true&amp;amp;sd=true&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Andrew Markham (UNRVLD) - Introduction to the new Opti Connect Platform&lt;/h2&gt;
&lt;p&gt;We welcomed back multiple speaker and long time friend Andy back today to talk about the new Opti Connect Platform. This feature is basically the apps feature from ODP split out and enhanced with new features to allow for seamless CMS integration with other platforms.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=3624s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=3624s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/4db0417c16154992967e11d10e66a728.aspx&quot; width=&quot;447&quot; height=&quot;335&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is a very exciting feature for me and comes with a number of cool areas I want to explore more&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free and paid tiers (paid has a database for data storage and private apps)&lt;/li&gt;
&lt;li&gt;Realtime sync mode or database driven scheduler service powers the platform&lt;/li&gt;
&lt;li&gt;Many apps being built or the ability to create private apps for your client/organization&lt;/li&gt;
&lt;li&gt;Direct integrations for SaaS CMS and PaaS to allow external content in the CMS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Jacob Pretorius (Niteco) &amp;ndash; Edge Logs&lt;/h2&gt;
&lt;p&gt;My friend and fellow Niteco OMVP Jacob today was covering all things Edge Logs, allowing us to take use of the amazing data we have from Cloudflare and another beta.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=5157s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=5157s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/ad25d5b66c16497db7c5691995c04e74.aspx&quot; width=&quot;436&quot; height=&quot;327&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The Edge logs feature is a very powerful dataset from Cloudflare and really helps us to see where challenges, bots and decisions were made by cloudflare and the traffic stats of real users vs non real. Using Grafana we can pull all of this information down and create rich and power dashboards so we can explore it and see exactly what we need. Sign up here &lt;a href=&quot;https://www.optimizely.com/beta-signup/&quot;&gt;https://www.optimizely.com/beta-signup/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Below is Jacob&#39;s full presentation for your viewing and download below&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://drive.google.com/file/d/1OulYCNskMwCeEWe5uK2yw3iONyvgjb5N/view?usp=sharing&quot;&gt;https://drive.google.com/file/d/1OulYCNskMwCeEWe5uK2yw3iONyvgjb5N/view?usp=sharing&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And his blog on the subject here &lt;a href=&quot;/link/fec3217a2b6f43c88d6af804815bb8f5.aspx&quot;&gt;https://world.optimizely.com/blogs/jacob-pretorius/dates/2025/4/visualise-cloudflare-edge-logs-with-grafana/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Daniel Halse (Netcel): CMS 12 / Graph Integration with Configured Commerce&lt;/h2&gt;
&lt;p&gt;Today for Daniel&#39;s talk he covered connecting CMS 12 and Configured commerce together so that clients get the great and amazing features of CMS 12 editing with the robust and powerful B2B commerce features.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=5807s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=5807s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/e0bf9e4be6cb41749e73b912024646dc.aspx&quot; width=&quot;444&quot; height=&quot;333&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Key thoughts for me on this are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can connect these products to give the best of both worlds&lt;/li&gt;
&lt;li&gt;Routing is not easy in spire and need some creating development to get it working&lt;/li&gt;
&lt;li&gt;Graph is great for powering the integration between products&lt;/li&gt;
&lt;li&gt;Spire is limited in CMS capibilities&lt;/li&gt;
&lt;li&gt;Security locks down a number of features due to restrictions in the platform around code and packages for Spire&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Jeremy Brown (UNRVLD): PaaS CMS Foundation for Greenfield Projects&lt;/h2&gt;
&lt;p&gt;Jeremy joined us for the first time giving a great talk on the fundamentals of creating a CMS 12 project from scratch and the core areas to be aware of&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=6988s&quot;&gt;https://www.youtube.com/watch?v=yqtleljncDg&amp;amp;t=6988s&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/13cc3075a6bb4d839e9254a77ec1cc63.aspx&quot; width=&quot;447&quot; height=&quot;335&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implement core properties for your common page types for best practices such as SEO/GEO/Graph&lt;/li&gt;
&lt;li&gt;Use the off the shelf open source nuget packages to save a lot of time&lt;/li&gt;
&lt;li&gt;Understand core configuration such as redirects, security and sign on options such as Opti ID&lt;/li&gt;
&lt;li&gt;Be familar with the DXP configuration and go live process for CMS 12&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We have a great speaker set this year covering a range of topics and as per usual it was all about community and coming together to make Optimizely the best platform it can be. Find more about how great our community was from my friend and boss Mark Welland (Executive Vice President of Niteco) here &lt;a href=&quot;https://www.linkedin.com/pulse/optimizely-developer-meet-up-non-techies-mark-welland-fp0ie/?trackingId=GrCWnv%2BHRs6wPgYBW8Ku9Q%3D%3D&quot;&gt;https://www.linkedin.com/pulse/optimizely-developer-meet-up-non-techies-mark-welland-fp0ie/?trackingId=GrCWnv%2BHRs6wPgYBW8Ku9Q%3D%3D&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/7/optimizely-london-dev-meetup-10th-july-2024/</guid>            <pubDate>Tue, 15 Jul 2025 09:21:16 GMT</pubDate>           <category>Blog post</category></item><item> <title>Identifying Spike Requests and Issues in Application Insights</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/4/identifying-spike-requests-and-issues-in-application-insights/</link>            <description>&lt;p&gt;Sometimes within the DXP we see specific Azure App Instances having request spikes causing performance degredation and we need to investigate. I find the performance tab often lacking to narrow down to the specifics of what I want to look at, so this helps me get to the bottom of things easily&lt;/p&gt;
&lt;p&gt;Here&#39;s some of my easy steps to figure these out&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1: Identify Instance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open Application Insights and navigate to the Monitoring -&amp;gt; Metrics area and set the following filters&lt;/p&gt;
&lt;p&gt;Metric: Log-based metrics, Server response time, Avg aggregation&lt;/p&gt;
&lt;p&gt;Split by: Cloud role instance&lt;/p&gt;
&lt;p&gt;Set the time range (&lt;strong&gt;IN UTC)&amp;nbsp;&lt;/strong&gt;to when the issue occured and keep narrowing it in until you have a 30 minute or so window&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/f125e7aeb05a41d3a95fd6a1c69f3bf0.aspx&quot; width=&quot;717&quot; height=&quot;589&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Make a note of the affending instance that&#39;s causing the issue, in our case &lt;strong&gt;2a9f3a38c4ac&amp;nbsp;&lt;/strong&gt;and the 10 minute time range (IN UTC) when the issue occured&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Extract High Performance Bucket Requests&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Navigate to the Monitoring -&amp;gt; Logs area and set the following KQL, replacing the INSTANCE with your noted instance. Also in the run area set the time frame in UTC to the 10 minute range noted above&lt;/p&gt;
&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;union isfuzzy=true requests
| where cloud_RoleInstance in (&quot;INSTANCE&quot;)
| order by duration desc
| take 100
| project timestamp, id, name, url, duration, performanceBucket&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will give you a list you can export to CSV of high requests&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/9914b70254f84cbca81bc0b1b5613f68.aspx&quot; width=&quot;736&quot; height=&quot;229&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Viewing Request Details&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now navigate to Investigate -&amp;gt; Transaction Search&lt;/p&gt;
&lt;p&gt;Set the filter Event Types = Request and in the search copy and of the id values from our list and search. You can then open the request and drill in to dependency issues or profiler traces, in our case to see a slow Find query&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/608148f445114da3b4e99ea09a70bc8d.aspx&quot; width=&quot;739&quot; height=&quot;274&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let me know if you have other easier or fun ways to drill in to these types of issues.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/4/identifying-spike-requests-and-issues-in-application-insights/</guid>            <pubDate>Fri, 25 Apr 2025 09:29:19 GMT</pubDate>           <category>Blog post</category></item><item> <title>Frontend hosting for PaaS &amp; SaaS CMS</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/4/frontend-hosting-for-paas--saas-cms/</link>            <description>&lt;p&gt;Just announced on the DXP, we FINALLY have a front end hosting solution coming as part of the DXP for modern decoupled solutions in both the PaaS and SaaS space&lt;/p&gt;
&lt;p&gt;Supporting&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enterprise search engine&lt;/li&gt;
&lt;li&gt;CDN&lt;/li&gt;
&lt;li&gt;WAP&lt;/li&gt;
&lt;li&gt;Managed service support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;/link/1485d3c95df74f3395cfc14de067e79f.aspx&quot; alt=&quot;&quot; width=&quot;604&quot; height=&quot;322&quot; /&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;https://www.optimizely.com/beta/&quot;&gt;https://www.optimizely.com/beta/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/4/frontend-hosting-for-paas--saas-cms/</guid>            <pubDate>Tue, 22 Apr 2025 07:56:29 GMT</pubDate>           <category>Blog post</category></item><item> <title>Save The Date - London 2025 Summer Meetup</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/3/save-the-date---london-2025-summer-meetup/</link>            <description>&lt;p&gt;Following last years very succesful meetup in London July 2024 &lt;a href=&quot;/link/ca9925b7807b44f5a248fed3dd4d2888.aspx&quot;&gt;https://world.optimizely.com/blogs/scott-reed/dates/2024/7/optimizely-london-dev-meetup-11th-july-2024/&lt;/a&gt; we are returning to the Lightwell venue for the 2025 event.&lt;/p&gt;
&lt;p&gt;The agenda is TBD but save the date and time&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10th July 2025 : 6pm until 10pm&lt;/li&gt;
&lt;li&gt;Food and Drink&lt;/li&gt;
&lt;li&gt;Talks to be deterimined (reach out to me on LinkedIn or slack if you&#39;d like to talk)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hope you all can make it&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/f7e2e5a6a5964183855bc37477153266.aspx&quot; /&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/3/save-the-date---london-2025-summer-meetup/</guid>            <pubDate>Tue, 25 Mar 2025 12:28:45 GMT</pubDate>           <category>Blog post</category></item><item> <title>CMS 12 DXP Migrations - Time Zones</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2025/3/cms-12-dxp-migrations---time-zones/</link>            <description>&lt;p&gt;When it comes to migrating a project from CMS 11 and .NET Framework on the DXP to CMS 12 and .NET Core one thing you need to be aware of is the infrastructure.&lt;/p&gt;
&lt;p&gt;On CMS 11 .NET Framework we are running on direct Windows WebApps in Azure&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/054d1b949fa54dcb8ed35f4a6b6e66b6.aspx&quot; width=&quot;749&quot; height=&quot;242&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Whereas on CMS 12 .NET Core we are running on Docker contained Lixux WebApps&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/b7c9abc8f8f846ab9f9dc8915be2cde8.aspx&quot; width=&quot;754&quot; height=&quot;421&quot; /&gt;&lt;/p&gt;
&lt;p&gt;One of the issues we&#39;ve faced on this during migrations that something to be aware of is the website timezone value which might be set on directly in the settings for the WebApps on the DXP when running under CMS 11. For example for sites we&#39;ve had running in USA&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/1a7f957a33f3466183586344a42b09f6.aspx&quot; width=&quot;508&quot; height=&quot;134&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This can cause an issue as when going through the project migration process in the DXP to migrate a project over the new infrastructure running in Docker is set to run under UTC and thefore if you have an C# calls to ToLocalTime() in your code you make get different values on this in the new infrastructure.&lt;/p&gt;
&lt;p&gt;Luckily however there&#39;s an easy way to solve this, you can add a setting in to the &quot;App Settings&quot; area of your new project to tell the Docker container what timezone to run under,&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/3476aacf4a9c4575aa139461431fdb2c.aspx&quot; width=&quot;752&quot; height=&quot;259&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Example values supported are as follows (Should support any that Docker supports &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones&quot;&gt;https://en.wikipedia.org/wiki/List_of_tz_database_time_zones&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Time Zone Identifier&lt;/strong&gt;&lt;br /&gt;GMT&lt;br /&gt;Pacific/Apia&lt;br /&gt;HST&lt;br /&gt;AST&lt;br /&gt;America/Los_Angeles&lt;br /&gt;America/Phoenix&lt;br /&gt;America/Mazatlan&lt;br /&gt;America/Denver&lt;br /&gt;America/Belize&lt;br /&gt;America/Chicago&lt;br /&gt;America/Mexico_City&lt;br /&gt;America/Regina&lt;br /&gt;America/Bogota&lt;br /&gt;America/New_York&lt;br /&gt;America/Indianapolis&lt;br /&gt;America/Halifax&lt;br /&gt;America/Caracas&lt;br /&gt;America/Santiago&lt;br /&gt;America/St_Johns&lt;br /&gt;America/Sao_Paulo&lt;br /&gt;America/Buenos_Aires&lt;br /&gt;America/Godthab&lt;br /&gt;Atlantic/South_Georgia&lt;br /&gt;Atlantic/Azores&lt;br /&gt;Atlantic/Cape_Verde&lt;br /&gt;Africa/Casablanca&lt;br /&gt;Europe/Dublin&lt;br /&gt;Europe/Berlin&lt;br /&gt;Europe/Belgrade&lt;br /&gt;Europe/Paris&lt;br /&gt;Europe/Warsaw&lt;br /&gt;ECT&lt;br /&gt;Europe/Athens&lt;br /&gt;Europe/Minsk&lt;br /&gt;Europe/Bucharest&lt;br /&gt;Africa/Cairo&lt;br /&gt;Africa/Harare&lt;br /&gt;Europe/Helsinki&lt;br /&gt;Asia/Jerusalem&lt;br /&gt;Asia/Baghdad&lt;br /&gt;Asia/Kuwait&lt;br /&gt;Europe/Moscow&lt;br /&gt;Africa/Nairobi&lt;br /&gt;Asia/Tehran&lt;br /&gt;Asia/Muscat&lt;br /&gt;Asia/Baku&lt;br /&gt;Asia/Kabul&lt;br /&gt;Asia/Yekaterinburg&lt;br /&gt;Asia/Karachi&lt;br /&gt;Asia/Calcutta&lt;br /&gt;Asia/Katmandu&lt;br /&gt;Asia/Almaty&lt;br /&gt;Asia/Dhaka&lt;br /&gt;Asia/Colombo&lt;br /&gt;Asia/Rangoon&lt;br /&gt;Asia/Bangkok&lt;br /&gt;Asia/Krasnoyarsk&lt;br /&gt;Asia/Hong_Kong&lt;br /&gt;Asia/Irkutsk&lt;br /&gt;Asia/Kuala_Lumpur&lt;br /&gt;Australia/Perth&lt;br /&gt;Asia/Taipei&lt;br /&gt;Asia/Tokyo&lt;br /&gt;Asia/Seoul&lt;br /&gt;Asia/Yakutsk&lt;br /&gt;Australia/Adelaide&lt;br /&gt;Australia/Darwin&lt;br /&gt;Australia/Brisbane&lt;br /&gt;Australia/Sydney&lt;br /&gt;Pacific/Guam&lt;br /&gt;Australia/Hobart&lt;br /&gt;Asia/Vladivostok&lt;br /&gt;Pacific/Noumea&lt;br /&gt;Pacific/Auckland&lt;br /&gt;Pacific/Fiji&lt;br /&gt;Pacific/Tongatapu&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2025/3/cms-12-dxp-migrations---time-zones/</guid>            <pubDate>Tue, 04 Mar 2025 09:47:58 GMT</pubDate>           <category>Blog post</category></item><item> <title>Optimizely London Dev Meetup 11th July 2024</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2024/7/optimizely-london-dev-meetup-11th-july-2024/</link>            <description>&lt;p&gt;On 11th July 2024 in London Niteco and Netcel along with Optimizely ran the London Developer meetup.&lt;/p&gt;
&lt;p&gt;There was an great agenda of talks that we put on and everyone had a great amount of fun.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/bb508683340140abab08e14616e39b76.aspx&quot; width=&quot;821&quot; height=&quot;418&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I&#39;m not going to go through it all as Graham has already created a cracking summary here &lt;a href=&quot;/link/cbed8a11f3a142b08fa091adacd34698.aspx&quot;&gt;https://world.optimizely.com/blogs/allthingsopti/dates/2024/7/a-day-in-the-life-of-an-optimizely-developer---london-meetup-2024/&lt;/a&gt; but here is all the talk material for anyone who wants to see it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tips and Tricks for CMS12/Commerce 14 - &lt;a href=&quot;/link/e923f00f08f24dfb8961f607971b820c.aspx&quot;&gt;https://world.optimizely.com/globalassets/community/meetups/london/dev-meet-2024---upgrades.pptx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Get started with Visual Builder - Live demo only!&lt;/li&gt;
&lt;li&gt;Guide to SaaS CMS and Hybrid Headless - &lt;a href=&quot;https://www.youtube.com/watch?v=-cFsPUdIVFY&quot;&gt;https://www.youtube.com/watch?v=-cFsPUdIVFY&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Creating AddOns for PaaS CMS - &lt;a href=&quot;/link/f6859e4b7dbe4f50baff410bce6b25e4.aspx&quot;&gt;https://world.optimizely.com/globalassets/community/meetups/london/creating-addons-for-optimizely.pptx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Azure AI Speech Integration with Optimizely CMS - &lt;a href=&quot;/link/b4c59c4e505343b88a044fd2ec435ae5.aspx&quot;&gt;https://world.optimizely.com/globalassets/community/meetups/london/azure-ai-speech-integration-with-optimizely-cms.pptx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Opal in PaaS Commerce + New Stuff - &lt;a href=&quot;/link/2abbdf21e92149d0af82f88cfad91ba8.aspx&quot;&gt;https://world.optimizely.com/globalassets/community/meetups/london/optimizely_commerce-connect_roadmap_3q24.pdf&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Implementing Optimizely flags through Vercel - &lt;a href=&quot;/link/460519ced4de4af7b1f7a27087423c4d.aspx&quot;&gt;https://world.optimizely.com/globalassets/community/meetups/london/dom_opti_vercel_toolbar_flags.pdf&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was a pleasure to host this one and was one of the best we&#39;ve had I think in a long while, hope to see you next year or at the North event :-)&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2024/7/optimizely-london-dev-meetup-11th-july-2024/</guid>            <pubDate>Fri, 19 Jul 2024 15:36:57 GMT</pubDate>           <category>Blog post</category></item><item> <title>New ODP Connector For Customized Commerce</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2023/6/new-odp-connector-for-customized-commerce/</link>            <description>&lt;p&gt;When you have both Customized Commerce and the ODP one core aim is to connect the data to the platform so that it can be used within the ODP for functions such as campaigns, reports and real time segmentation.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Although the ODP has a powerful API that allows you to interact with it, the standard approach in Optimizely has been to connect it using the ODP App for Commerce Cloud&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/e0c267ab45ab4a2cb4d8dc1dac01c2c0.aspx&quot; width=&quot;696&quot; height=&quot;309&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This connector pulls Products, Customers and Orders in to the ODP using the Service API package which needs installing in to your commerce solution. It then pulls the data at a frequency from Commerce in to the ODP platform at a specifically set regular interval. However this comes with a number of issues&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problems with high volume of data in larger solutions&lt;/li&gt;
&lt;li&gt;Problems with combatibility with different versions of Service API&lt;/li&gt;
&lt;li&gt;Reliance on Optimizely managing it as an application for features and scheduler&lt;/li&gt;
&lt;li&gt;Import interval slow for use with real time segments&lt;/li&gt;
&lt;li&gt;Lack of ease to control syncing of custom attributes for customers/products&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Alternate options have been to use custom code or third parter connectors to directly interact with the ODP via the API stack, however in Commere 14.13.1 there now comes an offical connector &lt;a href=&quot;https://docs.developers.optimizely.com/customized-commerce/docs/integrate-commerce-and-odp&quot;&gt;https://docs.developers.optimizely.com/customized-commerce/docs/integrate-commerce-and-odp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This connector has the following features&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Runs as a scheduled job which you can control the timings of&lt;/li&gt;
&lt;li&gt;Can push products, customers and orders&lt;/li&gt;
&lt;li&gt;Support for Products and Customer custom attributes by the us of an &lt;span&gt;ICustomerCustomFieldsHandler /&lt;/span&gt; IProductCustomFieldsHandler (see the link for code example)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is the first version and will be enhanced I&#39;m sure but now give us a better option for offically connecting Customized Commerce and the ODP!&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2023/6/new-odp-connector-for-customized-commerce/</guid>            <pubDate>Thu, 29 Jun 2023 14:59:45 GMT</pubDate>           <category>Blog post</category></item><item> <title>DXP Beta Features &amp; Cloudflare Edge Image Resizing</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2023/6/dxp-beta-features--cloudflare-edge-image-resizing/</link>            <description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;We all love access to the latest and greatest features on the Optimizely DXP platform, as by using the cutting edge we can create faster Optimizely experiences that provide a better customer experience to end users! Optimizely has a lot of great features as part of the DXP and is continuing to innovate by providing new features and opening up areas of the DXP more and more for our use.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Recently it&#39;s very exciting to the see a beta signup page some to Optimizely &lt;a href=&quot;https://www.optimizely.com/beta&quot;&gt;https://www.optimizely.com/beta&lt;/a&gt; that allows us to see beta features in progress and sign up to for use on our own projects, such as just to name a few key ones&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edge Image Resizing&lt;/li&gt;
&lt;li&gt;ODP real time segmentation&lt;/li&gt;
&lt;li&gt;GA 4 Web Experimentation Reporting&lt;/li&gt;
&lt;li&gt;Vendor Manged Invetory for Configured Commerce (B2B)&lt;/li&gt;
&lt;li&gt;Opti ID Single Sign On across all the Optimizely provided products&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However I&#39;d like to call out one specifically I&#39;m very excitied about on this list&lt;/p&gt;
&lt;h2&gt;Cloudflare Edge Image Resizing&lt;/h2&gt;
&lt;p&gt;In the modern world we are serving websites across many different devices such as mobile, tablet and desktop and it&#39;s been common for some time for developers to be using responsive design and CSS to provide optimized delivery of the content. As part of that as we also want to serve the images at the right size with the smallest physical size and request footprint to users loading on every different device profile.&lt;/p&gt;
&lt;p&gt;For some time now a common solution would be to install a package such as ImageResizer, ImageSharp or build your own (which has been even more needed with changes in CMS 12 with .NET 6)&lt;/p&gt;
&lt;p&gt;However, this gives us a few downsides&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Building and maintenance of the library or updating it due to bugs&lt;/li&gt;
&lt;li&gt;Potential issues that may exist in the library&lt;/li&gt;
&lt;li&gt;CPU overhead of the webapps/server running the image resizing code on Azure&lt;/li&gt;
&lt;li&gt;Increase in blob storage assets if caching resized version which can cause environment restoring to be a hassle&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cloudflare Edge Image Resizing &lt;a href=&quot;https://developers.cloudflare.com/images/image-resizing/&quot;&gt;https://developers.cloudflare.com/images/image-resizing/&lt;/a&gt; gives us a solution to this as it&#39;s a feature long provided in Cloudflare which can resizie images to WebP and AVIF formats on cloudflares edge platform based upon the parameters defined in the URL.&lt;/p&gt;
&lt;p&gt;This allows us to offload the resizing processing and the caching off the images through to cloudflare eliminating the pain points in using a .NET library. Image configurations &lt;a href=&quot;https://developers.cloudflare.com/images/image-resizing/url-format/&quot;&gt;https://developers.cloudflare.com/images/image-resizing/url-format/&lt;/a&gt; can be defined by passing the OPTIONs part of the URL allowing the height, width and quality to be set.&lt;/p&gt;
&lt;p&gt;On the DXP right now this can be enabled by signing up on the beta page and once given access this will be enabled for the DXP. This means that for any environments such as preproduction and production with custom hostnames (as direct dxcloud domains bypass the CDN) the images will be resized.&lt;/p&gt;
&lt;p&gt;This should be a simple development activity to replace by steps such as&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Removing your resizer package&lt;/li&gt;
&lt;li&gt;Creating an application service that can rewrite image URLs in the desired format&lt;/li&gt;
&lt;li&gt;Deploying to prep for testing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can also test once enabled by directly navigating to the URL in the browser!&lt;/p&gt;
&lt;h2&gt;Picture Renderer&lt;/h2&gt;
&lt;p&gt;A quick update (01-07-2022) that the Picture Rendered by Erik Henningson has been updated to support cloudflare image resizing &lt;a href=&quot;https://github.com/ErikHen/PictureRenderer.Optimizely&quot;&gt;https://github.com/ErikHen/PictureRenderer.Optimizely&lt;/a&gt; so this gives anyone a head start with using this feature for picture element based image resizing&lt;/p&gt;
&lt;p&gt;Hopefully this has been useful! Thanks all!&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2023/6/dxp-beta-features--cloudflare-edge-image-resizing/</guid>            <pubDate>Fri, 16 Jun 2023 09:52:36 GMT</pubDate>           <category>Blog post</category></item><item> <title>Fixing Optimizely Content Syncing/Caching Issues on the DXP pre CMS.Core 12.13.0</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2023/3/fixing-optimizely-content-syncingcaching-issues-on-the-dxp-pre-cms-core-12-13-0/</link>            <description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;With our recent deployments to the DXP for .NET 6 projects (one a new build and one an upgrade) our clients had raised issues where there were seeing different data for the same items within the CMS. For one of our clients on Optimizely Commerce they were seeing 1 variant on a product and a different editor was seeing 3 variants.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/6236cd5af9c4438f8be73d891e97b9c0.aspx&quot; width=&quot;972&quot; height=&quot;135&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Vs&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/304f81154ef24eb89bc103eb2f9b8680.aspx&quot; width=&quot;971&quot; height=&quot;231&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This&amp;nbsp;was a big issue and raised the problem that not only would this be affecting users, end customer would be seeing the different data.&lt;/p&gt;
&lt;p&gt;We managed to replicate this by faking the users ARRAffinity value so we could see that this was related to specific instances.&lt;/p&gt;
&lt;p&gt;On an investgation by support this has raised that there was a scaling bug on the caching system fixed on bug &lt;a href=&quot;/link/1933ba72787346df9003b7a4c7d1cff8.aspx?epsremainingpath=bug/CMS-26486&quot;&gt;https://world.optimizely.com/support/bug-list/bug/CMS-26486&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As this is a fairly critical issue I wanted to highlight this and strongly suggest customers on the DXP to upgrade to a minimum version of &lt;span style=&quot;text-decoration:&amp;#32;line-through;&quot;&gt;12.13.0&lt;/span&gt; (12.13.1 See below)&amp;nbsp;as we are doing for our client.&lt;/p&gt;
&lt;p&gt;Thanks!!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update to this: Quan Mai pointed out some other fixes recently which means we should be upgrading to 13.13.1 &lt;a href=&quot;/link/e4389195afa3428b8cf16df6d578ccfc.aspx&quot;&gt;https://world.optimizely.com/blogs/Quan-Mai/Dates/2023/3/upgrade-to-episerver-cms-core-12-13-1-as-soon-as-you-can/&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2023/3/fixing-optimizely-content-syncingcaching-issues-on-the-dxp-pre-cms-core-12-13-0/</guid>            <pubDate>Thu, 23 Mar 2023 13:53:47 GMT</pubDate>           <category>Blog post</category></item><item> <title>Restoring Help Text For Description in Latest Optimizely CMS</title>            <link>https://world.optimizely.com/blogs/scott-reed/dates/2023/3/restoring-help-text-for-display-name/</link>            <description>&lt;p&gt;It&#39;s been a well known CSS hack for a while to force the showing of the description text for a property in to the editor view rather than a hover as per these articles&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://buildoptimizely.com/episerver/optimizely-cms-12-help-text-and-expanded-input-text-boxes/&quot;&gt;https://buildoptimizely.com/episerver/optimizely-cms-12-help-text-and-expanded-input-text-boxes/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://talk.alfnilsson.se/2014/12/18/display-help-text-in-on-page-editing/&quot;&gt;https://talk.alfnilsson.se/2014/12/18/display-help-text-in-on-page-editing/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;However in a recent version of CMS this broke due to updated UI around the all properties view.&lt;/p&gt;
&lt;p&gt;With the following replacement CSS this will restore a similar features&lt;/p&gt;
&lt;pre class=&quot;language-css&quot;&gt;&lt;code&gt;div.dijitTabPaneWrapper div:has(div.oui-pop--over) {
    display: block !important;
}


div.dijitTabPaneWrapper div.click-area {
    display: none !important;
}

div.dijitTabPaneWrapper div.oui-pop--over {
    border: none !important;
    max-width: 600px;
    font-style: italic;
    color: red;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With this applied you&#39;ll get an interface that looks like this&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/5f3c78b4eb9c4d829d0cc76969784734.aspx&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This is working in Chrome and Edge and will restore the inline text and remove the popup icon, only for the main properties area.&lt;/p&gt;
&lt;p&gt;I&#39;ve highlighted it red but feel free to modify.&lt;/p&gt;
&lt;p&gt;As per the previous guides this needs to be placed in a CSS file such as this editmode.css&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/link/8f5e3e159aca4316bdb85d3ddecdd3ff.aspx&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And then registered in a module.config in the application root (not wwwroot) such as&lt;/p&gt;
&lt;pre class=&quot;language-markup&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt;
&amp;lt;module&amp;gt;
	&amp;lt;clientResources&amp;gt;
		&amp;lt;add name=&quot;epi-cms.widgets.base&quot; path=&quot;Styles/editmode.css&quot; resourceType=&quot;Style&quot;/&amp;gt;
	&amp;lt;/clientResources&amp;gt;
&amp;lt;/module&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>            <guid>https://world.optimizely.com/blogs/scott-reed/dates/2023/3/restoring-help-text-for-display-name/</guid>            <pubDate>Tue, 14 Mar 2023 18:04:48 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>