WP Manifestindependent plugin directory
manifest / forms / nanflows-popup-lite

Nanflows Popup

Popups, slide-ins, banners and inline forms for WordPress. The free plugin.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/nanflows/nanflows-popup-lite/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Popups, slide-ins, top banners, bottom bars and inline forms for WordPress, with visual editing, targeting, triggers and templates.

This is the free plugin, and it is complete on its own: nothing here stops working or nags you into buying something. A paid add-on, Nanflows Popup Pro, extends it through the filters and JavaScript hooks below; this plugin does not require it and does not contain it.

What it does

  • Types — modal, slide-in, top banner, bottom bar, inline.
  • A visual editor — drag-and-drop canvas with rows and columns, typography and spacing on every element, and a live preview per device.
  • Triggers — time on page, scroll depth, click.
  • Targeting — pages, post types, archives, search, 404, logged-in status, WooCommerce pages, and visitor rules such as UTM, referrer and cookie.
  • Frequency — every visit, once a session, once every N days, stop after a close or a conversion.
  • Forms — leads stored in your own database, CSV export, consent checkbox, spam protection with Turnstile or reCAPTCHA v3.
  • Integrations — Mailchimp, Brevo, and a signed webhook that reaches anything else.
  • Templates — 25 ready-made designs.

Two things worth knowing

Targeting survives page caches. Rules that depend on the visitor rather than the page — UTM, referrer, cookie, cart value, schedule — are not decided on the server, because a cached page has no visitor. The server passes them and the browser decides, so a cached page still targets correctly.

Countdown timers stay correct behind a cache for the same reason: the deadline is sent, not the remaining time.

Development

docker compose up -d                        # http://localhost:8080
composer install && npm install && npm run build

The compose file mounts this directory into wp-content/plugins/, so an edit on disk is live on the site.

Command What it covers
npm test Front-end and editor units (Jest)
./vendor/bin/phpunit PHP units, WordPress stubbed with Brain Monkey
npm run test:e2e Playwright, against the WordPress above

The E2E suite runs one test at a time on purpose: each test changes what is published on one shared site. It is also sensitive to machine load, so before chasing a failure, re-run the failing test on its own.

build/ is committed because WordPress.org runs no build step and a fresh clone should work before anyone runs npm. Regenerate it with npm run build after changing anything under src/.

Extending it

Pro is not special: it uses the same public extension points any plugin can.

PHP filters and actions — nanflows_runtime_config, nanflows_dialog_types, nanflows_type_layout, nanflows_type_style, nanflows_starter_elements, nanflows_sanitize_type_options, nanflows_popup_extra_markup, nanflows_subscribe_response, nanflows_integration_providers, nanflows_settings_panels, nanflows_overview_panels, nanflows_matched_popups, nanflows_lead_captured, and nanflows_loaded to boot against a loaded plugin.

JavaScript — registerTrigger(), addGate() for a visitor decision made in the browser, convert(), the nanflows:subscribed event, and [data-nf-extra] inputs that are sent along with a lead.

Licence

GPL-2.0-or-later. See LICENSE.