All articles
Firebase FCM vs Push Notification Platform
Guide10 min read

Firebase FCM vs a Push Notification Platform: Which Do You Actually Need?

A clear breakdown of what Firebase Cloud Messaging does and doesn't do, what a dedicated push notification platform adds, and how to decide which approach fits your app.

A lot of developers who are new to push notifications start with Firebase Cloud Messaging and assume it's the full stack. They're using FCM, so they have push notifications handled. Then they try to schedule a campaign, look at delivery rates, or set up a recurring notification, and realize FCM doesn't do any of that.

FCM and a push notification platform are not the same thing. They're complementary layers. Here's a clear breakdown of where FCM ends and where a platform begins, and how to figure out which one you actually need.

Firebase FCM Is Infrastructure, Not a Product

The most useful analogy: Firebase Cloud Messaging is like a postal service. It can reliably deliver a package (your notification) to a specific address (a device token or topic). But it doesn't help you write the package's contents, decide who to send it to, schedule when it gets sent, or tell you whether anyone opened it after delivery.

FCM is Google's delivery infrastructure. It's backed by Google-scale reliability, handles billions of messages per day, and integrates cleanly with Android and iOS apps. It's genuinely excellent at what it does. What it does is specifically: receive a notification payload from your server and deliver it to the target device.

Everything before and after that delivery step is your problem. What message to send, when to send it, who to send it to, what happens when someone taps it, and what the open rate was — none of that is FCM's concern.

What Firebase FCM Actually Gives You

Device token management

Each app installation gets a unique FCM token. You can send a notification to a specific token, to a group of tokens, or to a topic that devices have subscribed to.

Topic-based messaging

Devices can subscribe to named topics. Sending to a topic delivers the notification to all subscribers. This is the mechanism for "send to all users" or "send to premium users."

Reliable cross-platform delivery

FCM handles delivery to Android (direct), iOS (via APNs), and web (via service workers). You send one API request; FCM routes it correctly to each platform.

Firebase Cloud Messaging console

A basic web UI for composing and sending test messages. Not designed for campaign management — it's a testing and one-off messaging tool.

Data + notification message types

Notification messages are displayed automatically by the OS. Data messages are silent and handled entirely in your app code.

What You Have to Build Yourself With Raw FCM

Here's where most developers underestimate the scope. If you're using FCM directly (without a platform on top), you're responsible for building and maintaining all of this:

Token storage and management

Medium effort

You need a database table to store FCM tokens mapped to user IDs. Tokens expire and rotate, so you need logic to handle invalid tokens gracefully and update your database when tokens change.

Campaign scheduling system

High effort

FCM delivers messages immediately when you call the API. If you want to send at a future time (or on a recurring schedule), you need a job queue (Celery, Sidekiq, Bull) with a scheduler. You're building this from scratch.

Timezone-aware delivery

High effort

Sending at '9 AM user's local time' means knowing each user's timezone, grouping sends accordingly, and triggering separate FCM requests for each timezone bucket. Non-trivial engineering work.

Notification content management

Medium effort

FCM sends whatever content you pass it. Storing, versioning, and managing notification templates and content requires your own admin tooling or you edit it directly in code.

Analytics and delivery tracking

High effort

FCM doesn't tell you whether a notification was opened. To track open rates, you need to add a deep link handler that fires a tracking event, store it in your database or analytics service, and build reporting on top of it.

User segmentation

High effort

To send "only to users who haven't opened the app in 7 days," you need to query your user database, get their FCM tokens, and construct the FCM API call. Every new segment type requires new backend code.

The honest estimate: Building a proper push notification campaign system on top of raw FCM is 3-6 weeks of backend engineering work for a competent developer. That's time not spent building your actual product. Most app teams discover this after they've already started.

What a Push Notification Platform Adds

A dedicated push notification platform (PushPilot, OneSignal, Braze, etc.) gives you a pre-built layer that handles everything FCM doesn't. The core differences:

CapabilityRaw FCMPushPilot
Push delivery✓ (via FCM)
Campaign schedulingBuild it✓ Built-in
Timezone-aware deliveryBuild it✓ Built-in
Campaign builder UI✓ AI-powered
AI content generation
AI image generation
Analytics dashboardBuild it✓ Built-in
User segmentationBuild it✓ via Topics
Token managementBuild it✓ Handled

