Projects Tue, 21 Feb 2017 21:09:24 +00:00 umbraco Latests packages from the forum on en EventCalendar EventCalendar for Umbraco 7

EventCalendar for Umbraco is a package that lets you create and manage calendar, locations, organiser and events. You can create one-time, recurring or anniversary events. Locations and Organiser can be reused from different events. It has it's own security settings to let you define which of your users are allowed to edit specific entities.

Version 3.0.0-RC and above can be used for free on localhost with a trial licence.

A license can be purchased via website

Since version 3.1.0 the package needs an update of the Newtonsoft.Json library to version 7.0.1!


You can either download the package here or install it via nuget. The package comes with multiple document types. It is necessary that the detail pages are placed under the calendar node for the package to work right. Also activate the newly created section for the users that should have access to it. The urls for event/location/organiser details are build by convention and can be redirected using url rewriting.

Demo Screenr


If you find any bugs report them on the forums below, on the issue tracker or write me at: bugs at

Version 3.1.7:


  • Fixed bug with colors not used when using google calendar
  • Fixed bug with date exceptions not used for recurring events
  • Fixed bug with pagination on overview views in backend
  • Fixed bug with validation not working correctly
  • Fixed bug where calendar color options not showing correctly in backend


Version 3.1.6:

  • fixed bug where start and end date on normal events were alsways equal


Version 3.1.5:

  • fixed normal events creating recurrencepattern in db
  • fixed error within single events caused calendar view to show no events at all
  • removed yearly frequency from select box as it causes problems with recurring events
  • set weekly frequency as default for recurring events
  • added more NullRef checks


Version 3.1.4:

  • fixed NullRefException for calendar view
  • fixed culture was not used correcly on calendar view


Version 3.1.3:

  • fixed error on event detaisl view where descriptions weren't rendered
  • fixed install issue where installer is running multiple times


Version 3.1.2:

  • fixed missing macro partial views
  • fixed user edit screen not able to be saved


Version 3.1.1:

  • fixed critical bug during table generation in database caused by duplicate primary key naming


Version 3.1.0:

  • added details view for google events
  • updated backend UI to be more like umbraco
  • updated backend UI for descriptions
  • lots of bugfixes


Version 3.0.1:

  • fixed wrong build of package


