Modal Bouncer
$19.00

Not Everyone Gets In. Finally.

A bouncer for your whole site. One question at the door. How old are you. Do you agree. Where are you. What's the code. Wrong answer, no entry — and not a single product loads behind it. Age check or anything else. If a visitor has to answer before they proceed, the bouncer makes them.

Right now, your front door is a suggestion.

Anybody walks in. A fourteen-year-old at a bottle shop. A visitor who never read your terms and never will. Somebody in a country you can't ship to. A stranger trying to crash your invite-only launch. They stroll past the door and start clicking like they own the place — because nothing stops them.

A tiny "are you 18?" link buried in the footer isn't a gate. It's a shrug. You tried the cheapest thing and called it security. The bouncer doesn't shrug. It asks the question, it reads the answer, and it holds the line. Age verification is the obvious job — it's nowhere near the only one.

Real age math. Not a checkbox.

Date of birth in, real birthday math out — leap years and all. Set the floor at 18, 21, whatever your category demands. Come up short and you're out. No "click yes if you're old enough" honor system that a toddler could beat.

Stack the questions

One question or six. Date of birth. A number over or under a line. An exact answer. A tick. A dropdown of regions you'll actually serve. Pile them on until the door fits your store. The bouncer asks every one of them.

ALL or ANY. Your call.

Every answer right, or just one. Flip a single toggle and decide how tight the rope pulls. The bouncer enforces it without an ounce of mercy.

It remembers your face

Clear the door once and you walk straight in next time. A month, a quarter, or just this session — you set how long the pass holds. Regulars never get stopped twice. The bouncer's got a memory, not a grudge.

Change the rule, reset the room

Tighten the question and every old pass dies on the spot. Everybody gets re-checked against the new rule — automatically. Nobody coasts in on a policy you retired last week. Try sneaking that past a real bouncer.

Whole site or just the store

Gate everything, or only the pages that need a door. Your blog stays wide open. Your bottle shop gets the rope. You point, the bouncer stands there.

A second look, on your server

Flip on the double-check and every answer gets re-read on your own server before the pass is granted. For the categories where one slip costs you a license, the bouncer checks the ID twice.

Fair to everyone at the door

Keyboard users get a proper focus trap. Screen readers hear the question and the verdict. Nobody gets stranded, nobody slips past on a technicality. The rope's the same for everyone.

Asks in 20 languages

English, Arabic, Japanese, and seventeen more — the question shows up in your shopper's language out of the box. The bouncer is bilingual. And then some.

Who puts a bouncer on the door?

Anyone with something to lose when the wrong person walks in.

Wine and spirits, shipping to a dozen regions with a dozen different age floors. They set a date-of-birth gate at 21, point it at the store pages only, and let the pass ride for 30 days. Blog stays open. Buy buttons stay behind the rope. First-timers prove their age once a month, regulars never notice, and the owner sleeps through the next compliance audit. The honor-system days are over.

Flagged "high-risk" and one bad headline away from losing the account. A footer link wasn't going to cut it. They stack two questions — a 21+ date-of-birth gate and a confirmation tick, set to ALL, both or nothing — and switch on the server-side double-check. When the processor asks how they keep minors out, they have an answer with a lock on it. Not a shrug.

Can only legally ship to three regions. So they ask one question: where are you? Approved region, the door opens. Anything else, the bouncer holds the line and shows a custom message pointing them somewhere that can actually serve them. No carts they have to kill. No orders they have to cancel and refund three days later.

Invite-only launch. The whole site sits behind one question: what's the code? Members got it. They type it once, the pass waves them in for the length of the drop. Everyone else stares at the rope and wonders who they have to know. When the launch ends, the owner flips the plugin off and the door vanishes like it was never there.

Every day the door stays open, you're rolling the dice.

A checkbox nobody reads isn't a defense. It's a confession that you tried the laziest thing and hoped nobody noticed. Put a real bouncer on the door, ask the one question that matters, and stop betting your store on the kindness of strangers.

The house doesn't always win. Hire the bouncer.

Translated In The Following Languages

Arabic Unitag (ar-AA), Chinese, Traditional (zh-TW), Danish (da-DK), Dutch (nl-NL), English (en-GB), English, USA (en-US), Finnish (fi-FI), French (fr-FR), German (de-DE), Greek (el-GR), Hebrew (he-IL), Italian (it-IT), Japanese (ja-JP), Norwegian Bokmål (nb-NO), Persian Farsi (fa-IR), Polish (pl-PL), Portuguese, Brazil (pt-BR), Portuguese, Portugal (pt-PT), Russian (ru-RU), Spanish (es-ES), Swedish (sv-SE), Turkish (tr-TR)


  • Developer J2Commerce
  • Extension Type Apps
  • J2Commerce Version 6.x
  • Joomla Version 6.x
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Fix failure error message shown twice

Fix Casing fixed for type attribute of fields

New Feature Gate the site or store behind a requirement modal (age check, DOB, custom rules)

New Feature Configurable requirements subform: field type, operator, threshold, message

New Feature Operators: min_age, above, below, equals, checked — match ALL or ANY

New Feature Cookie-based pass with TTL, path, SameSite, global or per-requirement strategy

New Feature Optional server-side verification of submitted answers (anti-tamper)

New Feature Scope switch: whole site or J2Commerce pages only

New Feature Bootstrap 5 and UIkit subtemplate variants

New Feature Customizable modal title, intro, and submit label

Update Initial release. Requires Joomla 6.x + J2Commerce 6.x.

A door you can't walk around

The second a visitor lands, the gate drops. Full screen. The page behind it locks cold — no scrolling, no peeking, no tabbing past it, no mashing Escape to make it go away. It's a velvet rope with a temper, and it does not care how badly someone wants in. Right answer, you're in. Wrong answer, you're out. The rope doesn't negotiate.

A door you can't walk around
You build the door. No code. No developer. No nightmare.

You build the door. No code. No developer. No nightmare.

Six ways to ask. Five ways to judge the answer. As many questions as you want. Mix an age check with a region dropdown and a terms tick, set it to ALL, and you've built a real compliance gate in minutes — no developer, no third party holding your shopper data, no identity service deciding what you're allowed to ask. Set the rule. Save. The bouncer clocks in.

Answer once. Walk in after.

First-timers prove themselves at the door. Everyone who clears it gets a quiet pass that waves them through next time — for exactly as long as you decide. Change the question and every old pass expires the instant you hit save. No grandfather clause. No exceptions. The bouncer doesn't do favors.

Answer once. Walk in after.

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.