NP Age Verification Suite 1.2.4 Install Guide

NP Age Verification Suite 1.2.4 Install Guide

A practical, screenshot-driven setup walkthrough for the complete age verification suite on PrestaShop 8 and 9 — covering gate configuration, verification methods, layout modes, themes, GeoIP, per-product age tiers, checkout enforcement, audit log, analytics, and accessibility.

Package

Use np_ageverify-1.2.4.zip for PrestaShop 8.x and 9.x stores.

What you get

Four verification methods, six premium themes, five layout modes, GeoIP country rules, per-category and per-product age tiers, checkout blocking, immutable audit log with CSV export, analytics dashboard, anti-bruteforce rate limiting, EN/ES translations, WCAG 2.1 AA accessible UI.

Try it live

Both demo storefronts have the gate enabled — verify, then watch the audit log fill from the back office.

NP Age Verification Suite — default DOB gate on PrestaShop 9 storefront Default Date-of-birth gate on a PrestaShop 9 storefront — center modal layout, minimal theme, premium typography and refined badge.

1. Package File

  • Package: np_ageverify-1.2.4.zip
  • Platform: PrestaShop 8.x (8.0.0+) and PrestaShop 9.x (9.0.0+)
  • PHP: 7.4, 8.1, 8.2, 8.3+
  • SHA256: e5b33cee145ce7c21c9ebd5507fd31c1913f3fe4250f2cf5e3729fe7b2a9ca00
  • Download: available from the product page after purchase; direct release file for verification is https://neuroplugin.com/downloads/np_ageverify-1.2.4.zip
Verify the checksum before installing. Run shasum -a 256 np_ageverify-1.2.4.zip on macOS / Linux or certutil -hashfile np_ageverify-1.2.4.zip SHA256 on Windows and compare against the SHA256 published on the product page.

2. Install Steps

1

Open Module Manager

Log in to your PrestaShop back office and go to Modules → Module Manager.

2

Upload the ZIP

Click Upload a module, drop in np_ageverify-1.2.4.zip, and wait for PrestaShop to confirm the install.

3

Configure the gate

Click Configure on the NP Age Verification Suite card. You land on the Settings tab — three tabs total: Settings, Audit log, Analytics.

4

Hit a storefront page

Open any product page in an incognito window. The gate appears immediately — verify it shows the minimum age you configured (default 18).

Upgrading from an earlier version? Upload the 1.2.4 zip via Module Manager. Upgrade scripts run automatically, adding new configuration keys and database columns without losing your existing settings. Upgrade from any version 1.0.0 or later is supported.
NP Age Verification Suite — back-office Settings tab Back-office Settings tab — premium card layout grouped into Gate behaviour, Look & feel, and Storefront copy. Pill-style sub-tabs at the top.

3. First Configuration

The Settings tab is divided into clear sections. Walk through them top-to-bottom on first install.

Enable the gate — toggle on (off by default so you can configure first)
Minimum age — typically 18, 19 (Quebec/AB), or 21 (US tobacco)
Restriction mode — Storewide (gate every page) or Restricted (per-category / per-product)
Verification method — DOB, checkbox, yes/no, or birth-year dropdown (section 4)
Layout mode — center modal, fullscreen, side panel, bottom sheet, or inline embed (section 5)
Theme — choose from six presets or use custom CSS (section 6)
Gate icon — select an industry icon or upload your own (section 7)
Background effect — blur, dim, pixelate, gradient, or none (section 7)
Title & message — set the headline and explanation shown to shoppers
Exit URL — where the Leave button sends under-age visitors
Cookie lifetime — how long a verified session lasts (1–365 days, default 30)
Logo URL — optional, displayed above the age badge
Brand color — a single hex color that drives the auto-palette (section 6)
Consent checkbox & disclaimer — optional legal consent text shown below the gate
Tip — preview before going live. Set Enabled to a single test IP first, or test in a private window so your verified cookie does not hide the gate from yourself.

