Firebase Cloud Messaging(FCM) is a cross-platform messaging solution that lets you reliably send
messages.
UsingFCM, you can notify a client app that new email or other data
is available to sync. You can send notification messages to drive user re-engagement and
retention. For use cases such as instant messaging, a message can transfer a
payload of up to 4096 bytes to a client app.
Send notification messages that are displayed to your user.
Or send data messages and determine completely what happens in
your application code. SeeMessage types.
Versatile message targeting
Distribute messages to your client app in any of 3 ways—to
single devices, to groups of devices, or to devices subscribed to topics.
How does it work?
AnFCMimplementation includes two main components for
sending and receiving:
A trusted environment such asCloud Functions for Firebaseor an app server
on which to build, target, and send messages.
An Apple, Android, or web (JavaScript) client app that receives
messages via the corresponding platform-specific transport service.
See thearchitectural
overviewfor more detail and important
information about the components ofFCM.
Implementation path
Set up theFCMSDK
Set up Firebase andFCMon your app according to the
setup instructions for your platform.
Develop your client app
Add message handling, topic subscription logic, or other optional
features to your client app. During the development, you can easily
send test messages fromthe Notifications composer.
Develop your app server
Decide whether you want to use theFirebaseAdmin SDKor the server protocol to create your sending
logic—logic to authenticate, build send requests, handle responses, and
so on. Then build out the logic in your trusted environment.
Next steps
Follow theGet started guideto set up
your client apps and learn to send messages withFCM.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-11-14 UTC."],[],[]]