# Create an In-App Message Campaign

Click the **`+ Create Campaign`** button in the upper right of the **`In-App Message`** menu in the Dashboard to create a new in-app message campaign.

![Create In-App Message Campaign](/files/DUCDlG6Ps3QQM2VhB13f)

{% stepper %}
{% step %}

#### Create Campaign

![In-App Message information](/files/7mhESO6myhjFAVvWoAEo)

* **Name**: Required field. Enter the name of the campaign you want to run.
* **Description**: Optional field. If there is a description, it helps other team members understand what campaign is being run.
  {% endstep %}

{% step %}

#### Campaign Settings

When the campaign is created, you can view the campaign key, title, description, and status.

* Campaign Key: A unique value that identifies the campaign. It can be used to extract users exposed to a specific campaign.
* Campaign Title / Description: You can edit the title and description.
* Campaign Status: When you first create a campaign, it is in 'Draft' status. After configuring campaign details, you can start the campaign. To modify an ongoing campaign, change it to a paused state. If you want to stop the campaign, you can end it.

![Campaign status](/files/CPp8kwOgxxLnZPjFtZkT)

**Step 2-1. Configure Message Type**

Select the platform environment where the message will be displayed.

![Platform settings](/files/OFTAGy7HRuShYxNenFPF)

* Supported Platforms

| Platform | Supported Types    |
| -------- | ------------------ |
| Web      | PC Web, Mobile Web |
| App      | Android, iOS       |

* Screen Orientation: Refers to the orientation of the mobile screen. You can select portrait and landscape separately. Content must be composed to match the selected screen orientation.

**Step 2-2. Compose Message**

* You can freely configure the content and style to include in the message.
* The configured message content can be previewed in the preview area on the right side of the screen.

![Image settings](/files/ATFSxlUYsR7qUaPRPxLU)

1. **Layout**

![](/files/ix3lXFnuUvdM7agMfGaI)

<table><thead><tr><th width="124.73046875">Layout</th><th>Supported Types</th></tr></thead><tbody><tr><td>Modal Popup</td><td><ul><li>Image + Button</li><li>Image + Text + Button</li><li>Image</li></ul></td></tr><tr><td>Banner</td><td><ul><li>Text</li><li>Image + Text</li><li>Image</li></ul></td></tr><tr><td>Bottom Sheet</td><td><ul><li>Image + Button</li><li>Image</li></ul></td></tr><tr><td>HTML</td><td>Write HTML code directly to freely configure the layout.<br>For details, <a href="/pages/R3f2NL9sgx2CP3NfmNpI">check here</a></td></tr></tbody></table>

2. **Image**: File format: PNG, JPG, JPEG. File size: up to 3MB. You can upload up to 10 images for modal popup and bottom sheet in-app messages.
3. **Carousel Auto-advance**: When multiple images are registered, you can configure automatic advancement to the next image. If auto-advance is not configured, images do not advance automatically, and users can manually swipe to the next image.
4. **Style**: Background: Configure the background of the popup area directly. X Button: Configure the color of the X button in the upper right of the popup directly.
5. **Buttons**: Depending on the layout, up to 2 buttons can be added. Color: Configure button background, border, and text color directly. Button label: Up to 10 characters.
6. **Text**: Title: Up to 30 characters. Body: Up to 70 characters. Color: Configure title and body text color.
7. **Display Position**: Depending on the layout and platform type, you can select the display position.

**Click Actions**

You can configure separate actions for clicking the image and the button.

<table><thead><tr><th width="154.1484375">Type</th><th>Description</th></tr></thead><tbody><tr><td>Close</td><td>Closes the in-app message on click.</td></tr><tr><td>Do not show for today</td><td>Does not display the in-app message for one day on click.</td></tr><tr><td>Navigate to link</td><td><ul><li>Link open options (Web only)</li><li>Same window, new window, new tab</li><li>Close message on click</li><li>On: The in-app message closes on click.</li><li>Off: The in-app message stays open and is not closed on click.</li></ul></td></tr></tbody></table>

ㅤ

**Step 2-3. Message A/B Test Settings**

You can create multiple message variants for an in-app message, test each variant, and select the best-performing message for display.

For details, see [In-App Message A/B Test](/en/crm-marketing/in-app-message-guide/in-app-message-ab-test.md).

![](/files/TXs4PAnzIWyYgUe0PgQ6)

ㅤ

**Step 2-4. Message Preview**

Click the **Register Test Device** button at the top of the preview area, then enter the identifier value of the device on which you want to verify the message. The configured identifier criteria and the entered ID value must match.

* Test messages can be viewed after **saving the message settings**.
* Registered test devices are displayed **regardless** of the campaign's period or status.

![](/files/omNZbIRU1IBMNRzRDZrX)

<br>

**Bottom Sheet Animation**

For the bottom sheet layout, animations are supported on mobile and tablet.

**\<Bottom Sheet - Mobile Animation**>

![](/files/NtTfv377xyx1aHCnBZHz)

