Promo popup
A centred modal with an optional image, a kicker, a heading, a line of copy and either an email sign-up form or a single button. It appears after a delay you set, and it never appears again for someone who has already dismissed it — until you tell it to.
It is off by default. Switch it on only when you have something worth interrupting for.
Where to find it
Section titled “Where to find it”This section is rendered from the theme layout rather than from a template, so it is available on every page of the store — a promo a shopper never reaches is no promo. In the theme editor you will find it near the bottom of the section list, on whichever page you happen to be editing.
Settings
Section titled “Settings”| Setting | Type | Default | What it does |
|---|---|---|---|
| Enabled | Checkbox | false | Master switch. Nothing renders until this is on. |
| Show after | Range, 0–30 s, step 1 | 8 | How long after page load the popup opens. |
| Version | Text | 1 | Change this to show the popup again to everyone who already dismissed it. See below. |
| Image | Image | — | An image above the copy, at 16:9. Optional. |
| Kicker | Text | The list | Accent label above the heading. |
| Heading | Inline rich text | Thirty minutes' head start | The heading. The popup does not render at all if this is empty, even with enabled on. |
| Text | Text | The list sees the lookbook on Wednesday and gets the drop before anyone else on Friday. | Supporting copy, capped at a 42-character measure. |
| Show sign-up form | Checkbox | true | Show the email sign-up form. Turn it off to use a plain button instead. |
| Customer tag | Text | popup | The tag applied to customers who sign up here. Give it something distinct so you can measure the popup separately. |
| Placeholder | Text | Email address | Placeholder in the email field. |
| Result button | Text | Join the list | The submit button’s text, or the link button’s text when the form is off. |
| Button link | URL | — | Used only when the sign-up form is off. Where the button goes. |
| Success message | Text | You're on the list. | Shown after a successful sign-up. |
| Dismiss label | Text | No thanks | The small underlined decline link under the action. |
No blocks. One preset, Promo popup.
Two modes
Section titled “Two modes”| Show sign-up form | What the popup does |
|---|---|
| On (default) | Captures an email through Shopify’s own customer form, tagging the subscriber with your tag. The customer appears under Customers in admin. |
| Off | Shows a single button pointing at button_link — for sending people to a collection, a lookbook page or a dated drop. Clicking it also counts as dismissal, so the popup does not reappear. |
How the frequency cap works
Section titled “How the frequency cap works”There is exactly one rule: once per version, per browser.
- When the popup closes — by the X, by the “No thanks” link, by clicking the backdrop, by pressing Escape, or by clicking the action button — that dismissal is written to the visitor’s browser storage against a key built from the section and the Version string.
- On every later page view, if that key is present, the popup does not open. It is not re-shown after a week, or on a different page, or on a second visit.
- Changing
Versionchanges the key, so everybody — including the people who dismissed the last one — becomes eligible again. Bump it from1to2when you launch a new promo; leave it alone and your returning customers are never bothered twice.
Because the record lives in the browser, it is per device and per browser: the same person gets the popup once on their phone and once on their laptop. Nothing is stored on your server and nothing is attached to a customer record.
Other behaviour
Section titled “Other behaviour”It is a real modal dialog. Focus trapping, the Escape key and the stacking above everything else come from the browser rather than from theme code, which is why keyboard and screen-reader behaviour is correct by default. Page scrolling is locked while it is open.
The delay is deliberate. It waits so it cannot interrupt the first paint or collide with the loading screen. Zero is allowed but means the popup lands over an unfinished page.
It always shows in the theme editor, dismissal record or not — otherwise you could never preview it.
It degrades to nothing. In a browser with no dialog support, or with storage unreachable (a locked-down private window), the popup simply does not appear. Nothing on the page depends on it.
Launching one
Section titled “Launching one”- Write the heading and copy first — the popup will not render without a heading.
- Decide the mode: sign-up form, or a button pointing somewhere.
- Set a distinct
tagso you can measure it. - Set the delay. Eight to twelve seconds is long enough that a reader has chosen to stay.
- Switch
enabledon and preview it. - Next campaign: change
version, and the people who dismissed the last one will see the new one.