{"id":357678,"date":"2026-08-27T10:22:50","date_gmt":"2026-08-27T10:22:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zoofi-ads-txt-adsense-helper\/"},"modified":"2026-08-28T15:06:31","modified_gmt":"2026-08-28T15:06:31","slug":"zoofi-ads-txt-helper-for-adsense","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/zoofi-ads-txt-helper-for-adsense\/","author":23557916,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.6","stable_tag":"1.1.6","tested":"7.1","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Zoofi Ads.txt Helper for AdSense","header_author":"zoofi","header_description":"Set up and diagnose Google AdSense publisher code and ads.txt from one publisher ID.","assets_banners_color":"dedfe4","last_updated":"2026-08-28 15:06:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/zoofiai.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":77,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.4":{"tag":"1.1.4","author":"asifshaikhtsn","date":"2026-08-27 10:22:24","revision":3668579},"1.1.5":{"tag":"1.1.5","author":"zoofiai","date":"2026-08-28 14:47:27","revision":3670547},"1.1.6":{"tag":"1.1.6","author":"zoofiai","date":"2026-08-28 15:06:31","revision":3670584}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3670546,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3670546,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3668614,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3668614,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.4","1.1.5","1.1.6"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[321,148428,368,23519,277819],"plugin_category":[35],"plugin_contributors":[278086],"plugin_business_model":[],"class_list":["post-357678","plugin","type-plugin","status-publish","hentry","plugin_tags-ads","plugin_tags-ads-txt","plugin_tags-advertising","plugin_tags-diagnostics","plugin_tags-publisher-id","plugin_category-advertising","plugin_contributors-zoofiai","plugin_committers-asifshaikhtsn","plugin_committers-zoofiai"],"banners":{"banner":"https:\/\/ps.w.org\/zoofi-ads-txt-helper-for-adsense\/assets\/banner-772x250.png?rev=3668614","banner_2x":"https:\/\/ps.w.org\/zoofi-ads-txt-helper-for-adsense\/assets\/banner-1544x500.png?rev=3668614","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zoofi-ads-txt-helper-for-adsense\/assets\/icon-128x128.png?rev=3670546","icon_2x":"https:\/\/ps.w.org\/zoofi-ads-txt-helper-for-adsense\/assets\/icon-256x256.png?rev=3670546","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Zoofi Ads.txt Helper for AdSense gives site administrators one clear workflow for adding and checking Google AdSense publisher code and ads.txt without editing theme files or managing a physical ads.txt file.<\/p>\n\n<p>Enter a valid publisher ID once. The plugin then:<\/p>\n\n<ul>\n<li>Normalizes <code>ca-pub-1234567890123456<\/code>, <code>pub-1234567890123456<\/code>, or the 16 digits alone.<\/li>\n<li>Loads the standard Google AdSense site-wide publisher script in the document head through the WordPress Script API.<\/li>\n<li>Serves the matching Google <code>DIRECT<\/code> record at the site's root <code>\/ads.txt<\/code> URL.<\/li>\n<li>Shows the exact generated ads.txt record in WordPress admin.<\/li>\n<li>Provides an administrator-triggered live diagnostic that fetches only the site's own public homepage and <code>\/ads.txt<\/code> URL.<\/li>\n<li>Detects missing, duplicate, or mismatched Google publisher loaders in public homepage HTML.<\/li>\n<li>Verifies that <code>\/ads.txt<\/code> is publicly reachable and contains the expected publisher record.<\/li>\n<li>Flags a physical root-level <code>ads.txt<\/code> file that may override WordPress rewrites.<\/li>\n<li>Flags active plugins commonly used for advertising or header-code insertion as potential overlap signals.<\/li>\n<li>Stores no analytics and sends no configuration data to Zoofi.<\/li>\n<li>Shows administrators an optional review reminder after three days of configured use, with Maybe Later and permanent opt-out controls.<\/li>\n<\/ul>\n\n<p>Potential plugin overlap is informational only. The plugin does not disable, edit, or reconfigure another plugin.<\/p>\n\n<p>The live diagnostic runs only when an administrator clicks <strong>Run Live Diagnostics<\/strong>. Diagnostic results are cached temporarily and cleared after publisher settings change.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin integrates with Google advertising services only after an administrator saves a publisher ID.<\/p>\n\n<p>On public front-end pages it loads the Google AdSense JavaScript library from <code>https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js<\/code>. This request is necessary to use the Google publisher loader configured by the plugin. The request is made directly by the visitor's browser to Google. Google may process visitor data according to its terms, privacy practices, cookies, consent requirements, and advertising policies.<\/p>\n\n<p>The plugin also makes administrator-triggered HTTP requests to the WordPress site's own homepage and <code>\/ads.txt<\/code> URL for diagnostics. Those self-requests are not sent to Zoofi.<\/p>\n\n<p>Google AdSense Terms and Conditions: https:\/\/www.google.com\/adsense\/new\/localized-terms\nGoogle Privacy Policy: https:\/\/policies.google.com\/privacy\nGoogle AdSense Program policies: https:\/\/support.google.com\/adsense\/answer\/48182<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Zoofi Ads.txt Helper for AdSense does not create visitor profiles, analytics records, or tracking cookies of its own. Once configured, it loads Google's publisher script on public pages; Google may process visitor data according to Google's own terms and privacy policy. Site owners are responsible for any consent mechanism, privacy notice, or regional compliance required for their use of Google advertising services.<\/p>\n\n<p>The plugin stores one WordPress option containing the normalized publisher ID and one temporary diagnostic cache generated only after an administrator requests a live check.\nIt also stores local WordPress options for the review-reminder start time, snooze time, and permanent dismissal preference. These values are not sent to Zoofi.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>zoofi-ads-txt-helper-for-adsense<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate Zoofi Ads.txt Helper for AdSense.<\/li>\n<li>Go to Settings &gt; Zoofi Ads.txt Helper for AdSense.<\/li>\n<li>Enter your Google publisher ID.<\/li>\n<li>Click Save &amp; Apply.<\/li>\n<li>Click Run Live Diagnostics to verify the public installation.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20publisher%20id%20formats%20are%20accepted%3F\"><h3>Which publisher ID formats are accepted?<\/h3><\/dt>\n<dd><p>You can enter <code>ca-pub-1234567890123456<\/code>, <code>pub-1234567890123456<\/code>, or only the 16 numeric digits. The plugin stores the normalized <code>pub-<\/code> form.<\/p><\/dd>\n<dt id=\"does%20this%20edit%20header.php%3F\"><h3>Does this edit header.php?<\/h3><\/dt>\n<dd><p>No. The Google publisher loader is added through the WordPress Script API, so theme files are not modified.<\/p><\/dd>\n<dt id=\"does%20this%20write%20a%20physical%20ads.txt%20file%3F\"><h3>Does this write a physical ads.txt file?<\/h3><\/dt>\n<dd><p>No. The plugin serves a virtual <code>\/ads.txt<\/code> response through WordPress rewrites. A physical root-level <code>ads.txt<\/code> file may be served by the web server before WordPress; the plugin reports that condition in diagnostics instead of overwriting the file.<\/p><\/dd>\n<dt id=\"what%20do%20the%20diagnostics%20check%3F\"><h3>What do the diagnostics check?<\/h3><\/dt>\n<dd><p>When an administrator explicitly runs diagnostics, the plugin requests the site's own public homepage and <code>\/ads.txt<\/code> URL. It checks HTTP availability, the expected publisher ID, duplicate Google publisher loaders, mismatched publisher IDs, the expected Google DIRECT ads.txt row, physical ads.txt conflicts, and common plugin-overlap signals.<\/p><\/dd>\n<dt id=\"does%20the%20overlap%20check%20disable%20other%20plugins%3F\"><h3>Does the overlap check disable other plugins?<\/h3><\/dt>\n<dd><p>No. It only reports active plugins commonly used for advertising or header-code insertion so an administrator knows where to investigate a duplicate setup. It never edits or disables another plugin.<\/p><\/dd>\n<dt id=\"does%20this%20create%20ad%20units%20or%20guarantee%20adsense%20approval%3F\"><h3>Does this create ad units or guarantee AdSense approval?<\/h3><\/dt>\n<dd><p>No. It configures and verifies the publisher loader and the Google ads.txt declaration. It does not create ad units, manage an AdSense account, or guarantee approval, monetization, crawl timing, or policy compliance.<\/p><\/dd>\n<dt id=\"does%20zoofi%20receive%20my%20publisher%20id%20or%20diagnostic%20data%3F\"><h3>Does Zoofi receive my publisher ID or diagnostic data?<\/h3><\/dt>\n<dd><p>No. The saved publisher ID remains in the WordPress database. The live diagnostic requests only the WordPress site's own public URLs. No diagnostic data is sent to Zoofi.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20ask%20for%20a%20review%3F\"><h3>Does the plugin ask for a review?<\/h3><\/dt>\n<dd><p>After a publisher ID has been configured for three days, administrators may see a small WordPress admin notice asking for an honest review. <strong>Maybe Later<\/strong> snoozes the reminder for 30 days, and <strong>Don\u2019t Ask Again<\/strong> permanently disables it. The reminder does not block the dashboard and no review is required to use any plugin feature.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>The saved publisher ID, cached diagnostic result, and review-reminder preferences are removed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Added an optional WordPress admin review reminder after three days of configured use.<\/li>\n<li>Added Leave a Review, Maybe Later (30-day snooze), and Don\u2019t Ask Again controls.<\/li>\n<li>Review-reminder preferences stay local to WordPress and are removed on uninstall.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Updated the WordPress.org contributor username to <code>zoofiai<\/code> after plugin ownership transfer.<\/li>\n<li>Prepared new plugin-specific WordPress.org icons that represent ads.txt setup and verification.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Added the plugin version to the enqueued publisher script to prevent stale browser caching and satisfy WordPress resource-version checks.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Renamed the plugin to Zoofi Ads.txt Helper for AdSense to clarify that AdSense is a third-party integration.<\/li>\n<li>Changed the requested WordPress.org slug and Text Domain to <code>zoofi-ads-txt-helper-for-adsense<\/code>.<\/li>\n<li>Updated the Contributors field to match the submitting WordPress.org account.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Updated WordPress compatibility header to Tested up to 7.1.<\/li>\n<li>Aligned the package identifiers and Text Domain after automated submission checks.<\/li>\n<li>Added the declared <code>\/languages<\/code> directory for translation compatibility.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Improved the plugin display name for clearer purpose and WordPress.org listing clarity.<\/li>\n<li>Updated the plugin slug, text domain, admin labels, and package identifiers to match the new name.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added live publisher diagnostics for the site's own homepage and <code>\/ads.txt<\/code>.<\/li>\n<li>Added duplicate Google loader detection.<\/li>\n<li>Added configured-ID mismatch detection.<\/li>\n<li>Added public ads.txt HTTP and record verification.<\/li>\n<li>Added foreign Google publisher ID warnings.<\/li>\n<li>Added physical root ads.txt conflict detection.<\/li>\n<li>Added potential overlap signals for common advertising and header-code plugins.<\/li>\n<li>Switched publisher loader output to the WordPress Script API.<\/li>\n<li>Expanded privacy and external-service documentation.<\/li>\n<li>Removed the non-unique root Plugin URI header.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Added one-field publisher ID setup.<\/li>\n<li>Added automatic Google publisher header loader.<\/li>\n<li>Added virtual root <code>\/ads.txt<\/code> output.<\/li>\n<li>Added validation and uninstall cleanup.<\/li>\n<\/ul>","raw_excerpt":"Set up and diagnose Google AdSense code and ads.txt from one publisher ID, with duplicate and conflict checks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357678","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=357678"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zoofiai"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357678"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357678"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357678"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357678"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357678"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}