---
type: "Guide"
title: "Pre-rendering paywalled content — Flexible Sampling without cloaking"
description: "Pre-render paywalled content safely with Flexible Sampling, metering, and fair-access heuristics that keep you inside Google's guidelines."
resource: "https://prerender.info/guides/advanced/prerender-paywalled-content"
tags: [guides, paywall seo, flexible sampling, prerender paywall, subscription seo, news paywall]
timestamp: 2026-04-21T00:00:00Z
---

# Pre-rendering paywalled content — Flexible Sampling without cloaking

Pre-render paywalled content safely with Flexible Sampling, metering, and fair-access heuristics that keep you inside Google's guidelines.

## Flexible Sampling

Flexible Sampling is Google's policy that permits subscription sites to serve full content to Googlebot and allow users a limited set of free articles per period (metering) or a free lead section (lead-in). Cached snapshots must carry CreativeWork.isAccessibleForFree = false for the schema to remain accurate.

Pre-rendering paywalled content is legitimate as long as you follow Google's Flexible Sampling policy and mark the structured data correctly. The common failure mode is serving full text to Googlebot while users see a locked preview — that is cloaking.

The five steps below implement the safe pattern.

## Steps

1. **Pick a Flexible Sampling model: metering or lead-in** — Metering gives users a fixed number of free articles per month. Lead-in gives all users the first paragraphs free. Either is acceptable to Google; choose based on user experience goals, not SEO.
2. **Serve full text to Googlebot and metered / lead-in to users** — Pre-rendered snapshots contain the full article. Human responses implement metering or lead-in via the same middleware layer that does bot detection.
3. **Mark CreativeWork.isAccessibleForFree = false** — Add isAccessibleForFree: false to the Article JSON-LD. Include hasPart with cssSelector pointing to the paywalled section. This is the "no cloaking" insurance policy.
### Article JSON-LD — paywalled section

```json
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "isAccessibleForFree": false,
  "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": false,
    "cssSelector": ".paywalled"
  }
}
```

4. **Apply the .paywalled class to locked content** — The cssSelector referenced in hasPart must match real DOM in the pre-rendered snapshot. If you omit the class or strip it from the snapshot, Google treats the article as fully free and you drift into cloaking territory.
5. **Monitor Search Console for cloaking warnings** — If Google suspects cloaking, a manual action appears in Search Console. Check monthly. If a warning appears, audit the diff between the snapshot and the human response on 5 sample URLs.

## FAQ

### Can we serve full text to Googlebot only?

Yes, under Flexible Sampling, provided the structured data marks the content as paywalled. Serving full text to bots and locked content to all users without that marking is cloaking.

### Does this work for AI crawlers?

Policy coverage is less clear. OpenAI and Anthropic do not document a Flexible Sampling equivalent. Many news publishers block AI crawlers on paywalled content via robots.txt while allowing Googlebot.

### What if we want to hide paywalled content from crawlers entirely?

Use noindex on the paywalled page or return truncated content to all traffic including bots. You lose rich-result eligibility but avoid any cloaking risk.

## Related

- [Guide — hydration failures](/guides/advanced/hydration-failures-seo.md) — Paywall state often lives in hydration — mismatch risk.
- [Guide — cache headers](/guides/prerender-cache-headers.md) — Vary on User-Agent for bot vs user responses.
- [Guide — crawl frequency signals](/guides/crawl-frequency-signals.md) — Freshness on subscription content.
- [Use case — SaaS](/use-cases/saas.md) — Public surface vs gated content boundary.
- [Compare — vs Prerender.io](/compare/vs-prerender-io.md) — Vendor comparison.
- [Technology — how pre-rendering works](/technology/index.md) — Pipeline primer.

## Source

Generated from prerender.info editorial content (single source of truth). The canonical, always-current version is the `resource` URL above. Claims reflect prerender.info / ostr.io editorial guidance and are not confirmed from third-party public documentation unless explicitly linked.
