> For the complete documentation index, see [llms.txt](https://developers-apps-in-toss.toss.im/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers-apps-in-toss.toss.im/guide/en/marketing/smart-message.md).

# Smart Send

By using Apps in Toss Smart Send, you can effectively achieve goals such as new user acquisition, improved retention, and increased service usage through push and notification messages.

### What is Smart Delivery?

Smart Delivery is a push and notification sending tool that automatically optimizes by considering both the target audience (segment) and the send time. Rather than a simple one-time send, AI predicts the two things below and runs campaigns automatically.

* Highly engaged users: It predicts highly engaged service users by using the pCTR (predicted click-through rate) of the set segment.
* Send times with a high likelihood of clicks: It predicts time windows when clicks are more likely to happen by using user patterns.

#### How it works

**1) Test send**

This is not a partner company's test, but an automatic send run internally for AI training.

* It predicts highly engaged users based on pCTR.
* Based on the prediction results, it looks for the best users and send time.
* Test sends can run for up to 7 days.
* The main send starts as soon as either 25 clicks or 2,500 sends is reached.

**2) Main send**

It automatically optimizes the campaign based on the test results and sends it.

#### Concepts of push and notification

* Push: An operating system (OS) notification you receive even when the app is not open. The app name and logo are displayed together.
* Notification: An in-app message you can check by tapping the bell icon at the top right of the Toss app.

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2FyL7gYaNc3oBWxYwBlK80%2Fimage.png?alt=media&#x26;token=cdc5c74c-6bf1-43be-af7a-819c360f57d1" alt=""><figcaption></figcaption></figure>

#### Message types

Depending on the message content, you can choose and send either a promotional message or a functional message.

* **Promotional message:** A marketing message such as discounts, events, or new product announcements.
* **Functional message:** A message that delivers essential information generated during service use, such as orders, payments, deliveries, or post registrations.

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2FcpHX5nMpjuRogLzdWFVV%2Fimage.png?alt=media&#x26;token=eea3a942-0de4-471f-8d2c-f0f83ee68260" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
If it contains marketing elements such as purchase prompts, service-use prompts, benefit information, or retention purposes, it cannot be sent as a functional message.&#x20;

If you're struggling with message wording, [UX writing document](https://developers-apps-in-toss.toss.im/design/consumer-ux-guide#ux)and please refer to the message writing guide below.
{% endhint %}

***

### Benefits of Smart Delivery

* You can automatically deliver messages that users truly need.
* You can use it appropriately for different purposes, from functional notices to marketing messages.
* You can make sure users don't miss important information even if they don't open the mini app.
* You can naturally continue the service-use flow with messages sent at the right time.
* You can keep improving message content based on send results.

#### Please note

* To send push notifications, the message template copy must be reviewed. (Promotional messages are reviewed automatically.)
* If you write the push content, it will be automatically reflected in the notification message.
* You can send up to 100,000 messages per workspace (business).
* If functional messages contain advertising content such as service prompts, benefit information, or retention, they must be sent as promotional messages.
* To send a functional message, you must obtain the user's notification consent in advance for that purpose.
* We recommend providing a feature that lets users opt out of notifications and clearly explaining how to do so.

<details>

<summary>Toss app → All tab → Settings button → Notifications → Service notifications, where you can directly control whether to receive notifications.</summary>

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2FeR5t52wqNrftZBu4DHj7%2Fimage.png?alt=media&#x26;token=d8668c28-2385-4e27-a0b0-cc9d845c935c" alt=""><figcaption></figcaption></figure>

</details>

***

### Set up in the console

How to access: Apps in Toss console → select a workspace → select a mini app → choose 'Smart Delivery' from the left menu

#### 1. Promotional campaign

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2F0UStKoLELQWf1dLL4AZR%2Fimage.png?alt=media&#x26;token=36115944-da3c-49cd-a8d3-716f7a40c203" alt=""><figcaption></figcaption></figure>

Promotional campaigns are made up of groups with two purposes.

* Encouraging new visits: This encourages first-time access for users who have not used the mini app yet. The default audience is all users who have not used the mini app. You can add conditions to narrow the audience further.
* Encouraging repeat visits: This encourages users whose recent usage has decreased to return. The default audience is all users whose recent usage has decreased. You can add conditions to narrow the audience further.

**Creative**

* You can register up to two creatives per group (Option A and Option B).
* Promotional campaigns cannot use dynamic variables (e.g., `#{name}`, `#{amount}`values that are replaced at send time).
* For more details on how to write it, please refer to the message writing guide.

**Screen URL to open on click**

