How to Do SEO for a Membership/Paywall Site
On this page
- Start with what Googlebot received
- Give Google the full article without giving it to everyone
- Declare the paywall in structured data
- Decide how much to give away
- Split the content by its job
- Registration gates and lead magnets
- Technical checks for gated templates
- Frequently asked questions
- Related posts:
Google’s spam policies set two conditions under which a paywall is not cloaking: Google can see the full content behind the paywall just like any person who has access to the gated material, and the site follows Google’s Flexible Sampling guidance. A gated article that meets both can be indexed on its full text. One that shows Google only the preview gives Google nothing else to index. One that shows Googlebot the full article but skips the structured data the guidance asks for leaves out the markup Google provides to help it tell a paywall from cloaking.
Start with what Googlebot received
Before changing the paywall, check what Google got. In Search Console, open the article in the URL Inspection tool, run a live test and click View tested page. The panel shows a screenshot of the rendered page and the raw HTML returned, along with the HTTP headers and JavaScript console output.
- The page Google received stops where the paywall starts. Google has the preview and nothing else. Fix access before anything else on this list.
- The full article is in the page Google received. Access is working, and a ranking problem lies somewhere else, such as the content, the competition or the query.
Run the check on more than one template. A site with articles, course pages and member forums can have a paywall that behaves differently on each.
Give Google the full article without giving it to everyone
The spam policy’s first condition is that Google sees what a subscriber sees. Three designs come up, and only the first both gives Google the full article and keeps it from everyone else.
Serve the full article from the server to verified requests. The server checks who is asking and returns the full text to subscribers and to Googlebot, and the preview to everyone else. The weak point is how the server recognizes Googlebot. A user-agent string can be claimed by anyone. Google’s page on verifying Google’s crawlers gives two methods:
- A reverse DNS lookup on the requesting IP, confirming the domain is googlebot.com, google.com or googleusercontent.com, followed by a forward DNS lookup that returns the same IP.
- For lookups at scale, matching the IP against the lists of Google IP addresses that Google publishes.
A paywall that trusts the user-agent alone can give the full archive to anyone who changes that string in a browser.
Hiding the text with JavaScript. A paywall can send the full article to every browser and hide it with a script until subscription status is confirmed. Google’s JavaScript troubleshooting guide says this “isn’t a reliable way to limit access to the content” and asks that the paywall provide the full content only once the subscription status is confirmed. Anyone who opens the page source can read the article.
Redirecting to a subscribe page. Sending every gated URL to one subscription page hides the articles from Google as well as from readers. Google’s guidance on intrusive interstitials makes the point about mandatory gates such as age checks: redirecting all URLs to a single page removes all but that one page from search results, because Googlebot can only fetch that page. A paywall that redirects works the same way. Show the paywall on the article’s own URL, over or after the preview.
The interstitial guidance says nothing about paywalls themselves. For the promotional layers that can sit on top of them, such as newsletter prompts and discount offers, it recommends small banners over full-page interstitials.
Declare the paywall in structured data
Google’s paywalled content structured data exists, in Google’s words, to help it differentiate paywalled content from the practice of cloaking. Google’s flexible sampling guidance also asks publishers to enclose paywalled content with this markup. The documentation sets the rules:
- One required property.
isAccessibleForFree, set tofalsefor content behind a paywall or a registration requirement. - Recommended, not required. A
hasPartentry whosecssSelectorreferences the class name around each paywalled section, so Google knows which part of the page is gated. For several gated sections on one page, list the class names as an array. - Selectors. Use only
.classselectors. - Structure. Don’t nest content sections.
- Formats. JSON-LD and microdata are both accepted.
- Coverage. Apply the markup to every version of the page, AMP and non-AMP.
The markup works on CreativeWork and on more specific types, including Article, NewsArticle, Blog, Comment, Course, HowTo, Message, Review and WebPage. Choose the type that describes the page: NewsArticle for reporting, Course for a lesson in a paid course, HowTo or Article for a members-only guide. For a membership site whose product is instruction, Course describes the page accurately, and it is on the supported list.
The markup has one fragile part. The cssSelector points at a class name in your template. A redesign or a theme change that renames that class leaves the markup describing a section that no longer exists, and nothing on the page looks broken. Re-run the page through the Rich Results Test and URL Inspection whenever the article template changes, and confirm the selector still matches the element that wraps the gated text.
The markup addresses one question: whether showing Google more than a reader sees is cloaking. It does nothing about what the reader sees. That depends on how much you let people read, which is a separate decision.
Decide how much to give away
Google’s flexible sampling guidance comes from experiments Google ran with publishing partners, and it gives numbers. It describes two kinds of sampling, and says that “paywall” in this context covers registration barriers as well as subscriptions:
- Metering gives readers a quota of articles before the paywall appears. Google prefers monthly metering to daily, because moving from one number to the next matters less at 10 a month than at 3 a day. Monthly metering also concentrates paywall views on the most engaged readers, who are the likeliest to subscribe.
- Lead-in shows part of an article without the rest. Google calls showing the first few sentences above the paywall, after the meter has run out, a good practice.
On the numbers, Google says there is no single right value. For most daily news publishers it expects the figure to fall between 6 and 10 articles per user per month. It suggests starting with 10 a month for Google Search users and adjusting from there. The ceiling it gives is about readers, and it is specific: general user satisfaction “starts to degrade significantly” when paywalls are shown more than 10% of the time, which it says generally means about 3% of the audience has been exposed to the paywall. Google also suggests a way to set the meter: find the share of search visitors who reach your paywall now, and choose a monthly number that produces a similar result.
The same experiments explain why this is an SEO question and not only a revenue one. Google found that even small changes to sampling levels could degrade user experience and, as access is restricted, “unintentionally impact article ranking in Google Search.” Its user studies also found that when people who have read only a little are asked to subscribe, their interest in the product “diminishes greatly.” A hard wall, where a search visitor reads nothing, sits at the far end of that range.
If you use a lead-in, it has to give the reader something on its own. A lead-in that delivers one concrete point and stops at a natural break can make a reader want the rest. A lead-in that is all preamble gives them little more than a hard wall would.
Split the content by its job
Not every page on a membership site needs to rank. Deciding which ones do is more useful than applying one paywall rule to everything.
- Discovery pages bring new readers from search. They should be open, or metered generously, because their job is acquisition.
- Member content is what people pay for. Parts of it can be fully closed, because its job is retention.
For member content you don’t want indexed, the paywalled content documentation is explicit that its guidance applies only to content you want crawled and indexed. Content you keep out of search needs no paywall markup. If a page should not appear in search at all, even as a preview, use a noindex rule on it.
Registration gates and lead magnets
The same logic applies to a download behind an email form, with one adjustment: gate the asset, rank the page about it. The report, template or checklist sits behind the form. The page describing it, what it covers, who it is for and what the reader gets, stays fully crawlable and is written to rank for the searches that bring people looking for that kind of resource. Gating the landing page along with the download leaves search engines nothing to index on either side of the form.
Technical checks for gated templates
- Canonical. Each gated article should carry a canonical to its own URL, never to a login or subscription page.
- Sitemap and links. List gated articles you want indexed in the sitemap and link to them from your own section pages, like any other page. Gated does not mean hidden from your own site structure.
- Layout shift. A subscription overlay injected by JavaScript after the page starts rendering can shift the layout. Measure layout shift on gated templates in field data instead of assuming the overlay is harmless.
Frequently asked questions
Is showing Googlebot the full article cloaking?
Not when both of Google’s conditions hold: Google sees the full content just like any person with access, and the site follows the Flexible Sampling guidance, which asks for paywalled content to be enclosed in structured data. That markup is what Google provides to help it tell a paywall from cloaking.
How many free articles should a meter allow?
Google’s own guidance expects most daily news publishers to land between 6 and 10 articles per user per month, and suggests starting at 10 for Google Search users. It warns that user satisfaction starts to degrade significantly when the paywall is shown more than 10% of the time.
Do I need hasPart and cssSelector?
Only isAccessibleForFree is required. hasPart with a cssSelector is recommended, because it tells Google which section is gated. Use class selectors only, and re-check them whenever the template changes.
What if I don’t want the gated content in Google at all?
Then the paywalled content guidance does not apply to it. That guidance covers only content you want crawled and indexed. Keep the pages that should bring in new readers open or metered. For members-only pages that should not appear in search even as a preview, use noindex.