Skip to main content

I run a multi-tenant application. Each organization represented in my database has its own deployment. I’d like to be able to easily isolate all events and user sessions per organization. What is the best practice for enabling this?

I’m considering the following routes to accomplish this:

  • A single Amplitude Project for all tenant deployments, then tagging every user and event with a tenantID.
  • A distinct Amplitude Project for each tenant deployment.

Do you have end users who will need access to the data for some tenants but not others? If so, I’d go the route of having one Amplitude project per tenant as you’ll be able to easily control access rights (I don’t think there’s a simple way to do this if all tenants were within a single project). If you’re on enterprise tier, you could then also use a Portfolio view (https://help.amplitude.com/hc/en-us/articles/360002750712-Portfolio-Conduct-cross-project-analysis-in-Amplitude) to combine the projects for any users with “global” needs across all tenants.

If you don’t have such access requirements, i.e., all end users are allowed to see all tenants, then I’d likely go the route of having a single Amplitude project for all tenants with a property containing a value to easily split them. Configuration build/ maintenance will be much less as you’ll be doing it just once rather than once per tenant. I’m making the assumption here that each tenant dataset can make user of the same event schema.


Reply