Rich push notifications powered by Google FCM (free & unlimited). Increase your click-through rates by 56%. Images, topics, multicast, silent push, web push token registration, deep linking, click tracking. No OneSignal needed.
Test in Demo App ·
See in Bubble editor
OverviewBubble’s native push notifications handle the essentials: title, body, and deep linking for mobile apps. Advanced Push Notifications adds everything else: images, custom sounds, broadcast to groups, web browser notifications, silent background sync, delivery controls, and more.
Your notifications go directly through Firebase Cloud Messaging (FCM), Google’s free push notification infrastructure. You bring your own Firebase project. No per-message fees, no subscriber limits, no third-party service to sign up for.
FeaturesFeature
| Bubble native
| Advanced Push Notifications
|
Title and body
| ✅
| ✅
|
Deep linking (navigate to a specific view on tap)
| ✅
| ✅
|
Images in notifications
| ❌
| ✅
|
Custom icon and color (Android)
| ❌
| ✅
|
Custom sound
| ❌
| ✅
|
iOS badge count
| ❌
| ✅
|
Send to a topic (all subscribers in one call)
| ❌
| ✅
|
Multicast (up to 500 devices in one call)
| ❌
| ✅
|
Subscribe/unsubscribe devices to topics
| ❌
| ✅
|
Silent data push (background sync)
| ❌
| ✅
|
Foreground notifications with Bubble events
| ❌
| ✅
|
Notification expiration (TTL)
| ❌
| ✅
|
Collapsible notifications
| ❌
| ✅
|
Custom data payload
| ❌
| ✅
|
Failed token detection and cleanup
| ❌
| ✅
|
Web push (browsers)
| ❌
| ✅
|
Most other push notification plugins and app wrappers for Bubble route notifications through OneSignal, which means signing up for a separate service with its own pricing tiers. We remove that dependency entirely.
Platform compatibilityWe use FCM registration tokens, the standard token format generated by Firebase. Compatibility depends on whether your app environment can provide these tokens.
Platform
|
| How tokens are obtained
|
Bubble Native Mobile (iOS and Android)
| ✅
| Bubble’s built-in permission action generates FCM tokens natively
|
Natively (Firebase Advanced mode)
| ✅
| Natively exposes the FCM token as a plugin state
|
Web browsers (Chrome, Edge, Firefox)
| ✅
| Built-in FCM Token Manager element (included)
|
Natively (OneSignal mode)
| ❌
| Exposes OneSignal Player IDs, not FCM tokens
|
BDK
| ❌
| Uses OneSignal exclusively, does not expose FCM tokens
|
GoNative / Median
| ❌
| Uses OneSignal exclusively, does not expose FCM tokens
|
Wrappers that use OneSignal internally expose OneSignal Player IDs instead of FCM tokens. These are two different identifier systems that are not interchangeable. This is a design choice made by each wrapper, not a limitation on our side. If your wrapper supports Firebase (like Natively in Advanced mode), everything works seamlessly.
6 workflow actions
Web push token registration (included)We include
FCM Token Manager, an invisible element you place on your page. When a user clicks your “Enable Notifications” button, it requests browser permission and retrieves the FCM token. No JavaScript, no Toolbox plugin, no code.
The element auto-detects native and wrapped environments and stays completely inactive in those contexts, so it never interferes with your existing push setup.
Click tracking and open ratesUse the
web_click_link field to redirect notification clicks through a tracking page in your Bubble app. Log each click as a database entry, then calculate your open rate: clicks divided by sends. Step-by-step guide included in the documentation.
Built for productionActionable error messages. Every input is validated before we send anything to FCM. If something is missing or malformed, you get a clear message that tells you exactly what to fix and where to find it. For example:
”Missing Service Account Email. Go to Plugins tab → Advanced Push Notifications (FCM) and paste the client_email value from your Firebase service account JSON file.” No cryptic error codes, no guessing.
Dead token detection. When a device token expires or a user uninstalls your app, FCM returns an error for that specific token. We catch it and return it in the
failed_tokens list, which is a native Bubble list of texts. You can use it directly in a workflow to clean your database:
Make changes to a list of Users where push_token is in Step 1’s failed_tokens → set push_token to empty. No JSON parsing, no Toolbox plugin.
Auto-correction of common mistakes. If you pass a topic name starting with “/topics/”, we strip the prefix automatically and log a note in your server logs. If you paste your private key with literal “\n” characters (which happens when copying from a JSON file), we convert them to real line breaks. Small things, but they save hours of debugging.
Structured server logs. Every log entry is prefixed with
[Push Notifications] so you can filter your Bubble server logs instantly and find exactly what happened, when, and why.
Lightweight and fast. We use a single dependency:
google-auth-library, the official Google authentication library (Apache 2.0 license). No heavy SDKs, no bloated bundles. Fast cold starts on Bubble’s server infrastructure and a minimal surface for security vulnerabilities.
Documentation and supportWe wrote the documentation we wish every Bubble plugin had: full setup guide, field-by-field reference for every action, troubleshooting section, and FAQ. We respond to support requests 7 days a week.
See full documentation hereTry risk-freeThe monthly subscription is prorated by the day. Try it for a few days, and if it is not the right fit, cancel and pay only for the days you used. A one-time purchase option is also available.
Requirements
- A Firebase project with Cloud Messaging enabled (free)
- A service account key from Firebase Console (3 values to copy-paste)
- For web push: a VAPID key and a small service worker file (documented step-by-step)