# Push

Push element indicates a point to communicate to a customer with a push notification.

To send a push message at the right moment in the journey, add the Push element after the event or condition that should trigger the message. 
## Select or create push content

Then, select a preset from your Pushwoosh account or create one. [Learn more about creating push presets](/product/content/push-presets/).

![Add Push element after trigger and select a preset](/journey-elements-channels-1.webp)
<Aside type="caution">
Please be aware that if any segmentation rules are saved in a Push Preset you choose, they won’t be applied to the journey.
</Aside>


## Set message type

Choose **Marketing message** or **Transactional message**:

* **Marketing message**: For campaigns and promos. All rules and limits apply. Respects: opt-outs, frequency capping, and the silence period. Excludes: the [global control group](/product/audience-data-and-segmentation/global-control-group/) users.
* **Transactional message**: For operational or service messages. Rules and limits don't apply. Bypasses: opt-outs, frequency capping, and the silence period. Sent to: the [global control group](/product/audience-data-and-segmentation/global-control-group/) users.

<img src="/journey-elements-push-14.webp" alt="Push element Overwrite personalization section with Marketing message and Transactional message options"/>

[Learn how message type affects delivery](/product/messaging-channels/marketing-vs-transactional/).

## Personalize messages with Dynamic Content and Liquid Templates

For greater relevance of your messages to users in the journey, you can add personalized content based on users' behavior. For example, when sending an Abandoned Cart push, add the product name for better conversion. That reminds users of what they wanted to purchase and makes your message more convincing.

[Learn more about personalization of journey messages](/product/customer-journey/journey-elements/dynamic-content-and-liquid-templates-in-journeys/)


## Use vouchers 

You can personalize push notifications by attaching a voucher code from a predefined pool. This is useful for promotions, discounts, and loyalty incentives.   
For this, create a push preset that includes the placeholder ``{{voucher}}`` in advance.

To include a voucher:

1. Toggle **Vouchers** to ON.  
2. In the **Voucher Pool** field, select the pool containing your available voucher codes. Make sure to add the pool of vouchers in advance.
3. (Optional) Use the **Assign Tag** field to apply a tag to users who receive a voucher. This tag can be used for segmentation or reporting.
![Enable the **Use Vouchers** option](/content-vouchers-9.webp)
[Learn more about vouchers](/product/content/vouchers/)

## Save to inbox

The **Save to Inbox** option lets you store push notifications in the app’s inbox, so users can access and review messages whenever it's convenient for them. This helps ensure that important notifications aren't missed and can be checked later, making it easier for users to stay engaged.


<img src="/journey-elements-README-9.webp" alt="Save to Inbox option in Push element with settings"/>


To save a message to the inbox, simply toggle the **Save to Inbox** option and set it up.

1. Choose how long the message stays in the inbox.
2. Customize the message icon, if needed. You can choose a different icon for the message to help it stand out in the inbox.
3. Define what happens when the user clicks the message.

  [Learn more about setting up the inbox](/product/messaging-channels/message-inbox/mobile-message-inbox)



## Configure message delivery settings 

### Set time to live for push delivery

Use **Time to live** in **Delivery settings** to control how long Pushwoosh retains a push notification for delivery if the recipient is offline at the time of the send attempt.

In **Time to live**, choose a preset period for how long Pushwoosh keeps this message available for delivery, from 1 hour to 3 weeks.

<img src="/journey-elements-push-19.webp" alt="Delivery settings in the Push journey element with the Time to live field and opened duration options."/>

You can also choose **Custom range** and enter a specific number of hours, days, or weeks. The maximum period is 4 weeks.

<img src="/journey-elements-push-18.webp" alt="Delivery settings in the Push journey element with the Time to live field and opened duration options."/>

<Aside type="note">
The countdown starts from the moment Pushwoosh attempts to deliver the push in the journey, not from when the journey was triggered or the message was created.
</Aside>