**\<Bottom Sheet - Tablet Animation**>

![](/files/ZrwLjr0I0bMlG2gmFRwi)

ㅤ

**Carousel Auto-advance**

When multiple images are registered, the image automatically advances to the next one after the configured time.

**\<Bottom Sheet - Mobile Animation**>

![Bottom sheet carousel image auto-advance animation](/files/H2b2ejmi7hEJUDfvqnOX)

**\<Modal - Mobile Animation**>

![Modal carousel image auto-advance animation](/files/uh7HYSQnRsj1SltOdIVQ)

ㅤ
{% endstep %}

{% step %}

#### Configure Display Timing and Conditions

Specify when and how many times you want the message to appear.

![Display settings](/files/CUaDdvAAwHkAlwwNTPpL)

* **Trigger Event**
  * Configure which event triggers the message display.
* **Filter (Optional)**
  * More detailed conditions can be set through event properties. In the example image, the `category_id` property of the `view_productDetail` event was used to configure the trigger for when a specific product category page is visited.
* **Display Frequency**
  * Configure the display frequency of the message to avoid increasing customer fatigue. When multiple conditions are configured, they are applied as OR conditions.
    * Maximum number of times to display to the same user within a single session
    * Maximum number of times to display to the same user's device (regardless of period)
    * Maximum number of times to display to the same user per day/hour

ㅤ
{% endstep %}

{% step %}

#### Configure Display Period

Configure whether to display the message indefinitely or only during a specific period.

![Period settings](/files/nfhpn7mTUeCR68ahBev8)

* Selecting Always On means the message is displayed immediately when you click 'Start', and continues to display unless you separately 'End' it.
* Manually setting a period means the message is only displayed during the configured period.
  {% endstep %}

{% step %}

#### Configure Target Audience

Configure the audience to whom the message will be displayed.\
Display the in-app message to all users triggered by the start event, or to users who satisfy specific conditions.

![](/files/QNwbwSGvYDITtRu37Dap)

You can also display messages to a desired user group.\
You can also target users based on cohort, A/B Test, or Feature Flag classification results. Use various properties to configure the desired segment.

![Select users to show the in-app message to](/files/3z2RH2kbU5FCyYlxn00O)

![](/files/uAxJVTW7PAhzlIZcuZyW)

e.g.) When configured as shown in the image above, the in-app message is displayed to users who satisfy all of the following conditions:

* Users assigned to Group B in the A/B Test (Advertising Click Rate Test)
* Users assigned to True in the Feature Flag (Display control for time sale category)

{% hint style="danger" %}
Check whether the registered A/B Test or Feature Flag is in an active state.

If an A/B Test or Feature Flag is **ended or disabled**, the in-app message will **not be displayed** to users.
{% endhint %}
{% endstep %}

{% step %}

#### Configure Priority

For example, if 3 in-app messages are configured for `view_home`, you can manage display by setting priorities between messages in identical conditions.

**6-1. Setting Individual Campaign Priority**

When composing campaign content, you can select the priority of the campaign being composed in the display settings area.

![](/files/SGcv2mnjXLJdmKxJ2Yem)

**6-2. Setting All Campaign Priorities**

Priorities for all campaigns can be set after campaign composition is complete. Click the \[Set Priority] button next to \[Start] at the top of the campaign.

![Go to set priority](/files/NDqQ70LUTCZPLNMajk98)

In the popup you can see, you will see levels such as \[Very High - High - Medium - Low - Very Low]. For example, if both are triggered by `page_view`, 'Service Usage Notice' would be shown with the Very High priority.

Collapsing and expanding the list lets you see the campaigns belonging to each level, and these campaigns show all campaigns created in the workspace.

You can change the level by dragging and dropping (clicking and moving) each campaign.

![Set priority directly](/files/yka6RvTPeQngZefww0GZ)

ㅤ
{% endstep %}

{% step %}

#### Start

Once all fields have been filled in, click the \[Start] button at the top to start the campaign. You cannot modify message content while the campaign is running. Click Pause and then Edit to modify the content and restart the campaign.

![Start campaign](/files/5KjS7VVM60CGZkQOpjPV)

![Running campaign](/files/M4dmXK87Y0xImN586tML)

* After the campaign starts, you can check in-app message impression and click-through rate data in the statistics area at the top.
  * **Real-time Exposure Status**: Check the event status to verify that messages are being displayed to users correctly right after launch.
  * **Detailed Performance Analysis**: Analyze not only click-through rate data for the in-app message, but also data on subsequent actions by users who viewed the in-app message.

ㅤ
{% endstep %}

{% step %}

#### End

![](/files/MBRUnTnltmoQXXlVivAm)

* End
  * Click the \[End] button in the upper right to end the in-app message campaign.
  * The configured in-app message will no longer be displayed to users, and an ended campaign cannot be restarted.
    {% endstep %}
    {% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hackle.io/en/crm-marketing/in-app-message-guide/create-campaign.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
