> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 動的コンテンツパーソナライゼーション

> オーディエンスごとにバナー、CTA、製品レコメンデーションを切り替えるノーコードエディターを使用して、MoEngage でパーソナライズされたキャンペーン体験を構築します。

# 概要

*Dynamic Content Personalization* は、パーソナライズされたメッセージの作成方法を一新し、1 つのマスターキャンペーンから多数のユニークな体験を提供できるようにします。直感的なノーコードのインターフェイスを使用して、複雑な `if-else` ロジックを瞬時に構築できます。

*Dynamic Content Personalization* 機能では、次のことができます。

* プロモーションバナーを切り替える
* コールトゥアクションを変更する
* オーディエンスセグメントごとに異なる製品レコメンデーションを表示する

*Dynamic Content Personalization* では、指定した条件を満たさないユーザー向けに明確なフォールバックコンテンツを定義することもできます。このロジックブロック全体は、管理しやすい「[チップ](/docs/ja/user-guide/campaigns-and-channels/getting-started/message-personalization/dynamic-content-personalization#chip-actions)」にカプセル化され、保存してキャンペーンやテンプレート全体で再利用できるため、一貫性を確保し、貴重な時間を節約できます。

この機能は、キャンペーン（Push、SMS、Email、In-App、WhatsApp）、Flows、Content Blocks など、複数のモジュールで利用できます。

> [!NOTE]
>
> アクティブまたは一時停止中のキャンペーンにある既存のパーソナライゼーションは影響を受けません。これらの既存のキャンペーンを編集すると、エディターは新しい UI ベースのエクスペリエンスに切り替わります。

# ユースケース

*Dynamic Content Personalization* 機能は、一般的なマーケティング課題に対応する 3 つのコアモジュール（視覚的なロジックのための Conditional UI、再利用のための Chip Actions、高度な制御のための Custom Jinja Editor）を統合することで、複雑なコードを必要とせずに、さまざまな高度なデータドリブンのマーケティングシナリオを実現します。

* **小売および eコマース**: ユーザーのロイヤルティティアに基づいてユニークなプロモーションオファーを表示したり、カートに残された特定のアイテムでカート放棄のリマインダーをパーソナライズしたり、ユーザーの名前で挨拶する条件付きのウェルカムメッセージを作成したりできます。
* **旅行およびホスピタリティ**: ユーザーのステータスに基づいて「チェックイン」メッセージまたは「アップグレード」オファーを表示する動的なフライトリマインダーを送信したり、情報が利用できない場合のフォールバックとして「TBA」を使用して出発ゲート番号を表示したりできます。
* **金融サービス**: ユーザーの関心（旅行か商品かなど）に基づいてクレジットカードの特典情報をカスタマイズしたり、ユーザーの口座残高が一定のしきい値に達したときに特定の投資商品をおすすめしたりできます。
* **メディアおよびエンターテインメント:** ユーザーの年齢と視聴の好みに基づいて、1 つのキャンペーン内で異なるテレビ番組や映画を宣伝し、コンテンツが常に適切で関連性の高いものになるようにできます。

# Dynamic Content Builder を使用する

このセクションでは、Dynamic Content Builder を使用してパーソナライゼーションを追加および管理するワークフローについて説明します。エディターには 3 つのコアモジュールがあります。

* [Conditional](/docs/ja/user-guide/campaigns-and-channels/getting-started/message-personalization/dynamic-content-personalization#conditional)
* [Chip Actions](/docs/ja/user-guide/campaigns-and-channels/getting-started/message-personalization/dynamic-content-personalization#chip-actions)
* [Custom Jinja Editor](/docs/ja/user-guide/campaigns-and-channels/getting-started/message-personalization/dynamic-content-personalization#custom-jinja-editor)

## Conditional

Conditional は、コードを書かずにパーソナライゼーションロジックを構築するための主要な視覚的ツールです。構文を手動で記述する代わりに、ドロップダウンメニューからオプションを選択して、複雑な `if-else` ロジックブロックを作成できます。

1. パーソナライズ可能なフィールドに移動し、**@** 記号を入力して **Personalization Editor** を開きます。
2. **Conditional** タブを選択します。
3. 識別しやすくするために、ロジックブロックに「Welcome Greeting Block」などの **Display name** を入力することをお勧めします。
4. **`Define the primary IF Condition Block.`** このブロックでは、特定の演算子の階層を使用してメインの条件を構築します。
   1. **最初の条件を構築する:** ドロップダウンメニューを使用して、*User Attribute* などの属性ソース、`First Name` などの特定の属性、`is not empty` などの演算子、および比較する値を選択します。
   2. **グループ内に条件を追加する:** **+ Add condition** をクリックして、同じグループ内に別のルールを追加します。ドロップダウンが表示され、これらのルールを **AND** または **OR** 演算子で接続できます。
   3. **複数の条件グループを接続する:** **+ Add Group condition** をクリックして、別のルールグループを作成します。これらのグループを接続する演算子は、グループ内で使用される演算子によって決まります。
      * グループ内の条件を **OR** で接続する場合、別々のグループを接続する演算子は **AND** である必要があります。これにより、`(A OR B) AND (C OR D)` のようなロジックが作成されます。
      * 逆に、グループ内の条件を **AND** で接続する場合、別々のグループを接続する演算子は **OR** である必要があります。これにより、`(A AND B) OR (C AND D)` のようなロジックが作成されます。

        ![IFBlock.png](https://mintcdn.com/moengage/xeb_76Bworf1GG6P/images/moengage_990abe.png?fit=max\&auto=format\&n=xeb_76Bworf1GG6P\&q=85\&s=869b633fa5e3e4af52f9e7ff1900186e)
5. **`Configure the Then Block.`** `Then` テキストボックスに、`IF` 条件を満たすユーザーに表示されるコンテンツを入力します。このフィールドはさらなるパーソナライゼーションもサポートしており、`@` を入力して別の動的な値やネストされた条件ブロックを挿入できます。

   ![IFThen.png](https://mintcdn.com/moengage/MBpE2Km0jgeTJl4Q/images/moengage_00e8e0.png?fit=max\&auto=format\&n=MBpE2Km0jgeTJl4Q\&q=85\&s=49634b6f3cb648d6e45c0115a2f2fc7d)
6. （オプション）**`Add Else If Conditions.`** メインの `IF` ブロックの下にある **+ Add condition** をクリックして、`Else If` ブロックを追加します。このアクションにより、最初の条件が満たされない場合に別の条件セットを確認できます。
   1. `Else If` ブロックに複数の条件やグループ条件を追加して、ロジックのチェーンを作成できます。
   2. **Else If** ブロックの **Then** ブロックを設定できます。

      ![ELSEIFTHENBLOCK.png](https://mintcdn.com/moengage/BlcsVkkZu61NB-XQ/images/moengage_4aabd2.png?fit=max\&auto=format\&n=BlcsVkkZu61NB-XQ\&q=85\&s=4e5c42a7b92613ca156b390107f9b6ef)
7. **最終フォールバックを設定する。** 下部にある **Else use fallback option as** ドロップダウンリストを使用して、前述の条件のいずれも満たさないユーザーに対するデフォルトの動作を定義します。オプションは次のとおりです。
   * **No Fallback:** 条件を満たさないユーザーには値を送信しません。
   * **Do not send:** 条件を満たさないユーザーへのメッセージ全体を中止します。
   * **Fallback:** デフォルトのコンテンツを入力できるテキストボックスを表示します。このフィールドもパーソナライズできます。

     ![falluback.png](https://mintcdn.com/moengage/o0kXRAcOq2mxzDnY/images/moengage_ef6da1.png?fit=max\&auto=format\&n=o0kXRAcOq2mxzDnY\&q=85\&s=96348fe8eb635783abb1325b3c58a46a)
8. **Done** をクリックしてロジックを保存し、チップとしてメッセージに挿入します。

> [!NOTE]
>
> *Conditional* モジュールは、Location および Object データ型を除くすべてのデータ型で条件の作成をサポートしています。

### シナリオ: パーソナライズされた初回購入オファーによる高度なオンボーディング

**目標:** 新規ユーザーに挨拶するだけでなく、高度にターゲットを絞ったオファーで初回購入を促す、1 つの強力なウェルカムメッセージを送信したいと考えています。オファーは、ユーザーのプロファイルデータと予測価値に基づいて変える必要があります。

* * セグメントごとに複数のキャンペーンを作成する代わりに、**Conditional UI** を開き、ブロックに「Tiered Onboarding Offer」などの **Display name** を入力します。
  * **OR** を使用して最初の条件グループを構築し、名前で呼びかけられるユーザーを特定します:\
    `IF` (`User Attribute` `First Name` `is not empty`) `OR` (`User Attribute` `Last Name` `exists`)
  * 次に、**+ Add Group condition** をクリックし、**AND** 演算子で接続して高価値のサブセグメントをターゲットにします。2 番目の条件グループを構築します:\
    `AND` (`User Attribute` `Predicted LTV` `is greater than` `80`)
  * この高価値セグメントの **Then** ブロックに、プレミアムオファーを追加します:「Hi `{{user.properties.first_name}}`, as a VIP, here's 25% off your first order!」

    ![IFFFFFF.png](https://mintcdn.com/moengage/xjBZUVmmH3jDrySH/images/moengage_c68068.png?fit=max\&auto=format\&n=xjBZUVmmH3jDrySH\&q=85\&s=c744113bb2c442cba857a8e02baf1344)
  * 次に、**+ Add condition** をクリックして **Else If** ブロックを作成し、名前はあるものの高価値セグメントに含まれないユーザーをターゲットにして、標準の割引を提供します:「Hi `{{user.properties.first_name}}`, welcome! Here's 10% off your first order.」

    ![ELSEIFFFF.png](https://mintcdn.com/moengage/QVZKszouQuxXOzFr/images/moengage_1da7f2.png?fit=max\&auto=format\&n=QVZKszouQuxXOzFr\&q=85\&s=ebb7e6e8f7ff6a2a165b263f0f04a762)
  * 最後に、メインの **Else use fallback option as** を **Fallback** に設定し、その他すべての匿名ユーザー向けの一般的なオファーを入力します:「Get free shipping on your first order!」
  * **結果:** 3 つの異なるキャンペーンのように機能する、1 つの洗練されたオンボーディングメッセージを作成でき、複数のユーザー属性に基づいて挨拶とオファーの両方を動的にパーソナライズできます。

    ![RESULTTTTT.gif](https://mintcdn.com/moengage/2CGhjk8ZDWEC5ocb/images/moengage_f66f60.png?s=786dcc33da30dc6062ba1da8833ec6dd)

## Chip Actions

*Dynamic Content builder* で作成したすべてのパーソナライゼーションは、管理しやすい「チップ」に変換されます。チップの省略記号ボタンをクリックすると **Actions for chip** メニューが表示されます。このメニューは **Email**（カスタム HTML エディター内）と **Push** で使用できます。

![chipactionmenu.png](https://mintcdn.com/moengage/xjBZUVmmH3jDrySH/images/moengage_c3ef22.png?fit=max\&auto=format\&n=xjBZUVmmH3jDrySH\&q=85\&s=9249364ac699e2fa0c0d42814da8fbb9)

* **Copy chip**: チップのロジックの正確で再利用可能なコピーを作成します。コピーした新しいチップに加えた編集は、元のチップには影響しません。コピーしたチップは、次のようなサポートされている場所に貼り付けることができます。
  * Content blocks
  * Push キャンペーン
  * Email キャンペーンのカスタム HTML エディター\
    サポートされていないエディターやチャネルにチップを貼り付けようとすると、エラーになります。

    ![copychiperror.png](https://mintcdn.com/moengage/t9d2bz7zij1iE1iP/images/moengage_9c72ec.png?fit=max\&auto=format\&n=t9d2bz7zij1iE1iP\&q=85\&s=9ac960a5ee8ba15b8ec8b0c27d93b618)
* **Copy Jinja code:** チップの基になる Jinja コードをコピーします。コピーしたコードは Custom Jinja Editor で貼り付けたり変更したりできます。
* **Edit in code editor**: 高度な変更を行うために、チップのロジックを Custom Jinja Editor で直接開きます。コードエディターでチップを編集すると、チップはカスタム Jinja ブロックに永続的に変換されます。この操作の後は、*Conditional* モジュールを使用してチップを編集できなくなります。
* **Rename**: キャンペーン内で識別しやすくするために、パーソナライゼーションチップに一意の名前を割り当てることができます。

## Custom Jinja Editor

高度なユースケースや特定のフォーマットが必要な場合は、パーソナライゼーションコードを直接記述または編集できます。このエディターは、Jinja 構文に精通したユーザーに完全な制御を提供します。

* **エディターへのアクセス:** Custom Jinja Editor には 2 つの方法でアクセスできます。
  * Personalization Editor 内の **Custom Jinja** タブを選択します。
  * 既存のチップをクリックし、**Actions for chip** メニューから **Edit in code editor** を選択します。
* **構文の検証:** **Done** をクリックすると、構文の自動検証チェックが実行されます。コードを直接編集すると構文エラーが発生する可能性があるため、このプロセスは不可欠です。
  * 構文エラーが検出されると、MoEngage はチップの保存を阻止し、エラーメッセージを表示します。デバッグを容易にするために、メッセージには最初に検出されたエラーの行番号が示されます。

    ![customjinjasingleerror.gif](https://mintcdn.com/moengage/xjBZUVmmH3jDrySH/images/moengage_c72c57.png?s=8575b6d595e2a173bfb78c6881b53bcd)
  * コードに複数のエラーが含まれている場合は、順番に解決する必要があります。バリデーターは、以前に特定されたエラーが修正され、再度保存を試みた後にのみ、次のエラーを報告します。

    ![customjinjamultipleerror.gif](https://mintcdn.com/moengage/OQ0V9ibjQLpsyCSD/images/moengage_0f6c23.png?s=721cb7519e16b5c56c7fe44290849c91)

# 機能サポートマトリックス

次の表は、MoEngage 内のさまざまなチャネルと機能において、*Dynamic Content builder* のコアモジュールがどこでサポートされているかを示しています。

| チャネル / モジュール | Conditional | Chip Actions | Custom Jinja Editor |
| - | - | - | - |
| **Email** | ✅ | ✅\* | ✅ |
| **Push** | ✅ | ✅ | ✅ |
| **SMS** | ✅ | ❌ | ✅ |
| **WhatsApp** | ✅ | ❌ | ✅ |
| **In-App** | ✅ | ❌ | ✅ |
| **OSM** | ✅ | ❌ | ✅ |
| **Inform** | ✅ | ❌ | ❌ |
| **Flows** | チャネル固有のノード（例: Flow 内の Email ノードや Push ノード）内でサポートされています。 | | |
| **Content Blocks** | ✅ | ✅\* | ✅ |
| **Template Management** | Email および OSM テンプレートでサポートされています。 | | |

*\* Chip Actions は、次の特定のエディターで使用できます:*

* *Email の場合: カスタム HTML エディターのみ。*
* *Content Blocks の場合: プレーンテキストエディターのみ。*

# よくある質問（FAQ）

> **ユーザーが複数のルールに一致した場合はどうなりますか？**
>
> ルールは上から下へ順番に評価されます。ユーザーには一致した**最初の**ルールのコンテンツが表示され、そのルールセットの評価は停止します。

> **ユーザー属性、イベント属性、プロダクトセットを組み合わせて条件を作成できますか？**
>
> はい。**+ Add Group condition** ボタンと **AND** 演算子を使用すると、1 つの条件ブロック内で異なる属性ソースを組み合わせることができます。これにより、特定のユーザー属性とプロダクトセット属性を同時に確認するなど、高度なロジックを作成できます。

> **Jinja を直接記述する場合とどう違いますか？**
>
> Dynamic Content Builder は、スピードと正確性を重視して設計されています。Jinja を手動で記述することも引き続き可能ですが、UI ビルダーを使用すると一般的な構文エラーを防ぎ、複雑なロジックを読みやすくし、マーケターがコーディングの専門家でなくてもパーソナライゼーションを作成できます。ほとんどの条件ロジックでは、この方法をお勧めします。

> **追加できる条件の数に制限はありますか？**
>
> いいえ、1 つの条件ビルダー内で追加できる `if-else` 条件の数に制限はありません。

> **エディターを使用してリンクや画像 URL をパーソナライズできますか？**
>
> はい。Dynamic Content Builder は、URL や画像ソースのフィールドなど、パーソナライゼーションをサポートするすべてのテキストフィールドで使用できます。これにより、ユーザー属性に基づいてディープリンクを動的に変更したり、異なる画像を表示したりできます。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.