4. Verification Methods

Pick the method that matches your jurisdiction and audience tolerance. You can change it at any time without losing audit history.

MethodBest forUX impact
Date of birthStrict regulators (alcohol, firearms)Three small inputs, autocompleted on mobile
“I am 18+” checkboxLight-touch verticals where a declaration is acceptedSingle tap-and-go
Yes / No buttonsStores prioritising conversion over compliance theatreTwo large buttons, fastest to clear
Birth-year dropdownMid-strictness — captures year without month/day frictionOne styled select, mobile-friendly
Auditor note. Most EU/UK regulators accept a declared-age gate with an immutable audit log; the DOB and birth-year methods write the declared year into the log. The checkbox method writes the acknowledgment plus rule version. The CSV export shows the same fields regardless of method.
Yes/No verification method on PrestaShop 9 Method: Yes / No buttons — fastest to clear, two large primary actions, one-tap conversion path.
Checkbox verification method on PrestaShop 9 Method: “I am 18+” checkbox — single acknowledgment box, ideal for light-touch verticals.
Birth-year dropdown verification method on PrestaShop 9 Method: Birth-year dropdown — captures year without month/day friction, mid-strictness option.
Mobile bottom-sheet gate on PrestaShop 9 Mobile bottom-sheet layout — slides up from the bottom with a drag handle, larger tap targets, optimised for thumb-reach.

5. Layout Modes

Five layout modes let you control how the gate appears. All non-inline modes automatically convert to a bottom sheet on mobile viewports (below 768 px) for a native-feeling mobile experience.

ModeDesktopMobileBest for
Center modalCentered dialog overlayBottom sheetDefault — balanced visibility and UX
FullscreenFull-viewport panelBottom sheetAdult stores, gambling — impossible to miss
Side panelRight-anchored drawerBottom sheetStores wanting a slide-in UX
Bottom sheetBottom-anchored sheetNative bottom sheetMobile-first stores
Inline embedIn-flow region, no overlaySameEmbedding the gate inside a specific page section
Mobile bottom-sheet pattern. The bottom sheet uses max-height: min(92vh, 720px) and overscroll-behavior-y: contain. It includes a drag handle element for native mobile feel.

6. Themes & Brand Palette

Six preset themes cover most stores out of the box. All meet WCAG 2.1 AA contrast requirements.

  • Minimal — clean white card, subtle shadow. Default for most stores.
  • Luxury Dark — gold-on-charcoal palette for premium spirits, cigars, vape boutiques.
  • Glassmorphism — frosted translucent panel, modern feel.
  • Neon — purple accent on near-black, suits cyber/edgy brands.
  • Soft Gradient — pastel multi-stop background.
  • Brand Auto — enter a single hex color and the module generates a full palette (background, text, accent, error, success) that meets WCAG AA contrast. No CSS skills needed.

Custom CSS

Paste any CSS into the Custom CSS field in the admin form. It is injected scoped under .np-ageverify. Unsafe tokens (<script>, expression()) are automatically stripped.

Dark mode

The Minimal, Glassmorphism, Brand Auto, and Soft Gradient themes automatically switch palettes when the visitor’s OS is in dark mode. Luxury Dark and Neon stay dark in both modes by design.

NP Age Verification Suite — Luxury Dark theme on PrestaShop 8 Theme: Luxury Dark — gold-on-charcoal palette with gilded badge and sheen-over-charcoal CTA.
NP Age Verification Suite — Glassmorphism theme on PrestaShop 8 Theme: Glassmorphism — frosted translucent panel with backdrop saturation.
NP Age Verification Suite — Neon theme on PrestaShop 8 Theme: Neon — purple accent on near-black, suits cyber/edgy brands.

7. Gate Icons & Background Effects

Gate header icons