Version 3.0.0:

  • Refactored code base (now uses NPoco, DI and CQRS for core feaures
  • Refactored backend for better ui error handling
  • Introduced organiser as entity
  • Reusing umbraco data types for UI
  • Using GridEditor instead of RTE for descriptions
  • Introduced detail pages for locations and organiser


David Brendel Wed, 10 Apr 2013 09:59:39 +00:00
Customer Manager Customer Manager for Umbraco

Backoffice Extension to create, edit and manage customer. You can create customer typs and assigning them to create groups.

The package will create a custom Section called "Customer Manager". The data is completely isolated from the Umbraco data. it is saved in the same database. but you can change the database. see the how to below.

This package will add a xml fragment to the dashboard.config file to set a dashboard for the custom section.


Important: Your Umbraco database should have the default connectionname "umbracoDbDSN". If you want to store these data in separate Database you could create one and call it "umbracoDbDSN"


If you want to be sure everything is installed correctly you should check you (Umbraco) Database. There should be 3 new tables called "Customer", "CustomerAddress" and "CustomerTyp".

Caglar Tasci Sat, 18 Feb 2017 19:14:17 +00:00
Terratype # README #


### Purpose ###

Map datatype for Umbraco V7 


### Why? ###

Wish to give your content editors or grid editors easy Maps to set real world locations. 


### Usage ###

1. Install Terratype framework package via Nuget


2. Install the Map Providers you would like to use


3. Create a new data type based off this the newly added Terratype property Editor. You may need to obtain any API Keys that are necessary 


4. Add this new data type to a document type


5. Create new content based off this document type


### Usage ###



### Render ###


@using Terratype;


@Html.Terratype(Options, Map, @<text>Label</text>)



### Log ###



Error when creating Google Maps without an API Key present




Added native Grid editor to allow terratype maps to be added/edited and rendered inside grids (With no coding required)

Added native Datum values to each Coordinate System




Fixed error with Null types in assemblies

Fixed error with map height for IE in Umbraco backend only

Added content editable Labels to maps


Error checking for providers fixed



Removed reliance on terratype map provider having to be same version as terratype



Removed hardcoded /umbraco/ references





Complete rewrite based from AngularGoogleMaps.

Download the source code, it should work for Visual Studio 2013 & 2015. If you set **Terratype.TestSite** as your **Set as Startup project** this should execute the test Umbraco website, where you can test maps under different scenarios. Once running, surf to http://localhost:60389/umbraco and at the login type admin for user and password for password.


Jonathan Richards Tue, 07 Feb 2017 01:09:36 +00:00
Simple 301 301 Redirect Manager for Umbraco

Build status

Simple 301 Redirect Manager is a simple to use, yet extensible, Umbraco Back-Office package that allows you to manage your 301 redirects directly in Umbraco. Includes a simple and intuitive refinement system where you can search for specific text within the URLs or notes defined for the redirect.

Utilizes ngTable for an AngularJs driven data table which includes ordering by column (Old Url, New Url, Notes and Last Updated) and simple pagination with configurable items per page selector.

Integrates directly with the Umbraco Content Pipeline, inserting itself in the first position to intercept incoming requests and checking against an in-memory collection of redirects for optimal performance (the only time a database is hit is through updating redirects in the back-office and on application start.)

Getting Started

Nuget Package: Install-Package Simple301


By default, your web.config file will be updated with two application settings which are used to manage the cached state of the redirects that are created. They are as default :

      <add key="Simple301.CacheDurationInSeconds" value="3600"/>
      <add key="Simple301.CacheEnabled" value="true"/>

Simple301.CacheDurationInSeconds : This allows you to configure how long redirects are cached within the site. This only affects the user facing redirects so that the application doesn't read from the database for every request in the site. If you modify redirects within the back-office, the cache is automatically cleared per action (Add, Update, Delete).

Simple301.CacheEnabled : This allows you to toggle whether or not caching is enabled. Since this package is hit for every requested URL in the site, it is important to consider the performance implications of disabling cache. Use this to troubleshoot redirect issues.

These caching settings were added in order to support load balanced environments, where in previous versions the applications held on to redirects only in memory (persisting to the DB only if modified), which doesn't work in a load balanced environement (they may exist in a memory collection on one server, but not on the other).


1. Locate Simple301 Redirect Manager in the Content section

Navigate to the Umbraco > Content section. You will find a 'Manage Redirects' tab in the right pane. Select this to view the Simple301 Redirect Manager. From this window you can view and manage all of the redirects for your site. Go to Umbraco > Content > Manage Redirects

2. Refine & Locate

Use the provided Text search by entering text in the 'Search redirects' input box. As you type, results will display in real time. Use pagination and the results-per-page selectors to view more or fewer redirects at a time in the table.

Refine by Text Search, and Pagination

3. Add, Update & Delete

Use the provided actions in the Action column to Add, Update & Delete existing redirects. Update your redirect in line with the rest of the redirects (make sure to click 'Save') or simply fill out a new redirect at the bottom of the table and click 'Add'.

Add, Update & Delete

Support: Issue Logging

Wade Kallhoff Sun, 08 Nov 2015 16:47:16 +00:00
uSync.ContentEdition uSync.ContentEdition is now part of uSync 3, see the uSync project for more details.

Requires uSync

uSync.ContentEdition has been developed to compliment uSync, the database to disk and back tool for developers. 

ContentEdition puts the content exports content to disk, and imports it too.

Content Edition Features

  • Write all your site content to disk in a structure that represents your site
  • Read from a folder structure and build content inside Umbraco.
  • Keep in sync during development, by source controlling the content folder
  • Map Content Ids within the content between installs.

When you move content between Umbraco installations all the IDs change, uSync.ContentEdition handles this for you and maps the IDs to the new ids inside your install as part of any installation


Kevin Jump Thu, 25 Jul 2013 09:38:40 +00:00

uSync in an umbraco package that takes the bits of umbraco that are stored in a database and moves them to disk, so you can source control, copy and move your umbraco site between computers and servers.

uSync will read/write:

  • Document types

  • Media Types

  • Data Types

  • Macros

  • Dictionary Items

  • Languages

  • Member Types

  • Templates

  • Stylesheets (no longer stored in the db in umbraco 7.3+)



Read the uSync documentation here :


Source Control

Whenever you make a change usync can write that out to disk, so you can check it in with all your other changes, uSync will also import everything from disk so when you checkout other people’s code, their changes will be reflected on your build.



uSync isn’t a deployment system, but with everything written out to disk, ready for import you can copy the files over to your target systems and run imports to make changes. To run uSync as part of your deployment you will probably want to tweak a few settings.


uSync Versions

I do try to be good with version control, but it’s can get confusing when targeting so many different versions of umbraco - as of V7.4 of umbraco these are the current editions of uSync for each version.

Check out the Docs for details of what version to install for Older Umbraco versions.


Related Packages

  • uSync.ContentEdition : Adds the ability to sync content and media items as part of uSync

  • uSync.Snapshots: Allows you to take moment in time snapshots of changes you have made

  • uSync.Core (below) : The core usync engine & API - allowing you to write your own syncing routines

Kevin Jump Fri, 22 Feb 2013 00:44:34 +00:00
uCondition uCondition is a rule-based expression property type for Umbraco.  It allows content editors to control business logic directly within the Umbraco CMS.  It can be used to provide a more personalised experience to your customer, or to determine whether an action is permitted, or where ever you want to put the rules in to the hands of a content editor.   Developers can easily start creating their own predicate types within minutes.


Why should I use uCondition?

  • Approach decision making in a rich interactive way.
  • Be more agile with your business rules
  • Create simple and very complex expressions easily
  • Conditions are built up from reusable predicate types
  • Conditions can be created globally, and controlled at a global level
  • Develop only the predicate types content editors require
  • Use it to personalise your customers experience
  • Use it to show applicable content to your customers
  • Go live with your changes within seconds
  • Avoid nasty checkboxes and other similar approaches that can cause headaches for developers and content editors


Premade Predicate Types:
New features and suggestion
This project is free for up to 10 predicate types.  This should be enough for a lot of small to medium size web sites.  You can purchase a second level domain license for uCondition Pro which gives you unlimited predicate types from
Post Installation via Umbraco Package
Once you've installed the Umbraco package, add the following to ~/config/dashboard.config
<section alias="uCondition">
    <tab caption="Global Conditions">
Install via Nuget
Run 'Install-Package uCondition' and no additional actions required to get up and running.
Craig Noble Sun, 12 Feb 2017 02:37:14 +00:00
Umazel Starter Kit (Responsive Bootstrap Theme) About this starter kit

This is a starter kit for Umbraco 7.4 and onwards, based on the Mazel HTML theme. It is actually the same kit we are using on our web site (

This starter kit includes functionality contained in other packages created by DotSee: AutoNode, VirtualNodes, NodeRestrict and PropSense (their files are included here and are free to use anyway). 

The starter kit uses strongly-typed models.

You are free to use it as you like, for personal or commercial purposes. (The original HTML theme was purchased from WrapBootstrap with Extended License which allows redistribution).





This starter kit features a lot of functionality both in the front-end and the back-end. Let's see the highlights.

On the back-end:

Automatic node creation - for example, when you create a new page placeholder nodes for page elements are created automatically under it.

Unneeded URL segments hidden from automatically-generated URLs - you'll see this in action in blog posts - although each blog post is created under my-blog-node/posts/post-name, (where "posts" is the default, auto-generated folder where you put your blog posts), the "posts" part of the URL is not present, making each post's URL easier to read.

Limit on the number of nodes that can be published where needed - for example, you can have up to 4 nodes in a pricing section - any more than that will be saved but not published and the Umbraco backoffice will inform you of the restriction.

On the front-end:

Modular page building - each page consists of "page elements" - essentially subnodes that represent "rows" (don't forget we're using Bootstrap) with different functionality such as text content, a gallery, an FAQ, a customer testimonials section etc. You can add as many of those "elements" as you want on a page and order them the way you want.

Reusable page elements - you can have page elements stored in a central location (there is a "reusable elements folder") and then re-use them in multiple pages without having to edit each one separately to change it - you just edit the one reusable element under the "reusable elements folder".

Automatic or manual menu generation - you can select to either have the top menu generated automatically from all pages (3 levels deep max) or just define which pages you need the menu to include. In case you choose automatic menu generation, you can still control what appears in navigation on a per-page basis via properties.

Per-page name (title) management - you can have different literals for the browser title, the top menu, the footer, the title that is shown inside the page, and, of course, the node name that generates the URL (thanks to built-in Umbraco properties, you can even override that one too).

Open Graph and Meta Tags that can be defined per page, inherited from the home page, or "discovered" by scanning a set of properties you define in the order you define (and this includes images too). You can also have the content of OG tags automatically copied to relevant meta tags.


Why this starter kit was created

We wanted to take an HTML theme, convert it to Umbraco, and make it as configurable as possible. We also wanted to demonstrate a modular approach to creating content that would not restrict each page to predefined content positions. Finally, we wanted to do all this with the new, strongly typed models (ModelsBuilder) functionality available in Umbraco.

We hope you like this approach.

We haven't implemented everything from the HTML template, but there's always room for future releases :)

We don't claim that this starter kit contains state-of-the-art code or is the best approach around, but we think it's good. We would really like to hear your feedback though! 

Special thanks to: Tom Madden, Jon Humphrey, Carlos Casalicchio, Marcus Maunula, and our own George J. Capnias.




Initial Release


Bugfix - Blog post pages not allowed for internal link picker

Bugfix - Sidebar blog partial views not cached by page (incorrect caching in multi-language setups)

Bugfix - Form submission will not work correctly if specific web.config keys not present

Bugfix - Light/dark menu being decided by script in some cases rather than settings

Bugfix - MNTP (e.g. for blog categories) would default to site root if document was not yet saved

Enhance: Changed left footer text to RTE instead of textbox

Enhance: Custom CSS for RTE


Bugfix - Blog post paging behaving irreguraly when filtering by categories or tags

Bugfix - Category picker not starting at correct root for blog categories


Sotiris Filippidis Sat, 24 Sep 2016 14:35:49 +00:00
VirtualNodes This package lets you specify one or more document types that will be excluded from Umbraco-generated URLs, thus making them "invisible". Those can be used as grouping nodes and they will not appear as part of the URL.


After you install the package, you will have to add one appSettings entry to your web.config file, as follows:

<add key="virtualnode" value="docTypeToMakeVirtual"/>

Where docTypeToMakeVirtual is the document type alias you want to be treated as a "virtual" node.

You can define more than one "rules" for docTypes by separating them with commas, as follows:

<add key="virtualnode" value="docTypeToMakeVirtual,anotherDocType"/>

You can also use wildcards at the start and/or the end of the document type alias, like this:

<add key="virtualnode" value="dog*,*cat,*mouse*"/>

This means that all document type aliases ending with "dog", all document types starting with "cat" and all those containing "mouse" will be treated as virtual nodes.


Advanced: Auto numbering of nodes

Consider the following example:






Supposing that groupingNode1 and groupingNode2 are virtual nodes, the path for article1 will be /articles/article1. Okay, but what if we add a new article named "article1" under groupingNode2?

The plugin checks nodes on save and changes their names accordingly to protect you from this. More specifically, it checks if the parent node of the node being saved is a virtual node and, if so, it checks all its sibling nodes to see if there is already another node using the same name. It then adjusts numbering accordingly.

So, if you saved a new node named "article1" under "groupingNode2" it would become:






    article1 (1)

And then if you saved another node named "article1" again under "groupingNode1" it would become "article1 (2)" like this:





    article1 (2)


    article1 (1)

This ensures that there are no duplicate urls. Of course, to keep things simple, I've implemented checks only a level up - if you have multiple virtual nodes under each other and multiple nodes with the same name in different levels, better be careful because no checks there. (Yes, I'm lazy).

