Skip to content
Growth · 6 min read

The push opt-in prompt, done right

The fastest way to lose a subscriber forever is a browser permission dialog the second someone lands. Here’s the two-step pattern that respects visitors — and grows your list.

Updated By the Pusharoo team
In short
  • Never call the browser’s permission dialog on page load. A “Block” is permanent for that site.
  • Ask with your own branded prompt first; show the native dialog only after a yes.
  • Wait for a signal: a few seconds, a scroll, or a click on your own “Get alerts” button.
  • Remember “Not now”, cap how often you ask, and stop after a few dismissals.

Why the native dialog is a one-shot

When a visitor clicks Block on the browser’s own dialog, the site can’t ask again — they’d have to dig into site settings to undo it. Chrome may also switch noisy sites to a quieter permission UI. So the native dialog should only ever appear when you already know the answer is likely yes.

The two-step pattern

The two-step opt-inFirst your own branded soft prompt appears after a delay or scroll. Only if the visitor taps Allow does the browser native permission dialog appear. Not now is remembered and capped; a browser block is never re-asked.📖Visitor readswait ~8 s or 30% scrollthen💬Your soft promptyour name, logo, wordsAllowNot now🔔Browser’s own dialogshown only after a yes → subscribed ✅⏳Remembered, asked latercap in days · stop after N “Not now”The two-step opt-inFirst your own branded soft prompt appears after a delay or scroll. Only if the visitor taps Allow does the browser native permission dialog appear. Not now is remembered and capped; a browser block is never re-asked.📖Visitor readswait ~8 s or 30% scroll💬Your soft promptyour name, logo, wordsAllowNot now🔔Browser dialog→ subscribed ✅⏳Ask latercapped & rememberedA browser “Block” is never re-asked.
Never fire the native permission dialog on page load. Ask nicely first.

Pusharoo does this by default: your own soft prompt (your name, logo and words) appears after a delay or scroll, and the browser’s dialog only appears after the visitor taps Allow on yours. Options like data-delay, data-scroll, data-cap-days and data-max-dismiss are in the docs.

Timing that works

  • After engagement — a scroll of 30–50% or a second page view says “I like this”.
  • At a moment of value — after a purchase (“Want a shipping update?”), on a sold-out product (“Tell me when it’s back”), at the end of an article.
  • On demand — a bell or “Get alerts” button anywhere, wired to Pusharoo.subscribe(). Set data-auto="false" if you only want this.

Copy that converts

Say what they get and how often. Specific beats generic:

Want first dibs on deals?We send 1–2 alerts a week. Unsubscribe anytime.
Get new recipes first?One ping when a new recipe goes up. That’s it.

Avoid “Allow notifications?” with no reason. Avoid fake urgency. Always offer a clear “Not now”.

Your own button instead of an automatic prompt

Contextual asks convert better than generic ones. Set data-auto="false" on the snippet so no prompt appears on its own, then call Pusharoo.subscribe() from buttons where the value is obvious: “Notify me when it’s back in stock”, “Alert me when the next episode is out”, “Tell me if my flight price drops”. The soft prompt still appears first, so the browser dialog only shows to people who said yes.

<button onclick="Pusharoo.subscribe()">🔔 Notify me when it’s back</button>

Prompt settings that matter

AttributeDefaultWhy change it
data-delay6000 msLonger for long-form content; shorter on product pages
data-scroll0 (off)Wait until 30–50% scroll to ask engaged readers only
data-cap-days3Days to wait after “Not now”
data-max-dismiss3Stop asking after this many dismissals
data-ios-hintfalseShow iPhone visitors Home Screen steps

Consent and the law

The browser permission is an explicit opt-in, which helps with consent rules — but your prompt should still say who you are and what you’ll send. See the practical overviews for GDPR, CCPA and CASL.

Measure and adjust

Pusharoo fires browser events — pusharoo:prompt-shown, pusharoo:subscribed, pusharoo:dismissed, pusharoo:permission — so you can send them to your analytics and compare timing or wording. Change one thing at a time.

Questions

What is a soft prompt?

A soft prompt is your own on-page message asking if the visitor wants notifications. Only if they say yes does the browser’s native permission dialog appear.

How long should I wait before asking?

Usually a few seconds plus a meaningful scroll, or a moment of value like after checkout. Pusharoo defaults to about six seconds and lets you add a scroll threshold.

What happens if someone clicks Not now?

Pusharoo remembers it, waits a few days (configurable) before asking again, and stops after a set number of dismissals.

Is asking on the first page view ever OK?

Only when the visitor came specifically for alerts, such as a dedicated “Get alerts” page or a QR code at a till. Elsewhere, wait for engagement.

What should the soft prompt say?

Who you are, what they’ll get and how often: “Get first dibs on deals from Maple & Co.? 1–2 alerts a week.” Keep “Not now” as visible as “Allow”.

More in Growth: Push notification click-through rate (CTR), explained · Push notification opt-in rate: measure it, then raise it · Push notification analytics that actually answer questions · Push notification deliverability: what really affects delivery · How to get more push notification subscribers · Switching web push providers: a practical migration plan · Win-back push notifications that bring people back · Push notifications vs. pop-ups · All guides

Free for life. No limits.

Unlimited subscribers, campaigns and automations. No badges. About five minutes to install.