=== Popup Maker - Boost Sales, Conversions, Optins, Subscribers with the Ultimate WP Popup Builder ===
Contributors: danieliser, codeatlantic
Author URI: https://wppopupmaker.com/?utm_campaign=readme&utm_medium=referral&utm_source=readme-header&utm_content=author-url
Plugin URI: https://wppopupmaker.com/?utm_campaign=readme&utm_medium=referral&utm_source=readme-header&utm_content=plugin-url
Donate link:
Tags:  marketing, popup, popups, optin, conversion
Requires at least: 6.7
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.24.0
License: GPLv2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html

Want to boost sales & marketing efforts? Use your favorite forms & builder. Unlimited popups & impressions, keep your data, no monthly subscription.

== Description ==

<h3>📈 Drive More Sales, Leads & Email List Opt-Ins Using Popup Maker</h3>

**Popup Maker™**, rated as the **[best WordPress popup plugin](https://wppopupmaker.com/conversion-optimization/best-wordpress-popup-plugins/)** by our community of 780,000+ users, empowers you to create stunning popups, modals, and overlays in minutes. Whether you're a beginner or a pro, our versatile toolkit makes it easy to boost your WordPress site's engagement.

Transform your WordPress site into a conversion powerhouse! Create targeted campaigns using popups, exit-intent forms, slide-ins, and smart banners to skyrocket your revenue and build your email list faster than ever.

> **We switched to Popup Maker for our popups and couldn't be happier.**
>
> "We recommend it to all our clients too. Popup Maker is an essential piece of our website for maximizing growing our email list, increasing sales conversions, and guiding users with strategic calls to action. Great support too."
>
> ~ **Chris Badgett, LifterLMS CEO**

<h4>🔥 Ready to get started?</h4>

👉 [Visit Our Website](https://wppopupmaker.com/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=main-site-link) - Explore all features & pricing
👉 [Join Our Conversion Optimization Community](https://wppopupmaker.com/community/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=community) - Share strategies & learn from experts
👉 [Read Our Guides](https://wppopupmaker.com/docs/category/using-popup-maker/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=user-guide) - Learn popup best practices
👉 [Get Help](https://wppopupmaker.com/support/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=support) - World-class support when you need it

<h3>🎬 See What's Possible with Popup Maker</h3>

https://www.youtube.com/watch?v=PomnMganMVM

[Stunning examples of what you can create in Popup Maker **(View Video)**](https://www.youtube.com/watch?v=PomnMganMVM)

<h3>🛠️ Ultimate WordPress Popup Builder: Every Type of Conversion Popup at Your Fingertips</h3>

With Popup Maker, you have the ultimate popup builder toolkit at your disposal, create any type of popup in minutes:

* Email opt-in popups,
* Exit-Intent popups.
* Lead generation popups,
* Subscription list popups
* Content upgrade popups,
* Ecommerce popups,
* Contact form popups,
* Urgent site-wide announcements and notification banners,
* [EU cookie notices](https://ninjaforms.com/blog/eu-cookie-notices-ninja-forms/),
* Popups to greet visitors from ProductHunt (requires [Popup Maker Pro](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=example-popups&utm_term=greet-producthunt)),
* WooCommerce & Easy Digital Downloads upsell popups (requires [Popup Maker Pro+](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=example-popups&utm_term=woocommerce-upsells)),
* WooCommerce & Easy Digital Downloads cross-sell popups (requires [Popup Maker Pro+](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=example-popups&utm_term=woocommerce-crosssells)),
* Cart abandonment popups — recover lost sales with targeted offers at checkout (requires [Popup Maker Pro+](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=example-popups&utm_term=cart-abandonment)),
* LifterLMS course enrollment popups — convert visitors directly into enrolled students (requires [Popup Maker Pro+](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=example-popups&utm_term=lifterlms-enrollment)),
* & more.

> **Even the free version is great**
> "Does exactly what it says and is easy to use. Free version allows full control of where popup appears, how it looks and setting conditions for popup reappearing across website."
> ~[@rsb1234](https://wordpress.org/support/topic/even-the-free-version-is-great-2/)

<h3>🔑 Trigger Popups with Ease: Multiple Ways to Open Your Popups</h3>

Popup Maker offers a variety of triggers to open your popups:

* Open automatically (with optional delay)
* Click button (or any other element) to open
* Form submission (open a popup when a form is submitted)
* Open when someone is about to leave your site (requires [Popup Maker Pro](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=triggers&utm_term=exit-intent))
* Open when someone has scrolled down your page (requires [Popup Maker Pro](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=triggers&utm_term=scroll))

<h3>🎯 Smart Popup Targeting: Deliver the Perfect Message to Every Visitor</h3>

Never show irrelevant popups again! Our powerful targeting system ensures your messages reach exactly who needs to see them, when they need to see them. From basic page targeting to advanced user behavior conditions, you have complete control over your popup's visibility.

<h4>Free Targeting Options:</h4>

* Target specific posts, pages, or custom post types
* Target by post categories or tags, & custom taxonomies
* Front page vs blog page targeting

<h4>Premium Targeting Features:</h4>

* Advanced user behavior targeting
* Show on specific URLs or URL patterns
* Show/hide based on user roles
* Geolocation targeting
* Browser & OS targeting
* Time & date scheduling
* Page scroll depth targeting
* User login status
* Previous popup interactions
* Ecommerce purchasing & cart rules
* Advanced custom taxonomy targeting
* Referrer source targeting


<h3>🔑 Integrate with Your Favorite Form Plugins</h3>

Popup Maker integrates with all of the most popular form plugins to allow you to open a popup when a form is submitted or close the popup when a form inside the popup is submitted. Popup Maker integrates with:

<h4>Form Plugin Integrations:</h4>

* [Ninja Forms](https://wppopupmaker.com/form-integrations/ninja-forms/) - powerful drag & drop form builder
* [Gravity Forms](https://wppopupmaker.com/form-integrations/gravity-forms/) - advanced WordPress forms with conditional logic
* [Contact Form 7](https://wppopupmaker.com/form-integrations/contact-form-7/) (CF7) - simple contact forms
* [WPForms](https://wppopupmaker.com/form-integrations/wpforms/) - beginner-friendly form plugin with templates
* [WSForm](https://wppopupmaker.com/form-integrations/ws-forms/) - professional form builder with advanced features
* [Fluent Forms](https://wppopupmaker.com/form-integrations/fluent-forms/) - conversational forms with multi-step layouts
* [Mailchimp for WordPress](https://wppopupmaker.com/form-integrations/mailchimp-for-wordpress/) (MC4WP) - newsletter signup forms
* [Formidable Forms](https://wppopupmaker.com/form-integrations/formidable-forms/) - advanced form builder with database views
* [Forminator](https://wppopupmaker.com/form-integrations/forminator/) - free form builder by WPMU DEV
* [Elementor Pro Forms](https://wppopupmaker.com/form-integrations/elementor-pro-forms/) - native form builder for Elementor page builder
* [HappyForms](https://wppopupmaker.com/form-integrations/happyforms/) - free drag-and-drop form builder with live preview
* [Kali Forms](https://wppopupmaker.com/form-integrations/kali-forms/) - Gutenberg-native form builder with block editor support
* [Bit Form](https://wppopupmaker.com/form-integrations/bit-form/) - lightweight form builder with custom post type storage
* [HTML Forms](https://wppopupmaker.com/form-integrations/html-forms/) - simple, lightweight form builder with no bloat
* [Beaver Builder Forms](https://wppopupmaker.com/form-integrations/beaver-builder/) - contact, subscribe, and login forms for Beaver Builder page builder
* [Newsletter](https://wppopupmaker.com/email-marketing-integrations/the-newsletter-plugin/) - thenewsletterplugin.com integration with AJAX submission support
* and more!

<h4>Email Marketing & CRM Integrations:</h4>

Already created a form in your email marketing service? Using our free version, you can copy and paste any form created by most list building platforms, including but not limited to:

* MailChimp
* AWeber
* InfusionSoft
* GetResponse
* Convertkit
* Constant Contact
* Mail Poet
* Mad Mimi
* FluentCRM
* Hubspot
* Emma
* and more!

<h3>⚙️ Advanced Popup Controls: Customize Every Aspect of Your Popups</h3>

Take complete control of your popups with our powerful customization features:

* **Visual Popup Editor** - Design beautiful popups with our intuitive drag & drop editor. Control sizing, positioning, animations, and more
* **Smart Display Rules** - Set cookie-based display frequency to prevent popup fatigue and improve user experience
* **Custom Animations** - Choose from slide, fade, and other engaging entrance/exit animations
* **Mobile-First Design** - Every popup is fully responsive and looks great on all devices
* **Custom Positioning** - Place your popups exactly where you want them - centered, corners, or custom positions
* **Cookie Controls** - Fine-tune when and how often visitors see your popups with advanced cookie settings

<h3>👍 Trusted by many people just like you!</h3>

Popup Maker is used on over 780,000 websites and has received over 4,300 5-star reviews just like this one:

> **Great plugin, everything I needed**
> "Really nice plugin, simple to use, responsive, a good catch !" ~[@lemmmy](https://wordpress.org/support/topic/great-plugin-everything-i-needed/)

<h3>🚀 Go Further with Popup Maker Pro & Pro+</h3>

Stop settling for basic conversion tracking. Popup Maker is the **only WordPress popup plugin with complete revenue attribution** — see exactly how much money each popup generates, not just clicks and email captures.

**No monthly fees. Your data stays on your server. No traffic limits. Ever.**

> Compare to the alternatives: OptinMonster starts at $108/year. Privy starts at $288/year. Justuno starts at $228/year. None of them give you complete revenue attribution or WordPress-native data ownership.

<h4>⚡ Popup Maker Pro — $99/year</h4>

Everything serious marketers need to drive and measure results:

* **Exit Intent** — Recover abandoning visitors with perfectly timed offers before they leave
* **Popup Analytics** — Track views, clicks, and conversions with a full reporting dashboard
* **Advanced Targeting** — Target by user behavior, referral source, scroll depth, geolocation, browser, OS, user role, login status, and more
* **Scheduling** — Display time-sensitive offers automatically at the perfect moment
* **Forced Interaction** — Ensure critical messages are acknowledged before users continue
* **Call to Action Management** — Create, track, and export unlimited trackable CTAs with conversion reporting
* **Bulk Operations** — Enable, disable, duplicate, and manage multiple popups at once
* **Export / Import** — Replicate winning campaigns across sites in seconds
* **FluentCRM Integration** — Tag contacts, add to lists, and trigger automations on popup conversion
* **Scroll Trigger** — Fire popups when visitors reach a specific scroll depth

<h4>🏆 Popup Maker Pro+ — $249/year</h4>

Everything in Pro, plus industry-specific power for ecommerce and education businesses:

* **Complete Revenue Attribution** — Track actual sales generated by each popup, from interaction through final purchase. See that a specific popup generated $5,000 in revenue this month.
* **WooCommerce Integration** — Add to cart, apply discounts, trigger upsells, cross-sells, and cart abandonment recovery, and track purchase revenue per popup campaign
* **Easy Digital Downloads Integration** — Add to cart, apply discounts, trigger upsells and cross-sells, and track purchase revenue per popup campaign — full feature parity with WooCommerce
* **LifterLMS Integration** — Enroll students, award achievements, apply discounts, and track enrollment revenue per popup
* **Advanced Revenue Reporting** — Attribution reports showing real dollars earned per campaign, popup, and CTA

👉 [Compare Plans & Pricing](https://wppopupmaker.com/pricing/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=pro-plus-section&utm_term=compare-plans)

<h3>🤝 Join Our Growing Community</h3>

We believe in making Popup Maker better together! Here's how you can get involved:

* 📚 [Read Our Documentation](https://wppopupmaker.com/docs/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=questions&utm_term=documentation) - Comprehensive guides and tutorials
* 💬 [Get Premium Support](https://wppopupmaker.com/support/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=questions&utm_term=support) - Our team is here to help
* 🌟 [Join Our Community](https://wppopupmaker.com/community/?utm_campaign=readme&utm_medium=referral&utm_source=readme-description&utm_content=community) - Share strategies & learn from experts
* 💻 [Contribute on GitHub](https://github.com/PopupMaker/Popup-Maker) - Help improve the code
* 🌍 [Help with Translations](https://translate.wordpress.org/projects/wp-plugins/popup-maker) - Make the **best WordPress popup plugin** accessible in your language
* ⭐ [Leave a Review](https://wordpress.org/support/plugin/popup-maker/reviews/#new-post) - Share your experience with others


<h3>Created by Code Atlantic</h3>

Popup Maker is built by the [Code Atlantic](https://code-atlantic.com) team. We create high-quality WordPress plugins that help you grow.

Check out some of our most popular plugins:

* [Content Control](https://contentcontrolplugin.com/) - Restrict Access to Pages and Posts
* [User Menus](https://wordpress.org/plugins/user-menus/) - Show Or Hide Menu Items For Different Users


== Frequently Asked Questions ==

= What are some ways I can use popups to grow my email list? =
People who use Popup Maker to grow their email list have found many creative ways to do so. Some of the most common popups include:

* Exit-intent popups - Asking for an opt-in when someone goes to leave your site, sometimes for a discount or PDF
* Content upgrade popups - Provide more value from your blog posts by giving visitors more resources in exchange for their email address within an optin popup
* White paper popups - Provide industry reports or other white papers using forms within a popup

Even better, Popup Maker integrates with all the most popular form plugins so you can easily embed a form you have already created right into your popups!

= What are some ways popups can increase my WooCommerce store's sales and revenues? =
Many people don't consider popups when trying to find ways to increase conversion rates and revenue on their WooCommerce site but they are actually very effective.

Some popups we have seen work well for ecommerce sites include:

* Cross-sell popups - recommending a companion product when viewing or adding a product to their cart
* Upsell popups - recommending a higher-tier product when viewing or adding a product to their cart
* Cart abandonment popups - offering discounts or support when someone is about to leave the checkout page

= Where is your documentation? =
You can find our documentation over on [our docs site](https://wppopupmaker.com/docs/?utm_campaign=readme&utm_medium=referral&utm_source=readme-faqs&utm_content=documentation)

= How do I open a popup? =
Using "triggers", you can customize what makes each popup open. Review [our triggers documentation here](https://wppopupmaker.com/docs/controlling-popups/using-triggers-and-cookies-together/?utm_campaign=readme&utm_medium=referral&utm_source=readme-faqs&utm_content=open-a-popup)

= How do I stop popups from opening repeatedly? =
Using "cookies", you can set up how long until the popup opens again, if ever. Review [our cookies documentation](https://wppopupmaker.com/docs/controlling-popups/cookies-settings-and-features/?utm_campaign=readme&utm_medium=referral&utm_source=readme-faqs&utm_content=stop-opening-repeatedly)

= What do I do if I want a popup to show only on a certain page/post/etc? =
Using "conditions", you can specify where the popup will be shown. Check out [our conditions documentation](https://wppopupmaker.com/docs/controlling-popups/conditions/?utm_campaign=readme&utm_medium=referral&utm_source=readme-faqs&utm_content=target-certain-pages)

= Why aren't my popups opening/working? =
There are several common causes for this, check [this guide for help](https://wppopupmaker.com/docs/problem-solving/troubleshooting-your-first-popup/?utm_campaign=readme&utm_medium=referral&utm_source=readme-faqs&utm_content=popup-wont-open) resolving it.

== Screenshots ==

1. Example popup using our built-in Ninja Forms integration
2. Example popup
3. Example popup using our WooCommerce extension to make a popup appear when a product is added to their cart.
4. Create and edit an infinite number of unique popups to get any job done.
5. Use our popup editor to customize every facet of your popup completely.
6. Add triggers to your popups to determine what causes it to open. Our free triggers include: Click Open and Auto Open.
7. Choose from many conditions to target exactly who will (and will not) see your popups.
8. Prevent your popups from being annoying to users by using cookies to disable them once they have been viewed.
9. Create and edit an unlimited number of popup themes for every situation.
10. Use the theme editor to choose from over 60 options and theme every element of your popup: Background Overlay, Popup Container, Close Button, Google Fonts, and much more.

== Changelog ==

For the latest updates and release information:

* Join our [community](https://wppopupmaker.com/community/) for important release announcements and discussions
* Visit our [changelog](https://wppopupmaker.com/changelog/) for detailed version history
* View our [complete development changelog](https://github.com/PopupMaker/Popup-Maker/blob/master/CHANGELOG.md)

= 1.24.0 - 2026-08-03 =

**Security**

-   Security and resilience hardening based on continuous AI scanning.
-   Hardened Subscribers page pagination URL escaping to prevent cross-site scripting (XSS).

**Features**

-   Added the free [Popup Maker Debug Tools Chrome extension](https://chromewebstore.google.com/detail/popup-maker-debug-tools/hhkgmkibaalfkkndobkckdopemgioago) for testing and troubleshooting popups—even while logged out of WordPress.
-   Added an "Open Popup" click action to the Beaver Builder Button module, so you can open any popup on click without writing custom code. The chosen popup is automatically loaded on the page even if its display conditions wouldn't otherwise match.

**Improvements**

-   Reorganized the Popup Maker admin menu into clearer creation, audience, performance, and administration groups. The Subscribers page now remains hidden until subscriber storage has been initialized.
-   Improved Calls to Action management with instant-opening editors, loading placeholders, draft-first creation that avoids abandoned records, and more reliable saving and sorting.
-   Improved compatibility with popular post duplication plugins so cloned popups start with fresh analytics stats and other popup-specific identity data.
-   Corrected the plural of "Call to Action" to "Calls to Action" across the admin. Thanks @swinggraphics.
-   Added a `popup_maker/overlay_zindex` filter to control the popup overlay's stacking order, so sites can lower it below the WordPress admin bar (or other elements) when needed.

**Fixes**

-   Fixed pending upgrade notices causing a fatal error on logged-in front-end pages by removing reliance on admin-only form helpers. Closes #1253.
-   Fixed generic WordPress editors and page builders receiving 404 responses for Popup and Popup Theme REST collections by exposing standard `wp/v2` aliases while preserving Popup Maker's versioned API.
-   Fixed Gravity Forms inside popups no longer submitting via AJAX (regression since 1.21.0), which broke text confirmations and Form Submission triggers after submit.
-   Improved keyboard focus when closing popups: focus returns to the previously focused element, or to the top of the document when there wasn't one (auto-open popups) or it no longer exists. Thanks @swinggraphics.
-   Fixed Click Open "Extra Selectors" starting with a number (e.g. `.2026-selector`) being rejected as invalid. Selectors are now validated against jQuery's engine, which handles the actual matching.
-   Fixed a bug where a popup could unexpectedly lose its triggers, conditions, and display settings — leaving only its theme — after saving, a plugin update, or when another plugin or page builder saved the popup. Saves that would erase an existing popup's settings are now prevented and report an error instead of silently discarding your configuration.
-   Fixed CTA Button blocks losing button content during transforms, clearing links while CTA data loaded, and reporting validation errors for blocks saved by previous versions.
-   Fixed non-AJAX form submissions being attributed to the wrong popup—or no popup—and improved Newsletter and Beaver Builder conversion tracking reliability.
-   Fixed temporary license API failures causing fatal errors or replacing known license status, and prevented manually entered keys from being lost when add-on-provided license constants appeared or disappeared.
-   Fixed disabled or unpublished Calls to Action continuing to render or process clicks.
-   Fixed Popup Category and Tag filters not retaining their selected values and interfering with popup bulk actions.
-   Fixed bundled translations not loading correctly and plural translations receiving incorrect arguments.
-   Fixed the Easy Modal v2 importer crashing because its bundled files were loaded from outdated paths.
-   Fixed “Previous Opens” showing incorrectly after resetting popup analytics.

= 1.23.0 - 2026-06-28 =

**Security**

-   Tightened the permission checks required & improved validation for pro activation.
-   Additional hardening based on continuous AI scanning.

**Features**

-   Added a "Preview Popup" option to the block editor's Preview menu, matching the classic editor. It opens the popup on the front end in a dedicated tab; clicking it again reuses that same tab, and saving the popup automatically refreshes the open preview so you always see your latest changes.
-   Added "Disable URL tracking parameters" privacy setting. When enabled, popup links no longer get `?pid=` appended — link clicks are tracked via browser beacons instead (less reliable but non-invasive to URLs).

**Improvements**

-   The popup editor now remembers the last-open settings tab per popup instead of sharing a single tab across all popups, so each popup reopens to the tab you last used.

**Fixes**

-   Fixed the "Preview" button in the classic editor not opening popups — a regression introduced in 1.22.0. You can once again preview popups directly from the editor without having to save and view the live page, now reliably regardless of how quickly the page finishes loading. Thanks to @marklchaves for the fix.
-   Fixed missing styles for Popup Maker blocks on the front end in some installs — blocks now render with the correct styling without a console warning about a missing stylesheet.
-   Fixed "Disable popup open tracking" privacy setting now disables link tracking parameters appended and click beacon tracking.
-   Fixed PHP bug in `pum_get_asset_group_meta()` where `(array) file_exists()` always evaluated as truthy, causing fatal errors when build artifacts were missing.
-   Fixed condition dropdowns (such as "Categories", "Tags", and other taxonomy selectors) showing duplicate entries and hiding some terms when you had more than ten — every term is now listed once and reachable as you scroll.
-   Fixed popups taller than the browser window having their top cut off above the screen, which made the start of the content and the close button impossible to reach. Tall popups now keep their top edge in view.
-   Fixed an invalid "Extra Selectors" value on a Click Open trigger breaking all popup triggers on the page. A malformed selector is now skipped (with a console notice) instead of stopping every trigger from working.
-   Fixed ACF (Advanced Custom Fields) shortcodes not displaying their values inside popups since ACF 6.3.4, which stopped resolving `[acf]` shortcodes on non-public content. ACF shortcodes now render in popup content again.

= 1.22.0 - 2026-03-31 =

**Features**

-   Added link click conversion tracking for external and special links (mailto:, tel:, etc.) within popups. Clicks are tracked via analytics beacon and categorized by link type for conversion reporting.
-   Added [Beaver Builder Forms integration](https://wppopupmaker.com/form-integrations/beaver-builder/) for form submission tracking and conversion analytics. Supports Contact, Subscribe, and Login form modules.
-   Added [Bit Form integration](https://wppopupmaker.com/form-integrations/bit-form/) for form submission tracking and conversion analytics.
-   Added [Elementor Pro Forms integration](https://wppopupmaker.com/form-integrations/elementor-pro-forms/) for form submission tracking and conversion analytics with support for targeting specific forms.
-   Added [Forminator integration](https://wppopupmaker.com/form-integrations/forminator/) for form submission tracking and conversion analytics.
-   Added [HappyForms integration](https://wppopupmaker.com/form-integrations/happyforms/) for form submission tracking and conversion analytics.
-   Added [HTML Forms integration](https://wppopupmaker.com/form-integrations/html-forms/) for lightweight form submission tracking and conversion analytics.
-   Added [Kali Forms integration](https://wppopupmaker.com/form-integrations/kali-forms/) for form submission tracking and conversion analytics with native Gutenberg block support.
-   Added Newsletter plugin (thenewsletterplugin.com) form integration for success detection and conversion tracking. **Note:** Newsletter forms must use `[newsletter_form ajax="true"]` shortcode to enable AJAX submission mode for the integration to work.

**Improvements**

-   Popup title field is now editable in the Block Editor sidebar, matching the classic editor experience.
-   URL tracking parameter names (`pid`, `cta`, `notrack`) are now filterable via `popup_maker/param_name/{key}`, allowing site admins to resolve conflicts with other plugins. Example: `add_filter( 'popup_maker/param_name/popup_id', function() { return 'pum_id'; } );`
-   Improved PID tracking reliability by firing template_redirect at priority 0, ensuring tracking occurs before other plugins that might redirect.
-   Enhanced all Popup list views with sortable Enabled column and bulk enable/disable actions for easier management of multiple popups.
-   Block library assets (CSS) loading unnecessarily on all front-end pages. WordPress now automatically loads these styles only when Popup Maker blocks are actually rendered.
-   Enhanced ad-blocker bypass feature to obfuscate script and style element IDs (in addition to filenames) for improved bypass reliability. IDs now consistently use per site settings using either MD5 hashing or custom prefixes.

**Fixes**

-   Fixed popup preview not opening due to admin_debug trigger firing before initialization completed. Closes #1181.
-   Fixed animation speed field allowing negative and excessively large values via manual text input. Closes #1053.
-   Fixed Gravity Forms integration fatal error when saving Close Popup or Open Popup settings. Closes #1084.
-   Fixed CTA shortcode buttons rendering as plain links instead of styled buttons, with proper support for fill, outline, and text-only styles in both classic and block editor popups.
-   Fixed mailto: and tel: links inside popups being incorrectly modified with tracking parameters, which broke email and phone links.
-   Fixed Fluent Forms integration fatal error when using double opt-in. Closes #1094.
-   Fixed Time Delay trigger settings tab displaying blank when switching from Click Trigger advanced tab. Closes #1109.
-   Fixed trigger modal "Add" button label not displaying due to incorrect i18n function usage. Props to @DAnn2012.
-   Fixed Divi 4 block editor compatibility issue where the popup editor would fail to load when the block editor was enabled. The classic editor is now automatically enforced for Divi 4 users.
-   Fixed license key not deactivating properly.
-   Fixed issue where license keys were being saved as asterisks instead of the actual key.
-   Fixed issue where filter `replace_editor` was being used as an action without returning the value.
-   Fixed Subscribers page sort columns throwing 404 errors due to malformed URLs with double protocols (e.g., `https://http//site.com`). Closes #1092.
-   Fixed SQL syntax error on Subscribers page caused by using identifier placeholder instead of string placeholder in `SHOW TABLES LIKE` query.

= 1.21.5 - 2025-10-13 =

**Improvements**

-   Optimized Google Fonts integration by eliminating database transients and API calls in favor of direct JSON loading with in-memory caching. This resolves reported database crashes from large font data and improves performance by 83% (file size reduced from 1.5MB to 255KB) while eliminating all database overhead.

**Fixes**

-   Fixed accessibility tab trapping JavaScript error "trigger is not a function" when using keyboard navigation in popups.
-   Fixed potential error when get_current_screen() is not available.

= 1.21.4 - 2025-09-25 =

**Improvements**

-   Prevented misleading "Lite" messaging when extensions are active. Extension functionality will continue to work as expected.

**Fixes**

-   Fixed Editor role users not being able to edit popups and themes, changing default permissions from `manage_options` to `edit_others_posts`.
-   Fixed issue with conditions not working properly when advanced cookie rules were enabled in Advanced Targeting.
-   Fixed popup titles being cleared when editing popups.

**Developers**

-   Added `popup_maker/permissions` filter to allow customization of user permissions for Popup Maker functionality.

= 1.21.3 - 2025-09-21 =

**Fixes**

-   Fixed page builder compatibility issues by reverting popup preloading timing to wp_enqueue_scripts:11 (matching v1.20.6 behavior).
-   Fixed delayed initialization of $.fn.popmake.triggers object for proper backward compatibility with legacy extensions.
-   Fixed prevent popup init console notice when Debug Mode is not enabled.

= 1.21.2 - 2025-09-18 =

**Fixes**

-   Fixed Beaver Builder compatibility issue that appeared in v1.21.0, special thanks to @robbymccullough at Beaver Buidler for the assist
-   Fixed PHP warning "Undefined property: stdClass::$post_content" in Assets.php when post object lacks post_content property.
-   Fixed Restore missing initialization of $.fn.popmake.conditions object for backward compatibility You with legacy extensions.

= 1.21.1 - 2025-09-16 =

**Fixes**

-   PHP 7.4 errors due to strict function return types with union types that are not supported.
-   Ensure bundled scripts & styles dependencies are properly loaded.

= 1.21.0 - 2025-09-15 =

This update begins the process of modernizing our codebase while polishing existing stuff & adding new features.

**Minimum Requirements Change**

-   PHP: 7.4+
-   WordPress: 6.6+

**Features**

-   Trackable Call to Actions
    -   Create as many as you need.
    -   Track results, per link & per popup.
    -   Redirect to any page or url.
    -   Call To Action Button blocks for gutenberg to easily insert trackable links with style.
    -   CTA Shortcode to insert them without Gutenberg.
    -   Works with premium Popup Analytics.
    -   Upgrade to Popup Maker Pro or Pro+ to use them outside popups, for quick import/export, or to create WooCommerce add to cart & apply discount buttons.
-   Conversion tracking for all internal popup links enabling better analysis of popup performance and user engagement.
-   New `On Conversion` cookie event to disable popups once they convert.
-   New Bricks Builder form integration for conversion tracking, form based cookies, closing popups after submission, and more.

**Security**

-   Minor:Removed Easy Modal v2 [modal] shortcode compatibility mode as it has been deprecated for a long and was recently reported to include an unescaped title output.

**Improvements**

-   Refactored core analytics to prevent duplicate conversion tracking when Pro is active.
-   Block editor is now the default for new popups, replacing the previous opt-in beta approach for a more streamlined editing experience.
    -   Added "Use Classic Editor" setting for users who prefer the traditional popup editor interface.
    -   Existing users who previously disabled the block editor will see a one-time migration notice with options to continue using the block editor or switch to classic.
    -   Updated new user onboarding to include guidance about the classic editor option for users who prefer the traditional interface.
-   Optimized popup `open` functions to improve browser animation reliability and consistent user experience. This update aims to eliminate visual inconsistencies and resolve issues where popups occasionally failed to display.
-   Fixed settings page save notifications that previously only appeared after redirects, now displays success notice on all settings saves.
-   Added plugin settings shortcut to the admin toolbar menu.
-   Updated CSS selector generation tool with click-to-copy and improved selectors.
-   Better grouping of Popup Maker extensions in the Plugins page.
-   Updated build processes to rely on @wordpress/scripts & Webpack, as well as improved developer tooling. This should result in smaller JS & CSS file sizes, more reliable builds, and faster development cycles.
-   Updated all branding to use SVGs and new marks/logos.
-   Improve reliability of admin notice dismissals.
-   Use `navigator.sendBeacon` when available for more reliable analytics.
-   Better handling of version changes & migration processing during plugin updates.
-   Added ability to search multiple post types in postselect fields.
-   Added ability to search multiple taxonomies in taxonomyselect fields.
-   Added validation for hex color conversion to prevent deprecated notices.

**Fixes**

-   Fixed multicheck fields not properly saving when all options were unchecked, preventing users from clearing all selections in settings like analytics reporting permissions.
-   `Close on overlay click` & `Close on ESC press` stopped working if 2 popups were open and one closed.
-   Potential error due to post object missing a post type.
-   Prevent missing options data in DB from throwing errors on PHP 8.3+.
-   Prevent error when Gravity Forms settings are not set.

**Developers**

-   Optimized plugin loading & activation mechanisms.
-   First stage of modernizing & reorganizing to use PHP namespaces & other PHP 7.4 optimizations.
-   Updating frontend JavaScript to use hooks/filters system instead of global variables over time.
    -   Added new JS `popupMaker.triggers` filter to allow adding custom triggers.
-   Added new helper methods for registering Popup Maker custom scripts & styles that will be bundled with our plugin JS/CSS files automatically via AssetCache API.
-   Lots of WPCS & TypeScript/PHP Type enforcement fixes.

= 1.20.6 - 2025-08-14 =

-   Fix: WordPress 4.9 compatibility by checking has_blocks() function existence before calling it.
-   Fix: WordPress 4.9 compatibility by checking wp_date() function existence before calling it.

= 1.20.5 - 2025-05-30 =

-   Security: Fix potential XSS for custom HTML based popups.

= 1.20.4 - 2025-01-29 =

- Tweak: Updated documentation links to use new docs site.
- Fix: Popup title aria-labelledby attribute was being double-quoted. Thanks  to the [Equalize Digital](https://equalizedigital.com/) team.
