Title: Contentpass Integration
Author: Contentpass
Published: <strong>29 ביוני 2026</strong>
Last modified: 8 באוקטובר 2026

---

חיפוש תוספים

![](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

 מאת [Contentpass](https://profiles.wordpress.org/contentpass/)

[הורדה](https://downloads.wordpress.org/plugin/contentpass-integration.1.4.4.zip)

 * [פרטים](https://he.wordpress.org/plugins/contentpass-integration/#description)
 * [סקירות](https://he.wordpress.org/plugins/contentpass-integration/#reviews)
 *  [התקנה](https://he.wordpress.org/plugins/contentpass-integration/#installation)
 * [פיתוח](https://he.wordpress.org/plugins/contentpass-integration/#developers)

 [תמיכה](https://wordpress.org/support/plugin/contentpass-integration/)

## תיאור

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. Supports Consentmanager only.

**Features**

 * **Integration** – Configure your Contentpass property by Property ID (the Contentpass
   host is loaded from the property configuration).
 * **Blocking Rules** – Block scripts and embeds until consent. Rules apply to every
   visitor, including while Contentpass is still in staging.
 * **Request Contract** – Quick link to the Contentpass publisher contact flow with
   tracking parameters for support context.
 * **Staging mode** – Limits the Contentpass wall only. During onboarding it is 
   shown to logged-in editors and administrators, or to anyone using `?cpdebug=staging`.
   It is shown to all visitors once the 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 Contentpass and Consentmanager are used**,
and only when those features are configured. Staging limits who sees the Contentpass
wall. Consentmanager and script blocking still run for every visitor.

#### 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;
   loading your property `config.json` and verifying that `now.js` is reachable 
   during setup and admin saves.
 * **`now.js` (mandatory):** The plugin always loads `now.js` from the publisher’s
   Contentpass host when Contentpass is active. This is part of the official Contentpass
   integration contract, not user-supplied executable code. The host is taken from
   the `hostname` field of your property `config.json` (not a free-text script field).
 * **What data is sent and when:**
    - **From the WordPress server (admin/setup):** HTTP GET requests to `https://
      static.contentpass.net/properties/{property-id}/config.json` when you save
      settings, enter a Property ID, 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/consentmanager/latest.js`. 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 **Plugin should also load the CMP** is selected. Consentmanager is the
only supported CMP.

 * **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.

## צילומי מסך

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

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

[⌊Blocking Rules – script scan and exclude configuration.⌉⌊Blocking Rules – script
scan and exclude configuration.⌉[

Blocking Rules – script scan and exclude configuration.

## התקנה

 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**: enter your
    Property ID first, then configure Consentmanager.
 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).

## שאלות נפוצות

### Do I need a Contentpass publisher account?

Yes. You need a Contentpass property and its Property ID and the domain setup completed
in the publisher dashboard. 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 Contentpass host
listed as `hostname` in your property `config.json` (for example `https://cp.example.
com/now.js`). 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?

Staging limits the Contentpass wall only. While the property is not approved or 
not live, that wall is shown to logged-in Editors and Administrators, or to anyone
using `?cpdebug=staging`. Consentmanager and script blocking still run for every
visitor. You cannot turn staging off manually during onboarding. Once the property
is approved and live, the wall is shown to everyone. Dashboard changes 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. The plugin only
talks to Contentpass and Consentmanager.

## סקירות

There are no reviews for this plugin.

## מפתחים

"Contentpass Integration" הוא תוסף קוד פתוח. האנשים הבאים תרמו ליצירת התוסף הזה.

תורמים

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

[ניתן לתרגם את "Contentpass Integration" לשפה שלך.](https://translate.wordpress.org/projects/wp-plugins/contentpass-integration)

### מעוניינים בפיתוח?

[עיינו בקוד](https://plugins.trac.wordpress.org/browser/contentpass-integration/),
ראו את הקוד ב-[SVN repository](https://plugins.svn.wordpress.org/contentpass-integration/),
או הירשמו ל[לוג פיתוח](https://plugins.trac.wordpress.org/log/contentpass-integration/)
באמצעות [RSS](https://plugins.trac.wordpress.org/log/contentpass-integration/?limit=100&mode=stop_on_copy&format=rss).

## שינויים

#### 1.4.4

 * Dynamic Blocking iframes send their own width and height to Consentmanager as
   the preview size, so the preview box is drawn for embeds of 300px or larger.

#### 1.4.3

 * Integration settings open directly. A missing Property ID no longer blocks the
   rest of the screen.

#### 1.4.2

 * Plugin description now says the plugin supports Consentmanager only.

#### 1.4.1

 * WordPress.org listing now describes Consentmanager only. The description and 
   FAQ no longer mention other CMPs.

#### 1.4

 * Script blocking and the Consentmanager loader run for every visitor. Staging 
   and `?cpdebug=staging` only control the Contentpass wall.
 * Without the Contentpass wall, Dynamic Blocking scripts use Consentmanager `cmplazyload`,
   so each vendor is unlocked by Consentmanager. Placeholders unlock on accept-all(`
   consentapproved`).
 * With the Contentpass wall, scripts stay in document order and load after `onFullConsent`
   or a content preview Accept.
 * Consentmanager is the only CMP. Didomi, CCM19, OneTrust, Usercentrics, and Sourcepoint
   integrations are removed.

#### 1.3.3

 * Keep the CMP consent screen when config.json reports a live or public property
   whose Contentpass domain is not ready (`isDomainReady` false). The CNAME does
   not resolve yet, so the stub cannot render the wall and must not suppress the
   CMP screen.
 * Treat config snapshots that never included `isDomainReady` as ready, so older
   properties do not lose Contentpass.

#### 1.3.1

 * Skip the plugin's Contentpass stub, now.js and cmp_noscreen when the CMP renders
   the Contentpass wall itself (config.json `cmpRendersWall`) — avoids a second 
   cp('create') racing the CMP's own integration.
 * Only set cmp_noscreen when the Contentpass layer actually loads (previously the
   CM screen could be suppressed without any consent UI taking its place).
 * "CMP already integrated" now arms the Contentpass gate for Consentmanager, so
   CM/TCF consent no longer unlocks blocked embeds behind an open Contentpass wall.
 * "CMP already integrated" now unlocks Contentpass placeholders for visitors with
   a valid subscription (parity with the plugin-loaded CMP path).

#### 1.3

 * Load property config.json from the Contentpass static CDN (`https://static.contentpass.
   net/properties/{id}/config.json`).
 * Replace the CNAME/DNS onboarding step with a Property ID field; Base URL is taken
   from config `hostname`.
 * Property ID on Integration is prefilled from step 1 and remains editable.
 * Property ID autosave now loads config.json and continues to the Integration form
   automatically once the property is found; step 1 shows a Continue button instead
   of Check again / CNAME skip.
 * Show Integration status notices from config.json (`isDomainReady`, `isVerified`)
   with a link to the publisher dashboard.
 * config.json verification cache is keyed by Property ID only; no fallback Base
   URL derived from the site domain.
 * Hide the Save Changes button while step 1 is shown; remove CMP integration mode
   hint texts.
 * Update admin wording (onboarding checklist, site-host error, config debug messages)
   for the Property ID flow.
 * Tested up to WordPress 7.1.2.

#### 1.2.17

 * Contentpass gate: CM preview Accept no longer opens UnlockAll / MarkConsentGranted(
   placeholders stay behind the wall until onFullConsent).
 * onFullConsent always unlocks CP placeholders even if Dynamic Blocking scripts
   already finished loading.
 * Watchdog prepares late-injected Dynamic Blocking scripts instead of letting executable
   src tags run before consent.

#### 1.2.16

 * Activate Dynamic Blocking scripts on CM vendorconsent (official event when a 
   content preview is accepted) — click-class matching was missing Accepts.
 * Fallback: trusted clicks on controls inside CM wraps; clearer one-line Dynamic
   Blocking diagnostics.

#### 1.2.15

 * After CM content Accept: clear data-cmp-preview-mode / set data-cmp-haspreview
   =0 and strip overlays (mode=1 was keeping Accept visible forever).
 * Broader Accept-button detection + treat post-boot cmplazyloaded as Accept if 
   the click handler missed CM's control.

#### 1.2.14

 * Dynamic Blocking wraps use data-cmp-preview-mode="1" so CM always shows the content
   Accept UI (even if the vendor cookie already exists). Without this, prior vendor
   consent hid the preview while dependency scripts stayed inert  empty box.
 * Add Dynamic Blocking state diagnostics in the console (wraps / preview buttons/
   pending scripts).

#### 1.2.13

 * Stop hiding CM Dynamic Blocking wraps during Contentpass auth (CSS hide prevented
   CM content previews  empty box after login).
 * Do not treat placeholder unlock / watchdog-off as full consent (removes spurious
   UnlockAll ignored logs).

#### 1.2.12

 * Keep Dynamic Blocking generic: remove MapPress/Leaflet-specific waits, remounts,
   and text matching.
 * Subscription/login no longer auto-activates CM Dynamic Blocking — only onFullConsent
   or explicit CM preview Accept does.

#### 1.2.11

 * Do not unlock Dynamic Blocking on CM/TCF consent while the Contentpass wall is
   open (cmp_noscreen was loading MapPress behind the wall).
 * Unlock only after Contentpass onFullConsent, valid subscription, or an explicit
   CM content-preview Accept.

#### 1.2.10

 * Stop self-unblocking: no auto-click on CM Accept; only activate after real user
   Accept, Accept All, or valid Contentpass subscription.
 * Hide CM content previews briefly while Contentpass authenticate runs (avoids 
   flash then auto-unlock for subscribers).

#### 1.2.9

 * Fix fatal parse error on activation (unescaped quote in watchdog JS string).

#### 1.2.8

 * Remove leftover Consentmanager content-preview cards after subscription/full 
   unlock (auto-Accept + DOM cleanup) so MapPress is not shown under a second CM
   banner.
 * Stop repeated UnlockAll spam once Dynamic Blocking scripts are active.

#### 1.2.7

 * Unlock Dynamic Blocking when Contentpass reports a valid subscription (subscribers
   often never fire onFullConsent).
 * Add [CP4WP] debug logs for UnlockAll / script activation / reveal / remount; 
   avoid revealing wrappers before dependency scripts load.

#### 1.2.6

 * Fix content/preview accept: observe CM wrapper accept state, remount MapPress
   embeds after script load, and tighten preview-button detection.

#### 1.2.5

 * Harden CM content/preview accept (inline): activate dependency scripts immediately
   on preview button click, mark wrappers cmplazyloaded, and trigger resize after
   load.

#### 1.2.4

 * Load Dynamic Blocking dependency scripts in strict order without CM cmplazyload(
   prevents Leaflet/MapPress race: L is not defined).
 * Wait for Leaflet before loading MapPress bridge/main scripts after consent.

#### 1.2.3

 * Activate Consentmanager Dynamic Blocking scripts on Accept All / full consent(
   not only CP placeholders).
 * On preview accept, load remaining vendor scripts in order and reveal CM-wrapped
   content.

#### 1.2.2

 * Fix CM Dynamic Blocking accept: do not let the watchdog re-block scripts CM just
   activated after preview click.
 * Avoid nesting cmplazyload wrappers inside an existing CM wrapper; activate remaining
   vendor scripts in order if CM leaves them inert.

#### 1.2.1

 * Dynamic Blocking: wrap custom elements whose tag name matches the rule (e.g. 
   mappress  mappress-map) so Consentmanager can show a content preview.
 * Do not auto-add data-cmp-preview on scripts; preview is only set when configured(
   or for iframes/wrapped content as needed).

#### 1.2

 * Add Consentmanager Dynamic Content Blocking per block rule (checkbox + CMP vendor
   ID + optional preview size).
 * When Dynamic Blocking is enabled, matched scripts/iframes are prepared for Consentmanager(`
   cmplazyload`, `data-cmp-src`, `data-cmp-vendor`) instead of Contentpass placeholders.
 * Watchdog prepares dynamically inserted matching tags the same way; Contentpass
   unlock skips CM-managed elements.

#### 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).

## מטא

 *  גרסה: **1.4.4**
 *  Last updated **לפני 3 שעות**
 *  Active installations **פחות מ-10**
 *  WordPress version ** 6.3 ומעלה **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 ומעלה **
 *  שפה
 * [English (US)](https://wordpress.org/plugins/contentpass-integration/)
 * Tags
 * [CMP](https://he.wordpress.org/plugins/tags/cmp/)[consent](https://he.wordpress.org/plugins/tags/consent/)
   [GDPR](https://he.wordpress.org/plugins/tags/gdpr/)[paywall](https://he.wordpress.org/plugins/tags/paywall/)
   [subscription](https://he.wordpress.org/plugins/tags/subscription/)
 *  [תצוגה מתקדמת](https://he.wordpress.org/plugins/contentpass-integration/advanced/)

## דרוגים

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/contentpass-integration/reviews/)

## תורמים

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

## תמיכה

יש לך משהו לומר? זקוק לעזרה?

 [פורום תמיכה](https://wordpress.org/support/plugin/contentpass-integration/)

## תרומה

האם ברצונך לקדם את התוסף הזה?

 [ לתרום לתוסף זה ](https://www.contentpass.net/)