Stay organized with collections
Save and categorize content based on your preferences.
You can send notification messages using
the Notifications composer in the Firebase console. Though this does not
provide the same flexibility or scalability as sending messages with the
Admin SDK or the
v1 HTTP protocol, it can be
very useful for testing or for highly targeted marketing and user engagement.
The Firebase console provides analytics-based
A/B testing to help refine and
improve marketing messages.
After you have developed logic in your app to receive messages, you can allow
non-technical users to send messages with
the Notifications composer.
About
When you send a notification message from
the Notifications composer,
Google uses the values you enter in the form fields in these ways:
Fields like User segment and Expires determine the message target
and delivery options.
Fields like Notification text and Custom data are sent to the client in a
payload comprised of key/value pairs.
These fields map to keys available through the
Message
object. For example, key/value pairs entered in the Custom data
field of the composer are handled as a
data
payload for the notification. Other fields map directly to keys in the
notification
object or in the platform specific notification configuration.
Note that some fields in
the Notifications composer are not available through
the FCM API. For example, you can target user segments
based on app version, language, browser type and version, or user properties
in ways that are not available using the server API.
The keys that the Firebase console sends to clients are:
Key
Console field label
Description
notification.title
Notification title
Indicates notification title.
notification.body
Notification text
Indicates notification body text.
data
Custom data
Key/value pairs that you define. These are delivered
as a data payload for the app to handle.
Keys that determine message delivery include:
Key
Console field label
Description
sound
Sound
Indicates a sound to play when the device receives a notification.
time_to_live
Expires
This parameter specifies how long (in seconds) the message should be kept in FCM storage
if the device is offline.
For more information, see Setting the lifespan of a message.
[[["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-08-22 UTC."],[],[],null,["You can send notification messages using\n[the Notifications composer](//console.firebase.google.com/project/_/notification) in the Firebase console. Though this does not\nprovide the same flexibility or scalability as sending messages with the\n[Admin SDK](/docs/cloud-messaging/admin) or the\n[v1 HTTP protocol](/docs/reference/fcm/rest), it can be\nvery useful for testing or for highly targeted marketing and user engagement.\nThe Firebase console provides analytics-based\n[A/B testing](/docs/ab-testing/abtest-with-console) to help refine and\nimprove marketing messages.\n\nAfter you have developed logic in your app to receive messages, you can allow\nnon-technical users to send messages with\n[the Notifications composer](//console.firebase.google.com/project/_/notification).\n\nAbout\n\nWhen you send a notification message from\n[the Notifications composer](//console.firebase.google.com/project/_/notification),\nGoogle uses the values you enter in the form fields in these ways:\n\n- Fields like **User segment** and **Expires** determine the message target and delivery options.\n- Fields like **Notification text** and **Custom data** are sent to the client in a payload comprised of key/value pairs.\n\nThese fields map to keys available through the\n[`Message`](/docs/reference/fcm/rest/v1/projects.messages#resource:-message)\nobject. For example, key/value pairs entered in the **Custom data**\nfield of the composer are handled as a\n[`data`](/docs/reference/fcm/rest/v1/projects.messages#Message.FIELDS.data)\npayload for the notification. Other fields map directly to keys in the\n[`notification`](/docs/reference/fcm/rest/v1/projects.messages#notification)\nobject or in the platform specific notification configuration.\n\nNote that some fields in\n[the Notifications composer](//console.firebase.google.com/project/_/notification) are *not* available through\nthe FCM API. For example, you can target user segments\nbased on app version, language, browser type and version, or user properties\nin ways that are not available using the server API.\n| **Caution:** In another important difference from programmatic messaging, the console lets you cancel any scheduled message that is not already in progress. **Once\n| a message fanout is actually in progress, it is fully committed and\n| cannot be canceled through the console nor by Firebase support.**\n\nThe keys that the Firebase console sends to clients are:\n\n| Key | Console field label | Description |\n|----------------------|---------------------|-----------------------------------------------------------------------------------------------|\n| `notification.title` | Notification title | Indicates notification title. |\n| `notification.body` | Notification text | Indicates notification body text. |\n| `data` | Custom data | Key/value pairs that you define. These are delivered as a data payload for the app to handle. |\n\nKeys that determine message delivery include:\n\n| Key | Console field label | Description |\n|----------------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `sound` | Sound | Indicates a sound to play when the device receives a notification. |\n| `time_to_live` | Expires | This parameter specifies how long (in seconds) the message should be kept in FCM storage if the device is offline. For more information, see [Setting the lifespan of a message](/docs/cloud-messaging/concept-options#ttl). |"]]