logo-umbraco-2009-05.jpg Umbraco is one of only a few open source web content management systems built on Microsoft's .NET technology stack. This CMS is no "out the box" solution. To the contrary, it's a content management system for .NET web developers. And while it's relatively straightforward to use, one must first deal with a steep learning curve.

We took a close look at the latest version of Umbraco (v4.01) and here's what we found.

Introducing Umbraco

When getting started with Umbraco there are some key themes to keep in mind:

  • A CMS for developers -- Empower web developers
  • Steep learning curve -- Straight forward to use once you get over that learning curve
  • Not an out of the box, modular solution -- Customized to meet your needs
  • A framework for .NET web developers

Umbraco was not designed to be a plug-and-play solution like Drupal or Joomla. Niels Hartvig, the creator of Umbraco, tried to build a system that didn't limit him on what he could do and yet still pleased non-technical clients. That was seven years ago.

Today, Umbraco is one of the best known .NET open source web content management systems. Downloads of the CMS have grown 100% in the last six months, with over 7,500 downloads happening a week.

The recent event of the Microsoft Web Platform Installer (WPI) has proven a boon for Umbraco. It's currently listed as one of the most popular applications in the WPI gallery, with more than 36,000 downloads to date.

With the MS WPI you can easily get the CMS up and running. But once you get there, you've got some thinking and planning to do.

The Basic Story

Vendor  Umbraco
 Umbraco v4.01
Product Category
 Web content management, simple web cms, web publishing
Typical Scenario
 basic websites, micro publishing websites
Bad Fit Scenario
Enterprises that want enhanced workflow without adding 3rd party provider, organizations without a development team with some intermediate to advanced .NET programming skills.

Company & Product History

The first version of Umbraco came out in 2001 and was built on ASP and COM. The first open source version arrived as a Beta 2 in October 2004 and was officially released in February 2005. That version was built on ASP.NET 1.1.

The Road to Open Source

Umbraco is the brain-child of Danish born Niels Hartvig. The original code was created to help him build web solutions for his clients -- back when he had a freelance consulting business. Foreshadowing the future path for the project, Hartvig would often allow Umbraco to be used for free by other freelancers with whom he shared an office.

Hartvig found that by allowing others to use Umbraco, he was getting really good feedback and suggestions for improvements that he may not have gotten otherwise. The decision to go open source was not strategic, according to Hartvig, it just "felt right".

Not Meant to be Plug-and-Play

As we have said, Umbraco is not an out of the box solution in the sense that you can install it and with some minimal configuration and customization away you go. No. There's a little more to using this web content management system than that. And that is the way Hartvig likes it. You see, he doesn't believe in plug and play solutions. To him, organizations tend to focus more on the tools and not as much on their needs.

Hartvig believes that modular OOTB solutions lead organizations to think they have a common language when they really don't.

He offered an example of a company saying they wanted a forum. The consultant knew that software x had a forum, so they implemented it and gave the customer, so what the consultant gave them was a forum: http://forum.umbraco.org.

Unfortunately all the company really wanted was a simple way to communicate with their customers. Hartvig says that we spend too much time focusing on the technology of content management and not enough about understanding and defining the needs.

Once the organization truly understands their needs, Umbraco is there to meet them.

A Small but Evolving Company

Hartvig quit his consulting business in 2007 to do Umbraco full-time. There are 2.5 people in the company -- active community member Per Ploug Hansen became a partner last year -- building the software and training people to use it.

The latest version -- 4.0.1 -- was released in March.

There's a really great story behind how Umbraco went from being a little solution to help with the consulting business to being one of the most popular downloads on the Microsoft Web Platform Installer, but we really want to get to the meat of this review.

Market & Pricing

Umbraco is not actively marketed, it has evolved naturally. When asked what the target market was for Umbraco, Hartvig said that it was hard to place because it is free. He says it is attractive to smaller projects, but it isn't plug and play like Drupal or Joomla.

Used by skilled freelances for small projects, Umbraco also supports some fairly big sites like heinz.com, deanfoods.com, wired.co.uk and naias.com. 