Version History


Initial release


Bugfix: Content Finder would return a Dynamic node instead of IPublishedContent when getting a node's path from cache which would cause an exception when accessing the node for a second time.

Bugfix: Publishing a home page in case there were more than one homepages (e.g. multiple language) would cause an exception due to incorrect handling of levels.


Bugfix: Process normally when calling .UrlWithDomain() extension by removing the host part, processing paths and appending again at the end


Bugfix: Prevent exception when parent node is null (maybe unpublished or otherwise not yet persisted)

Other Notes

This package will work with Umbraco version 7.5 or higher (tested on 7.5.2) which includes the new 301 redirect tracker. However, Umbraco cannot correctly track and create 301 redirects to urls that come from this package, so if the url for a node included in a path that contains one or more virtual nodes is renamed, the automatic 301 redirect created will be from the full (actual) path to the new (shortened path) and not from the full (shortened) path to the new (shortened) path.

That is, if the url /aaa/bbb/ccc is setup to create a virtual node (let's say for the doctype of "bbb") and becomes "/aaa/ccc" then renaming "ccc" to "ccc2" will create a 301 redirect rule as follows:

/aaa/bbb/ccc to /aaa/ccc2

instead of

/aaa/ccc to /aaa/ccc2

resulting in a 404 when trying to access /aaa/ccc (the old url with the hidden segment)

This only affects automatic 301 redirects, but otherwise the package is going to function correctly.

Related forum posting:

Sotiris Filippidis Wed, 18 May 2016 07:37:58 +00:00
ExamineLookupValues Includes names of nodes selected via Multi-Node Treepickers (MNTP) into Examine indexes instead of the node IDs to facilitate Examine searches.

By default, Examine indexes tread MNTP property values as a comma delimited list of ids, providing little value to search. With ExamineLookupValues, you can have those comma delimited list of values replaced by a space-delimited list of actual node names.

For example, let's suppose you have a "BlogPost" document type that contains a "categoryPicker" property, which is an MNTP datatype, letting you select "Category" nodes that you maintain somewhere else in your Umbraco installation. Let's also suppose you select two categories for a new blog post, named "Programming" and "SEO" respectively. What goes in the Examine index for your blog post will be a list of IDs for those two categories, like "1049,1055".

if you have defined a rule (see below) for the "BlogPost" document and the "categoryPicker" property then the Examine contents for the "categoryPicker" property will be replaced with actual category names. So the value will become "Programming SEO". Now, when you search blog posts with Examine for "SEO" or "Programming" your blog post will come up.

This works via a config file named DotSee.Elv.Config (placed in the /config folder). There, you can create rules that define:

The document type alias to watch for

The property alias to check

Like this (based on the example above):

<rule docTypeAlias="BlogPost" propertyAlias="categoryPicker"/>

You can also set rules programmatically on application start, like this:

public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)


