{"id":396136,"date":"2026-10-31T08:58:02","date_gmt":"2026-10-31T08:58:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/consentsprout-cookie-consent-manager\/"},"modified":"2026-10-31T08:57:45","modified_gmt":"2026-10-31T08:57:45","slug":"consentsprout","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/consentsprout\/","author":20588069,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"ConsentSprout \u2013 Cookie Consent Manager","header_author":"Anand Bajrangi","header_description":"A free, lightweight consent banner with category preferences and a developer API.","assets_banners_color":"aac1b4","last_updated":"2026-10-31 08:57:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/anandbajrangi\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":48,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"anandbajrangi","date":"2026-10-31 08:57:45","revision":3776543}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776542,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776542,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3776542,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776542,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776542,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3776542,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3776542,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3776542,"resolution":"3","location":"assets","locale":"","width":1440,"height":1006},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3776542,"resolution":"4","location":"assets","locale":"","width":1728,"height":1800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3776542,"resolution":"5","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"The consent banner on the front end, with Accept all, Reject non-essential, and Manage preferences buttons.","2":"The preference panel lets visitors choose functional, analytics, and marketing categories. Strictly necessary storage is always on.","3":"Settings &gt; ConsentSprout: banner text, privacy policy link, policy version, consent duration, banner position, and optional categories.","4":"The banner and preference panel on a mobile screen.","5":"After a choice is saved, a Privacy settings button lets visitors change their preferences at any time."}},"plugin_section":[],"plugin_tags":[268163,16626,389,396],"plugin_category":[54],"plugin_contributors":[288061],"plugin_business_model":[],"class_list":["post-396136","plugin","type-plugin","status-publish","hentry","plugin_tags-consent-banner","plugin_tags-cookie-consent","plugin_tags-cookies","plugin_tags-privacy","plugin_category-security-and-spam-protection","plugin_contributors-anandbajrangi","plugin_committers-anandbajrangi"],"banners":{"banner":"https:\/\/ps.w.org\/consentsprout\/assets\/banner-772x250.png?rev=3776542","banner_2x":"https:\/\/ps.w.org\/consentsprout\/assets\/banner-1544x500.png?rev=3776542","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/consentsprout\/assets\/icon.svg?rev=3776542","icon":"https:\/\/ps.w.org\/consentsprout\/assets\/icon.svg?rev=3776542","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/consentsprout\/assets\/screenshot-1.png?rev=3776542","caption":"The consent banner on the front end, with Accept all, Reject non-essential, and Manage preferences buttons."},{"src":"https:\/\/ps.w.org\/consentsprout\/assets\/screenshot-2.png?rev=3776542","caption":"The preference panel lets visitors choose functional, analytics, and marketing categories. Strictly necessary storage is always on."},{"src":"https:\/\/ps.w.org\/consentsprout\/assets\/screenshot-3.png?rev=3776542","caption":"Settings &gt; ConsentSprout: banner text, privacy policy link, policy version, consent duration, banner position, and optional categories."},{"src":"https:\/\/ps.w.org\/consentsprout\/assets\/screenshot-4.png?rev=3776542","caption":"The banner and preference panel on a mobile screen."},{"src":"https:\/\/ps.w.org\/consentsprout\/assets\/screenshot-5.png?rev=3776542","caption":"After a choice is saved, a Privacy settings button lets visitors change their preferences at any time."}],"raw_content":"<!--section=description-->\n<p>ConsentSprout displays a configurable consent banner and preference panel. Visitors can accept all optional categories, reject them, or choose functional, analytics, and marketing categories separately. Necessary storage is always enabled.<\/p>\n\n<p>Consent choices are stored in the visitor's browser using localStorage. ConsentSprout does not send consent records to a remote server and does not set cookies or collect personal data. If browser storage is blocked, a choice remains effective only for the current page view.<\/p>\n\n<p>This plugin is a technical consent tool. It does not guarantee legal compliance. Site owners are responsible for configuring the plugin and integrations for their own legal and operational requirements. ConsentSprout cannot automatically detect or block every script from themes, plugins, tag managers, or custom code; those integrations must be configured by the site owner.<\/p>\n\n<p>No external services, remote assets, analytics, or telemetry are used.<\/p>\n\n<h3>Integration<\/h3>\n\n<p>For an external script, change <code>src<\/code> to <code>data-src<\/code>, set <code>type=\"text\/plain\"<\/code>, and specify a category. Example:<\/p>\n\n<pre><code>&lt;script type=\"text\/plain\" data-consentsprout-category=\"analytics\" data-src=\"https:\/\/example.com\/analytics.js\"&gt;&lt;\/script&gt;\n<\/code><\/pre>\n\n<p>For inline code, use the same <code>type<\/code> and category attributes and put the code in the element. Only do this for scripts you control. Do not put executable third-party code into unsanitized admin settings.<\/p>\n\n<p>Categories are <code>functional<\/code>, <code>analytics<\/code>, and <code>marketing<\/code>. <code>necessary<\/code> is always true. This mechanism only applies to scripts explicitly marked for ConsentSprout. It cannot prevent a separate plugin or theme from loading the same script by another route.<\/p>\n\n<h3>JavaScript API<\/h3>\n\n<p>The API is available as <code>window.ConsentSprout<\/code> after the plugin script loads:<\/p>\n\n<ul>\n<li><code>ConsentSprout.getConsent()<\/code> returns the category object or <code>null<\/code> before a choice is saved.<\/li>\n<li><code>ConsentSprout.hasConsent('analytics')<\/code> returns a boolean.<\/li>\n<li><code>ConsentSprout.openPreferences()<\/code> opens the preference panel.<\/li>\n<li><code>ConsentSprout.withdraw()<\/code> withdraws optional consent by saving all optional categories as false.<\/li>\n<li><code>ConsentSprout.onChange(function(categories) {})<\/code> registers a consent-change callback.<\/li>\n<li><code>document<\/code> emits <code>consentsprout:consent-ready<\/code> and <code>consentsprout:consent-changed<\/code> CustomEvents with consent data in <code>event.detail<\/code>.<\/li>\n<\/ul>\n\n<p>Use <code>[consentsprout_preferences]<\/code> in a post or page to display a link-style button that opens preferences.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>ConsentSprout stores the category selection, policy version, choice time, and expiry time in localStorage on the visitor's device. It does not transmit this data to the site or a third party. The storage key is <code>consentsprout_consent<\/code>. Clearing browser storage removes the saved choice. The site owner can change the consent lifetime in settings. Necessary storage supports remembering that choice; optional categories remain off until selected.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>consentsprout<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate ConsentSprout in the Plugins screen.<\/li>\n<li>Open Settings &gt; ConsentSprout to configure the banner, categories, privacy policy link, policy version, duration, and position.<\/li>\n<li>Mark each optional script for its consent category using the integration pattern below.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20make%20my%20site%20legally%20compliant%3F\"><h3>Does this make my site legally compliant?<\/h3><\/dt>\n<dd><p>No. It provides consent controls, but cannot determine your legal obligations or discover every script on your site. Configure integrations and policy language with your own requirements in mind.<\/p><\/dd>\n<dt id=\"will%20it%20block%20every%20tracking%20script%20automatically%3F\"><h3>Will it block every tracking script automatically?<\/h3><\/dt>\n<dd><p>No. Only scripts explicitly marked with the documented data attributes are gated. Configure the scripts and integrations used by your site.<\/p><\/dd>\n<dt id=\"is%20any%20feature%20paid%20or%20time%20limited%3F\"><h3>Is any feature paid or time limited?<\/h3><\/dt>\n<dd><p>No. All plugin features are free, with no account, trial, quota, premium unlock, or license key.<\/p><\/dd>\n<dt id=\"where%20is%20consent%20stored%3F\"><h3>Where is consent stored?<\/h3><\/dt>\n<dd><p>In the visitor's browser localStorage. No consent records are sent to a remote service.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Remove the unnecessary manual text-domain loader; WordPress.org translations load automatically.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rename and rebrand the plugin as ConsentSprout.<\/li>\n<li>Set plugin author metadata to Anand Bajrangi.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Ensure the JavaScript consent API is initialized before previously consented scripts run.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"A free consent banner with necessary, functional, analytics, and marketing preferences. No account, paid service, license key, or tracking.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396136","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=396136"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/anandbajrangi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396136"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396136"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396136"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396136"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396136"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}