Umbraco is open sourced licensed under the MIT open source license.

There are two versions of Umbraco, free and professional. Both versions have the same core product. Professional comes with additional options like support and tools. There are several flavors of the Professional version as described in the figure below.

UmbracoVersions.jpg  UmbracoVersions2.jpg

Hartvig says that they hope 1% of their market will become customers by 2010, either as PRO subscribers or Umbraco.tv subscribers.

Umbraco Tools

Pro subscribers get a couple of tools that are good to have:

Umbraco Courier: Courier enables you to easy move your website from a staging environment to production. You can do things like deploy an entire website, sync up content between environments or add new functionality to a staging server.

Umbraco Concierge: Concierge shows developers what's installed and what's in use in their Umbraco implementation. It also monitors action handlers and registered third party applications so you know what is interfacing with the Umbraco event model.


In addition to the Pro version, Umbraco also offers a subscription to Umbraco.tv, a website that contains over 6 hours of video tutorials that teach you the ins and outs of building Umbraco. There are videos for site builders, site developers, and soon, editors. New videos are added monthly and depending on the subscription you purchase, the videos are available for the iPod/iPhone.

Umbraco just came out with a new pricing model for Umbraco.tv: 19 EUR per month (~ US$ 25) for a single user personal license. This includes unlimited access to all the videos and source code to select videos. You can cancel the monthly subscription at any time. There's also a 12 month subscription for a single license and a business license. View the details here.

Key Features and Ratings

Core Technologies

Umbraco is a Microsoft.NET solution. It runs on Microsoft Windows Server 2003 and up against SQL Server 2005 or VistaDB.

Built on the .NET framework 2.0 and using ASP.NET 2.0 and C#, Umbraco supports .NET Custom Control and .NET User Controls without having to do anything special. Controls are added to Umbraco using Macros. It fully supports ASP.NET Ajax using jQuery, Prototype, MooTools or another Ajax toolkit.

It also fully supports ASP.NET Master Pages. XSLT is used for generating dynamic lists.

You have full access to the Umbraco API which includes over 15,000 lines of code. The API is well documented. The event model for the content engine is also exposed allowing you to automate tasks based on the actions of content editors.

Designing Templates/Look and Feel

Umbraco does not have a custom template engine, so you do not have learn a new templating language in order to create websites. This is a plus in our opinion. The Umbraco team believes there are better tools already out there, tools that designers know well and are comfortable using.

Umbraco Templates

For Umbraco, it's as easy as designing your website in your favorite tool like Adobe Dreamweaver, then cut and paste the HTML code into the Umbraco template editor (in the Back Office) and then in the spots where you want your Umbraco data, insert an Umbraco field and save. When a page is rendered using the template, the content is dynamically displayed.

Umbraco Templates -- Insert Page Field

Umbraco gives you 100% control over the design for your website. You don't need to worry about themes or skinning, the design can be anything you want. Hartvig believes that themes and skinning is often a sign of bad separation of content, functionality and presentation.

Modify vs Customize

Like any open source content management solution, you are able to modify the source. But like the Umbraco folks say, that's a big step to take and you run the risks of breaking future upgrades or breaking compatibility. Their motto instead is customize and extend, saying they have built every part of Umbraco to be extensible.

What About MVC?

Umbraco is heavily investigating the use of ASP.NET MVC -- Microsoft's newest framework for ASP.NET (see details here) -- as an alternative for the front-end website. Hartvig says that the current engine is very close to the MVC model now.

Web Analytics

Umbraco does not have web analytics built-in. Hartvig believes analytics is not a trivial task and is best left to the experts. You can integrate any web analytics tool with Umbraco via web server plugins, access logs or JavaScript -- think WebTrends and Google Analytics.

Content Entities

In Umbraco, the core or foundational concept is the Document Type.

Document Types describe the type of content that you can create in your website. Examples of Document Types include News Items, Articles, HomePage, SearchPage. Document Types are to Umbraco what content types are to another web cms and web pages are to another.

Document Types and IA