DotSee.ExamineLookupValues.Elv.Instance.RegisterRule(new DotSee.ExamineLookupValues.ElvRule("BlogPost", "categoryPicker"));



You can set the Examine indexer to use like this in the configuration file:

<?xml version="1.0" encoding="utf-8"?>

<elv indexer="ExternalIndexer">

Where you can substitute "ExternalIndexer" with your indexer.


Two things to note:

If you change the name of a lookup node, the index values will not be updated for pickers that reference it. In this case, only a full index rebuild will update those nodes.

Since this is doing a lookup for every node included in the picker, it may slow down your publishing and index rebuild process a bit if you have a large number of nodes and also many nodes selected in pickers. In my experience, this will start to show after you have a significant amount of nodes (10k or more).

I understand this package is actually doing the opposite of the recommendations for Examine found here: so be sure to use it only if it doesn't slow you down. It's meant to facilitate searching small sets of nodes with few lookups, and it's not suggested as a solution when you have tons of nodes.

Sotiris Filippidis Sat, 10 Dec 2016 17:18:14 +00:00
Media Stock Easily add beautiful stock images to your media library. Search from within Umbraco's Media area, and add selected images to your media library directly.

Unsplash photos are free to use without attribution.

Simon Campbell Mon, 07 Nov 2016 10:41:30 +00:00
Epiphany.Core This is a C# collection of helpers, razor templates sugar coating.

Stefano Sun, 12 Feb 2017 11:13:10 +00:00
Cultiv Search Engine Sitemap This package creates a sitemap that can be submitted to different search engines.

Note: a Razor edition is seperately available from the downloads at the bottom of this page. Grab it while it's hot!

No need to install any of the other packages with compiled DLL's, this is just an XSLT / Razor file so it is extremely flexible and very light-weight. I would go so far as saying that this is the best, easiest, and simplest Umbraco sitemap package out there, period. 

The resulting sitemap is 100% compliant with the sitemap XML specification on
Therefore, this sitemap will work for Google and all the other search engines that support this protocol (should be all of them).

This package outputs the URL and the modified date, optionally you can add the update frequency and importance by adding these properties to your document types (and filling them in):
- searchEngineSitemapChangeFreq
- searchEngineSitemapPriority

Valid values for change frequency are: always, hourly, daily, weekly, monthly, yearly, never
Valid values for priority are: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0

Of course this package will look at the umbracoNaviHide property to make sure it's not showing inaccessible pages.

After installing this package, the sitemap will be available under the URL - To make this URL a bit shorter, you can rename the template to (for example) Sitemap and the URL can be changed to

To make sure all of the search engines pick up your sitemap, point them to it in your robots.txt file, just add a line like this:



Tip: To make a reference to the sitemap in multisites in Umbraco, use my Dynamic Robots package. Also, to update the robots.txt file from within Umbraco, use the Robots.txt Editor package.

XSLT Editition
Changed in v1.0.1:

- You don't have to manually specify your site URL any more, it is now automatically generated in the XSLT.

Changed in v2.0.0:
- Now compatible with both Umbraco 4.0.x and 4.5.x (no seperate download, this will work in both version with the legacy or new XML schema).

Changed in v2.0.1:
- Made the times 24 hour compatible


Razor Edition
- First release, same features as the XSLT edition

- When using "useDomainPrefixes" you now get the correct URL's
- Better checking for "umbracoNaviHide"
- Fix bug with empty template detection

