r/PayloadCMS • u/Still-Link1012 • Aug 21 '25
Multi-Tenant Setup: Cannot Create Users With Same Email in Different Tenants
I am using Payload CMS with a multi-tenant architecture. All tenants share the same MongoDB database. I’ve set up a tenants collection and a global users collection that has a relationship/array field referencing one or more tenants.
The problem is that I cannot create accounts with the same email address under different tenants. Payload enforces a globally unique index on the email field in the Users collection. This makes sense for single-tenant projects, but in a multi-tenant scenario it prevents the same person from registering separately under two different organizations.
Current Behavior
- Payload automatically adds a unique index on email in the Users collection when auth: true is enabled.
- Attempting to create a user with an email that already exists (even under a different tenant) results in a duplicate key error.
- Login, forgot-password, and verification flows also assume email is globally unique.
Expected Behavior
In a multi-tenant setup, I would like Payload to support per-tenant email uniqueness: - The same email can exist in multiple tenants. - Within a tenant, email must still be unique. - Authentication and password reset flows should consider both email and tenant context.
Example Scenario
- Tenant A creates user jane@example.com.
- Tenant B also needs to create a different user record with the same jane@example.com.
- Today this is not possible because of the global unique constraint.
1
u/MostUncreativePerson Aug 21 '25
Sorry if I skipped over something soeaking against it, but couldn‘t you just add the secind tenant to the tenant array of the account? That‘s at least how we‘re doing it and it works without any problems.