{"id":315798,"date":"2026-05-31T13:24:16","date_gmt":"2026-05-31T13:24:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/consentpilot\/"},"modified":"2026-09-16T20:45:16","modified_gmt":"2026-09-16T20:45:16","slug":"consentpilot","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/consentpilot\/","author":18333240,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.9","stable_tag":"0.1.9","tested":"6.7.8","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"ConsentPilot","header_author":"Helene \u00c5sheim Gr\u00f8nberg","header_description":"GDPR consent management for WordPress: banner, blocking of tracking scripts and iframes before consent, and an audit log of every consent given.","assets_banners_color":"1d2333","last_updated":"2026-09-16 20:45:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/helene.cloud\/consentpilot.html","header_author_uri":"https:\/\/helene.cloud","rating":0,"author_block_rating":0,"active_installs":0,"downloads":456,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"helenegr1989","date":"2026-05-31 13:23:55","revision":3555544},"0.1.2":{"tag":"0.1.2","author":"helenegr1989","date":"2026-05-31 20:23:55","revision":3555895},"0.1.4":{"tag":"0.1.4","author":"helenegr1989","date":"2026-08-24 14:13:25","revision":3663623},"0.1.5":{"tag":"0.1.5","author":"helenegr1989","date":"2026-09-04 14:06:51","revision":3681323},"0.1.9":{"tag":"0.1.9","author":"helenegr1989","date":"2026-09-16 20:45:16","revision":3699224}},"upgrade_notice":{"0.1.1":"<p>Fixes the issues raised in the WordPress.org plugin review: removed\noutput-buffer pattern and removed paywall checks on Consent Mode v2 and\ngeo-targeting.<\/p>","0.1.0":"<p>First release of ConsentPilot.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3558286,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3558286,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3558286,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3558286,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1","0.1.2","0.1.4","0.1.5","0.1.9"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3555906,"resolution":"1","location":"assets","locale":"","width":1536,"height":639},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3555906,"resolution":"2","location":"assets","locale":"","width":1536,"height":639},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3555906,"resolution":"3","location":"assets","locale":"","width":1536,"height":639},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3555906,"resolution":"4","location":"assets","locale":"","width":1536,"height":639},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3555906,"resolution":"5","location":"assets","locale":"","width":1536,"height":639}},"screenshots":{"1":"The consent banner as visitors see it.","2":"Per-category choice when the visitor clicks \"Customize\".","3":"The dashboard in wp-admin with status and statistics.","4":"Settings, banner, script blocking and privacy.","5":"The consent log with CSV export."}},"plugin_section":[],"plugin_tags":[20011,20272,16626,131785,396],"plugin_category":[54],"plugin_contributors":[265195],"plugin_business_model":[],"class_list":["post-315798","plugin","type-plugin","status-publish","hentry","plugin_tags-consent","plugin_tags-cookie-banner","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_tags-privacy","plugin_category-security-and-spam-protection","plugin_contributors-helenegr1989","plugin_committers-helenegr1989"],"banners":{"banner":"https:\/\/ps.w.org\/consentpilot\/assets\/banner-772x250.png?rev=3558286","banner_2x":"https:\/\/ps.w.org\/consentpilot\/assets\/banner-1544x500.png?rev=3558286","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/consentpilot\/assets\/icon-128x128.png?rev=3558286","icon_2x":"https:\/\/ps.w.org\/consentpilot\/assets\/icon-256x256.png?rev=3558286","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/consentpilot\/assets\/screenshot-1.jpg?rev=3555906","caption":"The consent banner as visitors see it."},{"src":"https:\/\/ps.w.org\/consentpilot\/assets\/screenshot-2.jpg?rev=3555906","caption":"Per-category choice when the visitor clicks \"Customize\"."},{"src":"https:\/\/ps.w.org\/consentpilot\/assets\/screenshot-3.jpg?rev=3555906","caption":"The dashboard in wp-admin with status and statistics."},{"src":"https:\/\/ps.w.org\/consentpilot\/assets\/screenshot-4.jpg?rev=3555906","caption":"Settings, banner, script blocking and privacy."},{"src":"https:\/\/ps.w.org\/consentpilot\/assets\/screenshot-5.jpg?rev=3555906","caption":"The consent log with CSV export."}],"raw_content":"<!--section=description-->\n<p>ConsentPilot is a GDPR consent management plugin for WordPress. Known tracking\nscripts and embedded iframes (YouTube, Vimeo, maps) stay blocked in the page\nuntil the visitor agrees to the relevant category, and every consent is\nlogged in the database as documentation, as required by GDPR art. 7.1.<\/p>\n\n<p>ConsentPilot is configurable out of the box: choose between three banner\nlayouts, position, colors and banner text; describe your cookie categories;\nadd custom blocking patterns for tracking scripts not covered by the built-in\nlist; and export the consent log as CSV for compliance documentation.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Consent banner in three layouts: box, bar or popup<\/li>\n<li>\"Accept all\", \"Decline all\" and per-category choice<\/li>\n<li>Blocks known tracking scripts before consent, Google Analytics, Google\nTag Manager, Meta Pixel, Hotjar, LinkedIn and more<\/li>\n<li>Also blocks tracking scripts hosted on your own domain<\/li>\n<li>Iframe blocking for YouTube, Vimeo, Google Maps and Spotify<\/li>\n<li>Custom blocking patterns, block anything you add yourself<\/li>\n<li>Custom cookie categories with descriptions<\/li>\n<li>Consent log in the database with hashed, anonymized IP<\/li>\n<li>CSV export of the consent log for documentation<\/li>\n<li>Policy versioning, request fresh consent when your privacy policy changes<\/li>\n<li>Google Consent Mode v2 integration for Ads\/Analytics in the EEA<\/li>\n<li>Geo-targeting, only show the banner in selected regions (with Cloudflare\nor a custom GeoIP integration)<\/li>\n<li>Keyboard accessible, light\/dark theme aware<\/li>\n<li>No frontend dependencies, the banner is lightweight and fast<\/li>\n<li>Fully translatable<\/li>\n<\/ul>\n\n<h4>Support and documentation<\/h4>\n\n<p>Full documentation, screenshots and a contact form are available on the\nplugin homepage at <a href=\"https:\/\/helene.cloud\/consentpilot.html\">helene.cloud\/consentpilot.html<\/a>.\nBug reports and feature requests can also be sent through the contact form\non <a href=\"https:\/\/helene.cloud\">helene.cloud<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>consentpilot<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via\n\"Plugins \u2192 Add New \u2192 Upload Plugin\".<\/li>\n<li>Activate the plugin under \"Plugins\" in wp-admin.<\/li>\n<li>Go to \"ConsentPilot \u2192 Settings\" to customize the banner.<\/li>\n<li>Describe your cookie categories under \"ConsentPilot \u2192 Cookies\".<\/li>\n<\/ol>\n\n<p>Requirements: WordPress 6.3+, PHP 7.4+.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20store%20ip%20addresses%3F\"><h3>Does the plugin store IP addresses?<\/h3><\/dt>\n<dd><p>No. The consent log only stores a non-reversible SHA-256 hash of an\n(optionally anonymized) IP address, never the address itself.<\/p><\/dd>\n<dt id=\"is%20any%20data%20sent%20to%20a%20third%20party%3F\"><h3>Is any data sent to a third party?<\/h3><\/dt>\n<dd><p>No. All data stays in your own WordPress database. ConsentPilot does not\ncontact any external service.<\/p><\/dd>\n<dt id=\"does%20it%20actually%20block%20google%20analytics%20before%20consent%3F\"><h3>Does it actually block Google Analytics before consent?<\/h3><\/dt>\n<dd><p>Yes. Tracking scripts are neutralized in the page and only activated in the\nbrowser once the visitor accepts the relevant category.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20caching%3F\"><h3>Does it work with page caching?<\/h3><\/dt>\n<dd><p>Yes. The blocking uses official WordPress filters and works regardless of\nfull-page caching.<\/p><\/dd>\n<dt id=\"what%20if%20a%20tracking%20script%20isn%27t%20being%20blocked%3F\"><h3>What if a tracking script isn't being blocked?<\/h3><\/dt>\n<dd><p>Add the domain or script handle under \"Custom patterns\" in the settings,\nusing the format <code>pattern|category<\/code>.<\/p><\/dd>\n<dt id=\"is%20the%20consent%20log%20kept%20after%20uninstalling%3F\"><h3>Is the consent log kept after uninstalling?<\/h3><\/dt>\n<dd><p>Yes, by default, consent records are legal documentation. You can opt to\ndelete everything on uninstall from the settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Compliance: \"Accept all\" and \"Decline all\" now share the same\nvisual weight as a matched pair of primary-coloured buttons.\nThe previous default made \"Accept all\" more prominent than\n\"Decline all\", which EDPB Guidelines 03\/2022 on deceptive\ndesign patterns and the Norwegian Data Protection Authority\nidentify as a pattern that can render consent invalid. The\n\"Customize\" button remains a lighter outline button, which is\npermitted since it is not a consent choice itself but a\ngateway to per-category selection. Existing custom-CSS\noverrides in the Pro version are not affected.<\/li>\n<li>Added a small stable public JavaScript API on window.ConsentPilot\nso other plugins and theme code can integrate without guessing\nat CSS class names. Methods:\nwindow.ConsentPilot.open()           - open the consent panel\nwindow.ConsentPilot.getConsent()     - read stored consent\nwindow.ConsentPilot.hasConsent(cat)  - check a category\nThe internal method name openSettings() introduced in 0.1.7\nis kept as an alias for backwards compatibility.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Improved: raw tracking scripts embedded in themes or in\n\"header\/footer\" plugin fields are now also caught. Previously\nConsentPilot only blocked scripts that went through the\nWordPress script queue (wp_enqueue_script). A small guard is\nnow written into the page head at priority 1 that watches the\ndocument for hardcoded  tags from Site Kit,\nWPCode, Insert Headers and Footers, GTM plugins, and theme\nheader code, and neutralizes matched patterns before the\nbrowser fetches them.<\/li>\n<li>Scripts placed literally in header.php before the wp_head()\ncall still cannot be blocked - the plugin has no code running\nat that point. This is a rare setup; move the script into a\nwp_head hook or into WordPress's enqueue system.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Added a new setting to hide the floating \"Cookies\" reopen\nbutton. Site owners who prefer a discreet footer link over a\npermanently visible corner button can now switch it off under\nSettings &gt; Appearance.<\/li>\n<li>Added a [consentpilot_link] shortcode that renders an \"Change\ncookie settings\" link anywhere in a page, post, or widget. The\nlink opens the consent settings on click. Optional text and\nclass attributes: [consentpilot_link text=\"Cookies\"].<\/li>\n<li>Added a data-consentpilot-open attribute so a theme developer\ncan hook a menu item or footer link to the same open action\nwithout a shortcode.<\/li>\n<li>Added a small public JS API: window.ConsentPilot.openSettings()\nfor cases where JavaScript is the right integration point.<\/li>\n<li>Cleaned up two leftover \"(Pro)\" comments that suggested Consent\nMode v2 and geo-targeting were paywalled - both have been fully\nfree since 0.1.1.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Fixed: the floating \"Cookies\" reopen button now uses the primary\ncolour you have configured under Settings \u2192 Appearance, instead\nof falling back to the default blue on returning visitors.\nPreviously the colour was only applied when the full banner\nrendered, so the reopen button on returning sessions never\npicked it up.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Fixed: when a visitor reopens the consent banner after having\nsaved their choices, the checkboxes now reflect what was\npreviously saved (e.g. all four categories checked after\n\"Accept all\") instead of resetting to only \"Necessary\". Their\nactual saved consent was never lost \u2014 only the UI display was\nincorrect \u2014 but the mismatch was confusing.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>The floating \"reopen consent\" button now uses an inline SVG\ncookie icon and a small \"Cookies\" label, so visitors can see\nwhat the button does at a glance. Previously it relied on a\ncookie emoji that did not render reliably on all platforms.<\/li>\n<li>The reopen button has a tooltip and a soft shadow for better\naffordance. On screens narrower than 480px the label collapses\nand only the icon is shown.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Added an \"Upgrade to Pro\" box to the plugin dashboard so users\ncan discover the optional Pro tier with the privacy-policy\ngenerator, cookie scanner, audit-report PDF and other features.\nThe box is hidden automatically when Pro is licensed.<\/li>\n<li>No changes to core functionality.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Added discreet \"Powered by ConsentPilot\" link in the banner, with a\nfilter so Pro users can hide it (<code>consentpilot_frontend_config<\/code>).<\/li>\n<li>Added support for an optional custom logo above the banner text.<\/li>\n<li>No breaking changes, existing installations keep all behavior.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Removed the output-buffer-based script blocker. All blocking now uses\nWordPress filters (script_loader_tag, wp_inline_script_attributes,\nthe_content), which are predictable and do not interact with the global\noutput-buffer stack.<\/li>\n<li>Removed all license gates from Google Consent Mode v2 and geo-targeting\nsettings. Both features are fully functional in this release.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Consent banner with three layouts and per-category choice.<\/li>\n<li>Blocking of tracking scripts and iframes before consent.<\/li>\n<li>Consent log with hashed IP and CSV export.<\/li>\n<li>Custom blocking patterns and policy versioning.<\/li>\n<\/ul>","raw_excerpt":"GDPR consent management for WordPress: cookie banner, blocking of tracking scripts and iframes before consent, and a consent log with CSV export.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315798"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/helenegr1989"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315798"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315798"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315798"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315798"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315798"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}