* Please enter the URL to open when the push or notification is tapped.
* In one campaign, you cannot set different URLs for different creatives. If you want to use a different URL, you need to create a new campaign.
* Please make sure it actually connects properly.

**Send time**

Select when to start sending.

* Send immediately after registration: once review is approved, sending starts right away.
* Set a sending period: specify a start and end date. If you want to keep sending without an end date, you can choose 'No end date'.

**Target audience**

You can adjust the sending scope by adding conditions to the default audience.

* Users to include: Send to users who satisfy all the set conditions.
* Users to exclude: Exclude users who satisfy all the set conditions from the sending audience.
* **However, for repeat-visit campaigns, you can send only if there are at least 100 users in the 30 days before the send start date.**

#### 2. Functional campaign

A functional campaign is a message that delivers information directly needed for service use. It must be information the recipient requested, or an essential message for service fulfillment. If it contains promotional content such as service prompts, benefit information, or retention, it must be sent as a promotional campaign.

<details>

<summary>Allowed examples</summary>

* Transaction-related messages such as payment completed, refunds, and point accrual
* Service progress messages such as delivery started, delivery completed, and reservation confirmed
* Notifications about usage period or status, such as recurring payment due soon or service expiration soon

</details>

<details>

<summary><mark style="color:$danger;">Not allowed examples</mark></summary>

* "How about this product?" "Only on sale today." — promotional/advertising purpose
* "Recommended products for previous buyers" — supplementary marketing information
* "Join the event and get benefits." — event promotion message

</details>

**2-1. Send directly via API**

You can send at the desired time from the partner company's server.

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2Fk7om6S42RmDrgXYPQD4M%2Fimage.png?alt=media&#x26;token=0cda12d0-d35e-4ebb-94bb-c2f09af72cd2" alt=""><figcaption></figcaption></figure>

You can send at the desired time from the partner company's server. The detailed send API specifications can be found in the 'Send Functional Messages' document.

* Campaign title: Please give it a name that makes it easy to understand what purpose the campaign serves.
* Title: Write it within 7 characters (including spaces) in noun form. If you write it as a '\~하기' form, it may be misunderstood as encouraging user action.
* Body: Write it within 25 characters (including spaces) in the '\~요.' form. Variables are counted as two characters. When sending via API, you need to implement the variables yourself.
* Destination URL: Please set the page to open when the push or notification is tapped. Please make sure it is accessible.
* Send code: Please enter the send code so the partner company's server can fetch this message. It must be `{appName}-` start with.&#x20;
* Notification consent notice: If the copy review determines that a notification consent notice is required and rejects it, please make sure to add the notification consent notice and request a re-review.

**2-2. Request Toss to send it**

You can choose between one-time sends and recurring sends.

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2FPeKBN4f5ZWaW1WjVxkqG%2Fimage.png?alt=media&#x26;token=6c2fbb20-8879-42ba-8a42-533443d39684" alt=""><figcaption></figcaption></figure>

Without a server, you can choose between one-time sends and recurring sends.

* Campaign title: Please give it a name that makes it easy to understand what purpose the campaign serves.
* Title: Write it within 7 characters (including spaces) in noun form.
* Body: Write it within 25 characters (including spaces) in the '\~요.' form. When requesting Toss to send it, you can use only the name variable. Variables are counted as two characters.
* Destination URL: Please set the page to open when the push or notification is tapped. Please make sure it is accessible.
* Notification consent notice: If you request Toss to send the message, a notification consent notice is required.
* Send type: You can choose between one-time sends and recurring sends.
  * One-time send: Send only once at a specific date and time.
  * Recurring send: You can set a repeat send cycle. (Daily: send at a specified time every day / Weekly: choose the day and time you want to send) Set a start date and end date, and if you choose 'No end date', it will keep sending until you stop it manually.

**Notification consent notice**

You may need a notification consent notice to send functional messages. A notification consent notice is guidance text that lets users consent to receiving notifications during service use. If you obtain consent from users to receive notifications at a specific time, you must use a notification consent notice.

<details>

<summary>Cases where a notification consent notice is required</summary>

Stock replenishment alerts, event start alerts, price change alerts, reservation opening alerts

</details>

<details>

<summary>Cases where a notification consent notice is not required</summary>

Payment completed, delivery started, delivery completed, refund completed, information change notice, terms change notice

</details>

If the message requires a notification consent notice but you do not register one, you cannot save the functional message template.

<figure><img src="https://3177177630-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8pQgXiR5QAzduV54W8Om%2Fuploads%2FZiL8M4U1TrIslpw4RTU2%2Fimage.png?alt=media&#x26;token=8210c1a0-cccb-4b03-9880-895ab0992ba9" alt=""><figcaption></figcaption></figure>

