# Send push

div
div
Client SDK
div
Backend API
div
Mobile approve
div
SSO
div
Sub-journey
> Sends a push notification to the user’s device


## Description

This backend step is used to send a push notification to a user device using a push **external connection** (e.g., APNs/FCM via your configured connector). Typical use cases include out-of-band notifications, transactional alerts, or companion messages within a journey.

To send push notifications using a custom provider, configure [Custom provider for push notifications](/guides/orchestration/external-connections/custom_web_service_push), then select the configured connection in **Push Provider**.

Note
This guide documents the Send push step as a generic messaging action, not an authentication factor. To send an OTP for authentication, use the **Generic OTP Authentication** step, which handles OTP generation, delivery (including push), and validation in a single flow.

When triggered, this step instructs Mosaic to send the push notification using the selected provider and the configured message fields. You can use custom branches configured on a custom provider to route the journey according to the service response.

Before users can receive push notifications, a push token must be registered so the user’s device can accept them. To send push notifications to the Android device, it needs to support Google Play Services.

## Configuration

div
| Field | Description |
|  --- | --- |
| **Title** | The title of the push notification shown on the device. Supports expressions. |
| **Text** | The body text of the push notification shown on the device. Supports expressions. |
| **Custom Fields** | JSON object with key–value pairs to include in the notification payload. |
| **Push Token** | Expression that resolves to the push token of the recipient device. Push tokens are collected via the Mobile SDK when registering the device. |
| **Push Provider** | Select the push service from the list of external connections. If the list is empty, create a connection (**Management** > **Integration hub**). |
| **Branch Name** (only when **Push Provider** is configured) | Name of the custom branch(es) configured on the **Push Provider**. This label is also used when the branch type is `Success` or `Warning`. |
| **Behavior** (only when **Push Provider** is configured) | Determines whether the journey uses the custom branch:**Disabled**: The step continues to the next step. The custom branch is ignored.**Enabled**: Enables the custom branch, so the journey can follow that branch when its condition is met. |


Journey event data
This step can be configured to record step input and output data, or a custom payload, which is then surfaced in journey events in Journey Analytics for diagnostic purposes. For details, see [Additional data reporting](/guides/orchestration/getting-started/event_reporting).