FCM Setup
Pulsate delivers push notifications through Firebase Cloud Messaging (FCM). This page connects your Firebase project to Pulsate.
Step 1 — Create (or open) your Firebase project
Section titled “Step 1 — Create (or open) your Firebase project”Go to the Firebase Console and create a project — or open the one your app already uses.
Step 2 — Register your Android app
Section titled “Step 2 — Register your Android app”In the Firebase project, add an Android app using the package name from your AndroidManifest.xml. Download the generated google-services.json and place it in your app module root (app/google-services.json), and apply the com.google.gms.google-services Gradle plugin if you haven’t already.
Step 3 — Give Pulsate your FCM credentials
Section titled “Step 3 — Give Pulsate your FCM credentials”Pulsate’s servers need permission to send messages through your Firebase project. FCM authorizes this with a service account key:
- In the Firebase Console open Project Settings → Service accounts.
- Click Generate new private key — this downloads a service-account JSON file.
- In the Pulsate CMS, open your app’s push settings (Settings → App Settings) and upload the JSON file.
Step 4 — Forward FCM callbacks (only if you have your own FirebaseMessagingService)
Section titled “Step 4 — Forward FCM callbacks (only if you have your own FirebaseMessagingService)”The SDK ships its own FirebaseMessagingService, so if your app doesn’t implement one, there is nothing to do — Pulsate pushes just work.
If your app does implement its own FirebaseMessagingService (e.g. for other push providers), forward both callbacks to Pulsate:
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) { val pulsateManager = PulsateFactory.getInstance() if (pulsateManager.onMessageReceived(remoteMessage)) { // It was a Pulsate push — Pulsate handled it. return } // Not a Pulsate push — handle it yourself. handleMyOwnMessage(remoteMessage) }
override fun onNewToken(token: String) { super.onNewToken(token) PulsateFactory.getInstance().onNewToken(token) }}onMessageReceived returns true when the payload came from Pulsate and was handled, false otherwise.
Step 5 — Set your notification icon
Section titled “Step 5 — Set your notification icon”Notifications use a small status-bar icon that must live in your app. See Notification Icons — without one, Android shows a default bell icon.
Verify
Section titled “Verify”- Build and run the app on a device, start a session.
- Send a test campaign with a push from the Pulsate CMS.
- The push should arrive within seconds; tapping it should open your app.
If pushes don’t arrive, check that notification permission is granted (Notification Permission) and that the device appears in the Pulsate CMS user list.

