Skip to content

Targeting & Triggers

NXPopup decides whether to show a popup in four stages. All four must pass.

StageWhere it runsQuestion it answers
Menu assignmentServerIs this module published on this page?
AudienceServerIs this visitor in the target group?
Dismissal windowBrowserHas this visitor already dismissed it?
Page-view gateBrowserHas this visitor seen enough pages yet?
Open triggerBrowserIs it time to open?

Audience

OptionWho sees the popup
EveryoneAll visitors.
Guests onlyVisitors who are not logged in.
Logged-in users onlyVisitors 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.

ValueBehaviour
1Opens on the first page view (gate disabled).
3The 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:

GoalAudienceTriggerPage viewsDismissal
Newsletter signup for engaged new readersGuests onlyScroll 60%330 days
Last-chance offer before leaving checkoutEveryoneExit intent11 day
Renewal notice for existing customersLogged-in users onlyDelay 2000ms17 days
Site-wide maintenance warningEveryoneDelay 010 (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.