diff --git a/lib/federation/activity_pub/activity_pub.ex b/lib/federation/activity_pub/activity_pub.ex
index c1bcc8062..c50777253 100644
--- a/lib/federation/activity_pub/activity_pub.ex
+++ b/lib/federation/activity_pub/activity_pub.ex
@@ -526,7 +526,8 @@ defmodule Mobilizon.Federation.ActivityPub do
              local
            ),
          :ok <- maybe_federate(activity),
-         :ok <- maybe_relay_if_group_activity(activity) do
+         :ok <- maybe_relay_if_group_activity(activity),
+         :ok <- Group.send_invite_to_user(member) do
       {:ok, activity, member}
     end
   end
diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex
index 8d804ecb5..546d3c7ff 100644
--- a/lib/federation/activity_pub/transmogrifier.ex
+++ b/lib/federation/activity_pub/transmogrifier.ex
@@ -674,8 +674,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do
          {:ok, %Actor{} = target} <-
            target |> Utils.get_url() |> ActivityPub.get_or_fetch_actor_by_url(),
          {:ok, activity, %Member{} = member} <-
-           ActivityPub.invite(object, actor, target, false, %{url: id}),
-         :ok <- Group.send_invite_to_user(member) do
+           ActivityPub.invite(object, actor, target, false, %{url: id}) do
       {:ok, activity, member}
     end
   end
diff --git a/lib/web/email/group.ex b/lib/web/email/group.ex
index f81044d62..440c0f20b 100644
--- a/lib/web/email/group.ex
+++ b/lib/web/email/group.ex
@@ -24,7 +24,8 @@ defmodule Mobilizon.Web.Email.Group do
           member,
         locale
       ) do
-    with %User{email: email} <- Users.get_user!(user_id) do
+    with %User{email: email} = user <- Users.get_user!(user_id) do
+      locale = Map.get(user, :locale, locale)
       Gettext.put_locale(locale)
       %Actor{name: invited_by_name} = inviter = Actors.get_actor(member.invited_by_id)