Refactoring organizational tool with new pricing scheme

4 replies
Last updated: Jun 23, 2021
Hi; I'm running into an issue with the new pricing scheme and am looking for advice as to how to proceed.
I'm developing a reader for magazines that are deployed in several different regions. The content for each region is totally different, people do all their work in one region at a time, and each site only accesses a single region, so datasets seemed like the best organizational tool for the job. It was very convenient to silo off the data from the different regions; it prevented editors from accidentally editing documents in the wrong region, and it made front-end queries simpler. The $20 per dataset fee was acceptable considering the number of regions we would have, so it seemed fine.

However, the new pricing (which removes the ability to buy extra datasets) makes it very clear that Sanity considers datasets only useful for different staging environments, and
not as an organizational tool. I have to refactor how everything works now, and just can't think of a good alternative. Do I create a new project for every region and just deploy the same studio on each one? Do I put tags on every document and somehow add filtering for that in the studio? Any advice would be much appreciated.
AI Update

I understand your frustration with the pricing changes - this is definitely a challenging situation when your architecture was built around a specific feature set. Let me help you think through your options.

First, I want to clarify something important: while datasets are commonly used for staging environments, the official datasets documentation actually does list additional use cases beyond just dev/staging/production. The docs specifically mention:

  • Multi-tenant applications: "Different datasets can be used to separate content for different clients or tenants within a single project"
  • Testing and validation: For bulk migrations and building integrations

So your original approach of using datasets for regional separation wasn't necessarily contrary to Sanity's intended use cases. However, you're right that the pricing changes indicate a shift in how Sanity is positioning the platform.

Your Options

Option 1: Separate Projects Per Region

Creating separate projects for each region is a legitimate architectural pattern, especially given your regions are truly independent. This gives you:

  • Complete isolation - stronger than datasets
  • Independent billing and usage tracking per region
  • Simpler queries - no filtering needed
  • Natural content boundaries preventing cross-region mistakes
  • Flexibility - different regions can evolve independently

Implementation approach:

  • Keep a single codebase for your Studio configuration
  • Use environment variables to point to different project IDs
  • Deploy the same Studio to different URLs, or use Workspaces (available on Growth+ plans) to switch between projects in a single Studio interface
  • Automate deployments with CI/CD to avoid manual management overhead

This is similar to how agencies manage multiple client projects from shared codebases.

Option 2: Single Dataset with Region Filtering

Stay in one project and add a region field to every document type:

Studio-side:

  • Use custom desk structure to create region-specific views
  • Add default region values using document actions
  • Implement GROQ filters in all document lists: *[_type == "article" && region == $currentRegion]
  • Use Workspaces (Growth plan+) to create distinct workspace views per region
  • Implement document-level permissions to prevent accidental cross-region edits (note: content resources for filtered permissions require Enterprise plan)

Frontend:

  • All queries need && region == "your-region" filters
  • More complex but keeps everything in one Content Lake

The challenge: This requires significant refactoring and ongoing discipline. Without Enterprise plan features like content resources, you can't truly enforce region boundaries at the permissions level.

Option 3: Contact Sanity About Your Use Case

Given that you have multiple regions and your original architecture made sense for your needs, I'd strongly recommend reaching out to Sanity sales to discuss your specific situation. The Enterprise plan supports a custom number of datasets, and they may have solutions or pricing structures that aren't publicly documented for multi-region setups like yours.

My Recommendation

Given your regions are truly independent (different content, different editors, different sites), I'd lean toward separate projects, but with an important caveat: talk to Sanity first about your use case before committing to a major refactor.

The separate projects approach aligns well with your isolation needs and keeps implementation simple, but if you have many regions, the cost implications might be significant. Sanity may have enterprise solutions or custom arrangements that could work better for your specific scenario.

If separate projects is the path forward, the deployment overhead is manageable with automation, and you're still working from a single codebase - just different configuration pointing to different project IDs.

Hope this helps you navigate the transition!

We’ve done this on the basis of ‘publications’ (or what would be a ‘region’ for yourself).
Each document type (say ‘page’) has a read only ‘publication’ reference field on them that is added on creation of a document, using initial value templates (dependent on what publication the the page was created in)

The desk is customised to only show documents that have that reference, matching the current publication (which you could do for each of your regions)

We have something like 50 odd publications right now and that’s going to grow to around 150.

We deploy one studio for all of this and it’s working really well, and Sanity’s new User permission tools is going to make this even better as we’ll be able to customise which publications which users will be able to see.
Note: I initially went down the same path as you during the PoC period, before commercials were agreed. A single dataset is working really well and we’ve even expanded beyond what we even thought we could.
Awesome; thanks for the advice. I'll look into doing this.
We’ve created tools for ‘sideways’ copying documents between publications too, while retaining a paper trail for future usage, which is great for the editors - sanity’s freedom to build whatever you want really is fantastic

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Was this answer helpful?