WordPress plugin profile

Consentinel Cookie Consent

Cookie consent built US-first: blocks trackers before they run, for CIPA defense, with a built-in tracker scanner. CCPA/CPRA and GDPR ready.

Version0.2.80
Active installsNew
Rating0.0 / 5
Tested toWP 7.1

About this plugin

Consentinel is built US-first. California’s Invasion of Privacy Act (CIPA) is driving a wave of lawsuits against American companies whose sites load pixels, session-replay, and analytics that transmit visitor data before the visitor consents. The strongest defense is prior consent, technically enforced before any data leaves the browser — which is exactly what Consentinel does. CCPA/CPRA and EU GDPR are supported secondarily. CIPA-safe blocking mode. “Block until consent — everyone” stops every non-essential tracker (analytics, ad pixels, session replay) from firing until the visitor consents — the enforced-before-transmission posture courts look for. Per-tracker Always / Block-until-consent / Never modes are enforced at runtime by intercepting each tracker’s network domains. Tracker scanner with CIPA risk flags. Crawls your active theme and plugins for known third-party tags (Google Analytics, Meta Pixel, Hotjar, Clarity, HubSpot, LinkedIn, TikTok, Pinterest, X, YouTube, Vimeo, Google Maps, Fonts, reCAPTCHA, Intercom, Segment, Mixpanel, Amplitude, Matomo, Cloudflare) and flags the session-replay tools and ad pixels that CIPA plaintiffs target. One posture for every visitor. Block until consent (the CIPA-safe default) or CCPA opt-out — chosen by you, applied to everyone, and unaffected by page caching. GPC honored as a deemed CCPA/CPRA opt-out. Proof of consent. A hashed, IP-truncated log is stored server-side so you can demonstrate prior consent — the primary evidence in a CIPA/CCPA defense (also satisfies GDPR Art. 7(1)). No external dependencies. ~20KB JS + CSS, vanilla, no jQuery. External services Consentinel works entirely on your own server by default. Out of the box it makes no outbound connection to us at all. Everything below happens only if you choose to connect the site to Consentinel Cloud, our optional hosted companion service, from the plugin’s Cloud tab. The plugin’s own tracker scanner fetches pages from your own site only — it refuses any URL whose host does not match your Site Address — and the consent log is written to your own database. Neither leaves your server. What Consentinel Cloud is Consentinel Cloud (https://consentinel.co) is a hosted service, run by sliStudios Web Development, that crawls your site in a real browser to measure which trackers fire before consent, and can centrally manage this plugin’s blocking configuration across several sites. Using it requires a Consentinel Cloud account. It is entirely optional; the plugin is fully functional without it. Terms of Service: https://app.consentinel.co/legal/terms-of-service Privacy Policy: https://app.consentinel.co/legal/privacy-policy Data Processing Addendum: https://app.consentinel.co/legal/dpa When you connect a site (you initiate this from the Cloud tab) Your browser is redirected to https://app.consentinel.co/connect , sending your site’s domain name , a one-time PKCE code challenge, and a return address on your own admin. To prove you control the domain, Consentinel Cloud then fetches a one-time challenge value from your site at /wp-json/consentinel/v1/challenge . Your site then contacts https://app.consentinel.co directly: POST /api/bridge/exchange — sends the one-time authorization code, its PKCE verifier, and this plugin’s version number . Receives a site-scoped access token and your configuration. POST /api/bridge/verify — sends the access token to confirm the pairing. While a site stays connected Once a day, and when you click “Sync config now”, your site sends its access token to: GET /api/bridge/config — retrieves the blocking configuration you set in Consentinel Cloud. GET /api/bridge/scan-summary — retrieves the summary of Cloud’s most recent crawl, for display in the plugin. GET /api/bridge/site-status — retrieves the connection status shown on the Cloud tab. No visitor data, page content, or consent records are sent by any of these requests. They carry the access token and nothing else. Consentinel Cloud can also notify your site that its configuration changed, by calling POST /wp-json/consentinel/v1/config-poke on your site. That notification carries no configuration itself — it only prompts your site to make the GET /api/bridge/config request above, so configuration always travels in the direction your site asked for it. Both this route and the /challenge route above are added by this plugin and answer only while a site is connected. What your visitors’ browsers load when a site is connected and published Consentinel Cloud serves the consent banner and blocking engine as a single JavaScript file, and the plugin loads it into your pages from https://api.consentinel.co . That script runs in your visitors’ browsers, and when a visitor makes a consent choice it records that choice to Consentinel Cloud, including a truncated and hashed form of their IP address and user agent (never the raw values), the choice made, and the time. This is how Consentinel Cloud provides a consent record you can rely on as proof of consent. While a site is connected, the plugin’s own local banner and consent log are switched off, so a visitor sees one banner and their choice is recorded in one place. Disconnect at any time from the Cloud tab: the plugin stops contacting Consentinel Cloud, removes the remote script, and restores its own local banner and consent log. One request during uninstall (connected sites only) If you delete the plugin while a site is still connected and you have opted in to deleting the consent log, the plugin makes one final request to GET /api/bridge/site-status (carrying the access token and nothing else) to ask whether Consentinel Cloud has a legal hold recorded for the site. A legal hold means someone is legally obliged to preserve that consent evidence, so the plugin refuses to destroy it — and if Cloud cannot be reached, it also refuses, erring toward preservation. Disconnected sites, and uninstalls without the delete-data opt-in, make no request at all. Links, not connections Consentinel shows your visitors no branding unless you switch it on. The “Powered by Consentinel” link is OFF by default; turn it on under Settings → Banner → “Powered by Consentinel”. With it on, the link on the banner and the shield icon in the preferences dialog point to https://consentinel.co and carry a campaign tag identifying which element was clicked and your site’s domain. These are ordinary links — nothing is sent unless a visitor clicks one. With it off, no link is rendered at all; the preferences dialog keeps its shield icon, it simply stops being a link. The consentinel_show_branding filter still overrides the setting in either direction. Integrating your trackers Replace this: <script src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script> with: <script type="text/plain" data-consent="analytics" src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script> When the visitor consents to analytics, Consentinel rewrites the tag into a real script. Shortcodes [consentinel_preferences] — re-open the preferences modal. [consentinel_do_not_sell] — CCPA Do-Not-Sell-or-Share link. Renders for every visitor: it was previously hidden for EEA/UK visitors, but a page cache serves one copy of a page to everyone, so hiding it stripped the control from Californian visitors too. [consentinel_withdraw label="Withdraw consent"] — one-click withdrawal of all non-essential consent. Global Privacy Control (GPC) When the visitor’s browser sends Sec-GPC: 1 (or navigator.globalPrivacyControl === true ), Consentinel treats it as a deemed opt-out under CPRA §1798.135(b)(1): all non-essential categories are forced off, the banner is suppressed, and the consent log records method = "gpc" . If a client somehow posts a non-opt-out choice while the GPC header is set, the server rewrites it and logs method = "gpc-override" .