diff --git a/priv/repo/migrations/20210726090211_make_invitation_email_case_insensitive.exs b/priv/repo/migrations/20210726090211_make_invitation_email_case_insensitive.exs
new file mode 100644
index 0000000000000000000000000000000000000000..024ac42f80fdac3dd5fce3104bc9afb3366cbf6b
--- /dev/null
+++ b/priv/repo/migrations/20210726090211_make_invitation_email_case_insensitive.exs
@@ -0,0 +1,9 @@
+defmodule Plausible.Repo.Migrations.MakeInvitationEmailCaseInsensitive do
+  use Ecto.Migration
+
+  def change do
+    alter table(:invitations) do
+      modify :email, :citext, null: false
+    end
+  end
+end
diff --git a/test/plausible_web/controllers/site_controller_test.exs b/test/plausible_web/controllers/site_controller_test.exs
index 52b139c0a75644f917011f44bd356f222b70b763..ac950c48b3ad3a9a4f376b4864d69384f6251ad2 100644
--- a/test/plausible_web/controllers/site_controller_test.exs
+++ b/test/plausible_web/controllers/site_controller_test.exs
@@ -44,6 +44,22 @@ defmodule PlausibleWeb.SiteControllerTest do
       assert html_response(conn, 200) =~ "<b>3</b> visitors in last 24h"
     end
 
+    test "shows invitations for user by email address", %{conn: conn, user: user} do
+      site = insert(:site)
+      insert(:invitation, email: user.email, site_id: site.id, inviter: build(:user))
+      conn = get(conn, "/sites")
+
+      assert html_response(conn, 200) =~ site.domain
+    end
+
+    test "invitations are case insensitive", %{conn: conn, user: user} do
+      site = insert(:site)
+      insert(:invitation, email: String.upcase(user.email), site_id: site.id, inviter: build(:user))
+      conn = get(conn, "/sites")
+
+      assert html_response(conn, 200) =~ site.domain
+    end
+
     test "paginates sites", %{conn: conn, user: user} do
       insert(:site, members: [user], domain: "test-site1.com")
       insert(:site, members: [user], domain: "test-site2.com")