Teams and SaaS Providers, are they separate?


We are a niche SaaS application and looking at using Observable to provide better BI visualisations. Our structure is that our customers sign up and become separate tenants, using either Cloud servers or inhouse servers.

  1. What we would ideally like is that we (the application vendor) uses Observable to create and embed some read only visualizations for all our users to see. Think samples, initial usage, how-tos etc. These would be embedded into the normal html/javascript reports everyone uses. I think these are called Viewers.

  2. It is important that anything we publish in (1) automatically uses a different URL or security structure so that each customer points to their own data. NB. Generally speaking, what is published will only be of interest to users of our application, not the world at large.

  3. Some customers of ours (tenants) have several staff using our software, and I can see they would love to use Observable themselves to create and collaborate within themselves. From what I can see our customers can freely use sign up themselves and use Observable against our data APIs and build their own things? (in fact, they can probably already do this!)

  4. Can we take step #3 further, in that some of the users in (3) will be quite happy to publish their visualizations and work for other customers/tenants to use too. Think a franchise model where some franchisees will create and deploy, but other franchisees will just want to use what others create. If this is possible, it is important that the data is the users data (automatically)

I have read a few topics and think the above is possible without too much effort, but looking for any advice from those more experienced.


Hi @richard.

I apologize that I don’t exactly follow what you’re after, but generally it sounds like Observable can help you:

  1. you can publish (unlisted) any notebook and embed it on your site. It can’t be found by general Internet searches, though the act of embedding will expose your notebook source in the code. Hopefully this isn’t a problem. Any viewers can view unlisted notebooks. Alternatively, you can create a team and invite unlimited viewers, but to make this work in the embed context you’d have to force your users to somehow first authenticate into the team.

  2. Observable will generate a new URL for each notebook. Access control can be 1) public, 2) shared private, 3) teams shared (if you have a team), 4) accessible only to you.

  3. Anyone with access to a notebook can reproduce it by forking. Generally this is awesome, but sometimes people bite your work and make you sad.

  4. Anyone with an Observable account is free to do whatever they want within the Terms of Use and platform capabilities :slight_smile: if you want your tenants to contribute to your product,then you’d have to pay for them to be users of your team and you’d have to encourage them to publish into your team.

Not sure if this helps… Please ask more!

Thanks for the reply, I’ve played around a bit, and read tons, so can perhaps put my first/second question in a slightly easier form…

Since some of the Observable docs/examples refer to Cloudflare, lets pretend I work for Cloudflare ( I don’t ) as a developer. I want to create some notebooks and embed those into every customers dashboard (behind their individual logins)

So I login to observable, and connect various test/dev data sources, create the notebook and then I publish the notebook as private. I then edit the main CF web site pages and include the observable notebook as a link or iframe. This means that as each CF user logs in to their account, they can pull up that notebook.

The trick being, that should read their data, not any test data I used in the original dev/test phase. It should also do this without needing to manually load secrets or anything.

End result: For most users, they can click into the report/notebook and it shows their data seamlessly. For those that want too however, they can fork the notebook and create their own version - completely separate to me.

I think from my reading it is technically possible but requires a few gyrations, especially around the data source we use (not File Attachments directly)


yeah observable is a clientside application. You need your users to login inside a notebook, to get a token, to call your backend APIs to get their personalised data to inflate the (common) charts, like you would with a static site.

Here is how you can embed a firebase login within a notebook and a twitch stream of me doing a chat app in realtime

There are many other options though! If you want users to then fork the common notebook and customize, but still access their data, this is tricky as the notebook iframe domain changes. so any oauth fixed to an approved domain will fail, but all these issues are fixable.

I have quite an advanced userspace forkable native Observable identity provider here Login with comment / Endpoint Services / Observable but it requires users to leave a comment in a notebook to login. However, the tokens it issues are compatible with Firebase and work across forks! My goal for webcode was always to allow users to fork and customize the service to their needs. Presumably you want something more tailor made to your situation though as you don’t want to use observablehq logins, but the underlying ideas will be the same.

Happy to take a call on this subject. You can reach me at

EDIT: Oh also I built a fully working Oauth server Federated IndieAuth Server / Endpoint Services / Observable in Observable!

1 Like