{"id":354001,"date":"2026-08-17T11:18:48","date_gmt":"2026-08-17T11:18:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/brand-voice-checker\/"},"modified":"2026-08-17T11:18:36","modified_gmt":"2026-08-17T11:18:36","slug":"brand-voice","status":"publish","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/brand-voice\/","author":23202596,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Brand Voice Checker","header_author":"The Lost Agency BV","header_description":"Check posts and pages for claims & compliance risk and brand voice before you publish, using the Brand Voice Generator.","assets_banners_color":"017777","last_updated":"2026-08-17 11:18:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/davidiwanow.com\/tools\/brand-voice\/connect-wordpress.php","header_author_uri":"https:\/\/davidiwanow.com\/tools\/brand-voice\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"davidiwanow","date":"2026-08-17 11:18:36"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3651012,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3651012,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3651012,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3651012,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[156608,14361,529,8485,7143],"plugin_category":[],"plugin_contributors":[276093],"plugin_business_model":[],"class_list":["post-354001","plugin","type-plugin","status-publish","hentry","plugin_tags-claims","plugin_tags-compliance","plugin_tags-content","plugin_tags-editorial","plugin_tags-publishing","plugin_contributors-davidiwanow","plugin_committers-davidiwanow"],"banners":{"banner":"https:\/\/ps.w.org\/brand-voice\/assets\/banner-772x250.png?rev=3651012","banner_2x":"https:\/\/ps.w.org\/brand-voice\/assets\/banner-1544x500.png?rev=3651012","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/brand-voice\/assets\/icon-128x128.png?rev=3651012","icon_2x":"https:\/\/ps.w.org\/brand-voice\/assets\/icon-256x256.png?rev=3651012","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Brand Voice Checker adds two checks to the WordPress editor, in a panel beside\nyour post:<\/p>\n\n<ul>\n<li><strong>Check compliance<\/strong> \u2014 scans the copy for advertising-claim risk: superlatives,\nguarantees, health and environmental claims, price and comparison claims,\nfree-from and ingredient claims. Each flag names the phrase, the rule it\ntrips, and a suggested rewrite.<\/li>\n<li><strong>Check brand voice<\/strong> \u2014 scores the copy against a brand voice guide you\ngenerated for your own domain, with per-dimension detail.<\/li>\n<\/ul>\n\n<p>Results appear in the panel. <strong>The plugin never edits your content<\/strong> \u2014 you\ndecide what to change.<\/p>\n\n<h4>The publish gate<\/h4>\n\n<p>Unlike a checker that only advises, this plugin can gate publishing. Three\nmodes, in <strong>Settings \u2192 Brand Voice Checker<\/strong>:<\/p>\n\n<ul>\n<li><strong>Off<\/strong> \u2014 checks are available; nothing is ever blocked.<\/li>\n<li><strong>Warn<\/strong> (default) \u2014 the reason a post would fail is shown in the plugin's\neditor panel. Publishing proceeds.<\/li>\n<li><strong>Block<\/strong> \u2014 publishing reverts the post to draft, and the reason is shown.<\/li>\n<\/ul>\n\n<p>Content fails the gate when it has never been checked, when it changed since\nthe last check, when the last compliance verdict was <code>hold<\/code>, or when the last\nscore is below the minimum you configure.<\/p>\n\n<p>Three properties are deliberate:<\/p>\n\n<ul>\n<li><strong>The gate reads stored post meta, never the network.<\/strong> It cannot fail open\non a timeout, and publishing never costs a credit.<\/li>\n<li><strong>Blocking happens server-side<\/strong>, on <code>wp_insert_post_data<\/code>, not in the\nbrowser. A client-side gate is only a suggestion.<\/li>\n<li><strong>Administrators are exempt<\/strong> from blocking, so a site can never lock itself\nout of publishing.<\/li>\n<\/ul>\n\n<p>Start on <strong>Warn<\/strong>.<\/p>\n\n<h4>Account and credits<\/h4>\n\n<p>The checks run on the Brand Voice Generator service and need an account there.\nEach check costs one credit from the connected account's balance. You connect\nthe site by pasting a connection key into the plugin's settings; the key is\nstored in WordPress options and is <strong>never<\/strong> exposed to the browser \u2014 the\neditor calls this plugin's own REST route, and WordPress calls the service\nserver-side.<\/p>\n\n<p>The key is site-wide: everyone who edits this site spends the connected\naccount's credits.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on the <strong>Brand Voice Generator<\/strong>, a third-party service\noperated by The Lost Agency BV, to perform the checks. The plugin cannot check\nanything without it.<\/p>\n\n<p><strong>What is sent, and when.<\/strong> Nothing is sent automatically. Data leaves your\nsite only when a logged-in editor presses <strong>Check compliance<\/strong> or <strong>Check brand\nvoice<\/strong> in the editor panel. At that moment the plugin sends, from your server\nto <code>https:\/\/davidiwanow.com\/tools\/brand-voice\/api-proxy.php<\/code>:<\/p>\n\n<ul>\n<li>the text of the post being checked \u2014 HTML tags stripped, shortcodes removed\nrather than rendered, and truncated to 8,000 characters;<\/li>\n<li>your connection key, which identifies the account to charge;<\/li>\n<li>for a brand voice check, the brand voice domain configured in settings;<\/li>\n<li>for a compliance check, the fixed market (<code>GLOBAL<\/code>) and audience (<code>b2c<\/code>)\nvalues the plugin uses.<\/li>\n<\/ul>\n\n<p>No post IDs, usernames, email addresses, IP addresses or other WordPress data\nare sent. The service returns the report, which the plugin displays; a summary\nof it (score, band, verdict, flag count, and a hash of the checked text) is\nstored in post meta so the publish gate can work offline.<\/p>\n\n<ul>\n<li>Service: <a href=\"https:\/\/davidiwanow.com\/tools\/brand-voice\/\">Brand Voice Generator<\/a><\/li>\n<li>Terms of service: <a href=\"https:\/\/davidiwanow.com\/tools\/brand-voice\/terms.html\">https:\/\/davidiwanow.com\/tools\/brand-voice\/terms.html<\/a><\/li>\n<li>Privacy policy: <a href=\"https:\/\/davidiwanow.com\/tools\/brand-voice\/privacy.html\">https:\/\/davidiwanow.com\/tools\/brand-voice\/privacy.html<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>Settings \u2192 Brand Voice Checker<\/strong>.<\/li>\n<li>Create a connection key at\n<a href=\"https:\/\/davidiwanow.com\/tools\/brand-voice\/connect-wordpress.php\">connect-wordpress<\/a>\nwhile signed in to your Brand Voice Generator account, and paste it in.<\/li>\n<li>Optionally set the brand voice domain you generated a guide for. Leave it\nempty to use compliance checks only.<\/li>\n<li>Choose a publish-gate mode. <strong>Warn<\/strong> is the default.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20on%20an%20external%20service%3F\"><h3>Do I need an account on an external service?<\/h3><\/dt>\n<dd><p>Yes. The checks run on the Brand Voice Generator service and consume credits\nfrom the account whose connection key you paste in. See the <strong>External\nservices<\/strong> section for exactly what is sent and when.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20change%20my%20content%3F\"><h3>Does the plugin change my content?<\/h3><\/dt>\n<dd><p>No. It reports; you edit. It never rewrites, inserts or removes anything in a\npost.<\/p><\/dd>\n<dt id=\"can%20it%20lock%20me%20out%20of%20publishing%3F\"><h3>Can it lock me out of publishing?<\/h3><\/dt>\n<dd><p>No. Blocking never applies to users who can <code>manage_options<\/code>, so an\nadministrator can always publish, and switching the gate to <strong>Off<\/strong> or <strong>Warn<\/strong>\nremoves it entirely.<\/p><\/dd>\n<dt id=\"does%20publishing%20cost%20a%20credit%3F\"><h3>Does publishing cost a credit?<\/h3><\/dt>\n<dd><p>No. Only pressing a check button calls the service. The publish gate reads the\nlast check stored in post meta and never touches the network.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20shortcodes%3F\"><h3>What happens to shortcodes?<\/h3><\/dt>\n<dd><p>They are stripped before a check, not rendered. Rendering them would execute\narbitrary plugin code during an editor request.<\/p><\/dd>\n<dt id=\"which%20post%20types%20does%20it%20work%20on%3F\"><h3>Which post types does it work on?<\/h3><\/dt>\n<dd><p>Every public post type, including posts and pages.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Prefixed every declaration, option, post meta key, transient, REST namespace\nand script handle with <code>branvoch<\/code>.<\/li>\n<li>Gate warnings now render in the plugin's own editor panel instead of an admin\nnotice. The only remaining notice answers a publish the plugin just blocked.<\/li>\n<li>Added the readme, the external-service disclosure, and translation support.<\/li>\n<li>Added an uninstall routine that removes the plugin's options and post meta.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First submission: editor checks, publish gate, settings screen.<\/li>\n<\/ul>","raw_excerpt":"Check posts and pages for claims &amp; compliance risk and brand voice before you publish, using the Brand Voice Generator.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354001"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/davidiwanow"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354001"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354001"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354001"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354001"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354001"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}