{"id":360993,"date":"2026-08-31T12:09:47","date_gmt":"2026-08-31T12:09:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/goalprevail-tab-notifications\/"},"modified":"2026-08-31T12:09:39","modified_gmt":"2026-08-31T12:09:39","slug":"goalprevail-tab-notifications","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/goalprevail-tab-notifications\/","author":23343687,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"GoalPrevail Tab Notifications","header_author":"Goal Prevail","header_description":"Wins back wandering visitors. When someone switches tabs or minimises the browser, the page title gently flashes a \u201ccome back\u201d message (with an emoji and an optional badge counter), just like Facebook. Perfect for cart & checkout reminders. By Goal Prevail.","assets_banners_color":"cccccc","last_updated":"2026-08-31 12:09:39","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/goalprevail.com\/","header_plugin_uri":"https:\/\/goalprevail.com\/goalprevail-tab-notifications\/","header_author_uri":"https:\/\/goalprevail.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":22,"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":"goalprevail","date":"2026-08-31 12:09:39","revision":3674127}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3674127,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3674127,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3674127,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3674127,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3674127,"resolution":"1","location":"assets","locale":"","width":1898,"height":877},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3674127,"resolution":"2","location":"assets","locale":"","width":1908,"height":984},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3674127,"resolution":"3","location":"assets","locale":"","width":1895,"height":873}},"screenshots":{"1":"The settings screen with a live mock-tab preview.","2":"A flashing tab title with the Facebook-style (1) counter.","3":"WooCommerce cart\/checkout targeting."}},"plugin_section":[],"plugin_tags":[170615,9430,278472,278471,286],"plugin_category":[45],"plugin_contributors":[264269],"plugin_business_model":[],"class_list":["post-360993","plugin","type-plugin","status-publish","hentry","plugin_tags-browser-tab","plugin_tags-cart-abandonment","plugin_tags-favicon-badge","plugin_tags-tab-notification","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-goalprevail","plugin_committers-goalprevail"],"banners":{"banner":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/banner-772x250.png?rev=3674127","banner_2x":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/banner-1544x500.png?rev=3674127","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/icon-128x128.png?rev=3674127","icon_2x":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/icon-256x256.png?rev=3674127","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/screenshot-1.png?rev=3674127","caption":"The settings screen with a live mock-tab preview."},{"src":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/screenshot-2.png?rev=3674127","caption":"A flashing tab title with the Facebook-style (1) counter."},{"src":"https:\/\/ps.w.org\/goalprevail-tab-notifications\/assets\/screenshot-3.png?rev=3674127","caption":"WooCommerce cart\/checkout targeting."}],"raw_content":"<!--section=description-->\n<p>People open ten tabs and forget about yours. <strong>GoalPrevail Tab Notifications<\/strong> brings them back the way the big sites do it: the moment a visitor switches to another tab or minimises the browser, your page title starts to flash a friendly reminder, and a little <code>(1)<\/code> counter ticks up \u2014 just like an unread Facebook message. When they come back, the original title (and favicon) snap straight back into place.<\/p>\n\n<p>It's built for the highest-intent moment in any store: <strong>a shopper with a full cart who tabbed away to \"think about it\".<\/strong><\/p>\n\n<ul>\n<li><strong>Title flashing<\/strong> \u2014 alternate between the real page title and your message (e.g. <code>\ud83d\udc4b Come back!<\/code>), or use the calmer \"Replace\" mode that swaps the title just once.<\/li>\n<li><strong>Facebook-style counter<\/strong> \u2014 an optional <code>(1)<\/code>, <code>(2)<\/code>\u2026 badge that counts how many times the visitor wandered off, so it reads like a genuine notification.<\/li>\n<li><strong>Favicon badge<\/strong> \u2014 stamp a coloured dot (with the counter) over your site icon, drawn live in the browser. Falls back gracefully if the icon can't be read.<\/li>\n<li><strong>Cart &amp; checkout aware<\/strong> \u2014 when WooCommerce is active, target cart and checkout only, with a dedicated cart message and an \"only when the cart actually has items\" guard.<\/li>\n<li><strong>Flexible targeting<\/strong> \u2014 every page, WooCommerce cart\/checkout, or a hand-picked list of pages (by ID, path like <code>\/pricing\/<\/code>, or <code>home<\/code>).<\/li>\n<li><strong>Message rotation<\/strong> \u2014 list several lines and they cycle as the title flashes.<\/li>\n<li><strong>Tunable<\/strong> \u2014 set the flash speed, a delay before it starts, and a \"stop after N flashes\" cap so it never becomes annoying.<\/li>\n<li><strong>Two triggers<\/strong> \u2014 fire only when the tab is hidden (switch \/ minimise), or also when the whole window loses focus.<\/li>\n<li><strong>Won't nag you<\/strong> \u2014 hidden from logged-in administrators by default.<\/li>\n<li><strong>Welcome them back<\/strong> \u2014 optionally greet returning visitors with a short message before the real title slides back.<\/li>\n<li><strong>Know when to stop<\/strong> \u2014 choose who sees it (everyone, guests, or signed-in users), exclude pages you never want it on, and cap how many times it fires in one visit.<\/li>\n<li><strong>Live preview<\/strong> \u2014 a mock browser tab right in the settings screen flashes as you type, so you can dial it in before going live.<\/li>\n<\/ul>\n\n<p>Everything happens client-side and is fully reversible: the visitor's original tab title and favicon are always restored when they return. Nothing is collected about you or your visitors, and the front end never contacts a third party.<\/p>\n\n<p>Built by <a href=\"https:\/\/goalprevail.com\/\">Goal Prevail<\/a> \u2014 a small senior team building WordPress plugins, WooCommerce stores and SaaS. It adds nothing to your front end except the reminder you configure.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin queries the official WordPress.org plugin directory API when you open the <strong>GoalPrevail Plugins<\/strong> dashboard screen in wp-admin, to list the other plugins published by this author. It sends only the author name being searched for \u2014 no data about you, your site or your visitors \u2014 and caches the result for 24 hours. Nothing is requested on the front end of your site.<\/p>\n\n<p>Service: WordPress.org plugin API \u2014 https:\/\/api.wordpress.org\/plugins\/info\/1.2\/\nTerms of service: https:\/\/wordpress.org\/about\/\nPrivacy policy: https:\/\/wordpress.org\/about\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>goalprevail-tab-notifications<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via Plugins \u2192 Add New.<\/li>\n<li>Activate it.<\/li>\n<li>Visit <strong>GoalPrevail Plugins \u2192 Tab Notifications<\/strong> to set your message and where it shows. The defaults flash <code>\ud83d\udc4b Come back!<\/code> on every page with the counter on.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20when%20the%20browser%20is%20minimised%3F\"><h3>Does it work when the browser is minimised?<\/h3><\/dt>\n<dd><p>Yes. Minimising the window, or switching to another tab, both hide the page \u2014 that's when the reminder kicks in. If you also want it to fire when the visitor clicks away to a different application (while your tab is still visible), switch the trigger to \"Also when the window loses focus\".<\/p><\/dd>\n<dt id=\"will%20the%20visitor%27s%20tab%20title%20stay%20broken%3F\"><h3>Will the visitor's tab title stay broken?<\/h3><\/dt>\n<dd><p>No. The original title \u2014 and the favicon, if you badge it \u2014 are restored the instant the visitor comes back to the tab.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>Only for the \"Cart &amp; checkout only\" targeting and the dedicated cart message. Everything else works on any WordPress site.<\/p><\/dd>\n<dt id=\"why%20isn%27t%20it%20showing%20for%20me%3F\"><h3>Why isn't it showing for me?<\/h3><\/dt>\n<dd><p>By default the reminder is hidden from logged-in administrators so you don't nag yourself. Test in a private\/incognito window, or turn that option off under \"Where it shows\".<\/p><\/dd>\n<dt id=\"does%20it%20collect%20any%20data%20or%20call%20home%3F\"><h3>Does it collect any data or call home?<\/h3><\/dt>\n<dd><p>No tracking of any kind. The reminder itself is entirely client-side \u2014 nothing about your visitors is stored or sent anywhere, and the front end of your site makes no external requests.<\/p>\n\n<p>The one exception is entirely in the admin: the <strong>GoalPrevail Plugins<\/strong> dashboard screen asks the official WordPress.org plugin API (api.wordpress.org) which other GoalPrevail plugins exist, so it can list them. That request only happens when you open that screen, the answer is cached for a day, and no information about you or your site is sent.<\/p><\/dd>\n<dt id=\"it%20shows%20for%20the%20wrong%20people%20on%20my%20cached%20site\"><h3>It shows for the wrong people on my cached site<\/h3><\/dt>\n<dd><p>Targeting options that depend on who is visiting \u2014 \"logged-out visitors only\", \"logged-in users only\" and \"don't show it to administrators\" \u2014 are decided on the server as the page is built. If a full-page cache serves one visitor's copy of a page to everyone, they all get whatever was decided for the first visitor. Most caching plugins already bypass the cache for logged-in users, which resolves it; cart and checkout pages are normally excluded from caching too. If you rely on those options, exclude the affected pages from your page cache.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: win back visitors who switch tabs with title flashing, a (1) counter and a favicon badge.<\/li>\n<li>Flash speed, delay and stop-after controls, message rotation, and two triggers.<\/li>\n<li>\"Welcome back\" greeting when the visitor returns, plus a (1) counter that persists across navigation in the same session.<\/li>\n<li>Audience targeting (everyone, logged-out only, or logged-in only), page exclusions, and a per-session cap so it never becomes annoying.<\/li>\n<li>WooCommerce cart\/checkout targeting and an admin live preview.<\/li>\n<\/ul>","raw_excerpt":"Win back wandering visitors. When someone switches tabs or minimises the browser, the page title flashes a &quot;come back&quot; reminder \u2014 perfect for carts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/360993","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=360993"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/goalprevail"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=360993"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=360993"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=360993"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=360993"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=360993"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=360993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}