diff --git a/docs/ff-concepts/alerts-notification/_category_.json b/docs/ff-concepts/alerts-notification/_category_.json
deleted file mode 100644
index 8eee25c8..00000000
--- a/docs/ff-concepts/alerts-notification/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Alerts & Notifications",
- "position": 8
-}
\ No newline at end of file
diff --git a/docs/ff-concepts/alerts-notification/push-notifications.md b/docs/ff-concepts/alerts-notification/push-notifications.md
deleted file mode 100644
index 8a10cac0..00000000
--- a/docs/ff-concepts/alerts-notification/push-notifications.md
+++ /dev/null
@@ -1,298 +0,0 @@
----
-title: Push Notifications
-slug: /concepts/alerts-notification/push-notifications
-sidebar_position: 2
-tags: [Actions, Alerts & Notifications, Integration]
-keywords: [FlutterFlow, Actions, Alerts & Notifications, Push Notifications]
----
-
-
-# Push Notifications
-
-Push notifications allow you to send timely and relevant information to a user's phone. From this page, you can enable the push notification feature in your app. After enabling it, you can send the push notification instantly or schedule it to be delivered to the user's device at a specific time.
-
-:::info[Behind the scenes]
-FlutterFlow uses [**Firebase Cloud Messaging**](https://firebase.google.com/docs/cloud-messaging) (A Firebase product) to send push notifications.
-:::
-
-
-:::note[General Prerequisites]
-
-Before getting started with this section, ensure you have:
-
-* Completed all steps in the
-[**Firebase Setup**](../../ff-integrations/firebase/connect-to-firebase-setup.md).
-* Upgraded to a [**Blaze plan**](https://firebase.google.com/pricing) for your Firebase project.
-:::
-
-:::note[iOS Prerequisites]
-
-These steps are mandatory if you want to send push notifications to iOS devices:
-
-* Created an [**Apple account**](https://appleid.apple.com/account?appId=632&returnUrl=https%3A//developer.apple.com/account/).
-* [**Purchased an Apple Developer membership**](https://developer.apple.com/programs/enroll/). Please see [this link](https://developer.apple.com/programs/) for more details on the Apple Developer program and how to sign up.
-
-:::
-
-## Add push notifications
-
-Here are the steps to send push notifications:
-
-### Enabling push notification
-
-:::warning
-**Please note, push notifications will not work in these scenarios:**
-
-* Push notifications will not work on an iOS simulator. To test you will need to use a real device.
-* Push notifications will not be delivered to users who are logged out of your app. To send push notifications to users who are not logged in, consider implementing [**Anonymous Firebase Login**](../../ff-integrations/authentication/firebase-auth/anonymous-login.md) within your app
-* Push notifications will not work if you have the app open on your device.
-:::
-
-To enable push notifications:
-
-1. Navigate to the **Settings and Integrations -> App Settings -> Push Notifications** and
-**Enable Push Notifications**.
-2. Now, click on the **Deploy** button. This will create and deploy the *Cloud Functions* in your
- Firebase project that are necessary for push notifications to work.
-
-
-
-:::info
-By default, the **Automatically Prompt Users for Permission** option is enabled, meaning your app will automatically prompt users requesting for permission to receive push notifications when the app is started. However, this may be disruptive to your user sign-in flow.
-
-If you disable it, you can control when the permission is requested. To do so, you will need to manually [**Request Permission**](../../resources/projects/settings/project-setup.md#request-permission-action) at the appropriate point in your app. **It is recommended to keep this option always enabled**.
-:::
-
-### Only for iOS: Configuring iOS app
-
-To receive the push notifications in an iOS app, you need to perform the following additional steps.
-
-#### 1. Creating a key
-
-Apple requires developers to create a key for the push notifications inside the *Apple Developer Console* to verify the push notification's sender.
-
-To create a key:
-
-1. From your Apple developer account, open the [**keys**](https://developer.apple.com/account/resources/authkeys/list) section.
-2. Click on the **(+)** button on the right side of the **Keys** label.
-3. Enter the **Key Name**.
-4. Select the **Apple Push Notifications service (APNs)** from the list below.
-5. Click on **Continue** and then **Register**.
-6. Click **Download** and save the file. It will be needed to add to your Firebase project.
-
-
-
-
-
-#### 2. Add APNs key to Firebase project
-
-To add APNs key to Firebase project:
-
-1. From the Firebase dashboard from your project, navigate to the far left menu. Select Project
- Settings( ) --> Project Settings.
-
-2. Select the **Cloud Messaging** tab.
-
-3. Scroll down and find your iOS app under the **Apple app configuration** section.
-
-4. Under the **APNs Authentication Key** section, click on **Upload**. A popup will appear to
- upload and enter the key details.
-
-5. Click on the **Browse** button to locate and upload the APNs auth key file.
-
-6. Enter the *Key ID*. You can find your Key ID in the Apple Developer Center under [Certificates,
- Identifiers & Profiles](https://developer.apple.com/account/resources) -> [Keys](https://developer.apple.com/account/resources/authkeys/list) -> Click on **Key**.
-
-7. Enter the *Team ID*. You can find your Team ID in the Apple Member Center under the [membership
- tab](https://developer.apple.com/account/#/membership).
-
-
-
-
-
-#### 3. Adding identifier
-
-You must add an Identifier to be able to send the push notifications to the iOS devices after you deploy your app to the app store.
-
-To add an Identifier:
-
-1. From your *Apple developer account* open the [**Identifiers**](https://developer.apple.com/account/resources/identifiers/list) section.
-
-2. Click on the **(+)** button on the right side of the **Identifiers** label.
-
-3. Select the **App IDs** and click **Continue**.
-
-4. Select the *Type* **App** and click **Continue.**
-
-5. Enter the **Description** as **ImageNotification.**
-
-6. Enter the **Bundle ID** as your package name and add **.ImageNotification** in the end.
-
-7. Click **Continue** and then click **Register**.
-
-
-
-
-
-#### 4. Enable push notifications in your App ID
-
-:::note
-Continue with this step only if you have an APP or Bundle ID created in your developer account.
-:::
-
-Add the 'Push Notifications' capability to your existing App ID in order to avoid any issues when you re-deploy your app. Here's how you do it:
-
-1. From your *Apple developer account,* open the [**Identifiers**](https://developer.apple.com/account/resources/identifiers/list) section.
-
-2. Open the identifier with your existing APP ID.
-
-3. Select **Push Notifications** from the list and click **Save**.
-
-
-
-
-
-### Sending push notifications
-
-Use these steps to create and send push notifications:
-
-1. Click on the **Settings and Integrations** -> App Settings -> **Push Notifications**.
-
-2. Find the **Manually Trigger Notifications** section and click on it to expand the section.
-
-3. In the **Notification Title**, enter the text that you want to set as a title for notification.
-
-4. In the **Notification Text**, enter the content of your notification.
-5. Optional: Click on the **Upload Notification Image** to set the image that you want to appear in the notification.
-6. Find the **Target Audience** dropdown. Keep the **All** option selected if you want to send notifications to both *Android* and *iOS* users. You can select **Android** or **iOS** if you wish to target OS-specific users.
-7. Enable **Deliver With Sound** if you wish to.
-8. If you have more than 10K users, you might want to enable the **Batch Notifications**.
-9. To send push notifications to a specific or few users, enter the user document reference (from the 'users' collection in Firestore) into the *User References*.
-10. Find the **Initial Page** dropdown and select a page that you would like to open when a user clicks on the notification.
-11. Click on **Send Notification**.
-12. To confirm you want to send this notification, a popup will appear. You need to enter the text '**Send Notification**' and click on **Send Notification** again.
-
-
-
-
-
-## Push notifications with data
-
-Sometimes you might want to include additional data with your push notifications, which can then be used to display more detailed information on the page when it's opened through a push notification.
-
-For instance, consider a news app that sends push notifications for breaking news. When the user taps the notification, the additional data could include the news article's title, summary, and image.
-
-:::warning[Note]
-Currently we only support sending *Firestore document references* as data.
-:::
-
-To send a push notification with data:
-
-1. You must have a page that accepts a parameter of type 'DocumentReference'.
-2. Build a notification using the instructions [here](#add-push-notifications).
-3. Set the **Initial Page** to the one that accepts the parameter.
-4. Find the **Parameter Data** section, copy the document reference from the Firestore, and paste it into the input box below.
-5. Click on **Send Notification**.
-
-
-
-
-
-## Trigger push notification
-
-You might want to send a push notification when something happens in your app. For example, sending a push notification on a message sent, a push notification on a new appointment booked, a push notification on a price change, etc.
-
-You can send the push notification on such event occurrence by adding the **Trigger Push Notification** action.
-
-For demonstration purposes, consider an example of sending a push notification to a post creator when someone comments on a post.
-
-
-
-
-
-Here are the steps:
-
-### 1. Retrieve the document reference of the user
-
-The document reference of the user is required to send a push notification to a specific user, in this case, it would be the document reference of the post creator.
-
-Normally, you would obtain the user document reference from the Firestore document, where a field like 'created_by' stores the document reference of the post creator. However, for the sake of simplicity, let's assume that we are storing this reference in an app state variable, which looks like this:
-
-
- 
- User document reference in app state variable
-
-
-If you need to send push notifications to multiple users, consider a scenario where you want to notify all users who liked a post when someone comments on it. You can retrieve the list or array of user document references from the Firestore document or any app state variable within your app. Here's what a list of document references in an app state variable might look like:
-
-
- 
- Multiple user document references in app state variable
-
-
-:::info
-Learn more about working with
-[**App State variables**](../../resources/data-representation/app-state.md).
-:::
-
-### 2. Trigger Push Notification [Action]
-
-Using this action, you can trigger the push notification when an event occurs in your app. For example, sending the push notification to the post creator when someone comments on a post.
-
-Follow the steps below to add this action to any widget.
-
-1. Select the **Widget** (e.g., IconButton, Button, etc.) on which you want to add the action.
-
-2. Select **Actions** from the Properties Panel (the right menu), and click **Open**. This will open an **Action Flow Editor** in a new popup window.
- 1. Click on the **+ Add Action**.
-
- 2. On the right side, search and select the **Trigger Push Notification** action.
- 3. To set who should receive the push notification, set the **Audience** to **Single
- Recipient** or **Multiple Recipient**.
- * If you want to send a notification to a single user, set it to 'Single Recipient'. For example, sending a notification only to the group creator when someone joins the group.
- * If you want to send a notification to multiple users, set it to 'Multiple Recipients'. For example, sending a notification to all group members when someone joins the group.
- 4. Set the **Source** of user document reference (e.g., app state variable or Firestore document).
- 5. Further options are available based on the selected source.
- 6. To set the specific notification title text, enter the **Notification Title**.
- 7. You can set the **Notification Text** from a variable.
- 8. Optional: Open the **Notification Image** section to set the image that you want to appear in the notification.
- 9. Turn on the **Deliver with Sound** if you want to send a notification with the user's default sound/vibration.
- 10. To set which page to open when a user taps the notification, set the **Initial Page** to the page you would like to open. You can also [pass on the parameters](#push-notifications-with-data) if page requests.
-
-
-
-
-
-
----
-
-## FAQs
-
-
-Push notifications not working; Getting cloud function error: PERMISSION_DENIED: Missing or insufficient permissions
-
-If you encounter an error with push notifications, specifically a cloud function failure due to permission issues, it might be related to your Google Cloud organization's settings. Organizations can disable automatic IAM grants for default service accounts, leading to this error.
-
-To fix this issue, manually grant the Editor role to the default service account used by your project. You can do this by visiting the GCP IAM page and assigning the Editor role to the following service account:
-
-- For App Engine (Gen 1): `{firebase-project-id}@appspot.gserviceaccount.com`
-- For Compute Engine (Gen 2): `{project-number}-compute@developer.gserviceaccount.com`
-
-
-
-Also, ensure that these principals (emails) and their roles are present in the permissions tabs in *App Engine Default service account*, *Default compute service account*, and *firebase-adminsdk*. You can do this by visiting the GCP Service Accounts page, clicking on each service account email, and granting access to these principals in the permissions tab.
-
-Below is a sample image for App Engine Default service account.
-
-
-
-
-
diff --git a/docs/ff-concepts/alerts/_category_.json b/docs/ff-concepts/alerts/_category_.json
new file mode 100644
index 00000000..bbed890b
--- /dev/null
+++ b/docs/ff-concepts/alerts/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Alerts",
+ "position": 8
+}
\ No newline at end of file
diff --git a/docs/ff-concepts/alerts-notification/alert-dialog.md b/docs/ff-concepts/alerts/alert-dialog.md
similarity index 99%
rename from docs/ff-concepts/alerts-notification/alert-dialog.md
rename to docs/ff-concepts/alerts/alert-dialog.md
index 022c69d9..deed8936 100644
--- a/docs/ff-concepts/alerts-notification/alert-dialog.md
+++ b/docs/ff-concepts/alerts/alert-dialog.md
@@ -1,6 +1,6 @@
---
title: Alert Dialog
-slug: /concepts/alerts-notification/alert-dialog
+slug: /concepts/alerts/alert-dialog
sidebar_position: 0
tags: [Actions, Alerts & Notifications]
keywords: [FlutterFlow, Actions, Alerts & Notifications, Alert Dialog]
diff --git a/docs/ff-concepts/alerts-notification/dismiss-custom-dialog.md b/docs/ff-concepts/alerts/dismiss-custom-dialog.md
similarity index 97%
rename from docs/ff-concepts/alerts-notification/dismiss-custom-dialog.md
rename to docs/ff-concepts/alerts/dismiss-custom-dialog.md
index a5b8ba41..c3b3d2b7 100644
--- a/docs/ff-concepts/alerts-notification/dismiss-custom-dialog.md
+++ b/docs/ff-concepts/alerts/dismiss-custom-dialog.md
@@ -1,6 +1,6 @@
---
title: Dismiss Custom Dialog
-slug: /concepts/alerts-notification/dismiss-custom-dialog
+slug: /concepts/alerts/dismiss-custom-dialog
sidebar_position: 1
tags: [Actions, Alerts & Notifications]
keywords: [FlutterFlow, Actions, Alerts & Notifications, Dismiss Custom Dialog]
diff --git a/docs/ff-concepts/alerts-notification/haptic-feedback.md b/docs/ff-concepts/alerts/haptic-feedback.md
similarity index 97%
rename from docs/ff-concepts/alerts-notification/haptic-feedback.md
rename to docs/ff-concepts/alerts/haptic-feedback.md
index aa73b601..095e0307 100644
--- a/docs/ff-concepts/alerts-notification/haptic-feedback.md
+++ b/docs/ff-concepts/alerts/haptic-feedback.md
@@ -1,6 +1,6 @@
---
title: Haptic Feedback
-slug: /concepts/alerts-notification/haptic-feedback
+slug: /concepts/alerts/haptic-feedback
sidebar_position: 4
tags: [Actions, Alerts & Notifications]
keywords: [FlutterFlow, Actions, Alerts & Notifications, Haptic Feedback]
diff --git a/docs/ff-concepts/alerts-notification/imgs/adding-dismiss-custom-dialog-action.png b/docs/ff-concepts/alerts/imgs/adding-dismiss-custom-dialog-action.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/adding-dismiss-custom-dialog-action.png
rename to docs/ff-concepts/alerts/imgs/adding-dismiss-custom-dialog-action.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/align-custom-dialog.avif b/docs/ff-concepts/alerts/imgs/align-custom-dialog.avif
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/align-custom-dialog.avif
rename to docs/ff-concepts/alerts/imgs/align-custom-dialog.avif
diff --git a/docs/ff-concepts/alerts-notification/imgs/custom-dialog.avif b/docs/ff-concepts/alerts/imgs/custom-dialog.avif
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/custom-dialog.avif
rename to docs/ff-concepts/alerts/imgs/custom-dialog.avif
diff --git a/docs/ff-concepts/alerts-notification/imgs/img.png b/docs/ff-concepts/alerts/imgs/img.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/img.png
rename to docs/ff-concepts/alerts/imgs/img.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/img_1.png b/docs/ff-concepts/alerts/imgs/img_1.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/img_1.png
rename to docs/ff-concepts/alerts/imgs/img_1.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/img_2.png b/docs/ff-concepts/alerts/imgs/img_2.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/img_2.png
rename to docs/ff-concepts/alerts/imgs/img_2.png
diff --git a/docs/ff-concepts/localization-accessibility/accessibility.md b/docs/ff-concepts/localization-accessibility/accessibility.md
index 0d238350..6753528e 100644
--- a/docs/ff-concepts/localization-accessibility/accessibility.md
+++ b/docs/ff-concepts/localization-accessibility/accessibility.md
@@ -79,7 +79,7 @@ It enhances accessibility by allowing users to interact without relying solely o
## Haptic Feedback
-Using [Haptic Feedback](../alerts-notification/haptic-feedback.md), you can vibrate the user's device, which is particularly helpful for users with visual or cognitive impairments. It provides a tactile response to indicate that an action has been completed.
+Using [Haptic Feedback](../alerts/haptic-feedback.md), you can vibrate the user's device, which is particularly helpful for users with visual or cognitive impairments. It provides a tactile response to indicate that an action has been completed.
For example, vibrating the user's device when successfully submitting a form.
diff --git a/docs/ff-concepts/notifications/_category_.json b/docs/ff-concepts/notifications/_category_.json
new file mode 100644
index 00000000..5d5d2ce5
--- /dev/null
+++ b/docs/ff-concepts/notifications/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Notifications",
+ "position": 9
+}
\ No newline at end of file
diff --git a/docs/ff-concepts/notifications/imgs/badge-count.avif b/docs/ff-concepts/notifications/imgs/badge-count.avif
new file mode 100644
index 00000000..981590f6
Binary files /dev/null and b/docs/ff-concepts/notifications/imgs/badge-count.avif differ
diff --git a/docs/ff-concepts/alerts-notification/imgs/enable-push-notification.avif b/docs/ff-concepts/notifications/imgs/enable-push-notification.avif
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/enable-push-notification.avif
rename to docs/ff-concepts/notifications/imgs/enable-push-notification.avif
diff --git a/docs/ff-concepts/alerts-notification/imgs/os-img.png b/docs/ff-concepts/notifications/imgs/os-img.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/os-img.png
rename to docs/ff-concepts/notifications/imgs/os-img.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/os-img_1.png b/docs/ff-concepts/notifications/imgs/os-img_1.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/os-img_1.png
rename to docs/ff-concepts/notifications/imgs/os-img_1.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/os-img_2.png b/docs/ff-concepts/notifications/imgs/os-img_2.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/os-img_2.png
rename to docs/ff-concepts/notifications/imgs/os-img_2.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/pn-faq-img-1.png b/docs/ff-concepts/notifications/imgs/pn-faq-img-1.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/pn-faq-img-1.png
rename to docs/ff-concepts/notifications/imgs/pn-faq-img-1.png
diff --git a/docs/ff-concepts/alerts-notification/imgs/pn-faq-img-2.png b/docs/ff-concepts/notifications/imgs/pn-faq-img-2.png
similarity index 100%
rename from docs/ff-concepts/alerts-notification/imgs/pn-faq-img-2.png
rename to docs/ff-concepts/notifications/imgs/pn-faq-img-2.png
diff --git a/docs/ff-concepts/notifications/imgs/pn-with-data-2.avif b/docs/ff-concepts/notifications/imgs/pn-with-data-2.avif
new file mode 100644
index 00000000..c5849b12
Binary files /dev/null and b/docs/ff-concepts/notifications/imgs/pn-with-data-2.avif differ
diff --git a/docs/ff-concepts/notifications/imgs/pn-with-data.avif b/docs/ff-concepts/notifications/imgs/pn-with-data.avif
new file mode 100644
index 00000000..90c77d42
Binary files /dev/null and b/docs/ff-concepts/notifications/imgs/pn-with-data.avif differ
diff --git a/docs/ff-concepts/notifications/imgs/set-app-badge-count-ios.avif b/docs/ff-concepts/notifications/imgs/set-app-badge-count-ios.avif
new file mode 100644
index 00000000..63a8ed19
Binary files /dev/null and b/docs/ff-concepts/notifications/imgs/set-app-badge-count-ios.avif differ
diff --git a/docs/ff-concepts/notifications/imgs/trigger-pn.avif b/docs/ff-concepts/notifications/imgs/trigger-pn.avif
new file mode 100644
index 00000000..bc59c0d4
Binary files /dev/null and b/docs/ff-concepts/notifications/imgs/trigger-pn.avif differ
diff --git a/docs/ff-concepts/notifications/notifications.md b/docs/ff-concepts/notifications/notifications.md
new file mode 100644
index 00000000..27c24453
--- /dev/null
+++ b/docs/ff-concepts/notifications/notifications.md
@@ -0,0 +1,26 @@
+---
+slug: /concepts/notifications
+title: Notifications
+description: Learn how to add notifications in FlutterFlow.
+tags: [Notifications, Concepts]
+sidebar_position: 0
+keywords: [FlutterFlow, Notifications, Concepts]
+---
+
+# Notifications
+
+**Notifications** are alerts or messages that appear on a user's device outside the normal UI flow of an app. They can inform the user of time-sensitive or high-priority messages, events, or actions that require attention. Notifications may appear as banners, alerts, pop-ups, or lock-screen notifications, depending on user preferences and platform design guidelines.
+
+Notifications enhance your app by increasing user engagement and delivering critical information in real time. Whether it’s an urgent alert or a gentle nudge, these timely messages:
+
+- **Prompt User Action**: Remind users to perform tasks or revisit the app, ensuring higher retention and conversion.
+- **Foster Engagement**: Encourage ongoing interaction through updates, promotions, or new content notifications.
+- **Deliver Value**: Provide relevant insights—such as location-specific alerts or personalized reminders—at the right moment.
+
+## Types of Notifications
+
+Generally, notifications can be divided into two main categories: **Local Notifications** and **Push (remote) Notifications**.
+
+**Local Notifications** are scheduled directly on the device and do not require a server component. They are commonly used for time-based reminders or location-based triggers, such as a daily workout reminder at 7:00 AM. To implement local notifications in FlutterFlow, you can integrate the [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) package using [custom actions](../../ff-concepts/adding-customization/custom-actions.md).
+
+**[Push Notifications](push-notifications.md)**, on the other hand, are delivered from a remote server through a platform-specific push notification service. They are primarily used for real-time updates, such as chat messages, social media alerts, or news updates. In FlutterFlow, [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging) (FCM) is used to handle push notifications, enabling seamless communication between your app and users.
\ No newline at end of file
diff --git a/docs/ff-concepts/alerts-notification/one-signal.md b/docs/ff-concepts/notifications/one-signal.md
similarity index 97%
rename from docs/ff-concepts/alerts-notification/one-signal.md
rename to docs/ff-concepts/notifications/one-signal.md
index d26870be..3c36d6f5 100644
--- a/docs/ff-concepts/alerts-notification/one-signal.md
+++ b/docs/ff-concepts/notifications/one-signal.md
@@ -1,7 +1,7 @@
---
title: OneSignal
-slug: /concepts/alerts-notification/one-signal
-sidebar_position: 3
+slug: /concepts/notifications/one-signal
+sidebar_position: 2
tags: [Actions, Alerts & Notifications, Integration]
keywords: [FlutterFlow, Actions, Alerts & Notifications, OneSignal]
---
@@ -50,7 +50,7 @@ To enable OneSignal in FlutterFlow:
2. Switch on the **Enable OneSignal** toggle.
3. Gather your credentials:
- - *App ID**: Find this in your OneSignal dashboard under **Settings > Keys & IDs >
+ - **App ID**: Find this in your OneSignal dashboard under **Settings > Keys & IDs >
OneSignal App ID**.
- **API Key**: Located in the same section as the App ID, under **Rest API Key**.
- **User Key**: Go to your user profile icon, then **Account & API Keys > User Auth Key**.
diff --git a/docs/ff-concepts/notifications/push-notifications.md b/docs/ff-concepts/notifications/push-notifications.md
new file mode 100644
index 00000000..29cbaf15
--- /dev/null
+++ b/docs/ff-concepts/notifications/push-notifications.md
@@ -0,0 +1,281 @@
+---
+title: Push Notifications
+slug: /concepts/notifications/push-notifications
+sidebar_position: 1
+tags: [Actions, Notifications, Integration]
+keywords: [FlutterFlow, Actions, Notifications, Push Notifications]
+---
+
+
+# Push Notifications
+
+**Push Notifications** let you deliver time-sensitive, real-time messages to users even when the app isn’t active. These notifications rely on [**Firebase Cloud Messaging (FCM)**](https://firebase.google.com/docs/cloud-messaging) behind the scenes, which routes messages to both Android and iOS devices. When integrated correctly, you can use push notifications to:
+
+- Send alerts for new content (e.g., chat messages, and updates).
+- Re-engage users with timely reminders or offers.
+- Provide relevant information (e.g., order status, location-based alerts).
+
+Push notifications involve several key components working together to deliver messages to users' devices. In FlutterFlow, you can construct and send notification payloads—such as title, message body, and additional data like image—to a push service, Firebase Cloud Messaging (FCM). FCM receives notifications and routes them to the appropriate devices.
+
+Each device is identified by a unique **Device Token/Registration Token** generated by the FCM to target specific devices. The user's device receives these notifications and handles the payload by displaying messages or navigating the user to specific screens.
+
+
+## Push Notifications Setup
+
+You can add and send push notifications manually or trigger them based on user actions within the app. Here are the steps in detail:
+
+:::info[General Prerequisites]
+Before you begin, ensure that you:
+- Complete all the steps in
+[**Firebase Setup**](../../ff-integrations/firebase/connect-to-firebase-setup.md).
+- Upgrade your Firebase project to the [**Blaze plan**](https://firebase.google.com/pricing) to enable [**Cloud Functions**](https://firebase.google.com/docs/functions), which are required specifically for FlutterFlow’s push notification setup, such as retrieving the FCM token and sending notifications trigger from FlutterFlow.
+:::
+
+:::info[iOS Prerequisites]
+To send push notifications to iOS devices, you must:
+- Have an active [**Apple ID**](https://appleid.apple.com/account?appId=632&returnUrl=https%3A//developer.apple.com/account/).
+- Enroll in the [**Apple Developer Program**](https://developer.apple.com/programs/enroll/) (a paid membership is required). For more details, visit the [**Apple Developer Program**](https://developer.apple.com/programs/).
+:::
+
+### Enabling Push Notification
+
+:::warning
+**Please note, push notifications will not work in these scenarios:**
+
+* Push notifications will not work on an iOS simulator. To test you will need to use a real device.
+* Push notifications will not be delivered to users who are logged out of your app. To send push notifications to users who are not logged in, consider implementing [**Anonymous Firebase Login**](../../ff-integrations/authentication/firebase-auth/anonymous-login.md) within your app
+* Push notifications will not work if you have the app open on your device.
+:::
+
+To enable push notifications:
+
+1. Navigate to the **Settings and Integrations > Push Notifications** and
+**Enable Push Notifications**.
+2. Now, click on the **Deploy** button. This will create and deploy the *Cloud Functions* in your Firebase project that are necessary for push notifications to work.
+3. Optionally, you can enable **Allow Scheduling** to send push notifications at a later time. Once enabled, you can select **Scheduler Granularity**, which determines how precisely the notifications will be sent. You can choose the granularity based on how time-sensitive your notifications are; For example:
+ - If you need the notification to be sent at an **exact time** (e.g., 11:37 AM), choose **"1 minute"**.
+ - If a slight delay is acceptable, you can select **"15 minutes"** or **"1 hour"**, meaning the notification will be sent within that timeframe.
+ - **Higher precision (e.g., 1-minute intervals) requires more computing resources**, which may **slightly increase costs** (up to $0.50 per month).
+ - **Lower precision (e.g., 1-hour intervals) is more cost-effective**, as it reduces the frequency of function execution (around $0.05 per month).
+
+
+
+:::warning[Upgrading to Blaze Plan]
+If you encounter deployment errors instructing you to contact support, it could be because you recently upgraded your Firebase project to the **Blaze plan**. After upgrading, Firebase may take approximately **10-15 minutes** to propagate the changes. If you receive this error, wait **10-15 minutes** and then try deploying again.
+:::
+
+
+
+:::info
+By default, the **Automatically Prompt Users for Permission** option is enabled, meaning your app will automatically prompt users requesting for permission to receive push notifications when the app is started. However, this may be disruptive to your user sign-in flow.
+
+If you disable it, you can control when the permission is requested. To do so, you will need to manually [**Request Permission**](../../resources/projects/settings/project-setup.md#request-permission-action) at the appropriate point in your app. **It is recommended to keep this option always enabled**.
+:::
+
+### Configuring iOS App
+
+To receive the push notifications in an iOS app, you need to perform the following additional steps.
+
+#### Step 1: Creating a Key
+
+Apple requires developers to create a key for the push notifications inside the *Apple Developer Console* to verify the push notification's sender.
+
+To create an APNs key in your Apple Developer account, go to the [**Keys**](https://developer.apple.com/account/resources/authkeys/list) section and click the **(+)** button. Enter a **Key Name**, select **Apple Push Notifications service (APNs)**, and click **Configure**. Choose the appropriate **Environment** (Sandbox, Production, or both) and set any [**Key Restriction**](https://developer.apple.com/documentation/usernotifications/establishing-a-token-based-connection-to-apns#Team-scoped-keys) as needed. Once configured, click **Save**, then **Continue** and **Register**. Finally, download and securely store the key file, as it will be required for integration with your Firebase project.
+
+:::tip
+
+After testing push notifications in the development environment, it's advisable to create a new key specifically for production use and upload it to your Firebase project.
+
+:::
+
+
+
+
+
+
+#### Step 2: Add APNs Key to Firebase Project
+
+To add the **APNs** key to your Firebase project, navigate to your **Firebase Project Dashboard > Project Settings** and select the **Cloud Messaging** tab. Scroll down to the **Apple app configuration** section and locate the **APNs Authentication Key**.
+
+Click **Upload** and select your APNs auth key file (that you downloaded in the [previous step](#step-1-creating-a-key)). Enter the **Key ID**, which can be found inside the key entry in [Keys](https://developer.apple.com/account/resources/authkeys/list). Finally, enter the **Team ID**, available in the [**Apple Developer Account**](https://developer.apple.com/account) inside the **Membership details** section.
+
+
+
+
+
+
+
+## Send Push Notifications
+
+To send push notifications, go to **FlutterFlow** > **Settings and Integrations** > **Push Notifications**, then open the **Manually Trigger Notifications** section. Enter the notification details and click **Send Notification**. A confirmation popup will appear—type **"Send Notification"** and click **Send Notification** again to deliver your message.
+
+To send push notifications, you need to provide the following details:
+
+- **Notification Title:** Enter the title of the notification.
+- **Notification Text:** Provide the message content for the notification.
+- **Notification Image (Optional):** Upload an image to be displayed with the notification.
+- **Target Audience** **(Optional):** Choose whether to send notifications to **iOS**, **Android** users, or **All** users regardless of their device type.
+- **Deliver With Sound** **(Optional):** Enable this option if you want the notification to play a sound.
+- **Batch Notifications** **(Optional):** Toggle this setting if you want to send the notification in batches. Enable this only when you have over 10K users.
+- **Scheduled Time (Optional):** Choose the specific date and time for the notification to be sent. This option is available only when the **Allow Scheduling** option is enabled, and the selected date and time follow your timezone.
+- **User References (Optional):** Send push notifications to a specific user or a few users. Enter the user document reference (from the 'users' collection in Firestore) into the *User References* in this format: `/users/user_id`.
+
+ :::tip
+ You can easily copy and paste the document reference directly from the [**Firestore Data Manager**](../../ff-integrations/database/cloud-firestore/firebase-content-manager.md) in FlutterFlow.
+
+ 
+ :::
+- **Initial Page (Optional):** Choose the page the app should open when the user taps the notification.
+
+
+
+
+
+
+## Push Notifications with Data
+
+Sometimes, you might want to include additional data with your push notifications, which can then be used to display more detailed information on the page when it is opened through a push notification.
+
+For instance, consider a news app that sends push notifications for breaking news. When the user taps the notification, the additional data like the article’s title, summary, and image can be displayed on the news page.
+
+:::warning
+
+Currently, we only support sending *Firestore DocumentReferences* as data.
+
+:::
+
+To send a push notification with data, you need a page that accepts a parameter of type **DocumentReference**. Start by building the notification, and set the **Initial Page** to the one that accepts the parameter. In the **Parameter Data** section, copy-paste the document reference from Firestore. Finally, click **Send Notification** to deliver the push notification with the specified data.
+
+:::tip
+
+On the page that receives the DocumentReference, you can fetch additional details of the item using the [**Backend Query**](../../resources/control-flow/backend-logic/backend-query/document-from-reference.md).
+
+:::
+
+
+
+## Trigger Push Notification [Action]
+
+You may want to send a push notification when a specific event occurs in your app. For example, notifying a user when they receive a new message, when an appointment is booked, or when there is a price change.
+
+You can send the push notification when such an event occurs by adding the **Trigger Push Notification** action.
+
+In this action, you can decide who should receive the push notification by setting the **Audience** to either **Single Recipient** or **Multiple Recipients**.
+
+- **Single Recipient:** Sends a notification to one specific user. For example, notifying the **group creator** when a new member joins.
+- **Multiple Recipients:** Sends a notification to multiple users. For example, notifying **all group members** when someone joins the group.
+
+:::tip
+
+- You must provide the document reference of the user who should receive the notification.
+- You can set other notification details as per your requirements.
+
+:::
+
+
+
+## Update App Badge Count (iOS only) [Action]
+
+The **Update App Badge Count** action lets you manually display a numeric badge on your **iOS app icon**. This badge typically indicates pending tasks or updates, such as unread messages, notifications, or reminders.
+
+:::info[Platform Support]
+In Android, badges automatically appear on app icons with push notifications. We would like to add this functionality for iOS. However, we are blocked by [**this**](https://github.com/firebase/flutterfire/issues/9563) issue. Therefore, it is important to note that this action **does not automatically set the badge count** when receiving a push notification in iOS—rather, it must be triggered manually while your app is running.
+
+:::
+
+
+
+:::tip[possible use cases]
+
+- In a **messaging app**, you might manually increment the badge count each time a new chat message arrives while the user has the app open or decrease it as they read the messages.
+- In an **email app**, you could manually update the badge count each time a new email arrives while the user is actively using the app and decrease it as emails are opened or marked as read.
+- In a **calendar app**, you might set the badge count to reflect the number of upcoming events for the day, incrementing or decrementing it based on the user's interactions or changes in their schedule.
+:::
+
+To implement, simply enter the number of **Badge Count** the app should display on the home screen icon.
+
+
+
+
+## FAQs
+
+
+Push notifications not working; Getting cloud function error: PERMISSION_DENIED: Missing or insufficient permissions
+
+If you encounter an error with push notifications, specifically a cloud function failure due to permission issues, it might be related to your Google Cloud organization's settings. Organizations can disable automatic IAM grants for default service accounts, leading to this error.
+
+To fix this issue, manually grant the Editor role to the default service account used by your project. You can do this by visiting the GCP IAM page and assigning the Editor role to the following service account:
+
+- For App Engine (Gen 1): `{firebase-project-id}@appspot.gserviceaccount.com`
+- For Compute Engine (Gen 2): `{project-number}-compute@developer.gserviceaccount.com`
+
+
+
+Also, ensure that these principals (emails) and their roles are present in the permissions tabs in *App Engine Default service account*, *Default compute service account*, and *firebase-adminsdk*. You can do this by visiting the GCP Service Accounts page, clicking on each service account email, and granting access to these principals in the permissions tab.
+
+Below is a sample image for App Engine Default service account.
+
+
\ No newline at end of file
diff --git a/docs/ff-integrations/authentication/firebase-auth/jwt-token-login.md b/docs/ff-integrations/authentication/firebase-auth/jwt-token-login.md
index d8a3d977..ee8c9995 100644
--- a/docs/ff-integrations/authentication/firebase-auth/jwt-token-login.md
+++ b/docs/ff-integrations/authentication/firebase-auth/jwt-token-login.md
@@ -228,8 +228,8 @@ Here's an example of how you can use the *Authenticated User* object to filter t
Once you log in via the JWT token, the *Authenticated User* object is available. This object contains the fields (i.e., logged-in user's data), especially **User Reference (users ref),** that you may need to provide while adding or retrieving Firestore documents.
-When such user reference is stored inside the Firestore documents, you can use them inside the **Single** or **Multiple Recipient** while defining the **Audience** inside the [Trigger Push Notification](../../../ff-concepts/alerts-notification/push-notifications.md#trigger-push-notification) action, as shown in the image below:
+When such user reference is stored inside the Firestore documents, you can use them inside the **Single** or **Multiple Recipient** while defining the **Audience** inside the [Trigger Push Notification](../../../ff-concepts/notifications/push-notifications.md#trigger-push-notification-action) action, as shown in the image below:

-To learn more about how to use user references for sending push notifications, please check the [push notification](../../../ff-concepts/alerts-notification/push-notifications.md) section.
\ No newline at end of file
+To learn more about how to use user references for sending push notifications, please check the [push notification](../../../ff-concepts/notifications/push-notifications.md) section.
\ No newline at end of file
diff --git a/docs/intro/roadmap.md b/docs/intro/roadmap.md
index 80218a29..7cea4598 100644
--- a/docs/intro/roadmap.md
+++ b/docs/intro/roadmap.md
@@ -26,7 +26,7 @@ The UI Layer is all about the visual elements and interactions in your app. It i
- [Responsiveness](../ff-concepts/layout/responsive-layout.md)
- Interaction Feedback
- [Animations](../ff-concepts/animations/animations.md)
- - [Haptic Feedback](../ff-concepts/alerts-notification/haptic-feedback.md)
+ - [Haptic Feedback](../ff-concepts/alerts/haptic-feedback.md)
## Logic Layer
The Logic Layer handles your app's business logic and decision-making. This includes state management, conditional actions, and navigation logic.
@@ -51,8 +51,8 @@ The Logic Layer handles your app's business logic and decision-making. This incl
- [Deep & Dynamic Linking](../ff-concepts/navigation-routing/deep-dynamic-linking.md)
- **Notification Systems**:
- - [Triggering Push Notifications](../ff-concepts/alerts-notification/push-notifications.md)
- - [Alert Dialogs](../ff-concepts/alerts-notification/alert-dialog.md)
+ - [Triggering Push Notifications](../ff-concepts/notifications/push-notifications.md)
+ - [Alert Dialogs](../ff-concepts/alerts/alert-dialog.md)
## Data Layer
The Data Layer manages data storage, retrieval, and integration with external sources like APIs and databases.
diff --git a/docs/resources/control-flow/backend-logic/backend-query/document-from-reference.md b/docs/resources/control-flow/backend-logic/backend-query/document-from-reference.md
index 998ca230..abc7de3a 100644
--- a/docs/resources/control-flow/backend-logic/backend-query/document-from-reference.md
+++ b/docs/resources/control-flow/backend-logic/backend-query/document-from-reference.md
@@ -14,7 +14,7 @@ This backend query would help you in retrieving information from a document refe
:::info[Prerequisites]
In order to use this backend query, you should have:
* Completed all the steps of
-[Firebase Setup](../../../../../docs/ff-integrations/firebase/connect-to-firebase-setup.md) for
+[**Firebase Setup**](../../../../../docs/ff-integrations/firebase/connect-to-firebase-setup.md) for
your project.
* At least one **Firestore Collection** is defined in your project.
:::
diff --git a/docs/resources/control-flow/functions/utility-actions.md b/docs/resources/control-flow/functions/utility-actions.md
index f1daf252..c930ca1e 100644
--- a/docs/resources/control-flow/functions/utility-actions.md
+++ b/docs/resources/control-flow/functions/utility-actions.md
@@ -268,24 +268,6 @@ Go to your project page on FlutterFlow and follow the steps below to define the
-## Update App Badge Count (iOS only) [Action]
-This action enables you to display a badge icon with counts over iOS app icons. For example, you could use this action to show unread messages, today's reminders, or upcoming events.
-
-:::info[Platform Support]
-In Android, badges automatically appear on app icons with push notifications. We would like to add this functionality for iOS. However, we are blocked by [**this**](https://github.com/firebase/flutterfire/issues/9563) issue. Therefore, iOS badge counts need to be configured manually using the action shown below.
-:::
-
-
-Follow the steps below to add this action to any widget.
-
-1. Select the Widget (e.g., Container, Button, etc.) on which you want to add the action. However, you would probably chain this action after something happens in your app.
-2. Select Actions from the Properties panel (the right menu), and click Open. This will open an Action Flow Editor in a new popup window.
-3. Click on the **+ Add Action**.
-4. On the right side, search and select the Update App Badge Count (under Alerts/Notifications) action.
-5. Set the Badget Count Value.
-
-
-
## Copy to Clipboard [Action]
Using this action, you can allow users to copy a particular text from your app. For example, copying a message or transaction ID and then pasting it into another application.
diff --git a/firebase.json b/firebase.json
index 8cdb65e3..703bbbe1 100644
--- a/firebase.json
+++ b/firebase.json
@@ -2368,6 +2368,31 @@
"destination": "/concepts/file-handling/uploading-files#upload-or-save-media-action",
"type": 301
},
+ {
+ "source": "/concepts/alerts-notification/alert-dialog",
+ "destination": "/concepts/alerts/alert-dialog",
+ "type": 301
+ },
+ {
+ "source": "/concepts/alerts-notification/dismiss-custom-dialog",
+ "destination": "/concepts/alerts/dismiss-custom-dialog",
+ "type": 301
+ },
+ {
+ "source": "/concepts/alerts-notification/haptic-feedback",
+ "destination": "/concepts/alerts/haptic-feedback",
+ "type": 301
+ },
+ {
+ "source": "/concepts/alerts-notification/push-notifications",
+ "destination": "/concepts/notifications/push-notifications",
+ "type": 301
+ },
+ {
+ "source": "/concepts/alerts-notification/one-signal",
+ "destination": "/concepts/notifications/one-signal",
+ "type": 301
+ },
{
"source": "/concepts/state-management/generated-code",
"destination": "/generated-code/state-management",
@@ -2377,7 +2402,7 @@
"source": "/concepts/custom-code/custom-files",
"destination": "/concepts/custom-code/configuration-files",
"type": 301
- },
+ },
{
"source": "/marketplace/creators-hub/submit-item-for-reivew",
"destination": "/marketplace/creators-hub/submit-item-for-review",