When Raw FCM Is Enough

There are legitimate use cases where FCM alone is the right choice and a full platform would add unnecessary complexity:

  • Your app only sends transactional notifications triggered by user actions or system events (order updates, trade alerts, message received). These are triggered by your existing backend logic anyway.
  • You have a custom backend system that already handles scheduling, templates, and user management, and you just need a reliable delivery pipe.
  • Your app is a prototype or internal tool with a small user base and you want to minimize dependencies.
  • Your team has the engineering capacity to build and maintain the campaign infrastructure, and your notification needs are simple and stable.

When You Need a Dedicated Platform

  • You want to run scheduled marketing campaigns (daily reminders, weekly digests, promotional pushes) on a recurring basis.
  • You don't want to build and maintain custom scheduling, analytics, and content management infrastructure.
  • You want to change notification content without deploying new code.
  • You need to segment your audience and send different messages to different user groups without writing complex backend queries.
  • You want AI to generate fresh notification content so you don't have to write hundreds of messages per year.
  • You need visibility into delivery rates and open rates without building a custom tracking system.

PushPilot as the Campaign Layer for FCM

PushPilot is specifically designed to sit on top of Firebase FCM (and also on top of OneSignal). If you already have FCM integrated in your app, connecting PushPilot doesn't require any mobile code changes at all.

You upload your Firebase service account key to PushPilot, and from that point, PushPilot can send notifications through your Firebase project. Your Flutter/React Native/Android/iOS app receives these notifications through FCM exactly the same as any other FCM message.

The stack

PushPilot: Campaign builder, AI content generation, AI images, scheduling, analytics
Firebase FCM: Delivery infrastructure, device tokens, topic routing
Your mobile app: firebase_messaging SDK, notification handling code

This architecture means you get FCM's delivery reliability plus PushPilot's campaign tools and AI features. You don't have to choose between them — they're designed to work together.

Moving From Raw FCM to a Platform

If your app currently sends notifications directly through the FCM API and you want to move to PushPilot, the migration is straightforward:

1

Keep your existing mobile code

Your app's firebase_messaging integration doesn't change. PushPilot sends through the same FCM project your app is already using.

2

Create your FCM topics (if you haven't already)

PushPilot uses FCM topics to target audience segments. Make sure your app subscribes users to appropriate topics on registration (e.g., 'all_users', 'premium_subscribers').

3

Upload your service account key to PushPilot

Generate a service account key in Firebase Console (Project Settings > Service Accounts) and upload it to PushPilot.

4

Recreate your campaigns in PushPilot

Set up your recurring campaigns in PushPilot instead of your custom scheduling system. PushPilot's AI campaign builder handles the scheduling and content generation.

5

Deprecate your custom notification backend

Once PushPilot is handling all campaign sends, you can remove the custom scheduling, template management, and delivery code from your backend.

Frequently Asked Questions

Does using PushPilot mean I can remove Firebase from my app?

No. PushPilot uses Firebase FCM for delivery, so your app still needs the firebase_messaging integration. What changes is that you don't need to build and maintain the backend campaign infrastructure — PushPilot handles that on top of FCM.

Is Firebase FCM free?

Firebase FCM is completely free with no usage limits. There's no cost for delivery volume, device tokens, or API calls. The free nature of FCM is one of the reasons it's the most widely used push delivery infrastructure.

Can I use PushPilot without Firebase if I use OneSignal?

Yes. PushPilot can connect to either a Firebase project or a OneSignal account. If your app uses OneSignal for push delivery, you can connect PushPilot to your OneSignal account instead of Firebase and use PushPilot's AI campaign tools on top of your existing OneSignal setup.

What happens to notifications sent directly through FCM when I add PushPilot?

Nothing changes. PushPilot and your existing backend code both have access to the same Firebase project. You can continue sending transactional notifications directly through FCM from your backend, while using PushPilot for marketing and retention campaigns. The two don't interfere.

Ready to automate your push notifications?

Start sending AI-powered push notifications in under 5 minutes. Free plan available — no credit card required.

Get Started Free

More from the blog