{"id":364863,"date":"2026-09-14T11:22:49","date_gmt":"2026-09-14T11:22:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/consent-mode-manager\/"},"modified":"2026-09-15T07:35:57","modified_gmt":"2026-09-15T07:35:57","slug":"ibs-consent-mode-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ibs-consent-mode-manager\/","author":21161164,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"IBS Consent Mode Manager","header_author":"ibsofts","header_description":"Network-wide Google Consent Mode v2 implementation for California consent workflows, with CCPA\/CPRA and GPC support.","assets_banners_color":"ccbf9f","last_updated":"2026-09-15 07:35:57","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/donate.stripe.com\/14keXEbyJ2xp43SdQR","header_plugin_uri":"https:\/\/www.ibsofts.com\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":84,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"ibsofts","date":"2026-09-14 11:22:17","revision":3695076},"1.0.1":{"tag":"1.0.1","author":"ibsofts","date":"2026-09-15 07:35:57","revision":3696405}},"upgrade_notice":{"1.0.1":"<ul>\n<li>Improved the plugin user interface.<\/li>\n<\/ul>","1.0.0":"<ul>\n<li>Initial release of the plugin.<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3695076,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3695076,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-rtl.jpg":{"filename":"banner-1544x500-rtl.jpg","revision":3695131,"resolution":"1544x500","location":"assets","locale":"","width":2171,"height":724},"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3695131,"resolution":"1544x500","location":"assets","locale":"","width":2171,"height":724},"banner-772x250-rtl.jpg":{"filename":"banner-772x250-rtl.jpg","revision":3695094,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3695094,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"Screenshot-1.png":{"filename":"Screenshot-1.png","revision":3695076,"resolution":"1","location":"assets","locale":"","width":1365,"height":590},"Screenshot-2.png":{"filename":"Screenshot-2.png","revision":3695076,"resolution":"2","location":"assets","locale":"","width":1365,"height":562},"Screenshot-3.png":{"filename":"Screenshot-3.png","revision":3695076,"resolution":"3","location":"assets","locale":"","width":1363,"height":588},"Screenshot-4.png":{"filename":"Screenshot-4.png","revision":3695076,"resolution":"4","location":"assets","locale":"","width":1346,"height":113},"Screenshot-5.png":{"filename":"Screenshot-5.png","revision":3695076,"resolution":"5","location":"assets","locale":"","width":585,"height":514}},"screenshots":{"1":"Configure GTM Container ID, blocking mode, and consent scope.","2":"Customize the consent banner heading, message, and action buttons.","3":"Configure granular Necessary, Analytics, and Advertising preferences.","4":"Display a customizable consent banner to website visitors.","5":"Allow visitors to manage Analytics and Advertising preferences individually."}},"plugin_section":[],"plugin_tags":[166295,223629,210180,23295,441],"plugin_category":[51],"plugin_contributors":[223378,216501],"plugin_business_model":[],"class_list":["post-364863","plugin","type-plugin","status-publish","hentry","plugin_tags-ccpa","plugin_tags-consent-mode","plugin_tags-cpra","plugin_tags-gtm","plugin_tags-multisite","plugin_category-multisite","plugin_contributors-ibsofts","plugin_contributors-laddoo","plugin_committers-ibsofts"],"banners":{"banner":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/banner-772x250.jpg?rev=3695094","banner_2x":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/banner-1544x500.jpg?rev=3695131","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/icon-128x128.png?rev=3695076","icon_2x":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/icon-256x256.png?rev=3695076","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/Screenshot-1.png?rev=3695076","caption":"Configure GTM Container ID, blocking mode, and consent scope."},{"src":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/Screenshot-2.png?rev=3695076","caption":"Customize the consent banner heading, message, and action buttons."},{"src":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/Screenshot-3.png?rev=3695076","caption":"Configure granular Necessary, Analytics, and Advertising preferences."},{"src":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/Screenshot-4.png?rev=3695076","caption":"Display a customizable consent banner to website visitors."},{"src":"https:\/\/ps.w.org\/ibs-consent-mode-manager\/assets\/Screenshot-5.png?rev=3695076","caption":"Allow visitors to manage Analytics and Advertising preferences individually."}],"raw_content":"<!--section=description-->\n<p>\ud83c\udf10 <a href=\"https:\/\/www.ibsofts.com\/plugins\">Official Website<\/a>  | \ud83d\udcd6 <a href=\"https:\/\/support.ibsofts.com\/knowledgebase\/articles\/installing-and-activating-ibs-consent-mode-manager\" rel=\"nofollow ugc\">Documentation<\/a> | \ud83d\udc81 <a href=\"https:\/\/support.ibsofts.com\/\">Support<\/a><\/p>\n\n<p>\ud83d\ude80 <strong>IBS Consent Mode Manager<\/strong> displays a consent banner that allows visitors to Accept, Reject, or Manage Preferences for Analytics and Advertising. It uses Google Consent Mode v2 to set and update consent signals based on the visitor's choices, controlling how Google Tag Manager, Google Analytics, and Google Ads tags operate.<\/p>\n\n<p>The plugin supports CCPA\/CPRA-related California use cases, Global Privacy Control (GPC), configurable consent scopes for California, all US traffic, or all traffic, and Strict and Soft modes for Google Tag Manager. It also provides centralized consent configuration for WordPress Multisite, with each subsite able to set its own GTM Container ID and choose Strict or Soft blocking mode.<\/p>\n\n<h3>\ud83d\ude80 How It Works<\/h3>\n\n<p>When a visitor enters a site covered by the configured consent rules, the plugin establishes the appropriate Google Consent Mode defaults and displays the consent banner.<\/p>\n\n<p><strong>Accept<\/strong> to grant Analytics and Advertising consent.\n<strong>Reject<\/strong> to deny both categories.\n<strong>Manage Preferences<\/strong> to independently allow or deny Analytics and Advertising.<\/p>\n\n<p>The selected preferences are stored in the site's consent cookie and used to update Google's consent signals.<\/p>\n\n<p>In <strong>Strict Mode<\/strong>, the GTM container remains blocked until the visitor grants consent. In <strong>Soft Mode<\/strong>, GTM loads immediately while Google tags operate according to the configured Consent Mode defaults.<\/p>\n\n<h3>\ud83d\ude80 Key Features<\/h3>\n\n<p>\u2611\ufe0f <strong>Google Consent Mode v2<\/strong> - Sets Google's consent defaults before the configured Google Tag Manager container can load and updates consent signals based on the visitor's choices.\n\u2611\ufe0f <strong>Consent Banner<\/strong> - Displays a consent banner with Accept, Reject, and Manage Preferences options.\n\u2611\ufe0f <strong>Customizable Banner Content<\/strong> - Customize the banner heading, message, Accept button text, Reject button text, and Manage Preferences button text for each subsite.\n\u2611\ufe0f <strong>Granular Consent Preferences<\/strong> - Visitors can separately control Analytics and Advertising consent through the preferences panel.\n\u2611\ufe0f <strong>Customizable Preferences Panel<\/strong> - Customize the panel heading, introductory text, category labels and descriptions, and Reject All, Save Preferences, and Accept All button text.\n\u2611\ufe0f <strong>Analytics Consent<\/strong> - Controls Google's analytics_storage consent signal.\n\u2611\ufe0f <strong>Advertising Consent<\/strong> - Controls Google's ad_storage, ad_user_data, and ad_personalization consent signals together.\n\u2611\ufe0f <strong>Strict Mode<\/strong> - Prevents the Google Tag Manager container from loading until a consent decision allowing tracking is made.\n\u2611\ufe0f <strong>Soft Mode<\/strong> - Loads Google Tag Manager immediately with Consent Mode defaults, allowing Google tags to operate according to the denied consent state.\n\u2611\ufe0f <strong>Global Privacy Control (GPC)<\/strong> - Detects and honors GPC preferences, regardless of the visitor's geographic location.\n\u2611\ufe0f <strong>California, US, or Worldwide Scope<\/strong> - Apply consent rules to California visitors, all US visitors, or all traffic worldwide.\n\u2611\ufe0f <strong>WordPress Multisite<\/strong> - Configure shared consent logic at the network level, while each subsite can set its own Google Tag Manager Container ID, choose Strict or Soft blocking mode, and customize its own banner settings.\n\u2611\ufe0f <strong>Self-Hosted Consent Management<\/strong> - The consent mechanism runs directly on your WordPress installation without requiring a separate external consent-management platform.<\/p>\n\n<h3>\ud83d\ude80 Privacy Policy<\/h3>\n\n<p>\u2611\ufe0f Stores the visitor\u2019s consent choice in a cookie. It does not store personal data, and the cookie expires after 365 days by default.\n\u2611\ufe0f Uses Cloudflare geolocation headers or a configured external geo-IP API to determine consent scope. When the external geo-IP API is used, the visitor\u2019s IP address is sent to that service for geolocation. The plugin does not intentionally store the visitor\u2019s raw IP address as a permanent setting.\n\u2611\ufe0f Runs on your WordPress site. The plugin does not send data to the plugin developer.\n\u2611\ufe0f Sends Google Consent Mode signals based on visitor consent choices so Google tags configured by the site administrator can respond according to the selected consent state.<\/p>\n\n<h3>External Services<\/h3>\n\n<h3>Google Tag Manager<\/h3>\n\n<p>This plugin can connect to Google Tag Manager (GTM) to load and manage tags configured by the site administrator.<\/p>\n\n<p>\u2611\ufe0f Service:\nGoogle Tag Manager\n<a href=\"https:\/\/www.googletagmanager.com\/\">https:\/\/www.googletagmanager.com\/<\/a><\/p>\n\n<p>\u2611\ufe0f Purpose:\nGTM loads and manages tags configured by the site administrator, which may include Google Analytics, Google Ads, and other third-party services.<\/p>\n\n<p>\u2611\ufe0f Data sent:\nWhen GTM is loaded, the visitor's browser connects to Google's servers and may send standard web request information such as IP address, browser\/device information, requested URL, and request metadata. GTM may also process consent signals and information associated with tags configured in the container.<\/p>\n\n<p>\u2611\ufe0f When used:\nGTM is loaded only when a container ID is configured and the plugin's consent\/blocking settings allow it. In Strict Mode, loading is delayed until the applicable consent condition is satisfied. In Soft Mode, GTM is loaded after the configured Consent Mode defaults are established.<\/p>\n\n<p>When JavaScript is disabled, the plugin may use the standard GTM noscript iframe fallback.<\/p>\n\n<p>\u2611\ufe0f Terms:\n<a href=\"https:\/\/www.google.com\/intl\/en\/policies\/terms\/\">https:\/\/www.google.com\/intl\/en\/policies\/terms\/<\/a><\/p>\n\n<p>\u2611\ufe0f Privacy:\n<a href=\"https:\/\/policies.google.com\/privacy\/\">https:\/\/policies.google.com\/privacy\/<\/a><\/p>\n\n<p>\u2611\ufe0f Additional GTM privacy information:\n<a href=\"https:\/\/support.google.com\/tagmanager\/answer\/9323295\">https:\/\/support.google.com\/tagmanager\/answer\/9323295<\/a><\/p>\n\n<h3>IP Geolocation API<\/h3>\n\n<p>This plugin can use an external IP geolocation service to determine a visitor's country or region for consent-scope detection.<\/p>\n\n<p>\u2611\ufe0f Service:\nIPAPI by Kloudend, Inc.\n<a href=\"https:\/\/ipapi.co\/\">https:\/\/ipapi.co\/<\/a><\/p>\n\n<p>\u2611\ufe0f Purpose:\nThe service determines geographic information such as country and region\/state so the plugin can determine the applicable consent scope.<\/p>\n\n<p>\u2611\ufe0f Data sent:\nWhen the geo-IP API is used, the visitor's IP address is sent to the configured API endpoint. The service may return geographic information such as country and region.<\/p>\n\n<p>\u2611\ufe0f When used:\nThe plugin normally uses Cloudflare geolocation headers when configured. If a US country code is available but the required region information is missing, the configured geo-IP API may be used as a fallback. The administrator can also select an external geo-IP API provider directly.<\/p>\n\n<p>Results are cached server-side for the configured cache duration.<\/p>\n\n<p>\u2611\ufe0f Default endpoint:\n<a href=\"https:\/\/ipapi.co\/{ip}\/json\/\">https:\/\/ipapi.co\/{ip}\/json\/<\/a><\/p>\n\n<p>The administrator may configure a different geo-IP API endpoint.<\/p>\n\n<p>\u2611\ufe0f Terms:\n<a href=\"https:\/\/ipapi.co\/terms\/\">https:\/\/ipapi.co\/terms\/<\/a><\/p>\n\n<p>\u2611\ufe0f Privacy:\n<a href=\"https:\/\/ipapi.co\/privacy\/\">https:\/\/ipapi.co\/privacy\/<\/a><\/p>\n\n<p>The site administrator is responsible for reviewing the privacy, consent, and data-processing requirements applicable to services configured on their website. This plugin provides technical consent-management functionality and does not provide legal advice or guarantee regulatory compliance.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Navigate to WordPress <strong>Admin \u2192 Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Click <strong>Upload Plugin<\/strong> and select the plugin ZIP file.<\/li>\n<li>Click <strong>Install Now<\/strong> to begin the installation.<\/li>\n<li>Once installed, click <strong>Activate Plugin<\/strong>.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20global%20privacy%20control%20%28gpc%29%20override%20my%20configured%20scope%3F\"><h3>Does Global Privacy Control (GPC) override my configured scope?<\/h3><\/dt>\n<dd><p>Yes. If a visitor's browser sends a GPC signal, they are always treated as denied for both Analytics and Advertising, regardless of your configured scope (California, all US, or worldwide).<\/p><\/dd>\n<dt id=\"can%20each%20subsite%20in%20my%20network%20use%20a%20different%20google%20tag%20manager%20container%3F\"><h3>Can each subsite in my network use a different Google Tag Manager container?<\/h3><\/dt>\n<dd><p>Yes. Every subsite sets its own GTM Container ID and its own Strict or Soft blocking mode. Consent scope and GPC handling are configured once at the network level and apply to all subsites.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20strict%20and%20soft%20mode%3F\"><h3>What's the difference between Strict and Soft mode?<\/h3><\/dt>\n<dd><p>In Strict mode, the GTM container does not load at all until the visitor grants at least one category of consent. In Soft mode, GTM loads immediately, and Consent Mode's default signals restrict how Google tags behave until consent is granted.<\/p><\/dd>\n<dt id=\"where%20is%20a%20visitor%27s%20consent%20decision%20stored%3F\"><h3>Where is a visitor's consent decision stored?<\/h3><\/dt>\n<dd><p>In a cookie on the visitor's browser, along with being pushed to Google's consent signals via gtag('consent', 'update', ...) so GTM, GA4, and Google Ads tags can respond to it in real time.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20make%20my%20site%20fully%20ccpa%20or%20cpra%20compliant%20on%20its%20own%3F\"><h3>Does this plugin make my site fully CCPA or CPRA compliant on its own?<\/h3><\/dt>\n<dd><p>No. It handles the technical consent-gating mechanism only. You are still responsible for your Privacy Policy language and for any account-level settings on the Google Ads\/Analytics side. This is not legal advice - confirm your specific obligations with legal counsel.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved the plugin user interface.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release of the plugin.<\/li>\n<\/ul>","raw_excerpt":"Display a consent banner and manage Google Consent Mode v2 for Google Analytics, Ads, and GTM, with CCPA\/CPRA, GPC, and Multisite support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364863","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=364863"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ibsofts"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364863"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364863"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364863"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364863"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364863"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}