Choose from seven built-in SVG industry icons displayed at the top of the gate panel:

  • Alcohol, Tobacco, Shield, CBD, Gaming, 18+, 21+
  • Upload a custom SVG or PNG via URL
  • Or set to None for a text-only gate

Icons inherit the theme’s color scheme via currentColor and are marked aria-hidden="true".

Background overlay effects

Configure the overlay behind the gate panel. Intensity is adjustable from 0 to 100%.

EffectTechniqueFallback
Blurbackdrop-filter: blur()Solid dark overlay
DimSemi-transparent dark overlayN/A (pure CSS)
PixelateBlur + contrast + pixelatedSolid dark overlay
GradientColored gradient + light blurGradient without blur
NoneTransparentN/A

8. Per-Category & Per-Product Restriction

If your catalogue mixes regulated and unregulated products, gate only what needs gating.

Per-category restriction

1

Switch scope to “Restricted”

In Settings → Restriction mode, change from Storewide to Restricted.

2

Pick the categories

Tick every category that contains regulated products. The gate triggers when a shopper opens a product page, category page, or has any cart item that belongs to one of these categories.

3

Save and validate

Open a non-restricted product in a private window — no gate. Open a restricted product — gate appears.

Per-product age tiers

Override the category-level minimum age on individual products. Use the per-product age tiers field (JSON or comma pairs) to set specific minimum ages — for example, 18 for beer and 21 for spirits within the same category.

When multiple rules match (category, product, GeoIP), the module applies the highest applicable minimum age.

Subcategories. The gate respects PrestaShop’s category tree. If you tick a parent, all its descendants inherit the restriction.

9. GeoIP Country Rules

For international stores where legal minimum ages vary by country.

1

Enable GeoIP

Toggle GeoIP on in the module configuration.

2

Define country rules

Enter a JSON map of ISO2 country codes to minimum ages, for example: {"US": 21, "DE": 16, "FR": 18, "GB": 18}

3

Country detection

The module checks Cloudflare (CF-IPCountry), Apache (GEOIP_COUNTRY_CODE), Nginx headers, or a GeoLite2 database. If the visitor’s country is not in the map, the store’s default minimum age applies.

GeoIP is optional. It requires server-side country detection to be available on your hosting. If none of the detection methods are available, the module falls back to the store-level minimum age silently.

10. Checkout Enforcement

The storefront gate is the first guard. The checkout guard is the second — and it is what your payment processor cares about.

If the cart contains any restricted product and the verified-session cookie is missing or expired, checkout displays the gate inline before the payment step
Direct add-to-cart links and “share cart” URLs cannot bypass the check
A checkout_blocked event is recorded in the audit log with the cart ID, customer ID and minimum age
Once verified at checkout, the gate is dismissed for the cookie lifetime; the customer continues straight to payment
Recommended. Keep checkout enforcement on even if you also have storewide gating. It catches the rare case where a session loses its cookie mid-journey (private mode, third-party-cookie blockers).

11. Anti-Bruteforce Rate Limiting

Prevents minors from repeatedly guessing dates or clicking through the gate.

Max attempts — configurable number of failed verification attempts before lockout
Time window — the period in which failed attempts are counted
Cooldown — how long the visitor must wait before retrying after lockout
Tracking is per hashed IP address — no PII stored
Rate-limit records expire automatically; no manual cleanup needed
Testing. Disable rate limiting temporarily while testing the gate to avoid locking yourself out. Re-enable for production.

12. Audit Log & Analytics

Open the Audit log tab from the configuration page.

