diff --git a/modules/common/src/main/scala/docspell/common/Ident.scala b/modules/common/src/main/scala/docspell/common/Ident.scala
index ded29dc8..3e30d9d4 100644
--- a/modules/common/src/main/scala/docspell/common/Ident.scala
+++ b/modules/common/src/main/scala/docspell/common/Ident.scala
@@ -26,7 +26,7 @@ object Ident {
   implicit val identEq: Eq[Ident] =
     Eq.by(_.id)
 
-  val chars: Set[Char] = (('A' to 'Z') ++ ('a' to 'z') ++ ('0' to '9') ++ "-_.").toSet
+  val chars: Set[Char] = (('A' to 'Z') ++ ('a' to 'z') ++ ('0' to '9') ++ "-_.@").toSet
 
   def randomUUID[F[_]: Sync]: F[Ident] =
     Sync[F].delay(unsafe(UUID.randomUUID.toString))
diff --git a/modules/webapp/src/main/elm/Page/Register/Update.elm b/modules/webapp/src/main/elm/Page/Register/Update.elm
index e400bf58..3f6f01bc 100644
--- a/modules/webapp/src/main/elm/Page/Register/Update.elm
+++ b/modules/webapp/src/main/elm/Page/Register/Update.elm
@@ -1,9 +1,11 @@
 module Page.Register.Update exposing (update)
 
 import Api
+import Api.Model.BasicResult exposing (BasicResult)
 import Data.Flags exposing (Flags)
 import Page exposing (Page(..))
 import Page.Register.Data exposing (..)
+import Util.Http
 
 
 update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
@@ -106,8 +108,16 @@ update flags msg model =
             , cmd
             )
 
-        SubmitResp (Err _) ->
-            ( model, Cmd.none )
+        SubmitResp (Err err) ->
+            let
+                errMsg =
+                    Util.Http.errorToString err
+
+                res =
+                    BasicResult False
+                        (errMsg ++ " Please check the form and try again.")
+            in
+            ( { model | result = Just res }, Cmd.none )
 
 
 validateForm : Model -> List String
diff --git a/modules/webapp/src/main/elm/Util/Http.elm b/modules/webapp/src/main/elm/Util/Http.elm
index f9a030d3..20ebf5cd 100644
--- a/modules/webapp/src/main/elm/Util/Http.elm
+++ b/modules/webapp/src/main/elm/Util/Http.elm
@@ -164,12 +164,14 @@ errorToString : Http.Error -> String
 errorToString error =
     let
         f sc =
-            case sc of
-                404 ->
-                    "The requested resource doesn't exist."
+            if sc == 404 then
+                "The requested resource doesn't exist."
 
-                _ ->
-                    "There was an invalid response status: " ++ String.fromInt sc
+            else if sc >= 400 && sc < 500 then
+                "Invalid input when processing the request."
+
+            else
+                "There was an invalid response status: " ++ String.fromInt sc ++ "."
     in
     errorToStringStatus error f