Understanding how Document Types work is the key to understanding Umbraco. Unfortunately, at first they are a bit confusing, because defining them is a mostly about modeling content but also a bit about the website's information architecture.

This blend of concepts and the related implications threw us for a little turn. However, if you can get these concepts under your belt, then the rest of the system is much easier to understand.

When you create Document Types you are also outlining the rough structure for the website's information architecture. Specifically, when you define a type, you must also specify where that type can live in the website's structure. Down the road, content authors and manager will not be able to over-ride this.

To put this differently, when you define the type you aren't exactly building the navigation, but you are placing limits on how the navigation can be defined.

In Umbraco, there's no delineation between content (like individual articles) and webpages (like HomePage or Article List page). You create Document Types for each type of content whether it's "real" content or a webpage with dynamic functionality and some metadata, etc. Hartvig says that this is a good thing and provides the flexibility needed when building a website.

In thinking about the blend of type definition and type usage it strikes us as a good model for small to mid-sized organizations with only one or a few authors and no "Editor" or "Administrator" to who controls the overall structure of the website. The initial system set up can be done by an expert and then the content managers can be left to their own devices and one need not fret that content instances will end up in the wrong place in the website.

For larger organizations it can also work, but if more powerful users want full control over the website's information hierarchies, they might find the blend of type and location to be a source of frustration.

Creating Document Types

Document Types are like SQL database tables. You create the Type and then assign a number of properties to it, indicating what the format of each property can be (text, rich text, drop down, etc) and if that property is required. This is pretty standard stuff for content management systems.

For example, an Article Document Type means that you can create one or more articles for your website.

Umbraco -- Creating a New Document Type

When you create a Document Type, you provide some basic information about it such as Name, Alias, Icon, thumbnail and description. The Icon is the image you see beside the content you create in the Content Section. The thumbnail gives you a quick view of what type of content you are creating when you create a new piece of content.

You can also indicate to have a template created automatically. All this does is create a template shell with the same name as the document type. You can actually have more than one template (view of the Document Type), but one is the default. The allowed templates section on the Info tab indicates which templates you can use for this Document Type.

Document Type Tabs

Sometimes you may have a lot of different properties for your content type. You can organize the way the content information is added by creating TABS for your document type. This is simply a way to organize the information you want to add without having everything listed on one single page. For example, you can have a tab for Core Content and one for MetaData.

Creating Properties

You define the properties for your Document Type in the Generic Properties tab and assign a TAB those properties will appear on.

Umbraco -- Document Type Properties

Defining Structure

The Structure Tab for a Document Type lists the Document Types already created. Here you select the type of Document Types that can be created as child nodes under your Document Type.

The structure is really the navigation for your site. If you create a HomePage Document Type, then you would probably allow all other Document Types to be created under it. But if you were creating a News Summary Page Document Type, you would probably only want a News Item Document Type to be created under it.


Umbraco's security model is easy to understand. There are two parts to it. First, you can easily create users and roles in Umbraco.

Creating Users

When you create a user, you set up all the basics such as username, password, email, default language and role. In Umbraco, a user is assigned to one role only. You select what sections within the Back Office the user has access to and you can automatically redirect the user to Canvas Editing on log in, thus restricting them from the Back Office completely.

Umbraco -- Creating a User

You can also restrict the area of content the user can work in by setting the Start Node in Content. If you set this node to something other than the top level, when the user logs in they only see the Content Navigation Tree from that Node down.

Umbraco -- Restricting Content Access

Creating User Types

There are several User Types created by default in Umbraco: Writer, Editor, Translator, Reviewer. For each role, you specify the permissions for that role.

Umbraco -- Creating a User Type

When a user is assigned to a specific User Type, their actions are limited to those set by the User Type:

Umbraco -- Limiting Permissions by User Type

User Permissions

You can also set user permissions on individual pages.

Umbraco -- Defining User Permissions


You also have the ability in Umbraco to create Members Only areas for your website. In the Members Section of the Back Office you can create Member Types like Basic, Silver and Gold, Member Groups and view the Members who are signed up.