Accessing Umbraco 8 Saving Events

Posted 11 April 2019 by Darren Welch

How to use IUserComposer & IComponent to access the saving event in Umbraco 8.


I did a previous post showing how easy it was to do this with Umbraco 7.  It has changed a lot in Umbraco 8, it now uses dependency injection. 


So how do we do it?


In this example we have added an Approve property type (datatype: TrueFalse) on our Home document type.


When publishing, Approve will have to be checked otherwise an error will be raised and the content not saved.  This example will not be much use in the real world, but it's a basic example to show how easy it is to access events.


1) Create a custom composer which inherits from IUserComposer

public class EventSavingComposer : IUserComposer
        public void Compose(Composition composition)

2) Create a custom component which inherits from IComponent

public class EventSavingComponent : IComponent
        public void Initialize()
            ContentService.Saving += ContentService_Saving;

        public void Terminate()

        private void ContentService_Saving(IContentService sender, ContentSavingEventArgs e)
            foreach (var content in e.SavedEntities.Where(c => c.ContentType.Alias.InvariantEquals("Home") && !c.GetValue("approve")))
                    EventMessage msg =
                        new EventMessage("Error", "You must seek approval before publishing this content", EventMessageType.Error);

...As simple as that.

Darren Welch


Darren Welch

  11 April 2019

Contact me online



umbraco umbraco 8 c# coding

Has this helped?

If this has saved you time and you are feeling generous, why not buy me a coffee.

Thank You cup of coffee

Related Content

How to reset your Umbraco password via the database

30 Mar 2017

Using Flickr API and JSON to load Content

06 Jun 2017

How to write HTML faster using Zen Coding

16 Apr 2018

Umbraco Backoffice default values

20 Mar 2016