Title: Contentpass Integration
Author: Contentpass
Published: <strong>29 juni 2026</strong>
Last modified: 30 juli 2026

---

Plugins zoeken

![](https://ps.w.org/contentpass-integration/assets/banner-772x250.png?rev=3595293)

![](https://ps.w.org/contentpass-integration/assets/icon.svg?rev=3595371)

# Contentpass Integration

 Door [Contentpass](https://profiles.wordpress.org/contentpass/)

[Download](https://downloads.wordpress.org/plugin/contentpass-integration.1.1.2.zip)

 * [Details](https://nl.wordpress.org/plugins/contentpass-integration/#description)
 * [Beoordelingen](https://nl.wordpress.org/plugins/contentpass-integration/#reviews)
 *  [Installatie](https://nl.wordpress.org/plugins/contentpass-integration/#installation)
 * [Ontwikkeling](https://nl.wordpress.org/plugins/contentpass-integration/#developers)

 [Ondersteuning](https://wordpress.org/support/plugin/contentpass-integration/)

## Beschrijving

Contentpass is a privacy-focused monthly subscription for readers. With one registration,
Contentpass users visit participating websites ad-free and without being tracked,
while publishers receive subscription revenue that matches lost ad revenue at ad
market rates.

The **Contentpass Integration** plugin integrates [Contentpass](https://www.contentpass.net/)
with your site so you can combine consent management, script control, and Contentpass
configuration from the WordPress admin.

**Features**

 * **Integration** – Configure your Contentpass property (base URL, ID), set up 
   Consentmanager (CMP), and manage staging vs production behaviour.
 * **CMP support** – Consentmanager in the admin UI. Choose whether Consentmanager
   is already on your site or should be loaded by the plugin (validated snippet 
   paste).
 * **Blocking Rules** – Define patterns to scan for or exclude, with admin UI for
   script blocking aligned with your consent setup.
 * **Request Contract** – Quick link to the Contentpass publisher contact flow with
   tracking parameters for support context.
 * **Staging mode** – During onboarding, Contentpass is limited to logged-in editors
   and administrators (or an authorized URL debug flag). Production for all visitors
   begins automatically once your property is approved and live in the Contentpass
   publisher dashboard.

Admin screens require the `manage_options` capability by default (filterable via`
cp4wp_required_capability`).

### External services

This plugin connects to third-party services so you can integrate Contentpass and
Consentmanager (CMP) with WordPress. **Only the services that match your plugin 
settings are used** (Consentmanager plus Contentpass when configured and not in 
a disabled/staging-only state). No data is sent to services you have not configured.

#### Contentpass (API and CDN)

Used to load the Contentpass integration (`now.js`), CMP-specific JavaScript stubs,
and property configuration.

 * **What it is used for:** Subscription and consent integration on the front end;
   verifying that your property CNAME and `config.json` are reachable during setup
   and admin saves.
 * **`now.js` (mandatory):** The plugin always loads `now.js` from the publisher’s
   configured Contentpass base URL when Contentpass is active. This is part of the
   official Contentpass integration contract, not user-supplied executable code.
   The URL is derived from the validated base URL setting (not a free-text script
   field).
 * **What data is sent and when:**
    - **From the WordPress server (admin/setup):** HTTP GET requests to `https://{
      your-contentpass-base-url}/properties/{property-id}/config.json` when you 
      save settings, use “Check again”, or when the plugin refreshes cached configuration.
      These requests include the plugin User-Agent (`Contentpass-WP/{version}`) 
      and your configured property ID. They do not include front-end visitor form
      input.
    - **From the visitor browser (front end, when Contentpass loading is active):**
      Scripts from your Contentpass base URL (for example `{base-url}/now.js`) and
      from `https://static.contentpass.net/stubs/…` to connect Contentpass with 
      the selected CMP. The browser may send standard web request metadata (IP address,
      User-Agent, cookies, consent/subscription signals) to Contentpass as described
      in their documentation.
 * **Service provider:** Content Pass GmbH (Contentpass)
 * **Terms of service:** [https://www.contentpass.net/en/terms](https://www.contentpass.net/en/terms)
 * **Privacy policy:** [https://www.contentpass.net/en/privacy](https://www.contentpass.net/en/privacy)

#### Consentmanager

Loaded when **Consentmanager** is selected as the CMP in plugin settings.

 * **What it is used for:** Displaying the Consentmanager cookie/consent banner 
   and passing consent signals to ads and tags.
 * **Third-party script:** The plugin loads Consentmanager’s semi-automatic CMP 
   loader from the validated `src` URL in your pasted snippet (typically `https://
   cdn.consentmanager.net/delivery/js/semiautomatic.min.js`). Only allowlisted `
   data-cmp-*` attributes are used; pasted markup is parsed and not echoed raw. 
   Paste the external semi-automatic script from Consentmanager **Get Code** in 
   the plugin settings when **Plugin should also load the CMP** is selected.
 * **What data is sent and when:** From the visitor browser to Consentmanager hosts(`
   cdn.consentmanager.net`, `delivery.consentmanager.net`, and related endpoints)
   when the CMP script loads and when visitors interact with the banner. Data typically
   includes the configured Code-ID, page URL, consent choices, and standard request
   metadata (IP address, User-Agent, cookies). The WordPress server does not proxy
   visitor consent to Consentmanager.
 * **Service provider:** consentmanager AB (consentmanager.net)
 * **Terms of service:** https://www.consentmanager.net/en/general-terms-and-conditions/
 * **Privacy policy:** https://www.consentmanager.net/en/privacy/

#### Post-consent ad / tag URLs (optional publisher setting)

Some publishers need specific third-party ad or analytics scripts to load **only
after** consent (for example GPT, Prebid, or network tags). The plugin provides 
optional URL fields for this purpose.

 * **What it is used for:** Loading external JavaScript files by URL after the CMP
   reports full consent, alongside the plugin’s script-blocking unblock flow.
 * **What publishers can enter:** Only `http://` or `https://` script source URLs
   in structured admin fields (max 20). No inline JavaScript, HTML, PHP, or CSS 
   can be saved.
 * **How the plugin outputs scripts:** It builds `<script src="…" async defer class
   ="cpnotblocked">` tags programmatically from validated URLs. `javascript:`, `
   data:`, and other non-URL schemes are rejected at save time.
 * **What data is sent and when:** From the visitor browser to the hosts in the 
   configured URLs, only after consent, when those tags are injected.

#### Optional admin links

The plugin admin may link to Contentpass documentation and the publisher dashboard(
for example `https://docs.contentpass.net/` and `https://publisher.contentpass.net/`).
These open in the browser when an administrator clicks them; they are not automatic
background requests to third parties.

## Schermafbeeldingen

[⌊Contentpass admin – Integration settings (Consentmanager, URLs, staging).⌉⌊Contentpass
admin – Integration settings (Consentmanager, URLs, staging).⌉[

Contentpass admin – Integration settings (Consentmanager, URLs, staging).

## Installatie

 1. Upload the `contentpass-integration` folder to the `/wp-content/plugins/` directory,
    or install the ZIP from your distribution package.
 2. Activate **Contentpass Integration** through the **Plugins** screen in WordPress.
 3. Open **Contentpass** in the admin menu and complete **Integration** (Consentmanager,
    URLs, IDs).
 4. If you use script blocking, review **Blocking Rules** and save your patterns.
 5. Once your property is approved and live in the Contentpass publisher dashboard,
    verify consent and Contentpass behaviour on the front end. Staging mode ends automatically
    when both statuses are active (config refresh may take up to 10 minutes).

## FAQ

### Do I need a Contentpass publisher account?

Yes. You need Contentpass-side configuration (including property URL / CNAME as 
required by Contentpass). Use **Request Contract** in the admin menu if you need
to contact Contentpass.

### Why does the plugin load now.js from my Contentpass base URL?

now.js is **required** by the Contentpass platform. It is not optional custom code
and not pasted by the publisher. The plugin loads it only from the publisher’s configured
Contentpass property base URL (for example `https://cp.example.com/now.js`) after
that URL is validated during setup. This script powers subscription and consent 
integration together with the official Contentpass stubs from `static.contentpass.
net`. Without `now.js`, Contentpass cannot function on the site.

### What are “Scripts to load after consent”?

This is an **optional** list of **external script URLs only** (for example your 
ad network’s `https://…/ads.js`). Publishers enter URLs in dedicated fields; the
plugin does **not** accept arbitrary HTML, inline JavaScript, PHP, or CSS. Each 
value is sanitized (`esc_url_raw`), must use `http://` or `https://`, and is output
only as a programmatic `<script src="…" async defer>` tag after consent. Legacy 
free-form “custom code” markup was removed in favour of this structured URL list.
This matches the consent workflow: third-party tags blocked before consent may be
loaded again after the visitor accepts.

### What is staging mode?

While your Contentpass property is not yet approved or not yet live, staging mode
is active automatically: Contentpass is shown only to logged-in users with Editor
or Administrator roles, or to visitors using an authorized `?cpdebug=staging` URL.
You cannot turn staging off manually during onboarding. Once Contentpass has approved
your property and you have set it to live in the publisher dashboard, staging ends
automatically and Contentpass is served to all visitors. Changes from the dashboard
may take up to 10 minutes to apply.

### Which WordPress and PHP versions are supported?

The plugin header declares WordPress **6.3+** and PHP **7.4+**. Newer releases may
raise these; check the plugin main file after updates.

### Can I change who may access the plugin settings?

Yes. Developers can use the `cp4wp_required_capability` filter to require a different
capability than `manage_options`.

### Does this plugin send data to external services?

Yes, when configured. See the **External services** section above for each provider,
what is transmitted, and links to terms and privacy policies. Only your selected
CMP and Contentpass endpoints are used.

## Beoordelingen

Er zijn geen beoordelingen voor deze plugin.

## Bijdragers & ontwikkelaars

“Contentpass Integration” is open source software. De volgende personen hebben bijgedragen
aan deze plugin.

Bijdragers

 *   [ Contentpass ](https://profiles.wordpress.org/contentpass/)

[Vertaal “Contentpass Integration” in je eigen taal.](https://translate.wordpress.org/projects/wp-plugins/contentpass-integration)

### Interesse in ontwikkeling?

[Bekijk de code](https://plugins.trac.wordpress.org/browser/contentpass-integration/),
haal de [SVN repository](https://plugins.svn.wordpress.org/contentpass-integration/)
op, of abonneer je op het [ontwikkellog](https://plugins.trac.wordpress.org/log/contentpass-integration/)
via [RSS](https://plugins.trac.wordpress.org/log/contentpass-integration/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.2

 * Remove other CMP external-service sections from readme (WordPress.org does not
   hide HTML comments).

#### 1.1.1

 * Docs/readme: offer Consentmanager only in public listing; other CMP external-
   service sections commented out.
 * Admin UI remains Consentmanager-focused (dropdown hidden); existing CMP selections
   stay unchanged.

#### 1.1

 * Temporarily hide the CMP dropdown in the admin UI; existing CMP selections (e.
   g. Sourcepoint) are preserved.
 * Unconfigured sites default to Consentmanager in the UI only.
 * Docs/readme list Consentmanager as the offered CMP; other CMP external-service
   sections are commented out for now.

#### 1.0.9

 * Sanitize Base URL and Property ID more strictly; clarify Base URL must match 
   the dashboard CNAME.
 * Remove debug password; open ?cpdebug=staging and ?cpdebug=settings without a 
   key.
 * Make CNAME skip permanent; speed up Property ID autosave debounce.
 * Add Doc/Dashboard buttons on Blocking Rules; remove the top Save button.

#### 1.0.8

 * Show the Integration debug password in plain text so it can be shared without
   resetting.
 * Default new installs to “CMP already integrated”; existing sites keep their current
   mode.
 * Auto-save when the CMP dropdown or integration mode radios change.
 * Rename post-consent field to “Script” and allow a single URL only.
 * On the CNAME setup screen, auto-save the Property ID after typing stops (1s) 
   or on Enter, with a toast confirmation.

#### 1.0.6

 * Fix frontend verification cache: saving Integration settings now verifies config.
   json and now.js so Contentpass scripts can load.

#### 1.0.5

 * Fix staging detection: read isApproved and isLive from funnelConfig in config.
   json (fixes live properties stuck in staging mode).

#### 1.0.4

 * Fix CNAME onboarding detection: gate on config.json only; now.js remains required
   for front-end script loading.
 * Add editable Base URL field on the CNAME setup screen for custom CNAME hosts.
 * Improve Integration debug output (config vs frontend readiness).

#### 1.0.3

 * Fix config availability check on the Integration page (force_fresh cache logic).
 * Remove unreachable now.js script tag filter; load now.js async via the safe inline
   loader.

#### 1.0.2

 * Prevent front-end crashes when Base URL is misconfigured (e.g. WordPress site
   URL instead of Contentpass CNAME).
 * Load Contentpass scripts only after config.json and now.js are verified for the
   configured property.
 * Reject saving a Base URL that matches the WordPress site host; add admin tooltip
   and error notice.
 * Load now.js via a safe dynamic loader with console errors on failure instead 
   of blocking the page.

#### 1.0.1

 * Add CMP integration mode (already on site vs plugin loads CMP) and Consentmanager
   semi-automatic snippet paste with validation.
 * Load Consentmanager semi-automatic CMP script from Consentmanager CDN instead
   of a bundled minified loader; clarify Code-ID (data-cmp-cdid) in admin settings.
 * Fix post-consent script unlock and watchdog race conditions with OneTrust and
   dynamic ad scripts.
 * Asset cache busting via updated plugin version query string.
 * Document third-party/external services in readme (WordPress.org compliance).
 * Scope elevated PCRE backtrack limit to script-scan replacements only; restore
   previous value after use.
 * Replace global output-buffer callback with WordPress 6.9 template enhancement
   filter; legacy buffers are explicitly closed on shutdown.
 * Add legacy output-buffer fallback on WP 6.9+ when the core template enhancement
   buffer is skipped or cancelled.
 * Limit DONOTCACHEPAGE to staging/debug requests that actually load Contentpass,
   not all front-end pages.
 * Sanitize Accept-Language header and placeholder language cookie input before 
   validation.
 * Escape SVG branding, custom ad code, and placeholder CSS on output (late escaping).
 * Harden admin output escaping in script scan and settings screens (esc_attr, wp_kses,
   sanitized query args).
 * Protect ?cpdebug=staging and ?cpdebug=settings with an Integration debug password(?
   cpdebug_key); limit anonymous cache bypass to staging sites only; sanitize admin
   preview HTML in JS.

#### 1.0

 * Current stable release (see plugin header and repository for detailed changes).

## Meta

 *  Versie **1.1.2**
 *  Laatst geüpdatet **6 dagen geleden**
 *  Actieve installaties **Minder dan 10**
 *  WordPress versie ** 6.3 of nieuwer **
 *  Getest t/m **7.0.2**
 *  PHP versie ** 7.4 of nieuwer **
 *  Taal
 * [English (US)](https://wordpress.org/plugins/contentpass-integration/)
 * Tags
 * [CMP](https://nl.wordpress.org/plugins/tags/cmp/)[consent](https://nl.wordpress.org/plugins/tags/consent/)
   [GDPR](https://nl.wordpress.org/plugins/tags/gdpr/)[paywall](https://nl.wordpress.org/plugins/tags/paywall/)
   [subscription](https://nl.wordpress.org/plugins/tags/subscription/)
 *  [Geavanceerde weergave](https://nl.wordpress.org/plugins/contentpass-integration/advanced/)

## Waarderingen

Er zijn nog geen beoordelingen ingediend.

[Your review](https://wordpress.org/support/plugin/contentpass-integration/reviews/#new-post)

[Bekijk alle beoordelingen](https://wordpress.org/support/plugin/contentpass-integration/reviews/)

## Bijdragers

 *   [ Contentpass ](https://profiles.wordpress.org/contentpass/)

## Ondersteuning

Iets te melden? Hulp nodig?

 [Het supportforum bekijken](https://wordpress.org/support/plugin/contentpass-integration/)

## Doneren

Wil je de groei van deze plugin ondersteunen?

 [ Doneer aan deze plugin ](https://www.contentpass.net/)