Every view, pass, fail, underage, and checkout_blocked event is recorded with timestamp, hashed IP, hashed user-agent, rule context, and minimum age
Filter by date range, event type, or result. Apply, then click Download CSV for an auditor-friendly export
Click any row to view the detail card — read-only, no edit/delete from the UI
The Analytics tab shows total events, last-30-days count, distribution by result, and a 14-day daily timeline
Privacy. Raw IP and user-agent values are never written to the database. The hash uses a per-store salt; an auditor can confirm uniqueness across rows but not reverse the hash to identify a person.
NP Age Verification Suite — back-office Audit log tab Audit log tab — date / event / result filters, CSV export, scrollable record list with status chips.
NP Age Verification Suite — back-office module configure page Module configure page — entry points into the dedicated Settings, Audit log, and Analytics tabs.
NP Age Verification Suite — back-office Analytics tab Analytics tab — KPI cards for total & 30-day, distribution by result with inline bars, 14-day daily volume timeline.

13. Translations

English and Spanish are bundled. Every storefront string is translatable through PrestaShop’s standard translation interface.

1

Open International → Translations

Pick Type of translation = “Installed module translations”, language = your target, then choose NP Age Verification Suite.

2

Translate strings

The two relevant domains are Modules.Npageverify.Shop (storefront strings: title, message, buttons, errors) and Modules.Npageverify.Admin (back-office labels).

3

Per-language consent text

The consent / disclaimer field in Settings supports the active language picker — switch language at the top of the back office before editing to set per-language copy.


14. Accessibility & Web Vitals

NP Age Verification Suite meets WCAG 2.1 AA requirements and is designed for minimal Web Vitals impact.

Accessibility

Focus trap — Tab/Shift+Tab cycle is contained within the gate dialog for overlay layouts
ARIA semanticsrole="dialog" aria-modal="true" for overlays; role="region" for inline embed
Focus-visible rings — two-tone outline (white gap + brand primary) visible on any background
Contrast — all text meets 4.5:1 minimum contrast ratio; labels upgraded to #64748b (4.6:1)
Tap targets — all interactive elements meet 44×44 CSS px minimum; touch-action: manipulation on all buttons
Reduced motionprefers-reduced-motion: reduce disables all animations and transitions
Keyboard navigation — full gate interaction possible without a mouse

Web Vitals

Zero footprint after verification — verified visitors load no module CSS, JS, or HTML
No external fonts or CDN — typography inherits from the host theme, no FOUT
CLS guard — inline min-height on the gate root prevents layout shift
SEO-safe — crawler bypass for search engines and social preview bots; data-nosnippet on gate DOM
CSS priority — loaded at priority 80 so theme LCP / critical-path stays first

15. Frontoffice Validation Checklist

Run this checklist after configuration. It mirrors what the audit team replays before signing off.

Open a restricted product in a private window — gate appears with the correct minimum age
Submit a passing verification — gate dismisses, page becomes interactive, no console errors
Submit a failing verification (e.g. underage DOB) — soft error appears, gate stays
Tap Leave — browser navigates to the configured exit URL
Open a non-restricted page in a fresh private window (restricted mode only) — no gate
Add a restricted product to cart, open checkout in a fresh private window — gate appears at checkout
Reload the page after a passing verification — the cookie keeps the gate dismissed
In OS dark mode, the gate flips to dark palette (themes that support it)
Test on mobile viewport — bottom-sheet layout appears with drag handle and larger tap targets
Test keyboard navigation — Tab through all gate elements, focus stays trapped in the dialog
Open the back-office Audit log tab — every event from the previous steps is recorded
Open the Analytics tab — KPI cards and charts reflect recent activity

16. All Screenshots

A reference gallery of every gate variant and back-office screen.

Storefront — verification methods

DOB method, PS9 desktop Date-of-birth — desktop, PrestaShop 9, default minimal theme.
Checkbox method, PS9 desktop “I am 18+” checkbox — single acknowledgment.
Yes/No method, PS9 desktop Yes / No buttons — fastest two-tap path.
Birth-year dropdown, PS9 desktop Birth-year dropdown — captures year only.

Storefront — themes

Luxury Dark theme, PS8 Luxury Dark — gilded badge, charcoal panel, gold-gradient CTA.
Glassmorphism theme, PS8 Glassmorphism — frosted translucent panel.
Neon theme, PS8 Neon — purple accent on near-black panel.

