Skip to content

Content Events Reference

intermediate

IContentEvents exposes events fired during content lifecycle operations. Subscribe to “ing” events to cancel or modify operations before they complete. Subscribe to “ed” events to react after completion.

Optimizely.Cms.Core

EventEventArgsCancelableFires when
CreatingContentContentEventArgsYesBefore a new content item is persisted
CreatedContentContentEventArgsNoAfter a new content item is persisted
EventEventArgsCancelableFires when
SavingContentContentEventArgsYesBefore content is saved
SavedContentContentEventArgsNoAfter content is saved
EventEventArgsCancelableFires when
PublishingContentContentEventArgsYesBefore content is published
PublishedContentContentEventArgsNoAfter content is published
EventEventArgsCancelableFires when
DeletingContentContentEventArgsYesBefore content is deleted
DeletedContentContentEventArgsNoAfter content is deleted
EventEventArgsCancelableFires when
MovingContentContentEventArgsYesBefore content is moved
MovedContentContentEventArgsNoAfter content is moved
EventEventArgsCancelableFires when
CheckingInContentContentEventArgsYesBefore content is checked in (draft saved)
CheckedInContentContentEventArgsNoAfter content is checked in
PropertyTypeDescription
ContentIContentThe content item being operated on
ContentLinkContentReferenceReference to the content item
TargetLinkContentReferenceDestination reference (move/copy operations)
CancelActionboolSet true in “ing” events to cancel the operation
CancelReasonstringMessage displayed when canceling
Subscribe and cancel on validation
csharp
public class ContentEventInitializer : IConfigurableModule
{
  public void ConfigureContainer(ServiceConfigurationContext context) { }

  public void Initialize(InitializationEngine context)
  {
      var events = context.Locate.Advanced.GetInstance<IContentEvents>();
      events.PublishingContent += OnPublishing;
  }

  public void Uninitialize(InitializationEngine context)
  {
      var events = context.Locate.Advanced.GetInstance<IContentEvents>();
      events.PublishingContent -= OnPublishing;
  }

  private void OnPublishing(object? sender, ContentEventArgs e)
  {
      if (e.Content is ArticlePage article
          && string.IsNullOrEmpty(article.MetaDescription))
      {
          e.CancelAction = true;
          e.CancelReason = "Meta description is required.";
      }
  }
}

Publish fires: SavingContent -> SavedContent -> PublishingContent -> PublishedContent. Canceling an “ing” event prevents all subsequent events in the chain.