**Set up a notification consent notice**

* Notification consent notice name: Please name it so it's clear in what situation this consent notice is used in the mini app service.
* Notification send timing: Please write when it will be sent after consent.
  * If sending via API: Please write when it is sent. (e.g., when the price of a favorited item drops, when the user opts in to daily weather updates, when a suspended feature in the service is reactivated, etc.)
  * If requesting Toss to send it: Please clearly state both when it is sent and the send timing. (e.g., when telling users the next day's weather at 5 PM every Tuesday, etc.)

<details>

<summary>What to include in the notification consent notice</summary>

* Service name and service description (automatically filled from mini app information)
* Notification send timing (trigger conditions entered when creating the template)
* Path to withdraw notification consent
* Customer service contact (automatically filled from mini app information)

</details>

**Notification delivery method**

* When a specific condition is met: Please enter what condition triggers the notification. (e.g., price drop on a favorited item, reactivation of a suspended feature, etc.)
* Fixed days and times: Please enter the send cycle and type. (e.g., daily weather updates, attendance reminders, etc.)

To display the notification opt-in UI to users in the mini app, [please refer to the notification consent notice request document](https://developers-apps-in-toss.toss.im/documentation/common/growth/smart-message#id-4.-requestnotificationagreement).

{% hint style="info" %}
templateCode when calling the notification consent notice

templateCode used when calling the notification consent notice in the mini app `templateCode`is the send code of the functional message linked to that notification consent notice. You can find it in the console → Smart Delivery → 'Functional' tab.
{% endhint %}

***

### Message writing guide

Please write as if you're introducing my app for the first time to every user who uses Toss. Users receive this push in the context of a financial app called Toss. Please make the message feel like Toss and be naturally understandable.

#### Basic rules

* Write all pushes and notifications in the polite informal style. The body should be written in sentence form ('\~yo.') and end with a period. This rule is to maintain a consistent voice and tone.
* Use periods only in the body. Do not use periods in the title.
* Write titles in the '\~하기' form or as nouns. (Functional messages should be in noun form.)
* The 'Toss + service name' format cannot be used.
* The character limit is 7 for the title and 25 for the body (including spaces). This is the threshold at which text won't get cut off even if the font size is increased. (On Android, 24% of users use large text at 1.3x or more.)
* Please make sure to check spelling and spacing.

#### 1) The title and body should connect naturally.

<details>

<summary><mark style="color:$danger;">Bad</mark> Example</summary>

* \[With tteokbokki?] Diagnose your MBTI personality test on Toss. → The title is about food, but the body is about MBTI, so they don't connect.
* \[Minus account] You can use it for IPO subscription. → It's unclear whether you're telling users to open an account or announcing a subscription opportunity.

</details>

<details>

<summary>Good example</summary>

* \[Puzzle Challenge] Solve the puzzle on Toss and get points.
* \[Attendance Gift] If you play the block game for 3 days in a row, we'll give you 20 won.
* \[Good luck has arrived] Check your fortune for free on Toss.

</details>

#### 2) The title should be a complete word or sentence by itself.

<details>

<summary><mark style="color:$danger;">Bad</mark> Example</summary>

* \[With sentence cards] Choose from 39 card types on Toss.
* \[Rather than short-form] Choose from 39 card types on Toss.

</details>

<details>

<summary>Good example</summary>

* \[Sentence cards] Pick a quote and choose the design you want on Toss.
* \[Block game] Take on a game that's so fun you lose track of time.

</details>

#### 3) For game services, make it clear that it is a 'game'.

Users need to know it's a game before they click. If you only use the service name or in-game terms, they may not know.

* <mark style="color:$danger;">Bad</mark> Example: \[Competitive puzzle] Solve puzzles and decorate my house.
* Good example: \[Puzzle game] Solve puzzles and decorate my house.

#### 4) The expressions below cannot be used.

**Slang, memes, and trending words that only some people can understand**

<details>

<summary><mark style="color:$danger;">Bad</mark> Example</summary>

* \[Emblem appears] This is a new equipment content today.
* \[Hot spot for athleisure] If you pay with Toss at Jexxmix, you get 4,000 won off.

</details>

<details>

<summary>Good example</summary>

* \[New item] There is a newly released game item today.
* \[Jexxmix discount] Pay with Toss Pay and get up to 4,000 won off.

</details>

**A specific person's name**

* <mark style="color:$danger;">Bad</mark> Example: \[My ideal type] Is it Jang Wonyoung or An Yujin?
* Good example: \[Ideal Type World Cup] On Toss, pick the idol closest to your ideal type.

**Exaggerated promotional language**

* Promotional expressions: Right now!, Super special price!, The best ever, Urgent!, Amazing
* Creating anxiety: You'll regret it if you miss it, you can't do it if you don't act now
* Excessive symbols: exclamation marks, emojis

**Provocative material**

Avoid sensitive topics such as politics, crime, and death.

Do not create a sense of anxiety. Do not use wording that implies you'll regret missing it or that makes users excessively anxious. Please calmly convey only the situation.

<details>

<summary><mark style="color:$danger;">Bad</mark> Example</summary>

* \[Affair index] Try it for fun on Toss.
* \[Today's tip] If the husband dies during pregnancy, what is the inheritance order?
* \[Still haven't tried it?] Is it okay to always go over budget?
* \[The validity period is about to end] Do you really want to miss out on the benefit?

</details>

**Omitting spaces**

Do not omit spaces just to fit the character count.

* <mark style="color:$danger;">Bad</mark> Example: \[My typing accuracy] Try typing sentences with your eyes closed
* Good example: \[My typing skills] Try the sentence-typing test with your eyes closed on Toss.

**Awkward expressions**

The grammar may not be wrong, but the expression is unnatural. You'll notice it right away if you read it aloud.

* <mark style="color:$danger;">Bad</mark> Example: \[My own novel] Choose another genre too. Toss is free. → It's awkward because the particle is missing. It sounds like using the 'Toss' service is free.
* Good example: \[My own novel] You can make it for free on Toss.

#### 5) Please refer to this when using game genres.

* Genres derived from specific game names cannot be used. (e.g., roguelike, metroidvania, soulslike, vampire-survivor-like, etc.)
* Use genre names that users can understand intuitively.

| Genre                        | Do                            |
| ---------------------------- | ----------------------------- |
| **Idle RPG**                 | **Idle game or RPG game**     |
| **Casual MMORPG**            | **Casual game**               |
| **Open-world action**        | **Action game**               |
| **Three-match puzzle**       | **Puzzle game**               |
| **Turn-based strategy RPG**  | **Strategy game or RPG game** |
| **2D side-scrolling action** | **Action game**               |

<details>

<summary>Do not combine or subdivide genres.</summary>

<table data-search="false"><thead><tr><th>Genre</th><th>Meaning</th><th>Alternative direction</th></tr></thead><tbody><tr><td><strong>MMORPG</strong></td><td>Massively Multiplayer Online RPG</td><td><strong>RPG game</strong></td></tr><tr><td><strong>ARPG</strong></td><td>Action RPG</td><td><strong>RPG game or action game</strong></td></tr><tr><td><strong>SRPG</strong></td><td>Simulation/Strategy RPG</td><td><strong>RPG game or strategy game</strong></td></tr><tr><td><strong>JRPG</strong></td><td>Japanese RPG</td><td><strong>Japanese RPG game</strong></td></tr><tr><td><strong>FPS</strong></td><td>First-Person Shooter</td><td><strong>Shooter game</strong></td></tr><tr><td><strong>TPS</strong></td><td>Third-Person Shooter</td><td><strong>Shooter game</strong></td></tr><tr><td><strong>MOBA</strong></td><td>Multiplayer Online Battle Arena</td><td><strong>Strategy game</strong></td></tr><tr><td><strong>RTS</strong></td><td>Real-Time Strategy</td><td><strong>Strategy game</strong></td></tr></tbody></table>

</details>

<details>

<summary>Game-related jargon cannot be used.</summary>

<table data-search="false"><thead><tr><th>Genre</th><th>Meaning</th><th>Alternative direction</th></tr></thead><tbody><tr><td><strong>Hack and Slash</strong></td><td>Hack and Slash</td><td><strong>Action game</strong></td></tr><tr><td><strong>Deck Building</strong></td><td>Deck Building</td><td><strong>Card game</strong></td></tr><tr><td><strong>Auto-battler</strong></td><td>Auto Battler</td><td><strong>Strategy game</strong></td></tr><tr><td><strong>Bullet Hell</strong></td><td>Bullet Hell</td><td><strong>Shooter game</strong></td></tr><tr><td><strong>Run and Gun</strong></td><td>Run and Gun</td><td><strong>Action games &#x26; sports games</strong></td></tr><tr><td><strong>Hyper-casual</strong></td><td>Hyper Casual</td><td><strong>Casual game</strong></td></tr><tr><td><strong>Sandbox</strong></td><td>Sandbox (game context)</td><td><strong>Simulation game</strong></td></tr></tbody></table>

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://developers-apps-in-toss.toss.im/guide/en/marketing/smart-message.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
