Send web push notifications from Ruby on Rails
Web push on Ruby on Rails works through the same InstantPWA snippet you add for install prompts — placed in app/views/layouts/application.html.erb via application.html.erb <head>. Once a visitor opts in, you can send push notifications from your InstantPWA dashboard to anyone who granted permission, including installed home-screen users on iOS 16.4+.
Steps
- 1
Open app/views/layouts/application.html.erb
Go to application.html.erb <head>.
- 2
Paste the InstantPWA snippet
Drop the one-line async script tag in the Ruby on Rails head section — no build step or dependency install.
- 3
Enable push in your dashboard
Turn on Web Push in InstantPWA settings and upload your notification icon and default badge.
- 4
Publish and collect opt-ins
Once live on Ruby on Rails, the popup asks for notification permission after install (or standalone, if you enable prompt-first push).
- 5
Send a test push
Send a test notification from the dashboard to your own opted-in browser before sending to all subscribers.
Constraints to know
- Turbo Drive keeps the <head> element persistent across page-to-page navigation, so the snippet initializes once per session rather than re-running on every Turbo visit — this is a feature, not a bug, but means you should test with a full page load first.
- The script tag doesn't need to be pinned in config/importmap.rb since it's a plain external <script>, not an ES module import.
FAQ
Does web push work without the visitor installing the app?+
On Chromium browsers and desktop, yes. On iOS Safari, push requires the visitor to add the site to their home screen first (iOS 16.4+).
Can I segment who receives a push?+
Yes — the InstantPWA dashboard supports targeting by page visited, device type and custom events you send from your site.
Is there anything Ruby on Rails-specific I need to configure for push?+
No — push registration is handled entirely by the InstantPWA snippet once it's live on Ruby on Rails; there's no separate push API key to manage.