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

Graham Carr
Jan 7, 2026
  120
(2 votes)

A day in the life of an Optimizely OMVP - Introducing Webhook Management in OptiGraphExtensions v4 for Optimizely CMS 12

The OptiGraphExtensions add-on has just received a significant update that many in the Optimizely community have been waiting for: comprehensive webhook management directly within your CMS administration interface.

For those unfamiliar with the project, OptiGraphExtensions is an open-source add-on for Optimizely CMS 12 that brings advanced Optimizely Graph management capabilities into the familiar CMS environment. It already provided powerful features for managing synonyms and pinned results—and now webhooks join the party.

Why Webhooks Matter

Webhooks are the backbone of modern event-driven architectures. In the context of Optimizely Graph, they allow your applications to receive real-time notifications when content changes occur. Whether you're triggering a static site rebuild, invalidating a cache, updating a search index, or notifying downstream systems, webhooks eliminate the need for constant polling and enable truly reactive content workflows.

Until now, managing these webhooks meant diving into API calls or external tooling. OptiGraphExtensions changes that by bringing webhook management directly into the Optimizely CMS admin panel.

What Can You Do With Webhook Management?

The new webhook feature provides full CRUD operations with a clean, intuitive interface that integrates seamlessly with the existing CMS administration experience.

Subscribe to Specific Events

The topic selection system gives you granular control over which events trigger your webhooks. You can subscribe to individual events such as doc.created, doc.updated, or doc.deleted, or use wildcard patterns like doc.* for all document events or *.* to receive notifications for everything. This flexibility means you can set up precisely targeted webhooks that only fire when relevant changes occur.

Configure Filters for Precision

Not every content change needs to trigger every webhook. The filter configuration allows you to narrow down when webhooks fire based on specific criteria. For example, you might configure a filter so that your production CDN cache only invalidates when content with a status of "Published" changes, ignoring draft saves and preview updates entirely.

Control HTTP Methods and Status

Each webhook can be configured with the appropriate HTTP method for your endpoint—whether that's POST, GET, PUT, PATCH, or DELETE. You also have full control over webhook status, allowing you to enable or disable webhooks without deleting them. This is particularly useful during maintenance windows or when debugging integration issues.

Real-Time Synchronisation

Like the existing synonym and pinned results features, webhook management benefits from real-time synchronisation with the Optimizely Graph API. Changes you make in the admin interface are immediately reflected in Graph, and the interface provides clear feedback on sync status.

Getting Started

If you're already using OptiGraphExtensions, you'll find the new Webhooks option in the Opti Graph Extensions menu within the CMS admin panel after updating to the latest version.

For those new to the add-on, installation is straightforward. Add the new v4.0.0 NuGet package to your Optimizely CMS 12 project:

 
 
bash
dotnet add package OptiGraphExtensions

Then configure the services in your Program.cs or Startup.cs:

 
 
csharp
// Add services
services.AddOptiGraphExtensions(options =>
{
    options.ConnectionStringName = "EPiServerDB";
});

// Configure the application
app.UseOptiGraphExtensions();

Since OptiGraphExtensions uses Blazor for its interactive admin interface, ensure Blazor server-side is configured:

 
 
csharp
services.AddServerSideBlazor();

app.UseEndpoints(endpoints =>
{
    endpoints.MapContent();
    endpoints.MapBlazorHub();
    endpoints.MapControllers();
});

Finally, add your Optimizely Graph configuration to appsettings.json:

 
 
json
{
  "Optimizely": {
    "ContentGraph": {
      "GatewayAddress": "<your graph instance gateway address>",
      "AppKey": "<your graph instance key>",
      "Secret": "<your graph instance secret>"
    }
  }
}

A Note on Implementation

One technical detail worth mentioning: due to a limitation in the Optimizely Graph PUT endpoint (which doesn't reliably update topics and filters), OptiGraphExtensions implements webhook updates by deleting and recreating webhooks. This means webhook IDs will change after editing—something to be aware of if you're tracking webhook IDs externally.

The Bigger Picture

With webhook management joining synonyms and pinned results, OptiGraphExtensions now provides a comprehensive suite of Optimizely Graph administration tools. Content editors and administrators can fine-tune search experiences and configure event-driven integrations without leaving the CMS environment they know.

The add-on continues to follow clean architecture principles with intelligent caching, connection pooling via IHttpClientFactory, and robust error handling that gracefully falls back to local data when Graph is temporarily unavailable.

Get Involved

OptiGraphExtensions is open source and welcomes contributions from the community. Whether it's bug reports, feature requests, or pull requests, your input helps make this tool better for everyone in the Optimizely ecosystem.

Check out the project on GitHub: https://github.com/adayinthelifeofapro/OptiGraphExtensions

The add-on is available on NuGet and supports both .NET 6.0 and .NET 8.0 with Optimizely CMS 12+.


OptiGraphExtensions is an independent open-source project designed to enhance the Optimizely CMS platform.

 

Graham Carr, Solutions Architect

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

Jan 07, 2026

Comments

Please login to comment.
Latest blogs
Indexing Geta Categories in Optimizely Graph

Different ways to fully use categories in headless architecture.

Damian Smutek | Jan 9, 2026 |

Building an custom Optimizely Opal tool with OCP SDK

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

JSpencer | Jan 8, 2026

Event Mechanism on Contact Creation in Optimizely Commerce 14

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

Francisco Quintanilla | Jan 7, 2026 |