Skip to content

Age verification

A modal that must be answered before the store can be used: your logo or wordmark, a question, a confirm button and a decline link. Unlike the Promo popup it genuinely blocks — there is no close button, Escape does not dismiss it, and clicking the backdrop does nothing.

It is off by default. Switch it on only if your products actually require it.

Like the promo popup, this section is rendered from the theme layout rather than from a template, so it covers every page of the store. An age gate that only guards the homepage is walked straight past by anyone who follows a link to a product. In the theme editor you will find it near the bottom of the section list, on whichever page you are editing.

SettingTypeDefaultWhat it does
EnabledCheckboxfalseMaster switch. Nothing renders until this is on.
Remember forRange, 1–90 d, step 130How long a confirmation is remembered before the visitor is asked again.
VersionText1Change this to ask everyone again, including people whose confirmation has not yet expired.
LogoImage—Shown at the top of the gate, up to 180 px wide. With nothing set, the brand name from theme settings — or the store name — is shown as a wordmark instead.
HeadingInline rich textAre you old enough?The question.
TextTextYou must be of legal age in your country to enter this store.The explanation, capped at a 44-character measure.
Confirm labelTextI am old enoughThe confirm button.
Decline labelTextTake me backThe decline link.
Decline goes toURL—Where someone under age is sent. Leave it empty and they are sent to a search engine (google.com).
NoteText—A small muted footnote under the buttons — the place for a legal line or a jurisdiction note.

No blocks. One preset, Age verification.

When a visitor confirms, an expiry timestamp of now + remember_days is written to their browser storage under a key that includes the Version string. On every later page view the gate checks that timestamp:

  • In the future — the gate does not open at all.
  • Passed, or absent — the gate opens and asks again.

So remember_days is a real expiry, not a session flag: at 30, a returning customer is asked roughly once a month. Changing Version changes the key, which invalidates every stored pass at once — use it if your wording or your legal threshold changes and you need everyone to re-confirm.

The record is per browser and per device, and nothing is stored on your server or attached to a customer record.

Why it is opened by script, not rendered open

Section titled “Why it is opened by script, not rendered open”

The gate is rendered closed and opened by the theme’s own script. That is deliberate: a gate that blocks the whole store and cannot be answered is worse than no gate at all, so if the script does not run — an error, a very old browser, a blocked file — the visitor sees the store rather than a wall they cannot get past.

Two other consequences of it being a real modal dialog:

  • Focus goes to the confirm button when it opens, so the keyboard answer is a single press.
  • Escape is explicitly cancelled, so a keyboard user cannot step past the gate the way they can dismiss the promo popup. Page scrolling is locked while it is open.
  1. Upload your logo, or leave it empty to use the wordmark.
  2. Write the question and the explanation. Name the legal threshold if your market has a specific one.
  3. Set decline_url to somewhere real and sensible — never leave a declining visitor at a dead end.
  4. Set remember_days. Thirty is a reasonable balance between nuisance and diligence.
  5. Switch enabled on and test it in a fresh private window, then test the decline link.