> **Note:** The **Time to live** value set in the push element overrides the expiration time defined in the [push preset legacy form](/product/content/push-presets/push-preset-legacy-form/#ios). For example, if the preset TTL is 2 weeks but the push element TTL is 1 week, the push expires after 1 week.


### Set frequency capping

<Aside type="note">
Frequency capping options are available only when **Marketing message** is selected. When you choose **Transactional message**, frequency capping doesn't apply and these options are disabled.
</Aside>

Use [**Frequency capping**](/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping) to limit how often users receive push messages, preventing over-messaging and reducing churn. In the Push element settings, choose one of the following options:

* **Use Global frequency capping settings**
  
  Apply the project-wide limits configured in your [Global frequency capping settings](/product/messaging-channels/global-frequency-capping/#enable-global-frequency-capping). 
  
  For example, if the global limit is set to 3 messages in 9 days, additional messages exceeding this limit will be skipped.

* **Ignore Global frequency capping**

  The user will receive this message even if they’ve exceeded the channel’s message limits. Use this option with caution to avoid over-messaging.

* **Use custom frequency capping**

  Set a custom message limit for this message. If the user exceeds this custom cap, the message will be skipped, and the user will proceed to the next step.
  > **Important:** Custom frequency capping does not isolate the message from **Global frequency capping**. All messages sent on the same channel, including those from other journeys or campaigns, are still counted toward the global cap. If the user has already received 3 push messages this week from other sources, this message may still be blocked, even if the custom capping would allow it.
  [Learn more](/product/messaging-channels/global-frequency-capping/#customize-capping-for-specific-messages)

### Set send rate limits

The **Send rate** setting controls how quickly messages are delivered to your audience. Adjusting the send rate helps you manage delivery speed, prevent backend overload, and improve overall deliverability.

Choose one of the following options:

* **Use global send rate settings**  
  Applies the send rate limits configured in your project’s message delivery settings. If no limits are set, all messages will be sent immediately. Use this option when you want delivery speed to follow your project’s default rules. [Learn more about global send rate limits](/product/messaging-channels/global-frequency-capping/#set-send-rate-limits) 

![Use global send rate settings](/send-rate-in-journey-elements-1.webp)

* **Send messages without send rate**  
  Sends messages as fast as possible, ignoring any global send rate limits. Use with caution to avoid overloading your backend or creating delivery spikes.

![Send messages without send rate](/send-rate-in-journey-elements-2.webp)

* **Use custom send rate**  
  Overrides the global send rate for this message only. Allows you to specify the number of messages sent per minute, giving you full control over delivery speed. Messages will be sent at the custom rate you define in the message element.

![Use custom send rate](/send-rate-in-journey-elements-3.webp)


## Enable Best time to send

If you want each user to receive a push notification when they are most likely to interact with pushes, enable the **Best time to send** option. The time for sending the message to each user will be calculated based on their behavior and previously sent messages' performance.

<img src="/journey-elements-README-10.webp" alt="Best time to send option in Push element with default time and timezone settings"/>

<Aside type="note">
To use this option, first, enable the [**PW\_ApplicationOpen**](/product/audience-data-and-segmentation/events/default-events#pw_applicationopen) and [**PW\_NotificationOpen**](/product/audience-data-and-segmentation/events/default-events#pw_notificationopen) default Events in your project. We recommend doing this a few days before sending the push to collect enough data.
</Aside>

The accuracy of calculating the best time for each user depends on how many pushes you sent to this user earlier.

If there is not enough data on the user, they will receive a push at the **Default time** you specify according to their timezone.

<Aside type="caution">
- The **Best time to send** is calculated for the next 24 hours after the user enters the journey point where this option is enabled.

- If you’re using a [Time Delay](/product/customer-journey/journey-elements/flow-controls/time-delay/) for the next step and the best time to send is later than the delay time, the user will wait until the best time, receive the message, and then proceed to the next step in the journey. 

- However, if the Time Delay is set to an exact date and time and the best time to send is later than that, the user will not receive the message and will exit the journey.

</Aside>

## Send by User ID

When enabled, the message will be sent to all the devices associated with an ID of a user who reaches this journey element. Thus, if a user has several devices, all associated with a single userID, that user will receive several messages, one per device.

<img src="/journey-elements-README-13.webp" alt="Send by user ID option in Push element"/>

## Send to last active device

Enable **Send to last active device**. The message will be sent only to the device with the most recent app open under the user's ID. 

<img src="/journey-elements-push-20.webp" alt="Send to last active device toggle enabled in Push element with UI description below the label"/>

This option is mutually exclusive with **Send by User ID**. When you turn one on, the other turns off.

<Aside type="tip" title="Example: Send by User ID vs. Send to last active device">

A user has a phone and a tablet linked to the same User ID. The user last opened the app on the tablet.

* **Send by User ID:** the push goes to the phone and the tablet. The user gets two notifications.
* **Send to last active device:** the push goes to the tablet only. The phone does not receive it.

</Aside>



## Split flow after a push

Use **Flow options** in the Push element to branch the journey when users open the push, when the push is delivered to the device, or when you use both checks.

### Split flow by opens or ignores

Split the remaining journey flow based on whether this push is opened or ignored. For example, email users who don’t open pushes or send another push to those who did.

<img src="/journey-elements-README-11.webp" alt="Split flow based on push opens in the journey"/>

To set it up:

1. Turn on **Split flow if message is opened**. The canvas adds the **Opened** and **Not opened** branches.
2. Set **How long to wait to check message opens** using **days**, **hours**, and **mins**. The maximum wait time is 7 days.
3. On the canvas, connect **Opened** and **Not opened** to the next elements in your journey.

<img src="/journey-elements-README-12.webp" alt="Set waiting period for opened and not opened branches"/>

### Split flow by message delivery

This flow option depends on whether Pushwoosh can confirm that this push was delivered to the user’s device. Send users on the **Not delivered** branch to a fallback channel such as SMS, email, or in-app messaging so they still get your message.

<Aside type="caution" title="How Send by User ID affects the Delivered branch">
With **Send by User ID** turned on, Pushwoosh sends this push to each device tied to the user. For the delivery split, the user follows the **Delivered** branch as soon as delivery is confirmed on any of those devices.
</Aside>

To set it up:

1. Turn on **Split flow if message is delivered**. The canvas adds the **Delivered** and **Not delivered** branches.
2. Set **How long to wait to check message delivery** using days, hours, and mins. Use the same pattern as for the open split. The maximum wait time is 7 days.

<img src="/journey-elements-push-15.webp" alt="Push element Flow options with split by opens, split by delivery, wait timers, and note when both splits are enabled."/>

3. On the canvas, connect **Delivered** and **Not delivered** to the next elements in your journey (for example a fallback message on **Not delivered**).

<img src="/journey-elements-push-16.webp" alt="Customer Journey canvas showing Delivered and Not delivered branches with user counts and percentages."/>

Delivery split results appear in journey analytics on the canvas, including user counts and the percentage on each branch.

### When both delivery and open splits are enabled

If both splits are enabled, devices with delivered pushes proceed to either the **Opened** or **Not opened** branch. Devices whose pushes are not delivered proceed to the **Not delivered** branch.

<img src="/journey-elements-push-17.webp" alt="Customer Journey canvas showing push delivery split branches with user counts and percentages on each branch."/>

When you finish configuring this Push element, click **Save**.