diff --git a/lib/mix/tasks/mobilizon/users/modify.ex b/lib/mix/tasks/mobilizon/users/modify.ex
index e210e5742..e49e8e1e7 100644
--- a/lib/mix/tasks/mobilizon/users/modify.ex
+++ b/lib/mix/tasks/mobilizon/users/modify.ex
@@ -40,7 +40,7 @@ defmodule Mix.Tasks.Mobilizon.Users.Modify do
     with {:ok, %User{} = user} <- Users.get_user_by_email(email),
          attrs <- %{},
          role <- calculate_role(admin?, moderator?, user?),
-         attrs <- process_new_value(attrs, :mail, new_email, user.email),
+         attrs <- process_new_value(attrs, :email, new_email, user.email),
          attrs <- process_new_value(attrs, :role, role, user.role),
          attrs <-
            if(disable? && !is_nil(user.confirmed_at),
diff --git a/test/tasks/users_test.exs b/test/tasks/users_test.exs
index 7cd82946b..f263fa6cc 100644
--- a/test/tasks/users_test.exs
+++ b/test/tasks/users_test.exs
@@ -170,5 +170,22 @@ defmodule Mix.Tasks.Mobilizon.UsersTest do
       assert_received {:mix_shell, :error, [message]}
       assert message =~ "Can't use both --enabled and --disable options at the same time."
     end
+
+    @modified_email "modified@email.tld"
+
+    test "change user's email" do
+      user = insert(:user, email: @email)
+      Modify.run([@email, "--email", @modified_email])
+
+      assert_received {:mix_shell, :info, [output_received]}
+
+      assert {:ok, %User{confirmed_at: confirmed_at, email: @modified_email}} =
+               Users.get_user_by_email(@modified_email)
+
+      assert output_received ==
+               "An user has been modified with the following information:\n  - email: #{
+                 @modified_email
+               }\n  - Role: #{user.role}\n  - account status: activated on #{confirmed_at} (UTC)\n"
+    end
   end
 end