- Sometimes, the umbraco generated URL starts with a slash, leading to double slashes in the full URL (for example: This is now fixed.
- The priority node was called changefreq

- Updated to use the v7 API

Google Plus








Sebastiaan Janssen Wed, 08 Jul 2009 21:38:33 +00:00
reCAPTCHA field for Umbraco Forms The new ReCAPTCHA field helps protect your Umbraco Forms from bots without having to solve a CAPTCHA. Instead with just a single click they’ll confirm they are not a robot. We’re calling it the No CAPTCHA reCAPTCHA experience.

Thanks to Andy Butland, his post inspired us  -

Note: Please make sure that you have installed Umbraco Forms before installing this package.

Alex Skrypnyk Mon, 03 Oct 2016 15:27:52 +00:00
uCommerce uCommerce is an e-commerce offering fully integrated with Umbraco for building online stores. With uCommerce and Umbraco you create unique and powerful e-commerce webshops fully customized to your client's requirements.

Building an ecommerce solution with uCommerce is a snap with the many out of the box features including built-in integration with popular payment gateways like PayPal, SagePay, RBS WorldPay, DIBS, ePay, PayEx, and

uCommerce is deployed in more than 15 countries worldwide and powers many production sites today, which makes it a safe bet as the foundation for your store or ecommerce project.

Hit the Ground Running with Avenue Clothing

Avenue Clothing is a full online store built with Razor and MVC that you can download for free and customize to your heart's content. It's got everything you need to get a full store up and running and includes best practices for uCommerce specifically and e-commerce in general as well.

Responsive design makes it ready for the mobile web.

Visit Avenue Clothing at

uCommerce Is FREE!

We're super excited about uCommerce Free Edition, which enables you to deploy enterprise class software for your clients at no cost at all. The Free Edition has everything you need to get an online store up and running and headroom for growth when the business requirement expand.

Familiar Tools

uCommerce lets you use familiar tools to develop your store: Leverage Razor, MVC, .NET, or a combination to build the pages of your store.

uCommerce App Platform

Want more out of uCommerce like automatic product relations, personalized product recommendations, new payment providers, more reports, or something else? Check out available apps on uCommerce Market at

Change Any Aspect

Can't find an app that does what you need? uCommerce is fully pluggable and based on "Framework First" principles , which enable you to override any component or add new functionality to the platform.

Want a different price- or tax calculation? Swap out the default price engine with your own. Need a new UI in the backend? Add a new tab where you need it. Want a different URL scheme for your store? Well, you get the idea. Just go ahead and change it.

Integrate uCommerce with other Systems

uConnector is our integration platform, which enables uCommerce to interoperate with other systems like ERP, WMS, CRM, POS. uConnector will happily receive information from existing systems in any format, transform the data, and pass it onto the appropriate system.

Using a code first approach your integratios are developed using an elegant fluent API.

Oh, and did we mention that uConnector comes with uCommerce out of the box? Ready to use.

Search Foundation

Faceted search lets customers quickly filter products based on available information in catalogs. Quickly find relevant product based on size, color, or any custom information set up. Need a new facet? Simply add a new field to your product and promote it to act as a facet.

The search engine is fully multilingual making facets appear with the proper names and values based on the selected language of the customer, e.g. a range of colors will appear with their native name.

Faceted fields are easily promoted and maintained in the backend. No XML config involved :)

Catalog Foundation

Having rich catalog capabilities as part of the online store is essential for its success selling products on the internet. uCommerce Catalog Foundation handles all your needs for publishing products in to the store. From supporting multiple stores right down to products with variations such as size and color uCommerce has it all.

For advanced pricing scenarios our price groups support most scenarios found in online stores. Not satisfied with what's the box? As a developer you can roll your own, which fits the specific requirements your client has.

  • Multiple stores with different styling and checkout flow
  • Micro branding sites
  • Multiple catalogs for separating product ranges
  • Arbitrary number of categories
  • Products live in multiple stores, catalogs, and categories
  • Products with variations to help the customer select the right product
  • Multilingual product information. Have the catalog shown in as many languages as you care to support
  • Related Products will help increase conversion rates by relating product to each other thus helping potential customers find the products they want. You can define a number of relation ship kinds, which are used to relate products to each other, e.g. Cross Sell, Up Sell, Accessory. uCommerce gives you complete control over which kinds of related products you wish to maintain.
  • Sort products as you like, e.g. have the newest products show up at the top of lists
  • Sort categories as you like, e.g. have most popular category displayed first
  • Multiple images per product maintained as part of the media library
  • Flexible pricing for multi-currency and differentiated product pricing
  • Product definitions enable you to store information that you care about on the products themselves, complete freedom to set them up however you like
  • Rich text editing capabilities let you present your products the way you want. Don't waste time messing around with raw HTML
  • Backend product search lets you find the product you need, quickly

Marketing Foundation

Everybody loves a great deal. Advertise and give discounts by targeting product groups, products, customer segments, or even individual customers with ads and discounts to stimulate the customer to buy. Send out coupon codes to attract new customers and retain existing ones for repeat business.

  • Time limited marketing campaigns.
  • Site ads based on Umbraco content.
  • Multilinugal site ads.
  • Prioritize order of evaluation of campaign items.
  • Targeted ads and content based on the customer's context.
  • Targeted discounts based on the customer's context.
  • Percentage off shipping fee (Free shipping discounts).
  • Unit price discount (percentage off).
  • Order total discount (amount and percentage off).
  • Order line discount (amount and percentage off).
  • Product bundle discount (amount and percentage off).
  • Buy 2 get 1 free discount.
  • Free shipping vouchers/promocodes.
  • Personal, single use vouchers.
  • Generic, multiuse vouchers.
  • Product vouchers/promocodes.
  • Product group vouchers/promocodes.
  • Store specific vouchers/promocodes.
  • Voucher/promocode export to third party systems.
  • Configurable rules for multiple awards per customer behavior.

Customer Service Center

Manage orders in the back-end, update, add products to existing orders. Place new orders. Handleorder split scenarios.

Transaction Foundation

Once the customer has decided to buy by adding a product to her basket and then proceed to checkout the uCommerce Transaction Foundation takes over and manages persistant baskets for the customer and the entire checkout flow. Subsequent order processing handed over to the uCommerce back office right in Umbraco where you can configure the order flow and track order through the flow.

