{"id":385100,"date":"2026-10-13T01:57:19","date_gmt":"2026-10-13T01:57:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/clearcrumb\/"},"modified":"2026-10-13T01:57:04","modified_gmt":"2026-10-13T01:57:04","slug":"clearcrumb","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/clearcrumb\/","author":23584443,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"ClearCrumb","header_author":"ClearCrumb","header_description":"Fast, accessible cookie banner with script blocking, Google Consent Mode v2, consent log, GPC and EU\/US rules.","assets_banners_color":"193337","last_updated":"2026-10-13 01:57:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/clearcrumb.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"clearcrumb","date":"2026-10-13 01:57:04","revision":3742754}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3742759,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-128x128.png":{"filename":"icon-128x128.png","revision":3742754,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3742759,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3742754,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3742754,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3742754,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"clearcrumb\/preferences-button":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"clearcrumb\/preferences-button","title":"Cookie settings link","category":"widgets","icon":"admin-generic","description":"A link that reopens the cookie settings, so visitors can change or withdraw their consent.","keywords":["cookies","consent","preferences","withdraw"],"textdomain":"clearcrumb","attributes":{"text":{"type":"string","default":""}},"supports":{"html":false,"color":{"text":true,"background":true,"link":true},"typography":{"fontSize":true},"spacing":{"margin":true,"padding":true}},"editorScript":"clearcrumb-blocks"},"clearcrumb\/cookie-policy":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"clearcrumb\/cookie-policy","title":"Cookie policy","category":"widgets","icon":"media-text","description":"Your cookie policy with every service and cookie, always up to date.","keywords":["cookies","gdpr","consent","privacy"],"textdomain":"clearcrumb","supports":{"html":false,"multiple":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"editorScript":"clearcrumb-blocks"}},"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3742754,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3742754,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3742754,"resolution":"3","location":"assets","locale":"","width":1280,"height":860},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3742754,"resolution":"4","location":"assets","locale":"","width":1280,"height":1040},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3742754,"resolution":"5","location":"assets","locale":"","width":1280,"height":930},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3742754,"resolution":"6","location":"assets","locale":"","width":1280,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3742754,"resolution":"7","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"The banner on your site: Reject is as easy as Accept, and scripts wait until the visitor chooses.","2":"Dashboard: banner status, Compliance Score, visitor choices and the latest consents.","3":"Banner editor with a live preview: four layouts, six styles, your button colour, region rules.","4":"Services and cookies, plus Google Consent Mode v2, Microsoft UET and pixel consent signals.","5":"Cookie scanner and Leak Test: see what loads before and after consent.","6":"Consent log in your own database, kept as long as you choose, with CSV export.","7":"Five-step setup wizard: regions, scan, services, design, done."}},"plugin_section":[262246],"plugin_tags":[166295,223629,20272,16626,131785],"plugin_category":[],"plugin_contributors":[286296],"plugin_business_model":[],"class_list":["post-385100","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ccpa","plugin_tags-consent-mode","plugin_tags-cookie-banner","plugin_tags-cookie-consent","plugin_tags-gdpr","plugin_contributors-clearcrumb","plugin_committers-clearcrumb"],"banners":{"banner":"https:\/\/ps.w.org\/clearcrumb\/assets\/banner-772x250.png?rev=3742754","banner_2x":"https:\/\/ps.w.org\/clearcrumb\/assets\/banner-1544x500.png?rev=3742754","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/clearcrumb\/assets\/icon-128x128.png?rev=3742754","icon_2x":"https:\/\/ps.w.org\/clearcrumb\/assets\/icon-256x256.png?rev=3742754","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-1.png?rev=3742754","caption":"The banner on your site: Reject is as easy as Accept, and scripts wait until the visitor chooses."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-2.png?rev=3742754","caption":"Dashboard: banner status, Compliance Score, visitor choices and the latest consents."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-3.png?rev=3742754","caption":"Banner editor with a live preview: four layouts, six styles, your button colour, region rules."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-4.png?rev=3742754","caption":"Services and cookies, plus Google Consent Mode v2, Microsoft UET and pixel consent signals."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-5.png?rev=3742754","caption":"Cookie scanner and Leak Test: see what loads before and after consent."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-6.png?rev=3742754","caption":"Consent log in your own database, kept as long as you choose, with CSV export."},{"src":"https:\/\/ps.w.org\/clearcrumb\/assets\/screenshot-7.png?rev=3742754","caption":"Five-step setup wizard: regions, scan, services, design, done."}],"raw_content":"<!--section=description-->\n<p>ClearCrumb shows a fast, accessible cookie banner and stores each visitor's choice in their own browser.<\/p>\n\n<ul>\n<li>Auto-blocking: your services' scripts and embeds wait for consent, even on cached pages.<\/li>\n<li>Switching? Import your settings from Complianz, CookieYes or Cookiebot.<\/li>\n<li>A two-minute setup wizard: regions, scan, services, design.<\/li>\n<li>Works with WPML, Polylang and TranslatePress.<\/li>\n<li>Banner in 16 languages (EN, DE, FR, NL, ES, IT, PT, PL, SV, DA, FI, NO, CS, RO, AR, HE), picked from your site language, right-to-left included.<\/li>\n<li>A cookie policy page that keeps itself up to date: <code>[clearcrumb_cookie_policy]<\/code>, in English, German, French, Dutch, Spanish and Italian.<\/li>\n<li>A cookie scanner that checks up to 50 pages and finds the services your site uses.<\/li>\n<li>A Leak Test that shows what still loads before consent.<\/li>\n<li>A Compliance Score from 0 to 100 that tells you what to fix.<\/li>\n<li>A consent checkbox for Contact Form 7 and WPForms forms.<\/li>\n<li>A consent log in your own database: proof of every choice, kept as long as you choose (30 days to forever), with hashed IDs and IPs, and a CSV export.<\/li>\n<li>Region rules: GDPR opt-in for the EU, EEA, UK and Switzerland, US opt-out with Global Privacy Control.<\/li>\n<li>Google Consent Mode v2 (basic and advanced), Microsoft UET Consent Mode, Meta Pixel and TikTok Pixel consent APIs and the WP Consent API.<\/li>\n<li>Placeholders for blocked videos and maps, with a locally stored thumbnail and a \"Load video\" button.<\/li>\n<li>A library of 155 common services with their cookies, so visitors see who is behind each choice.<\/li>\n<li>Four banner layouts and six design styles, with a live preview while you edit.<\/li>\n<li>Accept, Reject and Preferences with four categories: necessary, preferences, statistics and marketing.<\/li>\n<li>Reject always looks exactly like Accept. Saying no is never harder than saying yes.<\/li>\n<li>A floating \"cookie settings\" button and a <code>[clearcrumb_preferences]<\/code> shortcode, so visitors can change their mind at any time.<\/li>\n<li>Small and quick: no jQuery, no external requests, the banner script loads deferred.<\/li>\n<li>Settings export and import as a JSON file, to set up your next site in seconds.<\/li>\n<li>WP-CLI commands: <code>wp clearcrumb scan<\/code> and <code>wp clearcrumb log export<\/code>.<\/li>\n<li>A dashboard widget with this week's consent rate.<\/li>\n<li>Block-editor blocks: Cookie policy and Cookie settings link.<\/li>\n<li>Keyboard and screen-reader friendly (WCAG 2.2 AA target).<\/li>\n<\/ul>\n\n<p>ClearCrumb helps you meet cookie rules but is not legal advice.<\/p>\n\n<h4>For developers<\/h4>\n\n<pre><code>window.ClearCrumb.get() returns the visitor's choice (or `null`), `ClearCrumb.has( 'statistics' )` checks one category, and `ClearCrumb.open()` opens the preferences. Every saved choice fires a `clearcrumb:consent` event on `document`.\n<\/code><\/pre>\n\n<h4>Source code &amp; build<\/h4>\n\n<p>Everything ships readable. The banner scripts and styles sit next to their minified copies (<code>assets\/js\/guard.js<\/code>, <code>assets\/js\/banner.js<\/code>, <code>assets\/css\/banner.css<\/code>). The admin app's source is in <code>src\/admin\/<\/code>, with the build tools in <code>src\/tools\/<\/code>. To rebuild <code>assets\/admin\/<\/code> and the <code>.min<\/code> files, run this inside the plugin's <code>src<\/code> folder (Node.js 18 or newer):<\/p>\n\n<pre><code>npm install &amp;&amp; npm run build\n<\/code><\/pre>\n\n<h3>External services<\/h3>\n\n<p>ClearCrumb sends nothing about your visitors anywhere. Your server contacts two services only to fetch a video thumbnail for the placeholder that replaces a blocked embed, once per video, in the background:<\/p>\n\n<ul>\n<li><strong>YouTube<\/strong> (Google): when a page contains a blocked YouTube embed, your server downloads the video's thumbnail image from <code>i.ytimg.com<\/code>. Only the video ID is sent. <a href=\"https:\/\/www.youtube.com\/t\/terms\">Terms of Service<\/a> \u00b7 <a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a><\/li>\n<li><strong>Vimeo<\/strong>: when a page contains a blocked Vimeo embed, your server asks <code>vimeo.com\/api\/oembed.json<\/code> for the thumbnail address and downloads the image from <code>i.vimeocdn.com<\/code>. Only the video ID is sent. <a href=\"https:\/\/vimeo.com\/terms\">Terms of Service<\/a> \u00b7 <a href=\"https:\/\/vimeo.com\/privacy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<p>The thumbnails are stored in your uploads folder and shown from your own site, so visitors' browsers contact neither service before they consent.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20change%20the%20banner%27s%20look%3F\"><h3>How do I change the banner's look?<\/h3><\/dt>\n<dd><p>Pick a layout, a design style and a button colour under ClearCrumb \u2192 Banner. For anything more, add your own CSS in WordPress under Appearance \u2192 Customize \u2192 Additional CSS (or Styles \u2192 Additional CSS in the Site Editor), with selectors that start with <code>.cc-root<\/code>.<\/p><\/dd>\n<dt id=\"where%20is%20the%20visitor%27s%20choice%20stored%3F\"><h3>Where is the visitor's choice stored?<\/h3><\/dt>\n<dd><p>In a first-party cookie named <code>clearcrumb_consent<\/code> on your own domain. A copy of the choice goes to your own database as proof (the consent log), with the consent ID and IP address shortened and hashed. Nothing is sent to anyone else.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20%22cookie%20settings%22%20link%20to%20my%20footer%3F\"><h3>How do I add a \"Cookie settings\" link to my footer?<\/h3><\/dt>\n<dd><p>Add the shortcode <code>[clearcrumb_preferences]<\/code>, or give any link the class <code>clearcrumb-open-preferences<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Consent log: you choose how long records are kept (30 days to forever, one year by default), and you can download the log as a CSV file.<\/li>\n<li>Removed the Custom CSS field. Use WordPress's own Additional CSS instead; your design settings stay as they are.<\/li>\n<li>Works on PHP 7.4 again (the cookie domain check used a PHP 8 function).<\/li>\n<li>The region check now reads only the location headers it needs, sanitized.<\/li>\n<li>The source of the admin app and the build tools now ship in <code>src\/<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Fast, accessible cookie banner with script blocking, Google Consent Mode v2, consent log, GPC and EU\/US rules. No pageview limits.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/385100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=385100"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/clearcrumb"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=385100"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=385100"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=385100"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=385100"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=385100"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=385100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}