Appearance
Targeting & Triggers
NXPopup decides whether to show a popup in four stages. All four must pass.
| Stage | Where it runs | Question it answers |
|---|---|---|
| Menu assignment | Server | Is this module published on this page? |
| Audience | Server | Is this visitor in the target group? |
| Dismissal window | Browser | Has this visitor already dismissed it? |
| Page-view gate | Browser | Has this visitor seen enough pages yet? |
| Open trigger | Browser | Is it time to open? |
Audience
| Option | Who sees the popup |
|---|---|
| Everyone | All visitors. |
| Guests only | Visitors who are not logged in. |
| Logged-in users only | Visitors with an active Joomla session. |
The check runs on the server, before any markup is generated. A visitor outside the audience receives no popup HTML at all — not hidden markup, not an empty container.
Typical uses:
- Guests only — newsletter signups, trial offers, account creation prompts.
- Logged-in users only — upsells, onboarding tips, renewal notices, maintenance warnings.
Leave module caching off
Joomla caches a module's rendered HTML per module, not per visitor. With caching enabled, the first visitor's output can be replayed to everyone. Keep Caching at No caching (the default) whenever Audience is not Everyone.
Open triggers
The three triggers are mutually exclusive — one popup, one opening event.
After a delay
Opens once Open Delay (ms) has elapsed. 0 opens as soon as the page is ready.
Good for announcements you want everyone to see. Values between 2000 and 5000 are common; anything longer risks the visitor leaving first.
After scrolling
Opens once the visitor scrolls past Scroll Depth (%) of the page.
Good for content pages where you want engaged readers rather than everyone who lands. A depth of 50 catches people who read past the halfway mark.
Short pages
A page too short to scroll counts as fully scrolled, so the popup still opens. Without this, a scroll-triggered popup would never appear on short pages.
On exit intent
Opens when the pointer leaves through the top edge of the window — the gesture of heading for the tab bar, the address bar, or the close button.
Good for last-chance offers and cart abandonment. It only fires on a genuine exit: leaving sideways or moving between page elements is ignored.
Touch devices have no pointer
Exit intent cannot fire on phones and tablets — there is no pointer to leave the window. NXPopup falls back to the Open Delay value on those devices, so mobile visitors still see the campaign. Set a sensible delay even when using exit intent.
Page-view gate
Show After N Page Views is a gate, not a trigger. It decides which page view may open the popup; the trigger decides when during that view. The two combine freely.
| Value | Behaviour |
|---|---|
1 | Opens on the first page view (gate disabled). |
3 | The first two page views are skipped; the trigger arms on the third. |
The counter is stored alongside the dismissal flag and stops incrementing once the threshold is reached.
Use it to avoid interrupting first impressions — a visitor who has read three pages is a warmer prospect than one who just arrived from a search result.
Session storage resets the count
With Storage set to Session storage, the page-view count restarts on each visit, so the gate measures pages-per-visit rather than pages-ever.
Combining rules
The stages compose, which makes fairly precise campaigns possible without any custom code:
| Goal | Audience | Trigger | Page views | Dismissal |
|---|---|---|---|---|
| Newsletter signup for engaged new readers | Guests only | Scroll 60% | 3 | 30 days |
| Last-chance offer before leaving checkout | Everyone | Exit intent | 1 | 1 day |
| Renewal notice for existing customers | Logged-in users only | Delay 2000ms | 1 | 7 days |
| Site-wide maintenance warning | Everyone | Delay 0 | 1 | 0 (every load) |
Restrict where each campaign runs with Joomla's own Menu Assignment tab — there is no separate URL rule, because Joomla already does this well.
Behaviour when storage is unavailable
Some visitors block browser storage, or browse in a mode where it throws. In that case NXPopup errs towards showing the popup rather than silently never appearing:
- The dismissal check passes, so the popup opens.
- The page-view gate passes.
- Dismissal is not recorded, so the popup may appear again on the next page.
This is a deliberate trade-off: a repeated popup is a smaller failure than a campaign that silently never runs.