Storefront — mobile & PS8

Mobile bottom-sheet, PS9 Mobile bottom-sheet — drag handle, larger tap targets, thumb-reach optimised.
DOB gate on PS8 PrestaShop 8 — same gate UX, validated on PS 8.x storefronts.

Back office

BO Settings tab Settings — gate behaviour, look & feel, storefront copy in premium card sections.
BO Audit log tab Audit log — filters, CSV export, status-chipped record list.
BO module configure page Module configure page — direct access to the suite tabs from PrestaShop Module Manager.
BO Analytics tab Analytics — KPI cards, distribution by result with inline bars, 14-day daily volume timeline.

17. License & Support

License

  • Single domain: each license covers one PrestaShop installation (one domain). Multistore (multiple shops on the same installation) is included.
  • Updates: 12 months of update access from purchase date. After expiry, you keep the last downloaded version.
  • Support: 6 months of email support from purchase date.
  • Modification: you may modify the module for your own use. Modified versions are not eligible for support.
  • Redistribution: the module may not be redistributed, resold, or shared with third parties.

Support scope

  • Included: installation, configuration, module bugs, multistore setup, GeoIP configuration, upgrade assistance
  • Not included: custom theme development, third-party module conflicts, server configuration, legal / compliance advice
  • Contact: support@neuroplugin.com — response within 2 business days

Refund policy

14-day refund if the module does not function as described on a standard, unmodified PrestaShop 8 or 9 installation. Contact support@neuroplugin.com with your order number, PrestaShop version, PHP version, and a description of the issue.

Compliance disclaimer

NP Age Verification Suite is a software tool that helps merchants present age-verification interfaces. It performs self-declared verification (date of birth, checkbox, yes/no, or birth-year). It does not verify identity documents, perform biometric checks, or connect to government databases. Merchants must determine what measures their jurisdiction requires. The audit log provides evidence of verification events, not legal certification. Neuroplugin does not provide legal advice.


18. Troubleshooting

Gate appears every page reload, even after I verified

Cookies are blocked or the cookie lifetime is set to 0. Check your CMP / cookie banner is not stripping the session cookie, and confirm the lifetime in Settings is > 0.

Gate flashes briefly then disappears (FOUC)

Theme critical CSS is loading after the gate CSS. The gate already inlines a min-height:100dvh hint to limit CLS. If you still see flicker, dequeue the theme’s late-loading CSS or move the gate CSS preload before the LCP element.

Audit log is empty even though I verified

Verify your PrestaShop instance has write permission on the ps_np_ageverify_log table and that the active shop ID matches the back-office shop selector. Multistore installs sometimes write to a different shop_id than the one you are viewing.

“Network error. Please try again.”

The verify endpoint is being blocked by a WAF or CSP. Whitelist /module/np_ageverify/verify for POST. The endpoint is same-origin, no third-party calls.

Mobile bottom-sheet does not appear, only modal

The bottom-sheet styling is gated at max-width: 767px. Confirm the viewport meta is present in your theme: <meta name="viewport" content="width=device-width, initial-scale=1">.

GeoIP is not detecting my country

GeoIP requires server-side country detection. The module checks Cloudflare (CF-IPCountry), Apache (GEOIP_COUNTRY_CODE), Nginx headers, or a GeoLite2 database. If none are available on your hosting, detection falls back to the store’s default minimum age. Contact your hosting provider about enabling GeoIP headers.

Rate limiting locked me out during testing

Rate limiting is per hashed IP. Wait for the cooldown period to expire, or temporarily disable rate limiting in the module configuration while testing.

Brand Auto palette looks wrong

The auto-palette generates colors from a single brand hex value. If the result looks off, try a different brand color with more saturation. The palette preview in the admin form shows the generated colors with their contrast ratios before you save.

Scroll to Top