How to allow Googlebot to crawl paywall content?

My website has pages for around 1000 companies. Without an account, I only allow users to view 5 company pages a month (I track them by cookie). And Googlebot can crawl my site freely since it does not use cookie.

To avoid Googlebot thinking I am doing cloaking, I am specify the content of my company pages as paywall content (following this guide). The problem is now when I search the company pages of my website on Google, the search result only shows the page title and my website’s default description. It does not show content of each company page.

I think the problem is I list the content of my company pages as paywall. My question is: What is the best way to let Googlebot crawl and display the content of my website in the search results without making Googlebot think that I am cloaking? (when the users click on the search result link and visit my website, they are still subject to the monthly quota if they don’t have an account).

Content Gating – Paywall Experience

Is anyone able to provide examples of companies that pay gate content on their website? Possible case studies you’ve used when implementing something along these lines? The only sources we’ve looked into include News Sources (NYT, Harvard Business Review), Medium, and Consumer Reports.

Some background: The company I work at currently operates in a health and wellness vertical where the market is flooded with this particular content. We’ve really bottlenecked ourselves comparing our content with new companies like New York Times but I worry that this is not a valid comparison. We want to understand how competitors and non-competitors approach gating content and possible considerations when doing so. Kind thanks!

Is it possible to truly hide content behind a paywall in a single page app?

I would like to hide certain content behind a paywall in my VueJS app. In googling around…

  • Some tutorials recommend storing the currently logged in user in local storage. And then before showing the restricted content, you can check to see if the currently logged in user has permission, eg. localStorage.user.role === 'subscribed'. But local storage is accessible to users, so they could easily just run something like localStorage.user.role = 'subscribed', or just edit local storage directly in the dev tools. (The same thing applies for other forms of web storage from what I understand.)
  • Other tutorials recommend storing the currently logged in user in Vuex, which is basically just Vue’s data model and is conceptually the same thing as storing it in memory as JavaScript, from what I understand. Vuex in particular can be edited my a malicious user, and so can JavaScript more generally.
  • I suppose a third option is checking the users cookies to see if they have the cookie set for a logged in user, but cookies too can obviously be altered by a malicious user.

So, my question is whether it is possible to truly hide content behind a paywall in a single page app. And if so, how?