# Paywall component

**URL:** <https://talk.observablehq.com/t/paywall-component/6179>\
**Category:** Help\
**Created:** [February 7, 2022, 7:59pm UTC](https://talk.observablehq.com/t/paywall-component/6179 "2022-02-07T19:59:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![huangkuan](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/huangkuan/32/6106_2.png) [@huangkuan](https://talk.observablehq.com/u/huangkuan)\
**Post date:** [February 7, 2022, 7:59pm UTC](https://talk.observablehq.com/t/paywall-component/6179/1 "2022-02-07T19:59:02Z")

</div>

Hi community, we are working on an idea to enable data scientists/analysts/engineers to be able to monetize their charts and dashboards. Does Observable support making custom components? For example, a user can set up a paywall for their dashboards.

I was going through the documents and examples but haven’t figured out how to achieve that. Any suggestions are highly appreciated.

Kuan

---

<div class="post-metadata">

**Author:** ![tomlarkworthy](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/tomlarkworthy/32/5940_2.png) [@tomlarkworthy](https://talk.observablehq.com/u/tomlarkworthy)\
**Post date:** [February 7, 2022, 9:44pm UTC](https://talk.observablehq.com/t/paywall-component/6179/2 "2022-02-07T21:44:26Z")

</div>

have you read [Advanced Embedding and Downloading / Observable / Observable](https://observablehq.com/@observablehq/downloading-and-embedding-notebooks) ?

you can get at private notebooks with an apiKey e.g. [Team embed / Endpoint Services / Observable](https://observablehq.com/@endpointservices/embed) but you need to hide it in a backend service. I myself have create a way to place serverless http handlers inside (even private) notebooks so you can gate the innards ([https://webcode.run](https://webcode.run)), maybe something like that would work?

---

<div class="post-metadata">

**Author:** ![huangkuan](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/huangkuan/32/6106_2.png) [@huangkuan](https://talk.observablehq.com/u/huangkuan)\
**Post date:** [February 8, 2022, 1:59pm UTC](https://talk.observablehq.com/t/paywall-component/6179/3 "2022-02-08T13:59:58Z")

</div>

Sorry, I don’t follow. Do you mean that this is how to make a “custom module” for Observable?

---

<div class="post-metadata">

**Author:** ![mootari](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/mootari/32/581_2.png) [@mootari](https://talk.observablehq.com/u/mootari)\
**Post date:** [February 8, 2022, 2:31pm UTC](https://talk.observablehq.com/t/paywall-component/6179/4 "2022-02-08T14:31:00Z")

</div>

Related feature request:

> <https://github.com/observablehq/feedback/issues/242>
>
> \*\*Is your feature request related to a problem? Please describe.\*\*
> Right now yo…u have public access, private access, group access. 
> I as a creator want to find ways to make money for my work. One way is to get subscribers or folks to pay a one time $$ to access a document. So what I am asking for is similar to "teams" but I'm not collaborating with these folks. They are just a list of Observable members who have access to this notebook. This is something of course that can be done now with unlisted notebooks - and managed outside of Observable.
> The ask is at least allow us as a notebook owner to limit the ability to view a notebook to a list of folks. 
> !\[image\](https://user-images.githubusercontent.com/8691/135727909-bf797ecc-be10-4271-ad03-f8a557f2020f.png)
> 
> Visibility :
> \* public
> \* unlisted
> \* limited -- list
> 
> 
> \*\*Describe the solution you'd like\*\*
> The dream would be to allow someone to "subscribe" to a user. But the reality is just give observable notebook creators a way to limit the visibility of a notebook to a limited set of users. This is NOT a team. I don't want to collaborate with these people, I just want to allow them to see my otherwise hidden notebooks. I manage the list of users either on a per notebook or per collection basis.
> 
> \*\*Describe alternatives you've considered\*\*
> This can all be done and managed outside of observable manually now and just use unlisted notebook urls. However this is not secure as one of the folks might accidentally share an unlisted url. And this is not Teams - I don't want a collective collaborative workplace with these folks. 
> 
> \*\*Additional context\*\*
> It would allow us as creators to do things like have Beta releases of content / notebooks.
> It would allow us as creators to sell access to these notebooks.

---

<div class="post-metadata">

**Author:** ![tomlarkworthy](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/tomlarkworthy/32/5940_2.png) [@tomlarkworthy](https://talk.observablehq.com/u/tomlarkworthy)\
**Post date:** [February 8, 2022, 3:24pm UTC](https://talk.observablehq.com/t/paywall-component/6179/5 "2022-02-08T15:24:37Z")

</div>

all notebooks are ES6 modules, the way to create a custom module is to create a notebook. (if that’s what we mean by module). Notebooks can import other notebooks, so you can build on top of other peoples abstractions.

If you want a paywall, you perhaps want to gate access to _private_ notebooks. Private notebooks are a feature of teams [Getting started with Teams / Observable / Observable](https://observablehq.com/@observablehq/getting-started-with-teams)

My earlier post was about getting access to private team notebooks, which is how I would hide content on Observable. Though, as discussed by triptych on mootari’s linked issue, there is also another path using unguessable URLs in public notebooks.

---

<div class="post-metadata">

**Author:** ![huangkuan](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/huangkuan/32/6106_2.png) [@huangkuan](https://talk.observablehq.com/u/huangkuan)\
**Post date:** [February 8, 2022, 6:22pm UTC](https://talk.observablehq.com/t/paywall-component/6179/6 "2022-02-08T18:22:16Z")

</div>

Thank you very much @tomlarkworthy @mootari for your speedy responses. I have spent past few months in the blockchain space and found that the openness of the blockchain data has enabled a growing decentralized network of independent data analysts/engineers. The paywall idea was inspired by that trend.

It seems like the current design of ObservableHQ is mainly for team collaborations within an organization.

---

<div class="post-metadata">

**Author:** ![tomlarkworthy](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/tomlarkworthy/32/5940_2.png) [@tomlarkworthy](https://talk.observablehq.com/u/tomlarkworthy)\
**Post date:** [February 8, 2022, 6:56pm UTC](https://talk.observablehq.com/t/paywall-component/6179/7 "2022-02-08T18:56:32Z")

</div>

> It seems like the current design of ObservableHQ is mainly for team collaborations within an organization.

for teams yes, but also its about **open** collaboration between individuals (i.e. FREE users) on public notebooks.

Getting a paywall in is hard, but ultimately, this is a programming environment and you can acheive pretty much anything with programming + creativity + time. For example, is possible to push artifacts to a central location for instance, if you wanted to host the discovery service elsewhere and put the paywall there. That would allow even FREE users to mask their URLs perhaps.

EDIT: my notebooks are exported here for instance: [GitHub - endpointservices/observable-notebooks: Notebooks authored on https://observablehq.com](https://github.com/endpointservices/observable-notebooks)

---

<div class="post-metadata">

**Author:** ![huangkuan](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/huangkuan/32/6106_2.png) [@huangkuan](https://talk.observablehq.com/u/huangkuan)\
**Post date:** [February 8, 2022, 7:43pm UTC](https://talk.observablehq.com/t/paywall-component/6179/8 "2022-02-08T19:43:48Z")

</div>

Thank you. I was comparing it with Streamlit which allows 3rd party developers to add custom components. That approach seems to be easier for me.
