{"_id":"561c774b92a66f0d00987915","parentDoc":null,"category":{"_id":"561c7260cd5e7b0d00eb48c6","pages":["561c774b92a66f0d00987915","561c7c46be5c860d007bc1cd","561c7c6e2764990d00f546c4","561c7cc72764990d00f546c6","561dc41143c36d0d00da7798","563a920c0ed6332300378872"],"__v":6,"project":"561c70aabe5fb20d00077758","version":"561c70aabe5fb20d0007775b","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-10-13T02:54:24.912Z","from_sync":false,"order":1,"slug":"messaging","title":"Messaging"},"user":"55d29988486de50d00327118","__v":7,"version":{"_id":"561c70aabe5fb20d0007775b","__v":6,"project":"561c70aabe5fb20d00077758","createdAt":"2015-10-13T02:47:06.824Z","releaseDate":"2015-10-13T02:47:06.824Z","categories":["561c70abbe5fb20d0007775c","561c725c4b0a9b0d00c0f515","561c7260cd5e7b0d00eb48c6","561c726bf0e0580d00ddd9a4","561c7271d2fb350d004bf89a","564de219b5bea52b00c3457a"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"project":"561c70aabe5fb20d00077758","updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-10-13T03:15:23.060Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"Carnival helps you engage your mobile app users with rich and creative messages.\n\nCreate push notifications or in-app messages, and allow users to browse past messages in your in-app message stream.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Push Notifications\",\n    \"h-1\": \"In-App Messages\",\n    \"h-2\": \"In-App Message Stream\",\n    \"0-0\": \"<img align=\\\"center\\\"  src=\\\"https://lh6.googleusercontent.com/QpW8zJwXFC-VnpxwHIv7DmG7cHTLcHNmUyUW04kJfxpiM7I3TKC9M8SvwS9lDhE_alPM2cc1rakUHfZB-uRN9oVb06_EE3LSazR245TV6HXMSETlly55pMezx7zA_VqKnYifl3tr\\\"><br>\\n<p>Sent to users’ mobile devices, even if your app isn’t open.</p>\\n<p>A push notification can be a simple message directing users to your app, or can drive to an in-app message when the push is tapped.</p>\",\n    \"0-1\": \"<img align=\\\"center\\\" src=\\\"https://lh4.googleusercontent.com/NZ4tZytWhOZOFDqQW7IwYsRA924wkkAw6Cn1uYKTMwefr9JDn5gp74L6Pk-avUjKMB18mvLZDq_RkNQRljj53aVamVSfNL2PjONa6VMJS8gOEwxKdT43tg9gv3Z_yMDs_MPIn7eO\\\"><br>\\n<p>The most impactful way to engage your users while they are using your app.</p>\\n<p>In-App Messages are commonly displayed as a \\\"roll-down\\\" interface, and can be triggered at key moments, such as the user opening the app.</p>\",\n    \"0-2\": \"<img align=\\\"center\\\" src=\\\"https://lh4.googleusercontent.com/j509K8hRRtP-AcwECRHowpJcG1b9qm77ouo6QSPU9V8ndbcBPLbvyypNkWsJhums9rwKBkegox_oHzHAvFSP3LKSywfn1dw0t6ffGA7GKKtTR0oNflmL-anD3Vsu0JUt821ytfwj\\\"><br>\\n<p>A list of historical cards, integrated directly in the app. This is a great way for users to look back over the messages that you have sent to them in the past.</p>\\n<p>Users can access the stream via the “Messages” icon which is integrated into the app, or tapping ‘View all Messages’ on an In-App Message</p>\"\n  },\n  \"cols\": 3,\n  \"rows\": 1\n}\n[/block]\n### Creating and Publishing Messages\n\nWhether you want to publish just an In-App Message, just a Push Notification, or both in conjunction, start by clicking **Messages** in the Carnival navigation menu.\n\nClick **Create New** at the top of the page. You will have the option to create either a **Regular Message** or an **Automated Message**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/57ad666-image_0.png\",\n        \"image_0.png\",\n        968,\n        684,\n        \"#c2c4c4\"\n      ],\n      \"sizing\": \"80\"\n    }\n  ]\n}\n[/block]\n* **Regular Messages\n**Publish messages to all users who are currently in an audience. Regular messages can be sent immediately or scheduled for a future date. Some common uses are to send announcements, breaking news, or deals.\n\n* **Automated Messages\n**Targeted and personalized messages that are triggered as a result of a user entering or exiting an audience. Automated messages allow you to trigger messages dynamically as user behaviours change. Examples include:\n\n    * Automatically triggering a notification to incentivize a user who hasn't used the app for a period of time.\n\n    * Sending a notification with contextual information as a user enters or exits a geographical region.\n\n    * A welcome notification for a user a few days after installing.\n\n* With Automated Messages, an additional option is available to send the message to all current members of the audience, like a Regular Message, and then also to all users who enter the audience in the future, as they enter.\n\n#### Message Compose Screen\n\nIn the Messages section of the interface, click **Create New**. Then, select a message type—Regular or Automated. The Message Compose screen opens.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/44c1b55-Message_Compose_Dialog_Explained.png\",\n        \"Message Compose Dialog Explained.png\",\n        1600,\n        971,\n        \"#e6edf4\"\n      ]\n    }\n  ]\n}\n[/block]\n**Key Elements of the Message Compose Screen**\n\n1. Audience targeting options\n\n2. Push Notification content\n\n3. In-App Message content\n\n4. Scheduling options\n\n5. Message Preview button\n\n6. AB Testing Menu (see Mobile AB Testing).\n\n**Audience Targeting Options**\n\nWhen creating a message, you will choose users to target based on audience segments that you have previously defined. Audiences can be created in the [Audiences](https://marketing.carnival.io/v1.0/docs/introduction-to-audiences) section.\n\nThe first thing to do is select your target audience from the **Select an audience** menu on the top bar.\n\nFor Automated Messages, you also need to select a trigger type from the adjacent menu. You can choose from the following options:\n* **Send on Audience Entry** - Publish to users as they enter the selected audience.\n* **Send on Audience Entry** and to Current Audience - Publish immediately to all users who are currently in the selected audience (as with a Regular Message), and also to additional who enter this audience in the future, as they enter.\n* **Send on Audience Exit** - Publish to users as they exit the selected audience.\n\n’\"Send on Audience Entry\" is the most common choice.\n\n**Push Limits for Automated Messages**\n\nWith Automated Messages, you also have frequency capping options under the **Push Limits** drop-down to limit the amount of push notifications that are sent to any single user. This ensures that users are not spammed.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/d6f8a85-image_2.png\",\n        \"image_2.png\",\n        582,\n        362,\n        \"#476773\"\n      ]\n    }\n  ]\n}\n[/block]\n*You can choose to:*\n\n* Delay the push notification up to 24 hours after the device enters an audience.\n\n* Specify a stand-down period of up to 24 hours after the initial push has been sent. This will allow you to wait the specified amount of time before the device can receive this message again.\n\n* Limit the maximum amount of push notifications that a device may receive with this message.\n\nNote: If a stand-down delay has been set for a message and a user enters, qualifies for the message, but then exits the audience before the delay passes, they will still be sent the message. For this reason, we recommend keeping stand-downs short so that the push notifications will always be timely and relevant.\n\n**Creating Content**\n\nThe most common messaging use case in the Carnival platform is sending a Push Notification which links to an In-App Message. This drives users to open your app, and when tapped, links to a message with more content. \n\nFor this reason, the default layout of the composer opens with a Push Notification linked to an In-App Message.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/c60794b-image_3.png\",\n        \"image_3.png\",\n        1998,\n        1006,\n        \"#e8f0f5\"\n      ]\n    }\n  ]\n}\n[/block]\nThere are however, some times where marketers may want to send only a Push Notification, or only an In-App Message. If this is the case, you can hover over the unneeded Push Notification or In-App Message and press \"x\" in the top right corner to remove it. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/4d3d75a-image_4.png\",\n        \"image_4.png\",\n        862,\n        174,\n        \"#e7eff5\"\n      ],\n      \"sizing\": \"80\"\n    }\n  ]\n}\n[/block]\n**Push Notification Content**\n\nPush Notifications contain text-only information which will show on screen even if the user does not have the app open. You can also add extra fields such as a badge, sound, category or Custom/Key Value by clicking **Add fields**.\n\n* A **Badge** will show a small number on the app icon on iOS, which is usually used to indicate to the user that there is new items to view. For example, you would enter 1 in this field to indicate ‘one new message’.\n\n* If you app contains custom notification sounds, you can enter a **Sound** file name to determine which sound should accompany this message.\n\n* A **Category** can be used to associate custom actions with an iOS notification. Category names are defined when your app is programmed. For more information refer to the [Apple Documentation](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html#//apple_ref/doc/uid/TP40008194-CH4-SW26). \n\n* To enter custom data that your app has been programmed to use or display, select **Custom Key/Val**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/12a8796-image_5.png\",\n        \"image_5.png\",\n        1140,\n        744,\n        \"#e4ecf3\"\n      ]\n    }\n  ]\n}\n[/block]\n**In-App Message Content**\n\nCarnival’s In-App Messages allow you to send a wide range of content to your users. You can send videos, images, and links, and add [Message Attribute](https://getstarted.sailthru.com/carnival/messages/attributes/) fields that have been custom-configured for your app’s interface.\n\n* To add a **video or image**, drag the file into the gray box or click the camera icon to locate a file on your computer.\n\n* To add a **link**, click **Add fields**, select **Link**, and then enter the URL.\n\nSee our [message and file size/type](https://marketing.carnival.io/docs/message-sizes) specifications, for more information.\n\n**Scheduling Options**\n\nIf you want your messages to begin sending immediately on publish, skip this step. Otherwise, to schedule your messages, click the **Publish** field at the bottom of the interface.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/47217a8-image_6.png\",\n        \"image_6.png\",\n        786,\n        102,\n        \"#dbe4ec\"\n      ],\n      \"sizing\": \"80\"\n    }\n  ]\n}\n[/block]\nThen, select a date and time. You can select a specific time zone, or, if you want your message to send at the specified time when in occurs in each user’s time zone, select **Send at local time**.\n\n**Message Preview Screen**\n\nWhen you’re ready to preview your message, click the **Preview** button at the bottom right.\n\nThe preview screen will give you an overview of your notifications and In-App Message content, as-well as any extra fields you have added such as alert, sound, or custom key/values.\n\nAs you hover over the publish menu you can see more details about the audience and timing of your message before you publish.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/03d0f77-image_7.gif\",\n        \"image_7.gif\",\n        1400,\n        850,\n        \"#252d34\"\n      ]\n    }\n  ]\n}\n[/block]\n### Measuring Your Message Success\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/fb58f80-image_8.png\",\n        \"image_8.png\",\n        2500,\n        1310,\n        \"#e0e3e6\"\n      ]\n    }\n  ]\n}\n[/block]\nMeasuring the performance of your messaging campaign is critical for understanding and comparing the effectiveness of your campaign. On this screen you are easily able to access:\n\n* Message Impressions – How many opportunities users have had to view your content.\n\n* Message Tap-Throughs – How many times the content has been viewed by your users.\n\n* Size of Audience – An estimate into how many users could see this message.\n\n* Push Notification Count – How many users the push notification went out to.\n\n### Mobile AB Testing\n\n**To maximize the response to your messages, you can create and test multiple variations of your push notification or in-app message content for any Regular (Non-Automated) Message.**\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/4020369-AB_Testing_dialog_explained.png\",\n        \"AB Testing dialog explained.png\",\n        1600,\n        971,\n        \"#e6edf4\"\n      ]\n    }\n  ]\n}\n[/block]\n**Key Elements of AB Testing**\n\n1. AB Testing toolbar\n\n2. Distribution slider\n\n3. Variation menu\n\n4. Variation tabs\n\n### Creating an AB Test Message\n\n1. When creating a new message in the Message Composer,at the top-right, click the arrow next to the default **Variation A**, and click **Add a Variation**.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/33238f7-carnival_add_ab_test_variant.png\",\n        \"carnival add ab test variant.png\",\n        1698,\n        336,\n        \"#e3ebf2\"\n      ]\n    }\n  ]\n}\n[/block]\n2. The Message composer will switch into AB testing mode and display an AB testing toolbar as shown above. Your browser will scroll down to a second variation of your content, **Variation B**. If you have already entered content in **Variation A**, it is duplicated in **Variation B**, where you can easily edit the push notification and/or in-app message content for this variation.\n\n3. You can create additional variations, up to a total of five. At the left edge of the display, click a variation letter to jump back to it. \n\n4. To determine the proportion of your audience that will be randomly selected to receive each variation, use the AB distribution slider at the top of the window.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/122feb4-Carnival_AB_test_split_ratio.png\",\n        \"Carnival AB test split ratio.png\",\n        1328,\n        100,\n        \"#e3ebf3\"\n      ]\n    }\n  ]\n}\n[/block]\n5. Select an Audience. By default all members of the audience will receive one of the test messages. To isolate the test to a subset of an audience, you can use AB Test Groups.\n\n6. Set your **Publish** and **Expire** settings.\n\n7. Click **Preview**. If any required message fields are not completed, an alert will be displayed on the variation letter at the left edge, and on any applicable field within the variation.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/ec4fc74-carnival_ab_test_error.png\",\n        \"carnival ab test error.png\",\n        1364,\n        394,\n        \"#e5edf4\"\n      ]\n    }\n  ]\n}\n[/block]\n8. Once your preview is displayed, click **Publish** when you are ready to send or schedule the message.\n\n### Comparing AB Test Messages\n\nWhen an AB test message is published it will appear in the messages stream with a small **AB **icon on the message card. You can switch between each linked variation in the top right hand panel to see which one was the most successful. To compare messages you can check the opens, impressions and event conversions between message variations as per a regular message. \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/7ed13bc-Carnival_Message_Detail_Screen_with_AB_Test.png\",\n        \"Carnival Message Detail Screen with AB Test.png\",\n        1600,\n        1065,\n        \"#1e323f\"\n      ]\n    }\n  ]\n}\n[/block]\n### Test Groups\n\nAB Testing is a great way to test multiple versions of your messages across your entire audience, however sometimes you may want to exclude some of your audience as a hold out group and only perform the test on some of your users. For example, you may want to perform a test with different variations on 10% of your user base and then proceed to message the remaining 90% with the best performing content.\n\nTo do this, Carnival allows you to set up **Test Groups **in the audience builder**. **Test** **groups are pre-generated deciles of your user base, labeled **Group 1-10**, that remain consistent for each user.\n\nFor example, to run an AB test on 10% of your users, you could:\n\n1. Use the audience builder to create an audience with Test Group \"Group 1\" selected. There are 10 test groups, so selecting one will select 10% of your users. You can choose to further restrict the audience using other criteria, like language or locale.\n\n2. Create your AB test messages and send them to this new audience. \n\n3. Send the best copy to users who are part of A/B Test Groups '2-10' as well as any of the additional attributes you selected in step 1.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/9e58f3a-Carnival_Test_Groups.png\",\n        \"Carnival Test Groups.png\",\n        1600,\n        866,\n        \"#dfe7e8\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"introduction-to-messaging","type":"basic","title":"Mobile Messaging"}
Carnival helps you engage your mobile app users with rich and creative messages. Create push notifications or in-app messages, and allow users to browse past messages in your in-app message stream. [block:parameters] { "data": { "h-0": "Push Notifications", "h-1": "In-App Messages", "h-2": "In-App Message Stream", "0-0": "<img align=\"center\" src=\"https://lh6.googleusercontent.com/QpW8zJwXFC-VnpxwHIv7DmG7cHTLcHNmUyUW04kJfxpiM7I3TKC9M8SvwS9lDhE_alPM2cc1rakUHfZB-uRN9oVb06_EE3LSazR245TV6HXMSETlly55pMezx7zA_VqKnYifl3tr\"><br>\n<p>Sent to users’ mobile devices, even if your app isn’t open.</p>\n<p>A push notification can be a simple message directing users to your app, or can drive to an in-app message when the push is tapped.</p>", "0-1": "<img align=\"center\" src=\"https://lh4.googleusercontent.com/NZ4tZytWhOZOFDqQW7IwYsRA924wkkAw6Cn1uYKTMwefr9JDn5gp74L6Pk-avUjKMB18mvLZDq_RkNQRljj53aVamVSfNL2PjONa6VMJS8gOEwxKdT43tg9gv3Z_yMDs_MPIn7eO\"><br>\n<p>The most impactful way to engage your users while they are using your app.</p>\n<p>In-App Messages are commonly displayed as a \"roll-down\" interface, and can be triggered at key moments, such as the user opening the app.</p>", "0-2": "<img align=\"center\" src=\"https://lh4.googleusercontent.com/j509K8hRRtP-AcwECRHowpJcG1b9qm77ouo6QSPU9V8ndbcBPLbvyypNkWsJhums9rwKBkegox_oHzHAvFSP3LKSywfn1dw0t6ffGA7GKKtTR0oNflmL-anD3Vsu0JUt821ytfwj\"><br>\n<p>A list of historical cards, integrated directly in the app. This is a great way for users to look back over the messages that you have sent to them in the past.</p>\n<p>Users can access the stream via the “Messages” icon which is integrated into the app, or tapping ‘View all Messages’ on an In-App Message</p>" }, "cols": 3, "rows": 1 } [/block] ### Creating and Publishing Messages Whether you want to publish just an In-App Message, just a Push Notification, or both in conjunction, start by clicking **Messages** in the Carnival navigation menu. Click **Create New** at the top of the page. You will have the option to create either a **Regular Message** or an **Automated Message**. [block:image] { "images": [ { "image": [ "https://files.readme.io/57ad666-image_0.png", "image_0.png", 968, 684, "#c2c4c4" ], "sizing": "80" } ] } [/block] * **Regular Messages **Publish messages to all users who are currently in an audience. Regular messages can be sent immediately or scheduled for a future date. Some common uses are to send announcements, breaking news, or deals. * **Automated Messages **Targeted and personalized messages that are triggered as a result of a user entering or exiting an audience. Automated messages allow you to trigger messages dynamically as user behaviours change. Examples include: * Automatically triggering a notification to incentivize a user who hasn't used the app for a period of time. * Sending a notification with contextual information as a user enters or exits a geographical region. * A welcome notification for a user a few days after installing. * With Automated Messages, an additional option is available to send the message to all current members of the audience, like a Regular Message, and then also to all users who enter the audience in the future, as they enter. #### Message Compose Screen In the Messages section of the interface, click **Create New**. Then, select a message type—Regular or Automated. The Message Compose screen opens. [block:image] { "images": [ { "image": [ "https://files.readme.io/44c1b55-Message_Compose_Dialog_Explained.png", "Message Compose Dialog Explained.png", 1600, 971, "#e6edf4" ] } ] } [/block] **Key Elements of the Message Compose Screen** 1. Audience targeting options 2. Push Notification content 3. In-App Message content 4. Scheduling options 5. Message Preview button 6. AB Testing Menu (see Mobile AB Testing). **Audience Targeting Options** When creating a message, you will choose users to target based on audience segments that you have previously defined. Audiences can be created in the [Audiences](https://marketing.carnival.io/v1.0/docs/introduction-to-audiences) section. The first thing to do is select your target audience from the **Select an audience** menu on the top bar. For Automated Messages, you also need to select a trigger type from the adjacent menu. You can choose from the following options: * **Send on Audience Entry** - Publish to users as they enter the selected audience. * **Send on Audience Entry** and to Current Audience - Publish immediately to all users who are currently in the selected audience (as with a Regular Message), and also to additional who enter this audience in the future, as they enter. * **Send on Audience Exit** - Publish to users as they exit the selected audience. ’"Send on Audience Entry" is the most common choice. **Push Limits for Automated Messages** With Automated Messages, you also have frequency capping options under the **Push Limits** drop-down to limit the amount of push notifications that are sent to any single user. This ensures that users are not spammed. [block:image] { "images": [ { "image": [ "https://files.readme.io/d6f8a85-image_2.png", "image_2.png", 582, 362, "#476773" ] } ] } [/block] *You can choose to:* * Delay the push notification up to 24 hours after the device enters an audience. * Specify a stand-down period of up to 24 hours after the initial push has been sent. This will allow you to wait the specified amount of time before the device can receive this message again. * Limit the maximum amount of push notifications that a device may receive with this message. Note: If a stand-down delay has been set for a message and a user enters, qualifies for the message, but then exits the audience before the delay passes, they will still be sent the message. For this reason, we recommend keeping stand-downs short so that the push notifications will always be timely and relevant. **Creating Content** The most common messaging use case in the Carnival platform is sending a Push Notification which links to an In-App Message. This drives users to open your app, and when tapped, links to a message with more content. For this reason, the default layout of the composer opens with a Push Notification linked to an In-App Message. [block:image] { "images": [ { "image": [ "https://files.readme.io/c60794b-image_3.png", "image_3.png", 1998, 1006, "#e8f0f5" ] } ] } [/block] There are however, some times where marketers may want to send only a Push Notification, or only an In-App Message. If this is the case, you can hover over the unneeded Push Notification or In-App Message and press "x" in the top right corner to remove it. [block:image] { "images": [ { "image": [ "https://files.readme.io/4d3d75a-image_4.png", "image_4.png", 862, 174, "#e7eff5" ], "sizing": "80" } ] } [/block] **Push Notification Content** Push Notifications contain text-only information which will show on screen even if the user does not have the app open. You can also add extra fields such as a badge, sound, category or Custom/Key Value by clicking **Add fields**. * A **Badge** will show a small number on the app icon on iOS, which is usually used to indicate to the user that there is new items to view. For example, you would enter 1 in this field to indicate ‘one new message’. * If you app contains custom notification sounds, you can enter a **Sound** file name to determine which sound should accompany this message. * A **Category** can be used to associate custom actions with an iOS notification. Category names are defined when your app is programmed. For more information refer to the [Apple Documentation](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/SupportingNotificationsinYourApp.html#//apple_ref/doc/uid/TP40008194-CH4-SW26). * To enter custom data that your app has been programmed to use or display, select **Custom Key/Val**. [block:image] { "images": [ { "image": [ "https://files.readme.io/12a8796-image_5.png", "image_5.png", 1140, 744, "#e4ecf3" ] } ] } [/block] **In-App Message Content** Carnival’s In-App Messages allow you to send a wide range of content to your users. You can send videos, images, and links, and add [Message Attribute](https://getstarted.sailthru.com/carnival/messages/attributes/) fields that have been custom-configured for your app’s interface. * To add a **video or image**, drag the file into the gray box or click the camera icon to locate a file on your computer. * To add a **link**, click **Add fields**, select **Link**, and then enter the URL. See our [message and file size/type](https://marketing.carnival.io/docs/message-sizes) specifications, for more information. **Scheduling Options** If you want your messages to begin sending immediately on publish, skip this step. Otherwise, to schedule your messages, click the **Publish** field at the bottom of the interface. [block:image] { "images": [ { "image": [ "https://files.readme.io/47217a8-image_6.png", "image_6.png", 786, 102, "#dbe4ec" ], "sizing": "80" } ] } [/block] Then, select a date and time. You can select a specific time zone, or, if you want your message to send at the specified time when in occurs in each user’s time zone, select **Send at local time**. **Message Preview Screen** When you’re ready to preview your message, click the **Preview** button at the bottom right. The preview screen will give you an overview of your notifications and In-App Message content, as-well as any extra fields you have added such as alert, sound, or custom key/values. As you hover over the publish menu you can see more details about the audience and timing of your message before you publish. [block:image] { "images": [ { "image": [ "https://files.readme.io/03d0f77-image_7.gif", "image_7.gif", 1400, 850, "#252d34" ] } ] } [/block] ### Measuring Your Message Success [block:image] { "images": [ { "image": [ "https://files.readme.io/fb58f80-image_8.png", "image_8.png", 2500, 1310, "#e0e3e6" ] } ] } [/block] Measuring the performance of your messaging campaign is critical for understanding and comparing the effectiveness of your campaign. On this screen you are easily able to access: * Message Impressions – How many opportunities users have had to view your content. * Message Tap-Throughs – How many times the content has been viewed by your users. * Size of Audience – An estimate into how many users could see this message. * Push Notification Count – How many users the push notification went out to. ### Mobile AB Testing **To maximize the response to your messages, you can create and test multiple variations of your push notification or in-app message content for any Regular (Non-Automated) Message.** [block:image] { "images": [ { "image": [ "https://files.readme.io/4020369-AB_Testing_dialog_explained.png", "AB Testing dialog explained.png", 1600, 971, "#e6edf4" ] } ] } [/block] **Key Elements of AB Testing** 1. AB Testing toolbar 2. Distribution slider 3. Variation menu 4. Variation tabs ### Creating an AB Test Message 1. When creating a new message in the Message Composer,at the top-right, click the arrow next to the default **Variation A**, and click **Add a Variation**. [block:image] { "images": [ { "image": [ "https://files.readme.io/33238f7-carnival_add_ab_test_variant.png", "carnival add ab test variant.png", 1698, 336, "#e3ebf2" ] } ] } [/block] 2. The Message composer will switch into AB testing mode and display an AB testing toolbar as shown above. Your browser will scroll down to a second variation of your content, **Variation B**. If you have already entered content in **Variation A**, it is duplicated in **Variation B**, where you can easily edit the push notification and/or in-app message content for this variation. 3. You can create additional variations, up to a total of five. At the left edge of the display, click a variation letter to jump back to it. 4. To determine the proportion of your audience that will be randomly selected to receive each variation, use the AB distribution slider at the top of the window. [block:image] { "images": [ { "image": [ "https://files.readme.io/122feb4-Carnival_AB_test_split_ratio.png", "Carnival AB test split ratio.png", 1328, 100, "#e3ebf3" ] } ] } [/block] 5. Select an Audience. By default all members of the audience will receive one of the test messages. To isolate the test to a subset of an audience, you can use AB Test Groups. 6. Set your **Publish** and **Expire** settings. 7. Click **Preview**. If any required message fields are not completed, an alert will be displayed on the variation letter at the left edge, and on any applicable field within the variation. [block:image] { "images": [ { "image": [ "https://files.readme.io/ec4fc74-carnival_ab_test_error.png", "carnival ab test error.png", 1364, 394, "#e5edf4" ] } ] } [/block] 8. Once your preview is displayed, click **Publish** when you are ready to send or schedule the message. ### Comparing AB Test Messages When an AB test message is published it will appear in the messages stream with a small **AB **icon on the message card. You can switch between each linked variation in the top right hand panel to see which one was the most successful. To compare messages you can check the opens, impressions and event conversions between message variations as per a regular message. [block:image] { "images": [ { "image": [ "https://files.readme.io/7ed13bc-Carnival_Message_Detail_Screen_with_AB_Test.png", "Carnival Message Detail Screen with AB Test.png", 1600, 1065, "#1e323f" ] } ] } [/block] ### Test Groups AB Testing is a great way to test multiple versions of your messages across your entire audience, however sometimes you may want to exclude some of your audience as a hold out group and only perform the test on some of your users. For example, you may want to perform a test with different variations on 10% of your user base and then proceed to message the remaining 90% with the best performing content. To do this, Carnival allows you to set up **Test Groups **in the audience builder**. **Test** **groups are pre-generated deciles of your user base, labeled **Group 1-10**, that remain consistent for each user. For example, to run an AB test on 10% of your users, you could: 1. Use the audience builder to create an audience with Test Group "Group 1" selected. There are 10 test groups, so selecting one will select 10% of your users. You can choose to further restrict the audience using other criteria, like language or locale. 2. Create your AB test messages and send them to this new audience. 3. Send the best copy to users who are part of A/B Test Groups '2-10' as well as any of the additional attributes you selected in step 1. [block:image] { "images": [ { "image": [ "https://files.readme.io/9e58f3a-Carnival_Test_Groups.png", "Carnival Test Groups.png", 1600, 866, "#dfe7e8" ] } ] } [/block]