{"id":223290,"date":"2025-03-17T03:36:33","date_gmt":"2025-03-17T03:36:33","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/exit-intent-popup\/"},"modified":"2026-05-01T11:00:34","modified_gmt":"2026-05-01T11:00:34","slug":"exit-intent-popup","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/exit-intent-popup\/","author":21053232,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"6.7.5","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Exit-Intent Popup","header_author":"ammarsaif","header_description":"A simple exit-intent popup with discount offer.","assets_banners_color":"","last_updated":"2026-05-01 11:00:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/exit-intent-popup\/","header_author_uri":"https:\/\/profiles.wordpress.org\/ammarsaif\/","rating":0,"author_block_rating":0,"active_installs":60,"downloads":909,"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":"ammarsaif","date":"2025-03-17 03:36:04"},"1.0.2":{"tag":"1.0.2","author":"ammarsaif","date":"2025-04-14 07:14:43"},"1.1.0":{"tag":"1.1.0","author":"ammarsaif","date":"2026-05-01 10:28:19"},"1.1.1":{"tag":"1.1.1","author":"ammarsaif","date":"2026-05-01 11:00:34"}},"upgrade_notice":{"1.1.1":"<p>Minor maintenance release: fixes uninstall cleanup \u2014 six options added in 1.1.0 were not deleted on uninstall, leaving orphaned rows in <code>wp_options<\/code>. No functional changes.<\/p>","1.1.0":"<p>Major update: new Display Rules feature (page, audience, frequency, and device targeting) plus a complete admin UI overhaul. Includes critical bug fixes \u2014 saving on one tab no longer wipes settings saved on other tabs, and toggle switches now preserve their state correctly across all tabs. Fully backwards-compatible \u2014 all existing settings are preserved.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2","1.1.0","1.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"<strong>General Tab<\/strong> \u2014 Popup Status, Trigger Settings, and Display Options with visual option cards.","2":"<strong>Design Tab<\/strong> \u2014 Color pickers, background image upload, and live popup preview.","3":"<strong>Typography Tab<\/strong> \u2014 System and Google Font selectors with live preview boxes.","4":"<strong>Content Tab<\/strong> \u2014 Rich text editor, discount code toggle, and inline preview.","5":"<strong>CTA Button Tab<\/strong> \u2014 Full button customisation with real-time preview.","6":"<strong>Display Rules Tab<\/strong> \u2014 Page targeting, audience, frequency, and device controls.","7":"<strong>Sidebar<\/strong> \u2014 Quick Status widget and Pro Tips panel."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[984,331,1002,491,286],"plugin_category":[45,55],"plugin_contributors":[239604],"plugin_business_model":[],"class_list":["post-223290","plugin","type-plugin","status-publish","hentry","plugin_tags-conversion","plugin_tags-discount","plugin_tags-exit-intent","plugin_tags-popup","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-seo-and-marketing","plugin_contributors-ammarsaif","plugin_committers-ammarsaif"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/exit-intent-popup.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Exit-Intent Popup<\/strong> detects when a visitor is about to leave your site and displays a fully customisable popup offering a discount code, a message, or a call-to-action button to encourage them to stay and convert.<\/p>\n\n<p>The plugin ships with a modern, card-based admin interface and powerful targeting options \u2014 all without writing a single line of code.<\/p>\n\n<h3>Key Highlights<\/h3>\n\n<ul>\n<li>Clean, professional admin UI with gradient header, icon tabs, card layouts and live previews<\/li>\n<li>Full typography control \u2014 system fonts and Google Fonts for title, body, and CTA button<\/li>\n<li>Advanced Display Rules \u2014 target by page, user login status, frequency, and device type<\/li>\n<li>Frequency control via browser localStorage (always \/ per session \/ daily \/ weekly \/ once ever)<\/li>\n<li>Device targeting \u2014 show on all devices, desktop only, or mobile only<\/li>\n<li>Exit-intent detection with configurable delay and five animation effects<\/li>\n<li>Live button and design previews that update in real time as you type<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<h3>Popup Behaviour<\/h3>\n\n<ul>\n<li>Enable \/ disable popup globally with a toggle switch<\/li>\n<li>Configurable delay (seconds) before the popup can trigger<\/li>\n<li>Five entry animations: Fade In, Slide Down, Zoom In, Bounce, None<\/li>\n<li>Three popup positions: Top, Center, Bottom<\/li>\n<li>Adjustable overlay opacity (0\u20131)<\/li>\n<li>Optional close (\u00d7) button<\/li>\n<li>ESC key closes the popup<\/li>\n<\/ul>\n\n<h3>Design &amp; Appearance<\/h3>\n\n<ul>\n<li>Background color picker (HEX \/ RGB)<\/li>\n<li>Background image upload via WordPress Media Library<\/li>\n<li>Text color and discount code color pickers<\/li>\n<li>Live popup preview that updates as you change colors and images<\/li>\n<\/ul>\n\n<h3>Typography<\/h3>\n\n<ul>\n<li>Separate font controls for title and content text<\/li>\n<li>System fonts: Arial, Verdana, Helvetica, Georgia, and more<\/li>\n<li>Google Fonts integration with autocomplete search and popular-fonts shortlist<\/li>\n<li>Font weight control (Normal \/ Bold \/ Lighter \/ Bolder)<\/li>\n<li>Live font preview boxes<\/li>\n<\/ul>\n\n<h3>Content<\/h3>\n\n<ul>\n<li>Rich text editor (wp_editor) for the popup message \u2014 supports HTML and shortcodes<\/li>\n<li>Customisable promo \/ discount code with inline preview<\/li>\n<li>Toggle to show or hide the discount code block<\/li>\n<\/ul>\n\n<h3>CTA Button<\/h3>\n\n<ul>\n<li>Enable \/ disable the call-to-action button<\/li>\n<li>Button text, URL, and link target (same tab \/ new tab)<\/li>\n<li>Background color, text color, font size, and padding<\/li>\n<li>System or Google Font selection for the button label<\/li>\n<li>Border radius, border width, and border color<\/li>\n<li>Live button preview that updates in real time<\/li>\n<\/ul>\n\n<h3>Display Rules (New in 1.1.0)<\/h3>\n\n<ul>\n<li><strong>Page Targeting<\/strong> \u2014 show on all pages, front page only, blog\/posts only, or specific pages\/posts you select<\/li>\n<li><strong>Audience Targeting<\/strong> \u2014 show to everyone, guests only (logged-out), or members only (logged-in)<\/li>\n<li><strong>Frequency Control<\/strong> \u2014 always, once per session, once per day, once per week, or once ever (tracked via localStorage)<\/li>\n<li><strong>Device Targeting<\/strong> \u2014 all devices, desktop only (\u2265 768 px), or mobile only (&lt; 768 px)<\/li>\n<\/ul>\n\n<h3>Admin Interface (New in 1.1.0)<\/h3>\n\n<ul>\n<li>Full-width, responsive layout that adapts to any screen size<\/li>\n<li>Gradient header banner with version badge and live Active\/Inactive status<\/li>\n<li>Six icon tabs: General, Design, Typography, Content, CTA Button, Display Rules<\/li>\n<li>Card-based section layout with icons and descriptive sub-headings<\/li>\n<li>Animated toggle switches replace plain checkboxes<\/li>\n<li>Visual option cards replace plain radio buttons for Position, Animation, Audience, Frequency, and Device<\/li>\n<li>Quick Status sidebar widget showing live values from the database<\/li>\n<li>Pro Tips sidebar with conversion best practices<\/li>\n<li>View Site shortcut link from within the settings page<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<ol>\n<li><strong>General tab<\/strong> \u2014 Enable the popup, configure delay, animation, position, and overlay opacity.<\/li>\n<li><strong>Design tab<\/strong> \u2014 Pick colors and an optional background image. Preview updates live.<\/li>\n<li><strong>Typography tab<\/strong> \u2014 Choose system or Google Fonts for the title and body text.<\/li>\n<li><strong>Content tab<\/strong> \u2014 Write your popup message in the rich-text editor and set the promo code.<\/li>\n<li><strong>CTA Button tab<\/strong> \u2014 Configure the call-to-action button label, URL, colors, and live-preview it.<\/li>\n<li><strong>Display Rules tab<\/strong> \u2014 Set page targeting, audience, frequency, and device rules.<\/li>\n<li>Click <strong>Save Settings<\/strong> \u2014 your popup is live immediately.<\/li>\n<\/ol>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the <strong>GPL-2.0+<\/strong> license.\nSee https:\/\/www.gnu.org\/licenses\/gpl-2.0.html for details.<\/p>\n\n<h3>Support<\/h3>\n\n<p>For support, feature requests, or bug reports, please visit the WordPress support forum or contact the plugin author.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the plugin ZIP or install directly from the WordPress Plugin Directory.<\/li>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> if installing manually.<\/li>\n<li>Activate the plugin via the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Navigate to <strong>Exit-Intent Popup<\/strong> in the WordPress admin sidebar to configure.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20disable%20the%20popup%3F\"><h3>How do I disable the popup?<\/h3><\/dt>\n<dd><p>Go to <strong>Exit-Intent Popup &gt; General<\/strong> and toggle the <strong>Enable Popup<\/strong> switch off.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20popup%20only%20on%20specific%20pages%3F\"><h3>Can I show the popup only on specific pages?<\/h3><\/dt>\n<dd><p>Yes. Go to the <strong>Display Rules<\/strong> tab, choose <strong>Specific Pages<\/strong>, and select from the list of your published pages and posts.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20the%20popup%20from%20annoying%20repeat%20visitors%3F\"><h3>How do I stop the popup from annoying repeat visitors?<\/h3><\/dt>\n<dd><p>Use the <strong>Display Frequency<\/strong> setting in the <strong>Display Rules<\/strong> tab. \"Once per session\" or \"Once per day\" are recommended for most sites.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20popup%20only%20on%20mobile%3F\"><h3>Can I show the popup only on mobile?<\/h3><\/dt>\n<dd><p>Yes \u2014 set <strong>Device Targeting<\/strong> to <strong>Mobile Only<\/strong> in the <strong>Display Rules<\/strong> tab.<\/p><\/dd>\n<dt id=\"can%20i%20show%20the%20popup%20only%20to%20logged-out%20visitors%3F\"><h3>Can I show the popup only to logged-out visitors?<\/h3><\/dt>\n<dd><p>Yes \u2014 set <strong>Audience Targeting<\/strong> to <strong>Guests Only<\/strong> in the <strong>Display Rules<\/strong> tab.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20background%20image%20instead%20of%20a%20color%3F\"><h3>Can I use a background image instead of a color?<\/h3><\/dt>\n<dd><p>Yes. Upload an image via the <strong>Design<\/strong> tab. The image overrides the background color.<\/p><\/dd>\n<dt id=\"does%20the%20popup%20work%20on%20mobile%3F\"><h3>Does the popup work on mobile?<\/h3><\/dt>\n<dd><p>Yes. Exit-intent detection (mouse leaving the viewport) is desktop-centric, but you can still show the popup on mobile after a configured delay.<\/p><\/dd>\n<dt id=\"can%20i%20use%20google%20fonts%3F\"><h3>Can I use Google Fonts?<\/h3><\/dt>\n<dd><p>Yes. In the <strong>Typography<\/strong> and <strong>CTA Button<\/strong> tabs, switch to <strong>Google Font<\/strong>, type a font name, and choose from the autocomplete suggestions.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20secure%3F\"><h3>Is the plugin secure?<\/h3><\/dt>\n<dd><p>All settings are sanitized on save using WordPress functions (<code>sanitize_text_field<\/code>, <code>sanitize_hex_color<\/code>, <code>esc_url_raw<\/code>, etc.) and escaped on output.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<p><strong>Bug Fix<\/strong>\n* <code>uninstall.php<\/code> was missing six options introduced in 1.1.0 \u2014 <code>exitpo_show_discount<\/code> and all five Display Rules settings (<code>exitpo_show_on<\/code>, <code>exitpo_specific_pages<\/code>, <code>exitpo_show_to<\/code>, <code>exitpo_frequency<\/code>, <code>exitpo_device_target<\/code>) \u2014 these are now properly deleted when the plugin is uninstalled, leaving no orphaned rows in <code>wp_options<\/code><\/p>\n\n<h4>1.1.0<\/h4>\n\n<p><strong>New Feature: Display Rules<\/strong>\n* Page targeting \u2014 all pages, front page, blog\/posts, or specific pages\/posts\n* Audience targeting \u2014 everyone, guests only, or members only (logged-in)\n* Frequency control \u2014 always \/ once per session \/ once per day \/ once per week \/ once ever (localStorage)\n* Device targeting \u2014 all devices \/ desktop only \/ mobile only<\/p>\n\n<p><strong>Admin UI Overhaul<\/strong>\n* Full-width, screen-adaptive layout \u2014 no more wasted blank space\n* New gradient header banner with version badge and live status indicator\n* Six icon-based navigation tabs (General, Design, Typography, Content, CTA Button, Display Rules)\n* All tab content migrated from plain form tables to card-based sections\n* Animated CSS toggle switches replace checkboxes for boolean settings\n* Visual icon+label option cards replace radio buttons for positional\/animation\/rule selectors\n* Quick Status sidebar widget showing live setting values\n* Pro Tips sidebar panel with conversion best-practice hints\n* View Site shortcut button in the sidebar\n* Full-width responsive layout via a dedicated <code>admin.css<\/code> stylesheet (replaces scattered inline styles)<\/p>\n\n<p><strong>Frontend Improvements<\/strong>\n* Animation engine updated to properly implement all five effects (fadeIn, slideDown, zoomIn, bounce, none)\n* Popup position (top \/ center \/ bottom) now applied dynamically by JavaScript\n* Overlay opacity is now applied as a CSS custom property from the saved setting\n* ESC key support to close the popup\n* Frequency check uses <code>sessionStorage<\/code> (per session) or <code>localStorage<\/code> with timestamps (daily\/weekly\/once)\n* Device check compares <code>window.innerWidth<\/code> against 768 px breakpoint before showing popup\n* <code>animation<\/code>, <code>position<\/code>, <code>frequency<\/code>, and <code>device_target<\/code> now passed to frontend via <code>wp_localize_script<\/code><\/p>\n\n<p><strong>Bug Fixes<\/strong>\n* <code>exitpo_show_discount<\/code> was registered but never saved \u2014 now properly registered and enforced\n* Background overlay opacity was hardcoded in CSS \u2014 now reads the saved option value\n* CTA toggle in settings panel now uses JavaScript card visibility instead of class toggling on <code>&lt;tr&gt;<\/code> elements\n* <strong>Critical<\/strong> \u2014 saving settings on any tab was wiping all other tabs' settings; fixed with a two-level hidden-field strategy: <code>exitpo_hidden_fallback_fields()<\/code> emits every setting's current DB value before the tab content so WordPress <code>options.php<\/code> always receives a value for every registered option; per-tab <code>value=\"0\"<\/code> sentinels placed before each checkbox handle the \"unchecked on current tab\" case without affecting other tabs\n* <strong>Critical<\/strong> \u2014 toggle switches (Enable Popup, Close Button, Show Discount, Enable CTA) were being turned off when saving from a different tab because the global checkbox fallback incorrectly used <code>value=\"0\"<\/code> instead of the current saved value; corrected so the global fallback preserves the DB state and only the per-tab sentinel can flip a checkbox to off\n* Admin page layout made fully responsive and full-width \u2014 removed fixed <code>max-width: 1180px<\/code> cap so the settings page uses all available screen space\n* Proper left\/right padding added to the settings wrapper so content does not touch screen edges\n* Plugin version number is now read dynamically from the file header via <code>EXITPO_VERSION<\/code> constant (using <code>get_file_data()<\/code>) \u2014 eliminates the hardcoded version string that required manual updates in multiple places<\/p>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added CTA button with extensive customisation options<\/li>\n<li>Added Google Fonts integration for all text elements<\/li>\n<li>Added font weight controls for headings and content<\/li>\n<li>Added border customisation for CTA button<\/li>\n<li>Added separate typography settings for content and headings<\/li>\n<li>Improved admin UI with tabbed interface<\/li>\n<li>Enhanced font preview functionality<\/li>\n<li>Added popular fonts quick selection<\/li>\n<li>Added option to open CTA link in new tab<\/li>\n<li>Added more sanitisation and security checks<\/li>\n<li>Performance optimisations for font loading<\/li>\n<li>Code refactoring and organisation improvements<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Bug fixes and prefixing changes.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release with full customisation options.<\/li>\n<\/ul>","raw_excerpt":"A powerful exit-intent popup plugin with a professional admin UI and advanced Display Rules that help retain visitors and boost conversions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/223290","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=223290"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ammarsaif"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=223290"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=223290"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=223290"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=223290"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=223290"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=223290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}