{"id":394478,"date":"2026-11-07T15:49:01","date_gmt":"2026-11-07T15:49:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/izini-consent-banner\/"},"modified":"2026-11-07T15:48:30","modified_gmt":"2026-11-07T15:48:30","slug":"izini","status":"publish","type":"plugin","link":"https:\/\/nn.wordpress.org\/plugins\/izini\/","author":23594187,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Izini Consent Banner","header_author":"Izini","header_description":"Adds your Izini consent banner to every page of your site, holds back the scripts you choose until visitors agree, and gives visitors a \"Privacy choices\" link. Connect it to your Izini project and you are done.","assets_banners_color":"708981","last_updated":"2026-11-07 15:48:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.izini.ng","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"izini","date":"2026-11-07 15:48:30","revision":3789846}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3789845,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3789845,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3790107,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3790107,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"izini\/privacy-choices":{"name":"izini\/privacy-choices","title":"Privacy choices"}},"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[20011,20272,291373,5492,396],"plugin_category":[54],"plugin_contributors":[291374],"plugin_business_model":[],"class_list":["post-394478","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-consent","plugin_tags-cookie-banner","plugin_tags-ndpa","plugin_tags-nigeria","plugin_tags-privacy","plugin_category-security-and-spam-protection","plugin_contributors-izini","plugin_committers-izini"],"banners":{"banner":"https:\/\/ps.w.org\/izini\/assets\/banner-772x250.png?rev=3790107","banner_2x":"https:\/\/ps.w.org\/izini\/assets\/banner-1544x500.png?rev=3790107","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/izini\/assets\/icon-128x128.png?rev=3789845","icon_2x":"https:\/\/ps.w.org\/izini\/assets\/icon-256x256.png?rev=3789845","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Izini is a data protection compliance service for Nigerian organisations. This plugin connects your WordPress site to your Izini project:<\/p>\n\n<ul>\n<li>the Izini consent banner on every public page, loaded first, with Google Consent Mode defaults set to \"denied\" until the visitor chooses;<\/li>\n<li>scripts you choose (from your theme, plugins or pasted snippets such as a Facebook Pixel or Google tag) held back until the visitor accepts their category: scan your home page, pick a category for each script, done (WordPress 6.9 or later);<\/li>\n<li>a \"Privacy choices\" link (a block, the shortcode <code>[izini_privacy_choices]<\/code>, or a menu link to <code>#izini-preferences<\/code>) that reopens the banner's preferences;<\/li>\n<li>an Izini menu in wp-admin with the connection, links into your Izini dashboard (banner design, cookie scanner, consent statistics, requests from visitors) and the settings;<\/li>\n<li>if the WP Consent API plugin is active, the visitor's choice is passed to it, so plugins that read it wait for consent;<\/li>\n<li>when an Izini admin, owner or Privacy Engineer connects the site: consent totals for the last 30 days (counts only) on the Izini page and the WordPress dashboard, a cookie scan of this site you can start from WordPress, and your scripts and rules on your project's Cookies page in Izini, with the cookies well-known trackers' vendors document for them.<\/li>\n<\/ul>\n\n<p>The banner's wording, categories, languages and colours are set in your Izini dashboard, not in WordPress.<\/p>\n\n<p>You need an Izini account and a project. The plugin's main setting is the project code, which is public: it appears in your pages' source anyway. It stores no password. When the site is connected for statistics and scans, it also keeps a site token: a setting that is not loaded on public pages and is only ever sent to Izini, from this site's server. The token reaches counts and scans of this site, never personal data; requests from people stay in Izini, behind its sign-in.<\/p>\n\n<p>The banner also holds back scripts it recognises from your project's cookie categories (set in Izini, Consent \u203a Cookies). Scripts you have not given a category, and that the banner does not recognise, are not held back; Google tags and plugins that read the WP Consent API wait for the choice on their own.<\/p>\n\n<h3>External service<\/h3>\n\n<p>This plugin relies on Izini, a third-party service run by Izini RegTech Ltd (Lagos, Nigeria). Nothing is loaded or sent until a site administrator saves a project code.<\/p>\n\n<ul>\n<li><strong>On every public page<\/strong>, the visitor's browser loads the banner from https:\/\/cdn.izini.ng and fetches the project's banner settings from it. Like any web request, this reveals the visitor's IP address to Izini; it is used to limit abuse and is kept only in hashed form for that.<\/li>\n<li><strong>When the visitor makes or changes a choice<\/strong>, Izini records: a random ID the banner keeps in the visitor's browser (the <code>izini_user_id<\/code> cookie and local storage), the choices, the time, the language, the browser family and operating system, and the country and region worked out from the connection. No name or email address.<\/li>\n<li><strong>From the banner's preferences<\/strong>, a visitor can download the consent choices recorded for their browser, or delete them.<\/li>\n<li><strong>At most once a day per browser<\/strong>, the banner sends Izini the names (never the contents) of cookies on your site that your project's cookie list does not have yet, so you can review them in Izini. Nothing about the visitor is sent with them.<\/li>\n<li><strong>When an administrator presses \"Connect with Izini\"<\/strong>, their browser goes to https:\/\/app.izini.ng with this site's address, a one-time code the plugin keeps for 20 minutes and a check value (the SHA-256 of a secret this site keeps). They sign in to Izini, choose a project, and come back with that project's public code. If they are an Izini admin, owner or Privacy Engineer, a one-time grant comes back too, and this site's server exchanges it with the secret at https:\/\/app.izini.ng\/api\/v1\/site\/token for the site token. No password reaches this site.<\/li>\n<li><strong>With a site token<\/strong>, this site's server calls https:\/\/app.izini.ng\/api\/v1\/site\/ with it: for the project's consent totals and where the banner was last seen (when an administrator opens the Izini page or the WordPress dashboard, at most every ten minutes), for the latest cookie scan (on the Izini page), and to start a scan when an administrator presses \"Scan this site now\" (Izini then visits this site's home page). A token unused for 90 days stops working.<\/li>\n<li><strong>With a site token, this site also sends Izini its scripts and rules<\/strong>: the file addresses (host and path, no query string) of the scripts seen on the site or found by \"Scan the home page\", the start of any inline script an administrator gave a rule, and the category each waits for. It sends them when a rule changes, after a scan, when the site is connected, and otherwise at most once a day when an administrator opens the Scripts tab. Izini drops anything that looks like a personal detail before storing it.<\/li>\n<li><strong>When an administrator turns statistics off, connects another project, or deletes the plugin<\/strong>, this site asks Izini to revoke its token.<\/li>\n<li><strong>When an administrator connects a project, presses \"Check the connection\" or opens the Scripts tab<\/strong>, this site asks https:\/\/cdn.izini.ng for the project's name and categories.<\/li>\n<li><strong>\"Scan the home page\"<\/strong> reads this site's own home page; nothing is sent to Izini.<\/li>\n<\/ul>\n\n<p>Izini Terms: https:\/\/app.izini.ng\/legal\/terms\nIzini privacy policy: https:\/\/www.izini.ng\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>In WordPress, open the Izini menu and press \"Connect with Izini\": sign in to Izini, choose the project, and you are sent back with it connected. Or paste the project code from Izini (Consent \u203a Installation) and press Save.<\/li>\n<li>On the Scripts tab, scan your home page and give each tracking script a category.<\/li>\n<li>Add a \"Privacy choices\" link to your footer or menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. The banner loads on shop, cart and checkout pages like any other page.<\/p><\/dd>\n<dt id=\"i%20already%20set%20google%20consent%20mode%20defaults%20myself\"><h3>I already set Google Consent Mode defaults myself<\/h3><\/dt>\n<dd><p>Switch them off in Izini \u203a Advanced (or with <code>add_filter( 'izini_consent_mode_defaults', '__return_false' );<\/code>), and the plugin will not print its own.<\/p><\/dd>\n<dt id=\"how%20do%20i%20remove%20the%20banner%3F\"><h3>How do I remove the banner?<\/h3><\/dt>\n<dd><p>Empty the project code and save, or deactivate the plugin. Deleting the plugin revokes its site token in Izini and removes its settings.<\/p><\/dd>\n<dt id=\"why%20do%20i%20not%20see%20statistics%20in%20wordpress%3F\"><h3>Why do I not see statistics in WordPress?<\/h3><\/dt>\n<dd><p>They need the site to be connected by an Izini admin, owner or Privacy Engineer. Press \"Connect with Izini\" on the Overview tab and sign in as one of them. Anyone else connects the banner only.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>With statistics and scans on, the plugin also sends Izini its scripts and rules, so your project's Cookies page shows each script, the category it waits for, and for well-known trackers the cookies their vendors document. Izini flags a known tracker that runs before the visitor chooses, and a cookie listed in another category than its script waits for.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Consent totals for the last 30 days on the Izini page and the WordPress dashboard, and a cookie scan of this site you can start from WordPress, once an Izini admin, owner or Privacy Engineer connects the site. The site keeps a token for this, obtained without it ever passing through the browser; it reaches counts and scans only.<\/li>\n<li>Turning statistics off, connecting another project or deleting the plugin revokes the token in Izini.<\/li>\n<li>Deleting the plugin now removes all its settings, not only the project code.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Holding back scripts now filters WordPress's own template output buffer and reads tags with the HTML API; the plugin opens no output buffer of its own. This needs WordPress 6.9 or later: on older versions the banner works as before, scripts are not held back, and the Scripts tab says so.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Code review: the settings redirect checks the settings form's nonce; notes on the checks that need none (the redirect from the old Settings page, the Connect with Izini return, which has its own one-time state, and WordPress's own loopback filter).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Privacy link tab: what the link is for and why, how it differs from a privacy policy, step-by-step guides for menus, block themes, Elementor and widget areas (the one matching your site opens first), Copy buttons, and how to check it works.<\/li>\n<li>Advanced tab: Google Consent Mode explained in plain words, with what starts denied and when to switch it off; the WP Consent API status; what to do when a change does not show (caches, private windows); notes for developers.<\/li>\n<li>Scripts tab: \"Which category should I choose?\" with examples for your project's categories.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fix: a rule for inline code now holds back scripts written over several lines. The Scripts tab shows them on one line, and the rule saved from that line did not match the script as the page prints it.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>The Izini look: the Izini logo and colours, a header with the connection status, cards and tiles, and the Izini mark in the admin menu.<\/li>\n<li>The Scripts list leaves out WordPress's own admin-bar scripts.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Its own Izini menu (Settings \u203a Izini still works), and a notice after activation.<\/li>\n<li>Scripts tab: scan the home page and hold back the scripts you choose until visitors accept their category.<\/li>\n<li>Links into the Izini dashboard for this project.<\/li>\n<li>Advanced tab: switch the Google Consent Mode defaults on or off.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: the banner on every page, Settings \u203a Izini with \"Connect with Izini\" or a pasted code, the \"Privacy choices\" block, shortcode and menu link, and the WP Consent API bridge.<\/li>\n<\/ul>","raw_excerpt":"Adds your Izini consent banner to every page and a \"Privacy choices\" link, for businesses using Izini under the Nigeria Data Protection Act.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=394478"}],"author":[{"embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/izini"}],"wp:attachment":[{"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394478"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394478"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394478"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394478"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394478"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}