Persistent baskets increase conversion rates by letting the customer carry on shopping where she left off

  • Persistent baskets increase conversion rates by letting the customer carry on shopping where she left off
  • Checkout processing
  • Full framework for integration with any payment gateway
  • Payment providers for RBS WorldPay, SagePay, PayEx, Payer, PayPal, DIBS, and ePay including support for authorization, acquire, cancel, and refund as part of the order flow
  • Support for multiple payment methods per order
  • Multiple shipments per order - have parts of your order shipping to the office and home 
  • Order history available for customers
  • Multiple shipping methods and complete control over shipping pricing
  • Order Search in back office
  • View and edit order details in back office
  • Fully extendable pipeline system for full control over checkout and order processing
  • Customizable order flow in back office, e.g. send e-mail to customers when order processing begins, capture payment when order is shipped, orders for approval
  • Dynamic Order Properties is a way for the developer to add new properties to baskets, orders, and even order lines. Any information you wish to capture during browse or checkout can be added to the basket or order for later use - be it reporting, fulfillment, or something else altogether
  • Full audit trail on orders in the backend
  • Ability to add audit messages to orders to keep track of additional information

uCommerce is completely integrated with the Umbraco membership system. Configure whether you want customers created during checkout for login to review ordering history and more.

  • Use the Umbraco membership to stay in touch with with past customers.
  • Create profiles for your customers automatically when they buy
  • Segment customers using groups
  • View customer profiles in back office
  • Store additional information about your customer on their profile such as sign ups for newsletters
  • Search for customer profiles
  • Maintain e-mail templates with rich text editing capabilities
  • Control who can maintain your store

Security Foundation

Control permissions on everything in the administrative interfaces of uCommerce. Set up permissions on a per user basis to determine who can see what and perform which actions.

Have dedicated catalog editors? Set up permissions to only allow them to see specific catalogs in specific stores.

Need to support multiple order processing locations or departments? Assign permission to employees in individual fulfillment centers to only allow them to see and process orders assigned to their location or department.

  • Individual user permissions
  • Store management permissions
  • Catalog management permissions
  • Price management permissions
  • Language management permissions
  • Order management permissions
  • Global settings permissions

Analytics Foundation

With users converting to customers in the store an overview of what is going on is needed. uCommerce Analytics Foundation provides you with an opportunity to create rich reporting using familiar techniques like user controls and stored procedures. uCommerce comes with a couple of reports out of the box and you can easily add your own in minutes.

Foundation API

Leverage your .NET skills for ultimate control and flexibility over the uCommerce Foundation. The Foundation API is a highly flexible modular design, which allows you as a .NET developer to plug into the low level uCommerce APIs to modify existing behavior or even replace what comes in the box.

Do you want to build specialized UIs to manage aspects of the store? Use the Foundation API to leverage the functionality already in uCommerce to your own needs.

The Foundation APIs are fully LINQ enabled, which enable you to create rich functionality quickly.

Søren Spelling Lund Mon, 22 Feb 2010 11:04:16 +00:00
Styled Textbox Simple styled textbox property editor to let you apply a little flare to the standard text boxes.Great for things like Page Titles and headings and it works as a direct replacement for the built in textbox.

I keep finding myself reaching back into old projects to pull this simple styled textbox property editor out, so i've stuck it in a package to make it even easier for me to find. 

Allows you to create textboxes, with styles, character limits or warnings and placeholders.

Release Notes:

  • 1.4 - Spellingz / and idz - Lee Kelleher did it. 
  • 1.3 - Property Value Converter - support for ModelsBuilder - will now return string not object
  • 1.2 - Added Textare support - you can pick multiline and get a textarea, instead of a textbox.
  • 1.0 - initial release


Kevin Jump Fri, 01 Apr 2016 15:17:12 +00:00
Umbraco Mapper Umbraco Mapper has been developed to support a more pure MVC approach to building Umbraco applications.   It provides functions for mapping Umbraco and other data sources to custom view models, which are then in turn passed to the views.

There are two downloads.

1) - this is the package file which has no dependencies other than on the Umbraco core binaries.  It provides all the mapping operations.

2) - is an add-on providing a custom mapping for DAMP models.  It has dependencies on the mapper itself and the DAMP property editor converter (which is included).

If preferred, you can also install these two files via Nuget:

PM> Install-Package UmbracoMapper

PM> Install-Package UmbracoMapperCustomMapperForDAMP

For more details on use, examples, version history and to review the code see:

Andy Butland Thu, 12 Dec 2013 19:10:59 +00:00
Personalisation Groups Introduction

Personalisation Groups is an Umbraco package intended to allow personalisation of content to different groups of site visitors.  It comes with some document types, data types and custom property editors to allow you to define groups based on given criteria and an extension method on IPublishedContent to allow you to show or hide content according to these criteria in your templates.

It comes with a number of criteria, namely:

  • Authentication status
  • Cookie key presence/absence and value matching
  • Country (via IP matching)
  • Day of week
  • Number of site visits
  • Pages viewed
  • Querystring
  • Referral
  • Region (via IP matching)
  • Session key presence/absence and value matching
  • Time of day
  • Umbraco member group
  • Umbraco member profile field
  • Umbraco member type

And is extensible so you can write your own.

Please note this package is marked as beta, primarily as whilst it is being used by others, it's not yet been used in a production setting myself.

That said, I think it's reasonably solid and have had some good reports, so feel free to take a look and use as you see fit.

For more detailed information on use, extending the package, troubleshooting info or to review and/or contribute to the source code, see the documentation and source code repository at Github:

Using the package


Firstly install the package in the usual way.  

Once installed you'll find a few additional components:

  • Personalisation Groups Folder is a document type purely used to organise your personalisation groups.  By default you can create it at root and within it create further instances of itself.
  • Personalisation Group is a document type where the group itself is created.  You can place these inside the folders.  It comes with a single property called Group definition of a data type also provided with this package.
  • Personalisation group definition the data type provided to allow the definition of personalisation group, based on a new property editor provided in the dll installed with the package.
  • Personalisation group picker is an data type instance of the multi-node tree picker property editor, for the selection of groups for given piece of content

There's also a NuGet installer if you prefer to use that:

PM> Install-Package UmbracoPersonalisationGroups

However this will only install the dll, not the document types and data types.  As such I'd reccommend if you do want to use NuGet for ease of updates, do the following:

  • Install the package from
  • Then install from NuGet to get the dll as a package reference

