Server side validation fails to run if you put conditions on fieldsets. UmbracoFormsController.ValidateFormState line two needs to do this: var allValues = form.AllFields.ToDictionary(f => f.Id, f => String.Join(", ", model.FormState[f.Id.ToString()] ?? new object[0])); The current use of f.Values always yields empty values, since it's a "dead" property.