Skip to content

Migration

Migrate from Firebase to ReachBell in 5 minutes.

Stop writing Cloud Functions to schedule pushes. Keep your FCM project, keep every registration token, swap the server-side send code for one ReachBell API call — and get segments, email, and automations as the bonus.

Zero token loss. Same FCM project.

ReachBell sends through your existing Firebase Cloud Messaging project — not around it. That means every registration token in your user database keeps working unchanged, no app update ships, no users get re-prompted, and your Android, iOS, and web push paths continue to route exactly as they always did. You just stop writing the send code.

Three steps

No app release required.

Server-side switch only. Your mobile clients don’t need to know the cutover happened.

  1. 1. Connect your FCM project

    You don't migrate the FCM project — you keep it. In Firebase Console → Project Settings → Service Accounts, generate a private key JSON. Upload it to ReachBell when you create the project, and we send through your existing FCM (and APNs, if you've registered iOS) without touching the registration tokens already in your app.

  2. 2. Replace the send-side SDK

    Your client app stays exactly as it is — same firebase-messaging SDK, same VAPID key for web, same FCM registration tokens. On the send side, swap your custom Firebase Admin code (or curl-against-FCM-REST scripts) for a single call to ReachBell's /v1/messages endpoint. Same tokens, friendlier API.

  3. 3. Verify token reachability

    Open ReachBell → Project → Verification → Send Test. Paste a known FCM token from your user table and fire a test push. The notification should arrive on the device within seconds. If it doesn't, our diagnostics tell you exactly which credential is misconfigured.

The send swap

A Cloud Function in, one API call out.

The change is purely server-side. Your firebase-messaging client SDK doesn’t change.

server.ts · push send
- import * as admin from "firebase-admin";
- admin.initializeApp({ credential: admin.credential.cert(serviceAccount) });
-
- await admin.messaging().send({
-   token: user.fcmToken,
-   notification: { title: "Order shipped", body: "Tracking #..." },
-   android: { priority: "high" },
-   apns: { headers: { "apns-priority": "10" } },
- });

+ import { ReachBell } from "@reachbell/sdk";
+ const rb = new ReachBell({ apiKey: process.env.REACHBELL_KEY });
+
+ await rb.messages.send({
+   channel: "push",
+   to: { fcmToken: user.fcmToken },     // same token, no migration
+   title: "Order shipped",
+   body:  "Tracking #...",
+   priority: "high",
+ });

ReachBell signs and forwards to FCM under the hood — your token formats, batching, and TTLs all stay valid.

What you keep

Everything Firebase-side.

The project, the tokens, the certificates, the analytics — untouched.

Your FCM project and tokens

Keep the same Firebase project. Every registration token already in your user table keeps working. No app update, no token refresh, no user-side change.

APNs certificates (if used)

iOS routes through the same APNs auth key (.p8) and team ID you already configured for FCM. Upload the .p8 to ReachBell once; we sign each request server-side.

Your in-app FCM SDK

firebase-messaging on Android, iOS, and web stays exactly where it is. ReachBell only replaces the server-side send code — your client never knows the swap happened.

Topic subscriptions

FCM topics (/topics/all, /topics/news_en) keep routing because ReachBell sends through your FCM project. We add real segments on top — no more "topic per language per geo" sprawl.

What you gain

What raw FCM never gave you.

FCM is the transport. ReachBell adds the engagement layer you were going to build anyway.

Segments and audiences

FCM gives you topics and condition strings. ReachBell adds saved segments, behavioral filters, and user-property targeting on the same token pool — no schema migrations.

Email + push in one tool

Layer transactional and campaign email on AWS SES into the same automations as your FCM pushes. Trigger a push, fall back to email if it doesn't open in an hour — built in.

INR billing, GST invoice

FCM is "free" until you pay for the Firebase Blaze plan tier underneath. ReachBell bills predictably in rupees with a GST invoice — no surprise Cloud Functions overage at month end.

Median time to retire your first Cloud Function: under 30 minutes. Talk to sales@reachbell.com

FAQ

Questions, answered.

Everything teams usually ask before switching. Something missing? Email us — a human replies.

Do I have to migrate my FCM project to switch to ReachBell?

No. That's the whole point of this path. ReachBell sits on top of your existing Firebase Cloud Messaging project — we send through your FCM credentials rather than asking you to rebuild on a new push channel. Every registration token in your user database keeps working; you don't ship an app update; users notice nothing. You only change the server-side code that calls the FCM HTTP v1 API or Firebase Admin SDK.

How do I give ReachBell access to my Firebase project?

In Firebase Console → Project Settings → Service Accounts, click "Generate new private key" — it downloads a JSON file. Upload that JSON to ReachBell when you create the project (Project → Channels → Mobile Push). We use it to mint short-lived OAuth tokens against the FCM HTTP v1 API. The key never leaves your Google Cloud project boundary — it's only used to sign requests on your behalf.

What about iOS / APNs?

If you were already routing iOS through FCM (the standard pattern), it keeps working unchanged — your APNs auth key is configured in Firebase Console and we send through that path. If you want to talk to APNs directly without FCM in the middle, upload the .p8 auth key, team ID, and bundle ID to ReachBell separately and we'll route iOS through APNs while keeping Android on FCM.

Will I lose my Firebase Analytics or A/B testing?

No — Firebase Analytics and Remote Config keep running. ReachBell replaces the messaging layer, not the analytics SDK. If you were using Firebase In-App Messaging or FCM's built-in A/B test, you'll rebuild those flows in ReachBell's automation designer instead — and you get push + email A/B testing on the same segments.

What happens to my custom Firebase Cloud Functions that send pushes?

Replace the admin.messaging().send() call (or the raw FCM REST POST) with a POST to https://api.reachbell.com/v1/messages — same FCM token in the payload, friendlier response format. Most teams collapse a few hundred lines of Cloud Function code into a single API call. We provide a thin Node, Python, and Go client. Email sales@reachbell.com for help mapping your existing send logic.

Ready to make some noise?

Free forever for your first 1,000 subscribers. Set up in five minutes — no credit card needed.

Start free today