Example usage

  • Within the Content section, create a root node of type Personalisation Groups Folder, called Personalisation Groups
  • Switch to Developer and find the Personalisation group picker data type.  Set the root node to be the node you just created.
  • Back to Content, as a child of the node you just created, create a node of type Personalisation Group called, for example, Weekday morning visitors
  • Set the Match option to All
  • Set the Duration option to Page (or., if you select other options here, the groups will become "sticky". For example if someone comes to your home page that's personalised based on a querystring parameter, if they then return to the page by default they will no longer match the group (as the querystring value is no longer there). But selecting Session or Visitor you can make the visitor stick to the group they matched originally).
  • Add a new criteria of type Day of week and tick the boxes for Monday to Friday.
  • Add a second criteria of type Time of day and add a range of 0000 to 1200
  • Save and publish
  • Now go to Settings and find the document type for a piece of content you want to personalise.  For example with the Fanoe Starter Kit you could select the Blog Post document type
  • Add a new field of type Personsalisation group picker with an alias of personalisationGroups
    If you don't like this alias you can use a different one, but you will also need to add the following appSetting key to your config file: <add key="personalisationGroups.groupPickerAlias" value="myCustomAlias"/> 
  • Back to Content again, find or create a page of this document type and pick the "Weekday morning visitors" personalisation group
  • Finally you need to amend your template to make use of the personalisation group via new extension method that will be available on instances of IPublishedContent, named ShowToVisitor(), as described below.


Personalising repeated content

A typical example would be to personalise a list of repeated content to only show items that are appropriate for the current site visitor.  Here's how you might do that:

  @foreach (var post in Model.Content.Children.Where(x => x.ShowToVisitor()))

With a little more work you can also personalise an individual page.  One way to do this would be to create sub-nodes of a page of a new type called e.g. Page Variation.  This document type should contain all the fields common to the parent page that you might want to personalise - e.g. title, body text, image - and an instance of the Personalisation group picker.

You could then implement some logic on the parent page template to pull back the first of the sub-nodes that match the current site visitor.  If one is found, you can display the content from that sub-node rather than what's defined for the page.  And if not, display the default content for the page.  Something like:

var personalisedContent = Model.Content.Children.Where(x => x.ShowToVisitor()).FirstOrDefault();
string title, bodyText;
if (personalisedContent != null) 
title = personalisedContent.Name;
bodyText = personalisedContent.GetPropertyValue<string>("bodyText");
title = Model.Content.Name;
bodyText = Model.Content.GetPropertyValue<string>("bodyText");


Notes on particular criteria


The country criteria uses the free GeoLite2 IP to country database which you can download from: and made available by  It'll look for it in /App_Data/GeoLite2-Country.mmdb or at the path specified in the following appSetting:

    <add key="personalisationGroups.geoLocationCountryDatabasePath" value="/my/custom/relative/path"/>

Extending the package

Personalisation groups comes with a number of built-in criteria but may not have everything you want to use.  However it can be extended relatively easily.

One way to do this would be to use one of the "low-level" built-in criteria, such as the ones that look for a cookie or session value.  If your application code can set a given cookie or session key value when a particular action occurs you want to personalise on, you can just do that and use them.

Or you can create your own criteria.  This involves writing some server-side code that implements a given interface as well as some custom angular views and controllers.  There's more detail on this here:

And several examples in the source code you can use for reference:


Andy Butland Sat, 02 May 2015 22:18:08 +00:00
AutoNode This is a simple plugin that automatically creates new child nodes in the Umbraco back end upon publishing a node, based on a set of user-defined rules.

Usage (using configuration file in /config folder)

In your /config folder, you will find autoNode.config with a commented example of a rule.
Here's an example rule:

    nodeName="Dummy Name" 

: The document type alias of the document being published. IF the document being published has the specified doctype alias, then the rule will execute.

: The document type alias of the document that will be automatically created as a child document.

: The name of the newly created node.

: If set to true, will bring the newly created node first in the Umbraco back-end.

: This, naturally, regards republishing. If set to true, then republishing a node that already has child nodes (including any already automatically created nodes) will NOT run the rule. If set to false, the rule will run even if the node being published already has children. Note: If this setting is set to false and there are already automatically created nodes under the node being published, then they won't be created again. (The check is performed on both doctype and node name as defined in rules - if such a node is found, it will not be created again)

Usage (using code)

You can also register one or more rules for the package on application start. All you need to do is get the AutoNode instance (it's a Singleton) and use the RegisterRule method. You can use both a configuration file and code if you like. All rules will be added.

  AutoNode au = AutoNode.Instance;
  au.RegisterRule(new AutoNodeRule(
    createdDocTypealias: "TextPage",
    docTypeAliasToCreate: "Dummy",
    nodeName: "Dummy Auto Inserted Node",
    bringNodeFirst: true,
    onlyCreateIfNoChildren: false));

You should use this call in the ApplicationStarted event handler, in a new class you can create in your App_Code folder like below:

using Umbraco.Core;
using Umbraco.Core.Events;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
    public class AutoNodeEvents : ApplicationEventHandler
        protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
            base.ApplicationStarted(umbracoApplication, applicationContext);
            AutoNode au = AutoNode.Instance;
            //This is an example rule, put your own here
            au.RegisterRule(new AutoNodeRule(
                createdDocTypealias: "TextPage",
                docTypeAliasToCreate: "Dummy",
                nodeName: "Dummy Auto Inserted Node",
                bringNodeFirst: true,
                onlyCreateIfNoChildren: false));

Limitations / Warnings

You should not specify circular rules (i.e. one rule for creating doc B when A is published and one rule for creating doc A when B is published - this will cause an endless loop and leave you with a huge tree if you don't stop it on time :). You can, however, create multiple rules for the same document type. That is, you may want docs B, C, and D to be automatically created when A is published, so you will have to create 3 rules.

The plugin creates the subnode only if there isn't any child node of the same doctype with the same name as defined in the rule.

The plugin works for new nodes as well as existing nodes (if they are published and there is a rule in place and no subnode of the given doctype already exists).

This plugin works only with doctypes, so it's not possible at the moment to have any other criteria for automatic document creation. IF you need this, I'll be happy to add more logic.

This plugin was made to cover very specific, simple needs, like having a "Files" grouping node created automatically under each new "Article" node. It doesn't do miracles, so don't expect any :)

Nuget Package

PM> Install-Package DotSee.AutoNode

Version History

Initial Release

Multiple rules for children of same doctype now work as expected

AutoNode can now read rules from autoNode.config in /config folder (you can still apply rules programmatically).

Added more logging, lowered dependencies to 7.2.7

Update: When automatically generated nodes are unpublished and parent is published, the automatically generated nodes that already exist will be republished too.
Sotiris Filippidis Mon, 09 May 2016 19:40:55 +00:00

For all your Map needs please use

It does everything this package does, plus oodles of more features; Map styles, Razor rendering and multiple map providers.


Google map datatype for Umbraco V7, 



Wish to give your content editors easy Google Maps to set real world locations. 



Either via Umbraco Package Installer or Nuget with

PM> Install-Package AngularGoogleMaps

NOTE: You may need to restart IIS before the Google Map will show for first time.



1. Install package via Nuget or Umbraco Package Installer

2. Create a new data type using the new Angular Google Maps property editor 

3. Add new data type to document type

4. Create new content based on document type



a. API Key

   (Now a requirment to use Google Maps


b. Coordinate System; Choose between WGS-84 which is the international standard or

    GCJ-02 which is requirment to comply with Chinese state law

c. Show Search Box - Decide whether to display a Search box to content editor.

    To use this feature you MUST enable Places API Web Service in Google Service for

    your API Key (See

d. Search box country filter - Restrict search results from one country you pick from a

    dropdown list 

e. Default location – set a default location for map

f. Map Height – Set the height of the Google map in pixels

g. Hide Label – Decide whether the Map takes up all the space of the editor    

h. Hide, show or allow the selected coordinates to be displayed and / or editable

i. Marker Icon - Select an image to use as the map marker

   Can select either from a predefined list or

   any custom image  

j. Format: Choose the format you wish to store your map coordinates

   Csv = "latitude,longitude,zoom"

   Json = Json object in format

   Csv with Search: "latitude,longitude,zoom,icon image,icon shadow image,icon width,

                              icon height, horizontal anchor, vertical anchor, format,apikey,

                              coordinate system,search status,search limit,search typed by user"

i. Reduce watches - Only enable if you know what you are doing



The package contains a single dll installed in the Umbraco /bin/ folder and a collection of css, html & js files stored within the /App_Plugins/AngularGoogleMaps/2.0.3/ folder. The new data type is of type string. If google maps is unable to load, for internet issues for example, then the map will downgrade to a coordinate editor instead, this is by design to allow off net use.


Type Convertor

Dynamic convertor works straight out of the box now, converts property string to AngularGoogleMaps.Model type which contains 15 properties


In a razor page with an AGM property named Map


  var lat = CurrentPage.Map.Latitude;

  var lng = CurrentPage.Map.Longitude;

  var zoom = CurrentPage.Map.Zoom;

// Only works if format is Json or Csv with Search

  var searchtyped = CurrentPage.Map.SearchTyped;



Strongly Typed convertor converts any AGM PropertyValue to AngularGoogleMaps.Model


In a razor page with an AGM property with alias map


  var map = Model.Content.GetPropertyValue<AngularGoogleMaps.Model>("map");

  var lat = map.Latitude;

  var lng = map.Longitude;

  var zoom = map.Zoom;

// Only works if format is Json or Csv with Search

  var searchtyped = map.SearchType;







  • Fixed error when typing coordinates




  • Added icon, definition and search typed in by content editors to AngularGoogleMaps.Model



  • Allow empty API Key to be set, for sites that still accept no API key



  • Preview mode for setting section
  • Added extra default icons
  • Can now use relative icon urls



  • Removed reliance on Angular Google Map Library - This was causing endless headache
  • Added API key (Which now is a requirment for all new Google Maps)
  • Added Coordinate System
  • Added reduce watch mode, for those using AGM in very large multiple fieldset controls



  • Stopped dependancy on Archetype
  • Can now set size and anchor point for custom marker
  • Removed long list of pre-defined markers (New pre-defined markers will appear in next version), for now can only create custom markers



  • Use InvariantCulture for decimal convertors



  • Added Google Map to data type to make it easier to pick default location
  • NuGet package (
  • IPropertyValueConverter and StronglyTyped Convertor to convert string property value to Lat, Long, Zoom easily



  • Updated to latest 2.1.X library 
  • Can now select marker icon to use
  • Removed excess watches for improved performance



  • Can now be used within an Archetype.
  • Have added Google API KEY for heavy users with more than 25 000 map request per day 
    Need to amend line 2 of /App_Plugins/AngularGoogleMaps/1.0.4/controller.js if you require this functionality.


  • Have removed internal resources from dll, now uses standard js, css & html files stored in /App_Plugins/AngularGoogleMaps/1.0.3 folder



  • Have removed usage of 'draggable' attribute, to stop clash with uSkySlider



  • Extra refresh if map is not on first tab on content
  • Fixed error with release mode, eg. web.config not in debug mode



  • While the package is currently for backend use only, maybe add some frontend rendering code, for quick rendering of google maps within razor templates for those coder who are lazy/don't require any fancy features for their map. Maybe even include ability to render more than one marker for those that have embedded AGM within Archetypes and/or across different property types.

If you feel you might benefit from one or all these new features now, seed me a quick tweet and I might be tempted to speed up the coding, knowing that someone cares. (@JoniffRichards)


Jonathan Richards Thu, 05 Jun 2014 20:03:30 +00:00