diff --git a/app/models/user.rb b/app/models/user.rb
index 778637125430fb84133453eb62931020be270919..dab25525d763e7e23d9d24a0cd80c692e0a2c468 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -30,7 +30,7 @@ class User < ApplicationRecord
   validates :provider, presence: true
   validates :image, format: { with: /\.(png|jpg)\Z/i }, allow_blank: true
   validates :email, length: { maximum: 256 }, allow_blank: true,
-                    uniqueness: { case_sensitive: false },
+                    uniqueness: { case_sensitive: false, scope: :provider },
                     format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i }
 
   validates :password, length: { minimum: 6 }, confirmation: true, if: :greenlight_account?, on: :create
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 93703acebc27daf766c42ce8e84d29dfb9f92ba5..e5891e6d4ec4c92402de6d49d6bd14aa71405fcd 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -29,7 +29,7 @@ describe User, type: :model do
 
     it { should validate_presence_of(:provider) }
 
-    it { should validate_uniqueness_of(:email).case_insensitive }
+    it { should validate_uniqueness_of(:email).scoped_to(:provider).case_insensitive }
     it { should validate_length_of(:email).is_at_most(256) }
     it { should allow_value("", nil).for(:email) }
     it { should allow_value("valid@email.com").for(:email) }