You will need to do a custom integration. The plugin attaches to the the_content hook in Wordpress which in some situations is called mutiple times by 3rd party plugins. In this case set the "Paywall integration method" to "Custom" and add the paywall code manually to the theme or plugin you are using. This can be done either by wrapping the post body with the shortcode [iteras-paywall-content]...[/iteras-paywall-content] or by calling Iteras::get_instance()->potentially_paywall_content(...) which returns the content wrapped with the paywall. Logged in subscribers see truncated preview instead of the full article When server-side validation is enabled, the plugin truncates paywalled content for visitors without a valid access pass. If a page cache in front of WordPress stores that truncated response under the post URL, every subsequent visitor - including paying subscribers - will see the truncated version. To prevent this, the plugin sends no-cache signals (Cache-Control: no-cache, private, no-store, max-age=0, must-revalidate, Pragma: no-cache, Vary: Cookie, X-LiteSpeed-Cache-Control: no-cache, X-Accel-Expires: 0) and defines DONOTCACHEPAGE for paywalled posts. The "Prevent caching" setting controls this behaviour and is on by default. If paywalled content is still being cached after upgrading: Run curl -I https://example.com/<paywalled-post>/ and check the response headers. If Cache-Control: private, no-cache, no-store is present, the plugin is doing its job and the cache layer is ignoring the origin response. If those headers are missing, another plugin or theme is stripping them - disable plugins one at a time to find the culprit. If you use Cloudflare, add a Cache Rule that bypasses the cache when the iteraspass cookie is present, or set the Cache Level to "Respect Existing Headers". Cloudflare's default "Cache Everything" page rules can override origin caching directives. If you use Varnish or nginx fastcgi_cache/proxy_cache, configure the cache to either respect origin Cache-Control: private/no-store (most defaults do), or to bypass cache when the iteraspass cookie is present, or to include the iteraspass cookie in the cache key. Make sure the cache does not strip the cookie before forwarding to origin - if it does, even authorized subscribers will receive truncated content. If you must disable the plugin's no-cache signals (for example because your cache is configured to vary on the iteraspass cookie and you want to keep page caching), uncheck "Prevent caching" in the plugin settings. Do not disable server-side validation - that exposes the full paywalled article to anyone with JavaScript disabled. Subscribers on iPhone/iPad keep getting logged out Safari and other WebKit browsers treat cookies written by JavaScript as script storage and delete them after 7 days without user interaction with the site - and cap them at 24 hours if the visitor arrived on a URL with query parameters from a domain WebKit has classified as a tracker. Since the login iframe used to write the iteraspass cookie with JavaScript, subscribers on iOS were logged out again and again no matter how long the access pass itself was valid for. From version 1.9.0 the login iframe hands the access pass to WordPress instead, and the plugin sets the cookie with a Set-Cookie header from your own domain, where the limit does not apply. The pass is renewed the same way, so the cookie never goes back to being script-written. The "Login session cookie" setting controls this and is on by default. It requires a signing key, since the plugin verifies the signature on the pass before it sets any cookie. If subscribers are still logged out too soon: Check that a signing key is filled in on the settings page. Without one the setting is inactive. Log in with Safari's Web Inspector open and check in the Network tab that the request to ?iteras-pass=1 answered with a Set-Cookie: iteraspass=... header. If it did, the cookie came from your server and Safari's limit does not apply to it. The cookie's expiry date under Storage is not a useful check - Safari shows the full expiry either way, and removes script-written cookies without changing it. If your visitors move between example.com and www.example.com (or other subdomains), set the "Cookie domain" setting to .example.com so the session follows them. Use the setting rather than an Iteras.cookieDomain snippet in your theme - if the two disagree the visitor ends up with two iteraspass cookies that drift apart, and which one counts is up to the browser. If a page cache in front of WordPress serves pages without running PHP, make sure it bypasses the cache for requests that carry an iteraspass query parameter. Most caches already bypass URLs with a query string. POST requests, which is what the pass endpoint uses, are never cached.