

<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The banner, first run message, mandatory upgrade, and walkthrough types of mobile push are deprecated. These types of messages can be sent using the [In-app messages](/docs/campaign/in-app-messages/introduction-to-inapp-messages) feature. You can use the ready-made templates available in the **Predefined templates** folder in **Experience Hub > In-app messages > Templates**.

</div></div></div>


A push is a notification that is displayed in the main screen of a mobile device or directly in a mobile app. Simple push messages appear in the notification center when the screen is locked or they are visible in the top bar when the screen is unlocked. A silent push is a hidden notification that is delivered to the app on a user's device.

This is a great solution to:
- Inform about current promotions.
- Share important information connected with the app usage.
- Send personalized content based on the recipient's behavioral profile.

## Prerequisites
---
- Enable the [Firebase integration](/docs/settings/tool/firebase).
- Configure mobile push notifications:  
  - [Android](/developers/mobile-sdk/configuring-push-notifications/android)
  - [iOS](/developers/mobile-sdk/configuring-push-notifications/ios)
  - [React Native](/developers/mobile-sdk/configuring-push-notifications/react-native)
  - [Flutter](/developers/mobile-sdk/configuring-push-notifications/flutter)
- If you are going to attach images to your push notifications:
    - Prepare images; you can use external links or [upload your images](/docs/assets/files-explorer#adding-new-files) in the Data Modeling Hub.
    - **Android**: Follow the instructions [under this link](https://firebase.google.com/docs/cloud-messaging/android/send-image).
    - **iOS**: Configure and implement [Notification Service Extension](/developers/mobile-sdk/configuring-push-notifications/ios#synerise-notification-service-extension) and [Notification Content Extension](/developers/mobile-sdk/configuring-push-notifications/ios#rich-media-in-push-notifications). According to your business needs, implement [Single media](/developers/mobile-sdk/configuring-push-notifications/ios#rich-media-in-push-notifications-single-media-implementation) and/or [Carousel](/developers/mobile-sdk/configuring-push-notifications/ios#rich-media-in-push-notifications-carousel-implementation).
- Implement URLs and deep links: 
    - [Android](/developers/mobile-sdk/campaigns/action-handling#handling-actions-from-campaigns-in-android)
    - [iOS](/developers/mobile-sdk/campaigns/action-handling#handling-actions-from-campaigns-in-android)
    - [React Native](/developers/mobile-sdk/campaigns/action-handling#handling-actions-from-campaigns-in-react-native)
    - [Flutter](/developers/mobile-sdk/campaigns/action-handling#handling-actions-from-campaigns-in-flutter)

### Image requirements
 
- Allowed format: `.jpg`, `.jpeg`, or `.png`
- Allowed width: minimum 645 px
- Allowed size: maximum 1 MB
- Recommended aspect ratio is 2:1

## Create a simple push
---

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/experience-hub-icon.svg" alt="Campaign icon" class="icon" > **Experience Hub > Mobile Push > Create new**.
2. Enter the name of the push notification (it is only visible on the list of notifications).
3. Select one of the notification types: 
    - **Simple push**
    - **Silent push**


### Select device type
---
In this part of the process, you will declare the operating system of devices which will receive the notifications.

1. On the **Device type** section, click **Define**.
2. Select one of the following tabs:  
    - **Android** - The push notification will be delivered only to Android devices.
    - **iOS** - The push notification will be delivered only to iOS devices.
    - **All** - The push notification is will be delivered to devices with any kind of operating system.
      <figure><img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/docs/campaign/Mobile/_gfx/mobile50.png" class="full" alt="The device type section"><figcaption>The device type section</figcaption></figure>
3. Confirm your choice by clicking **Apply**.  

### Select recipients
---
In this part of the process, define the recipients of the push notification.

1. In the **Audience** section:  
    1. Choose the recipients:
        - **Everyone** - The notification will be delivered to all users who:
            - gave marketing consent.
            - have the `snrs_has_mobile_push_devices` attribute set to `true`.  
            [More information about conditions for sending and displaying notifications](/docs/campaign/Mobile/mobile_campaign#conditions-for-sending-and-displaying-mobile-notifications).
        - **Segment** - You can send the message to one or more existing segments in the system.
        - **New Audience** - Create new segments and specify the conditions which the target must meet.
      
   <div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

   - Regardless of the way of selecting the audience, the system limits the audience to those who have the marketing agreement on, unless you override this behavior in the advanced options.
   - If the audience is larger than 500000 profiles, consider using **Batch delivery** in the advanced options to avoid timeouts.

   </div></div></div>

    2. **Optional**: Open **Advanced options** and configure additional settings.  
    
       <details class="accordion"><summary>Advanced options - explanation</summary><div class="accordion-content"><ul> <li><p><strong>Batch delivery</strong> - It prevents sending notifications to all recipients at once. </p> <div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content"> <p>If you plan to send messages to an audience larger than 15,000 profiles, we recommend this option.</p> </div></div></div> <p> For example, if the expected performance of your messaging provider is 1 million messages per hour and the expected audience is 5 million profiles, you can split the communication into 60 batches sent 5 minutes apart: every batch will include ~83000 profiles sending all messages will take 5 hours.<br> If you send a large number of messages all at once, there is a chance that your application may experience a sudden increase in traffic. To prevent any issues, make sure your application is fully prepared to handle this potentially significant surge in traffic. If a batch takes more than 8 hours to complete for any reason, it is cancelled in Synerise. </p> </li> <li><p><strong>Send to all devices</strong> - This option lets you send a message to all devices used by a customer. It&#39;s unselected by default. If this option remains unselected, the message will be sent to the customer&#39;s most recently active device only. </p> </li> <li><p><strong>Enable control group</strong> - It creates a subgroup of the recipients who won&#39;t receive any push notification variant. <strong>When to use it?</strong> When you send one or several variants of a notification (A/B testing). When a customer is assigned to their control group, the information is available in their Profiles card as an event.</p> </li> <li><p><strong>Send without marketing agreement check</strong> - To comply with GDPR resolutions, Synerise by default filters out the recipients with marketing agreement off. This option, however, allows to send push notifications to those whose marketing agreement is off (after ticking this option, the number in the estimated reach don&#39;t refresh). <strong>When to use it?</strong> While sending messages that don&#39;t contain marketing content, for example, information about delays in shipping.</p> </li> <li><p><strong>Include audience changes</strong> - Available only for scheduled notifications. It recalculates the number of recipients right before sending the message. By default, the size of the customer segmentation chosen for the push notification is the same as in the moment of sending, even if the number of customers in the chosen segment changed between scheduling the notification and sending. <strong>When to use it?</strong> When the size of the segments of customers selected as the audience of the notification can change dynamically. </p> </li> <li><p><strong>Ignore limits</strong> - If you want to make sure that this message is sent to a customer, even it exceeds the global limit of this type of messages for a single customer per day (more information is available <a href="/docs/settings/configuration/campaign-limits/">here</a>), enable the <strong>Ignore limits</strong> toggle. You may apply it to system messages such as a transaction confirmation, notifications about order delays, and so on.</p> </li> </ul></div></details>
  
        <figure><img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/docs/campaign/Mobile/_gfx/mobile51.png" class="full" alt="The Audience section"><figcaption>The Audience section</figcaption></figure>

    1. Confirm the selection by clicking **Apply**.

### Select or create a push template
---
In this part of the process, you will select or create a push template.

#### A/B/x testing

You can create up to 3 push notification templates and send them within one campaign. If you use more than 1 template in a campaign, you can define the allocation of recipients to the template variants. If you enabled a control group while [defining the recipients](#select-recipients) of your push notification campaign, you can additionally define the percentage of recipients who will belong to the control group (these customers won't receive a push notification and a [`push.controlGroup`](/docs/assets/events/event-reference/mobile-push#pushcontrolgroup) event will be generated on their activity list on a profile card).

1. In the **Content** section, next to **Variant A**, click <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/add-variant-icon.png" alt="Add variant icon" class="icon" >.
2. To create or select a ready template, click **Create message**.
    - To select a ready template, from the template library select a template. Then you will be directed to the builder in which you can make changes to the template, to use it in the campaign, click **Use in communication**. If you use [Approval Service](/docs/settings/configuration/service-approval), click **Send to approval**. 
    - To create a new template, in the upper right corner, click **New template**. 
        1. Select the builder in which you will create a template:  
            - [See instruction on creating a template in the Visual builder](/docs/campaign/Mobile/creating-mobile-push-templates/mobile-push-visual-builder)
            - [See instruction on creating a template in the Code builder](/docs/campaign/Mobile/creating-mobile-push-templates/mobile-push-code-editor)
        2. Once the template is ready, click **Use in communication**. If you use [Approval Service](/docs/settings/configuration/service-approval), click **Send to approval**.


### Schedule the notification
--- 
In this part of the process, you will define when the push notification will be sent.

1. In the **Schedule** section, click **Define**.
1. You can choose between two options:

    - To send your notification after clicking the **Send** button on the upper right corner, use the **Display immediately** option.  
        The notification display is dependent on the [priority](/docs/campaign/Mobile/creating-mobile-push-templates/mobile-push-visual-builder#defining-notification-priority) and/or [content-available option](/docs/campaign/Mobile/creating-mobile-push-templates/mobile-push-visual-builder#enabling-content-available-option) defined in the template, so the display of the notification may not be immediate.
    - To plan a message to be sent at a future date, use the **Scheduled** option. Set the start time and the time zone.  
      Synerise performs best with real-time data. This is why you can't schedule a message for more than 10 days in the future.  
      To select the best time of sending the message, take a look at the suggestion from the AI engine that calculates the best time (for all recipients). If time optimization is disabled, click [here](/docs/settings/configuration/time-optimizer) to learn more how to enable it and use it.
2. Select the **Silence Hours** setting:
    - **Without silence hours** - The communication can be processed and sent out to the recipients at any time during the day.
    - **Include silence hours** - With this option, you can set a time of day when the communication can't be sent:  
        1. In the **From** field, select when the silence hours start.
        2. In the **To** field, select when the silence hours end.  
            The period can't be longer than 12 hours.  
            When a message can't be sent due to silence hours, a `push.skipped` event is generated.  

        
   <div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

   - When silence hours are enabled, the **Discard messages** option is always enabled. This means that messages blocked by silence hours are discarded entirely. **The discarded messages are not sent when silence hours end**.
   - If the **Start** time of the schedule is in the silence hours, you can't apply the settings.
   - If communication is scheduled for sending just before silence hours (for example, silence hours start at 22:00 and sending is scheduled at 21:59:59), the communication may be processed, sent, and logged in the events a short time after the silence hours start.

   </div></div></div>

3. To save the changes, click **Apply**. 

### Define UTM and URL parameters
---  

You can add UTM and URL parameters to the links provided in the message through the [preparelink insert](/developers/inserts/mobile-push#adding-utm-and-tracking-parameters-to-link). If the links aren't provided in the preparelink insert, the parameters won't be added to the link in the message.

7. To define UTM parameters, in the **UTM & URL parameters** section, click **Define**.
    1. Fill in the following fields: **UTM campaign**, **UTM medium**, **UTM source**, and **UTM term**.  
    2. To add URL parameters, in the **URL parameters** section, click **Add parameter**.  
    3. Enter the parameter and value pair in the **Parameter** and **Value** fields, respectively.
    4. To save the configuration, click **Apply**

### Testing
---
In this part of the process, for testing purposes, you can send the message or one of its variants to the recipients you indicate in this section.  
- You can send the test message only to the users available in the **Profiles** list and who have the `has_mobile_push_devices` attribute set to `true`.
- Test messages are not counted towards capping limits.


1. In the **Test** section, click **Define**.  
2. If your message has more than one variant, select the variant of the message which you would like to use for testing.
3. In the **Select the user you want to send the test message to** searchbox, search the recipients by name, surname, email address, custom ID, or UUID.  
    **Result**: A dropdown list with search results appears.
4. On the dropdown list:
    - if you have saved list of recipients in the past, click the **Saved lists** tab.
    - if you want to define a one-off list of recipients, select the users to include in your list.
5. Confirm your choice by clicking **Add** in the searchbox.
6. Optionally, to save the list of recipients for future use, click **Save list**.    
    **Result**: A pop-up appears.  
    1. In the **List name** field, enter the name of the list of recipients.
    2. Confirm by clicking **Apply**.  
        **Result**: The list is available in the **Saved lists** tab on the dropdown of searchbox when it's clicked.
5. To send the message, click **Send test**.  
    **Result**: The message is sent immediately.

### Define additional parameters

You can add up to 10 parameters which will be added to every event generated by this communication. Their values are the same for every event in the communication. You can use this, for example, to create a common parameter for events from different types of communication that belong to one marketing campaign.

Additional parameters will be added to [mobile push events](/docs/assets/events/event-reference/mobile-push).

1. To define the custom event parameters, in the **Additional parameters** section, click **Define**.  
2. Click **Add parameter**.  
3. In the **Parameter** field, enter the name of the parameter.  
  The following parameters cannot be sent:
    - `modifiedBy`
    - `apiKey`
    - `eventUUID`
    - `ip`
    - `time`
    - `businessProfileId`
    - `correlationId`
    - `clientId`
    - `uuid`
    
4. In the **Value** field, enter the parameter value.  
    - The value is always sent as a string when the event's JSON payload is generated. The maximum length of the string is 230 characters.   
    - You can use Jinjava only in this field with the following restrictions:
      - it will be rendered in the `<messageType>.send`, `<messageType>.notSent`, `webpush.notRegistered`, and `push.notRegistered` events
      - the 230-character limit applies to the **Value** field both before and after Jinjava rendering; if the length exceeds this limit at any stage, the value will be truncated.
      - if a Jinjava does not render, a raw code will be visible in the parameter value.
5. If you want to add more parameters, click **Add parameter**, and repeat steps 3-4.  
   **Result**: the parameters will be added to all events listed above with the values you entered. This is an example event saved in the database. The custom parameter `season` is located in the `params` object: 

   <div class="highlight-code-block" data-hl-lines="6">
   <pre><code class="language-json">{
   "action": ...
   ...
   "params": {
    "clientId": 1111111111,
    "season": "autumn",
    "campaignName": "Back to school",
    "time": 1662392318050,
    "title": "Have you prepared for coming back to school?",
    "businessProfileId": "xxx"
   }
   }</code></pre>
   </div>
   
6. Confirm the settings by clicking **Apply**.

## Notification status
---
The status of mobile push communication is available on the list of mobile push notifications. In the [Communication statuses](/docs/campaign/statuses) article, you can check the statuses which can be assigned to mobile push communication.