{"id":367969,"date":"2026-09-15T21:37:43","date_gmt":"2026-09-15T21:37:43","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/brambyl\/"},"modified":"2026-09-17T01:58:39","modified_gmt":"2026-09-17T01:58:39","slug":"brambyl","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/brambyl\/","author":23565065,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.2","stable_tag":"1.4.2","tested":"7.1","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Brambyl","header_author":"Brambyl","header_description":"WordPress Search Console diagnostics with repair tools for common indexing issues. Detects sitemap problems, broken canonicals, indexing gaps, and position regressions. PRO addon adds repairs with rollback.","assets_banners_color":"6f339b","last_updated":"2026-09-17 01:58:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/brambyl.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":78,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.4.1":{"tag":"1.4.1","author":"brambyl","date":"2026-09-16 11:18:58","revision":3698429},"1.4.2":{"tag":"1.4.2","author":"brambyl","date":"2026-09-17 01:58:39","revision":3699424}},"upgrade_notice":{"1.1.0":"<p>Adds detection + repair tools for canonical-redirect loops, stale postmeta canonicals, and crawler IP blocks. Also fixes server-side self-fetch false negatives on ModSecurity hosts.<\/p>","1.0.0":"<p>First release! Install and connect your Google Search Console to start diagnosing and fixing SEO issues automatically.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3698426,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3698426,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3698426,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.1","1.4.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[6363,46987,10557,186,1557],"plugin_category":[55],"plugin_contributors":[280957],"plugin_business_model":[],"class_list":["post-367969","plugin","type-plugin","status-publish","hentry","plugin_tags-canonical","plugin_tags-google-search-console","plugin_tags-indexing","plugin_tags-seo","plugin_tags-sitemap","plugin_category-seo-and-marketing","plugin_contributors-brambyl","plugin_committers-brambyl"],"banners":{"banner":"https:\/\/ps.w.org\/brambyl\/assets\/banner-772x250.png?rev=3698426","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/brambyl\/assets\/icon-128x128.png?rev=3698426","icon_2x":"https:\/\/ps.w.org\/brambyl\/assets\/icon-256x256.png?rev=3698426","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Brambyl detects common indexing issues in WordPress and provides repair tools in the same dashboard.<\/p>\n\n<p><strong>Free Features:<\/strong><\/p>\n\n<ul>\n<li>Connect Google Search Console via OAuth (secure, read-only)<\/li>\n<li>Full diagnostic dashboard with health score (0-100)<\/li>\n<li>17 automated checks detecting sitemap issues, broken canonicals, indexing gaps, position regression, and more<\/li>\n<li>Daily monitoring with admin bar health indicator<\/li>\n<li>Top queries table (clicks, impressions, position, CTR)<\/li>\n<li>Compatible with major SEO plugins<\/li>\n<\/ul>\n\n<p><strong>PRO addon (95 USD\/year at brambyl.com):<\/strong><\/p>\n\n<p>Repair tools are provided by the separate Brambyl PRO addon \u2014 with automatic rollback, IndexNow push to Bing\/Yandex\/DuckDuckGo, SEO drift detection, weekly email reports, position comparison, and fix history with revert. The addon is purchased and downloaded from https:\/\/brambyl.com\/.<\/p>\n\n<p><strong>What makes Brambyl different:<\/strong><\/p>\n\n<p>Brambyl detects sitemap issues, broken canonicals, and indexing gaps \u2014 and provides repair tools in the same dashboard.<\/p>\n\n<h3>Privacy and Data Usage<\/h3>\n\n<p>Brambyl sends data to third-party services only for the features you use:<\/p>\n\n<ul>\n<li><strong>Google APIs (OAuth + Search Console):<\/strong> When you connect, your Google account is used for read-only Search Console API access. Your site's clicks, impressions, and position data is retrieved from Google and stored in your own WordPress database. Tokens are stored encrypted in your database. Nothing is sent to any server other than Google's.<\/li>\n<li><strong>brambyl.com (PRO addon only):<\/strong> If you install the Brambyl PRO addon and enter its license key, the key and your site's domain are sent to https:\/\/brambyl.com\/ to validate the license. This happens on license activation and periodic re-checks. The free plugin makes zero calls to brambyl.com. All diagnostics data stays on your WordPress site.<\/li>\n<li><strong>IndexNow API (PRO addon only):<\/strong> If the PRO addon is active and IndexNow is enabled, your post URLs are sent to api.indexnow.org to notify participating search engines (Bing, Yandex, DuckDuckGo, Seznam, Naver) of new or updated content.<\/li>\n<li><strong>Data storage:<\/strong> All diagnostics, fixes, and rollback data are stored in your own WordPress database (<code>wp_brambyl_*<\/code> tables). We never receive this data.<\/li>\n<\/ul>\n\n<p><strong>Installation:<\/strong><\/p>\n\n<ol>\n<li>Upload <code>brambyl.zip<\/code> to your WordPress admin (Plugins &gt; Add New &gt; Upload Plugin)<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to Tools &gt; Brambyl (or the Brambyl menu item)<\/li>\n<li>Click \"Connect Google Search Console\" and authorize with your Google account<\/li>\n<li>The plugin auto-detects your site's URL and connects to the matching Search Console property \u2014 nothing to configure<\/li>\n<li>Click \"Run Scan Now\" to see your first diagnostic report<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Google's APIs to retrieve Search Console data for your site:<\/p>\n\n<ol>\n<li><p><strong>Google OAuth 2.0 (https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth + https:\/\/oauth2.googleapis.com\/token)<\/strong>\nUsed to authenticate your Google account and obtain read-only access to your Search Console data.\nTokens are stored encrypted in your WordPress database. Google's Terms of Service: https:\/\/policies.google.com\/terms and Privacy Policy: https:\/\/policies.google.com\/privacy apply.<\/p><\/li>\n<li><p><strong>Google Search Console API (https:\/\/www.googleapis.com\/webmasters\/v3)<\/strong>\nUsed to retrieve your site's search analytics (clicks, impressions, position, CTR) and URL inspection results.\nNo data is sent to Google beyond your authentication tokens. Data is stored in your own WordPress database only.\nGoogle's Terms of Service: https:\/\/policies.google.com\/terms and Privacy Policy: https:\/\/policies.google.com\/privacy apply.<\/p><\/li>\n<li><p><strong>Google URL Inspection API (https:\/\/searchconsole.googleapis.com\/v1\/urlInspection\/index:inspect)<\/strong>\nUsed to check the indexing status of individual URLs on your site. Google's Terms of Service: https:\/\/policies.google.com\/terms and Privacy Policy: https:\/\/policies.google.com\/privacy apply.<\/p><\/li>\n<li><p><strong>IndexNow API (https:\/\/api.indexnow.org\/indexnow) (PRO addon only)<\/strong>\nUsed to notify Bing, Yandex, DuckDuckGo, Seznam, and Naver when your content is published or updated. No personal data is transmitted. Terms: https:\/\/www.indexnow.org\/terms-of-service and Privacy: https:\/\/www.indexnow.org\/privacy-policy apply.<\/p><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20modify%20my%20google%20search%20console%20data%3F\"><h3>Does this modify my Google Search Console data?<\/h3><\/dt>\n<dd><p>No. The free tier uses read-only Google Search Console API access. PRO fixes modify your WordPress database (your SEO plugin's database tables, rewrite rules) \u2014 never your Google account. Every fix generates a rollback SQL snippet before execution.<\/p><\/dd>\n<dt id=\"is%20it%20safe%3F\"><h3>Is it safe?<\/h3><\/dt>\n<dd><p>Every PRO fix:\n* Generates rollback SQL before executing\n* Stores the rollback in the fix history table\n* Shows a confirmation modal with affected row count\n* Can be reverted from the Fix History page<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20an%20seo%20plugin%3F\"><h3>Does it work without an SEO plugin?<\/h3><\/dt>\n<dd><p>Yes. Brambyl auto-detects major SEO plugins. For sites without an SEO plugin, WordPress core sitemap support is used. The diagnostic checks that read SEO plugin tables (canonicals, is_public) are skipped when no compatible plugin is detected \u2014 the remaining checks still run.<\/p><\/dd>\n<dt id=\"what%20is%20the%20sitemap%20noindex%20bug%3F\"><h3>What is the sitemap noindex bug?<\/h3><\/dt>\n<dd><p>Some SEO plugins emit an <code>X-Robots-Tag: noindex, follow<\/code> HTTP header on sitemap XML files. Google interprets this as \"don't index these sitemap URLs,\" which can prevent your pages from being discovered. This affects sites using those plugins. The free plugin detects it; the Brambyl PRO addon (brambyl.com) repairs it without file editing, survives plugin updates.<\/p><\/dd>\n<dt id=\"how%20does%20indexnow%20work%3F\"><h3>How does IndexNow work?<\/h3><\/dt>\n<dd><p>When you publish or update a post, the Brambyl PRO addon automatically sends the URL to the IndexNow API, which notifies Bing, Yandex, DuckDuckGo, Seznam, and Naver. This speeds up indexing of new and modified content without waiting for the search engines to crawl naturally.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Corrected the Contributors list to match the plugin owner's WordPress.org username.<\/li>\n<li>Added escaping annotations on internal table-name interpolations flagged by Plugin Check.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added check 18: custom post type listings missing SEO meta (detects DDF\/sync-imported inventory shipping with no title\/meta \u2014 works with major SEO plugins). Fixed SEO plugin detection path (covers multiple plugin directory layouts).<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Fixed collation mismatch in stale-postmeta-canonicals check: postmeta and Yoast indexable tables can use different collations (utf8mb4_unicode_ci vs utf8mb4_unicode_520_ci on migrated sites), causing \"Illegal mix of collations\" \u2014 the query failed silently and reported zero drift. Now uses BINARY comparison (also correct semantically for URLs, where case-only differences are real drift).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added 5 new diagnostic checks (17 total): robots.txt CSS\/JS asset blocks (critical \u2014 Googlebot can't render blocked pages), doubled canonical tags (critical \u2014 conflicting canonical signals), sitemap URL coverage vs published content (critical \u2014 stale sitemap caches hide live content from Google), dead sitemap URLs (warning \u2014 sitemap entries that don't return 200), wp-cron.php firewall reachability (critical \u2014 bad-UA firewall layers silently killing scheduled tasks).<\/li>\n<li>All five checks address bug classes found on live WordPress sites, where each caused real indexing loss.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Moved inline settings-page JavaScript to <code>assets\/js\/settings.js<\/code> and enqueued via <code>wp_enqueue_script()<\/code> + <code>wp_localize_script()<\/code> (Plugin Check inline-script rule).<\/li>\n<li>Guarded <code>brambyl_detect_seo_plugin()<\/code> with <code>function_exists('is_plugin_active')<\/code> so the daily monitor can run from WP-Cron without fataling.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Removed duplicate Author URI (same as Plugin URI) per WordPress.org directory requirement.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fixed all Plugin Check (PHPCS) errors: output escaping in dashboard\/fix-history templates and OAuth error paths.<\/li>\n<li>Replaced date() with gmdate() in data-pull date math.<\/li>\n<li>Added wp_unslash() to superglobal sanitization; switched to wp_safe_redirect().<\/li>\n<li>Reduced readme tags to 5 per directory limits.<\/li>\n<li>Query hardening: prepared statements and phpcs annotations on internal table-name interpolations.<\/li>\n<li>Architecture: PRO features (fix engine, drift detection, IndexNow, email reports, position comparison) moved to the separate Brambyl PRO addon, distributed from brambyl.com. The free plugin now ships complete, unrestricted diagnostics. Existing PRO license keys activate in the addon's license field.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Updated PRO checkout links (95 USD\/year single site, 225 USD\/year 5 sites).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>NEW check: canonical-redirect loop \u2014 detects indexable canonicals pointing at URLs that redirect back to the page (slug-rename drift) or at dead URLs (404\/410 canonical dead-ends)<\/li>\n<li>NEW check: stale postmeta canonicals \u2014 catches postmeta vs SEO-indexable canonical disagreement (the two-table drift that causes \"Page with redirect\" in the Search Console report and silent sitemap exclusion)<\/li>\n<li>NEW check: crawler IP block \u2014 detects firewall\/country-block plugins serving 403 to search-engine crawlers (site-wide 403 with text\/plain body)<\/li>\n<li>NEW fix: canonical-redirect loop repair (canonical \u2192 permalink, syncs postmeta, rollback recorded)<\/li>\n<li>NEW fix: stale postmeta canonical alignment<\/li>\n<li>All HTTP probes now send a browser User-Agent (server-side self-fetches with the default WP UA get 403'd by ModSecurity on many hosts)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Google Search Console OAuth connection<\/li>\n<li>12 diagnostic checks (sitemap noindex, null\/relative\/stale canonicals, is_public, is_robots_noindex, missing meta, robots.txt, schema, sitemap status, indexing, position regression)<\/li>\n<li>Health score (0-100)<\/li>\n<li>Daily monitoring with admin bar indicator<\/li>\n<li>PRO: repair tools with rollback<\/li>\n<li>PRO: IndexNow push<\/li>\n<li>PRO: SEO drift detection<\/li>\n<li>PRO: weekly email reports<\/li>\n<li>PRO: position comparison<\/li>\n<li>SEO plugin compatibility<\/li>\n<\/ul>","raw_excerpt":"WordPress Search Console diagnostics with repair tools for common indexing issues.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/367969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=367969"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brambyl"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=367969"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=367969"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=367969"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=367969"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=367969"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=367969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}