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:
dotnet add package OptiGraphExtensions
Then configure the services in your Program.cs or Startup.cs:
// 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:
services.AddServerSideBlazor();
app.UseEndpoints(endpoints =>
{
endpoints.MapContent();
endpoints.MapBlazorHub();
endpoints.MapControllers();
});
Finally, add your Optimizely Graph configuration to appsettings.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.

Comments