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

# プロパティを使用したパーソナライズ

> 事前定義されたプロパティとカスタムデータ Tags を使用して OneSignal メッセージをパーソナライズします。Liquid 構文を使用して、メール、プッシュ、SMS、Webhook でユーザー、Subscriptions、Journey、メッセージ、テンプレート、アプリレベルのデータにアクセスできます。

プロパティ（ユーザー Tags や External ID などの識別子）を使用して、[Liquid 構文](./using-liquid-syntax)でメッセージや配信ペイロードをパーソナライズできます。

OneSignal は Liquid プレースホルダーを**送信時に**レンダリングし、ユーザー、Subscriptions、Journey、メッセージ、テンプレート、アプリ、または組織に既に保存されているデータを使用します。このデータを使用して、メッセージ、[Journey Webhook](./journeys-webhook)、および [Event Streams](./event-streams) をパーソナライズできます。

***

## プロパティパーソナライズの使用タイミング

プロパティパーソナライズを使用して、OneSignal に既に存在するデータ（最も一般的にはユーザー Tags、External ID、メールアドレスや電話番号などの Subscriptions フィールド）を使用して送信時にコンテンツをレンダリングします。

以下の場合に適しています：

* データが既に OneSignal に保存されている
* メッセージ送信時に Liquid プレースホルダーが自動的に置き換えられるようにしたい
* 配信時にデータを取得または計算する必要がない

<Note>
  値を送信時に取得または計算する必要がある場合（例：リアルタイムの価格や在庫）は、[Data Feeds](./data-feeds) または [`custom_data` を使用した API](./personalization-api-custom-data) を使用してください。

  値が、ユーザーが Journey に入るまたは進行するきっかけとなったイベントから取得される場合は、[Custom Event パーソナライズ](./personalization-custom-event)を使用してください。
</Note>

### チャネルサポート

各チャネルは特定のプロパティタイプとフィールドをサポートしています。

<Tabs>
  <Tab title="メール">
    以下で[ユーザーと Subscriptions のプロパティ](#user-&-subscription-properties)をサポートしています：

    * 件名、返信先、プリヘッダー
    * メッセージ本文
    * HTML 属性（例：`<img src="{{ image_url }}" />`）
    * ボタンアクション（URL、mailto など）
  </Tab>

  <Tab title="プッシュ">
    以下で[ユーザーと Subscriptions のプロパティ](#user-&-subscription-properties)をサポートしています：

    * タイトル（`headings`）、サブタイトル、本文（`contents`）
    * 画像 URL
    * 起動 URL：`https://example.com/{{last_category_viewed}}`

    <Warning>
      `data`（追加データ）フィールドは Liquid 構文をサポートしていません。
    </Warning>
  </Tab>

  <Tab title="SMS">
    以下で[ユーザーと Subscriptions のプロパティ](#user-&-subscription-properties)をサポートしています：

    * メッセージ本文（`contents`）
  </Tab>

  <Tab title="アプリ内メッセージ">
    Tag 置換のみサポートされています。プロパティ、Custom Events、その他のデータソースは現時点では利用できません。

    * Tags はユーザーが新しいアプリセッションを開始する前に設定されている必要があります。
    * テスト送信フローを使用する場合、Tag 置換が表示されないことがあります。

    **ブロックエディタ：** テキスト、ボタン、画像ブロック
    **HTML エディタ：** テキスト要素と属性（`src`、`href`、`action`、`data`）
  </Tab>

  <Tab title="ライブアクティビティ">
    以下で[ユーザーと Subscriptions のプロパティ](#user-&-subscription-properties)をサポートしています：

    * `event_updates`
    * `contents`
    * `headings`
  </Tab>
</Tabs>

***

## プロパティパーソナライズの仕組み

OneSignal は、メッセージ送信先のユーザーと Subscriptions に対応するプロパティ値で Liquid プレースホルダーを置き換えます。

```liquid Liquid theme={null}
Hi {{ first_name | default: "friend" }}!
Congrats on reaching level {{ level | default: "1" }}!
```

ユーザーが Tags `first_name: Jon` と `level: 5` を持っている場合、以下のように表示されます：

```liquid Text theme={null}
Hi Jon!
Congrats on reaching level 5!
```

## Tags が設定されていないユーザーには、代わりにデフォルト値が表示されます。

## プロパティ Liquid オブジェクトリファレンス

このセクションでは、Liquid で使用可能な正確なオブジェクト名とフィールド名を確認できます。

### ユーザーと Subscriptions のプロパティ

ユーザーレベルのデータには `user` を使用します。メールアドレスや電話番号などのチャネル固有の値が必要な場合は `subscription` を使用します。

<ParamField body="user.tags">
  ユーザーの [Tags](./add-user-data-tags)。Tags はいくつかの方法で参照できます：

  * `key` を直接使用するか、`tags` の後にキーを配置します
  * 設定された Tags の例：`first_name: Jon, level: 5`

  ```liquid Liquid theme={null}
  Your first name is {{ first_name }}.
  Your first name is {{ user.tags.first_name }}.
  Your level is {{ level }}.
  Your level is {{ user.tags.level }}.
  ```

  * for ループ構文で Tags を反復処理できます。この例では、key:value ペアをカンマ区切りで出力します。

  ```liquid Liquid theme={null}
  {% for tag in user.tags %}
  {{ tag[0] }}: {{ tag[1] }}
  {% unless forloop.last %},
  {% endunless %}{% endfor %}
  ```
</ParamField>

<ParamField body="user.external_id">
  ユーザーの [External ID](./users#external-id)。

  ```liquid Liquid theme={null}
  Your user ID is {{ user.external_id }}.
  Your user ID is {{ subscription.external_id }}.
  ```
</ParamField>

<ParamField body="user.onesignal_id">
  ユーザーの [OneSignal ID](./users)。

  ```liquid Liquid theme={null}
  Your OneSignal user ID is {{ user.onesignal_id }}.
  ```
</ParamField>

<ParamField body="subscription.email">
  メッセージが送信されるメール Subscription のメールアドレス。

  ```liquid Liquid theme={null}
  Thanks for subscribing with email {{ subscription.email }}.
  ```
</ParamField>

<ParamField body="subscription.phone_number">
  メッセージが送信される SMS Subscription の電話番号。

  ```liquid Liquid theme={null}
  Thanks for subscribing with phone number {{ subscription.phone_number }}.
  ```
</ParamField>

<ParamField body="user.language">
  ユーザーの言語コード。

  ```liquid Liquid theme={null}
  Preferred language: {{ user.language }}
  Preferred language: {{ subscription.language }}
  ```
</ParamField>

<ParamField body="user.subscriptions">
  ユーザーの [Subscriptions](./subscriptions)。

  * for ループ構文で Subscriptions を反復処理できます。
  * この例では、各 Subscription のトークンと ID をカンマ区切りで出力します。

  ```json JSON theme={null}
  {
    "subscriptions": "{% for subscription in user.subscriptions %}{% if subscription.subscription_token %}{{ subscription.subscription_token }}: {{ subscription.id }}{% unless forloop.last %}, {% endunless %}{% endif %}{% endfor %}"
  }
  ```
</ParamField>

<ParamField body="subscription.unsubscribe_token">
  [トークンを使用したメール配信停止 API](/reference/unsubscribe-with-token) で使用されるトークン。

  ```liquid theme={null}
  Unsubscribe: https://your-domain.com/unsubscribe?token={{ subscription.unsubscribe_token }}
  ```
</ParamField>

### Journey プロパティ

`journey` オブジェクトを使用して、Journey 名を参照したり、Journey の [Custom Event パーソナライズ](./personalization-custom-event)にアクセスしたりできます。

<ParamField body="journey.name">
  Journey の名前。

  ```json JSON theme={null}
  {
    "journey_name": "{{ journey.name }}"
  }
  ```
</ParamField>

### メッセージプロパティ

`message` オブジェクトは、[Event Streams](./event-streams) に役立つメッセージ ID、名前、テンプレート ID へのアクセスを提供します。また、バックエンドから送信されるメッセージをパーソナライズするための [custom\_data](./personalization-api-custom-data) へのアクセスも提供します。

<ParamField body="message.id">
  OneSignal によって設定されたメッセージ ID。

  ```json theme={null}
  {
    "message_id": "{{ message.id }}"
  }
  ```
</ParamField>

<ParamField body="message.name">
  送信者によって設定されたメッセージの名前。

  ```json theme={null}
  {
    "message_name": "{{ message.name }}"
  }
  ```
</ParamField>

<ParamField body="message.template_id">
  OneSignal によって設定されたテンプレート ID。

  ```json theme={null}
  {
    "template_id": "{{ message.template_id }}"
  }
  ```
</ParamField>

### テンプレートプロパティ

`template` オブジェクトは、メッセージの送信に使用された[テンプレート](./templates)のテンプレート ID と名前へのアクセスを提供します。これは [Event Streams](./event-streams) に役立ちます。

<ParamField body="template.id">
  OneSignal によって設定されたテンプレート ID。

  ```json theme={null}
  {
    "template_id": "{{ template.id }}"
  }
  ```
</ParamField>

<ParamField body="template.name">
  送信者によって設定されたテンプレートの名前。

  ```json theme={null}
  {
    "template_name": "{{ template.name }}"
  }
  ```
</ParamField>

***

### アプリと組織のプロパティ

`app` および `org` オブジェクトは、メッセージを送信した[アプリと組織](./apps-organizations)の詳細を提供します。これは [Event Streams](./event-streams) に役立ちます。

<ParamField body="app.id">
  OneSignal によって設定されたアプリ ID。

  ```json theme={null}
  {
    "app_id": "{{ app.id }}"
  }
  ```
</ParamField>

<ParamField body="app.name">
  アプリのオーナーによって設定されたアプリの名前。

  ```json theme={null}
  {
    "app_name": "{{ app.name }}"
  }
  ```
</ParamField>

<ParamField body="org.id">
  OneSignal によって設定された組織 ID。

  ```json theme={null}
  {
    "org_id": "{{ org.id }}"
  }
  ```
</ParamField>

<ParamField body="org.name">
  組織のオーナーによって設定された組織の名前。

  ```json theme={null}
  {
    "org_name": "{{ org.name }}"
  }
  ```
</ParamField>

***

## 例：Tags を使用したカート放棄

この例では、ユーザー Tags を使用してカート放棄メッセージをパーソナライズする方法を説明します。[カート放棄チュートリアル](./abandoned-cart)をベースにしています。

**設定された Tags の例：**

```json JSON theme={null}
{
  "cart_updated": "unix_timestamp_seconds",
  "product_image": "https://i.imgur.com/ssPCfbC.png",
  "product_name": "24 Pack of Acorns",
  "product_quantity": "1",
  "product_price": "$12.99",
  "cart_items_count": "4",
  "cart_url": "https://yourdomain.com/cart"
}
```

### メールテンプレート

<Steps>
  <Step title="新しいメールテンプレートを作成する">
    **Messages > Templates > New Email Template** に移動し、ドラッグ＆ドロップエディタを開きます。
  </Step>

  <Step title="レイアウト構造を追加する">
    5つの行を作成します：

    * 行1、2、4：**Paragraph** ブロックを含む1列
    * 行3：**HTML | Paragraph | Paragraph | Paragraph** の4列
    * 行5：**Button** ブロックを含む1列

    <Frame caption="カート放棄用のスターターメールテンプレート">
      <img src="https://mintcdn.com/onesignal/v-hm59YoewwF90UX/images/email/starter-template-abandoned-cart.png?fit=max&auto=format&n=v-hm59YoewwF90UX&q=85&s=551e9ec4618f64fdc0b6ab610a537c48" width="2968" height="2124" data-path="images/email/starter-template-abandoned-cart.png" />
    </Frame>
  </Step>

  <Step title="Paragraph ブロックに Liquid を追加する">
    行1に以下を追加します：

    ```liquid Liquid theme={null}
    We're holding onto {{cart_items_count}} items in your cart, but don't wait too long, other squirrels are getting ahead!
    ```

    行2にユーザーが見ている内容の説明を追加します：

    ```liquid Text theme={null}
    Currently in your cart:
    ```

    行4に別の CTA を追加します：

    ```liquid Text theme={null}
    Checkout now while supplies last!
    ```
  </Step>

  <Step title="最新のアイテムを表示する">
    行3で4列を設定します：

    **列1（HTML ブロック）：**

    ```html HTML theme={null}
    <img src="{{product_image}}" alt="Image" style="max-width:100%;" />
    ```

    **列2〜4（テキストブロック）：**

    * 列2：`{{product_name}}`
    * 列3：`{{product_quantity}}`
    * 列4：`{{product_price}}`
  </Step>

  <Step title="ボタンにカート URL を追加する">
    行5の **Button** ブロックで、アクション URL を以下に設定します：

    ```liquid theme={null}
    {{cart_url}}
    ```

    <Frame caption="スタイリングなしのカート放棄用ベースメールテンプレート完成版">
      <img src="https://mintcdn.com/onesignal/v-hm59YoewwF90UX/images/email/finished-template-abandoned-cart-tags.png?fit=max&auto=format&n=v-hm59YoewwF90UX&q=85&s=a46cb86b4725c27c360b9f7cd96ab305" width="2968" height="2124" data-path="images/email/finished-template-abandoned-cart-tags.png" />
    </Frame>
  </Step>

  <Step title="テンプレートをテスト・プレビューする">
    **Test & preview** ボタンを使用して自分宛にテストメールを送信します。

    * メール Subscription に Tags が設定されていることを確認してください。

    <Frame caption="Tags を使用したメールのプレビュー">
      <img src="https://mintcdn.com/onesignal/v-hm59YoewwF90UX/images/email/test-email-with-tags.png?fit=max&auto=format&n=v-hm59YoewwF90UX&q=85&s=307a846a3fec6676658ac4c653590110" width="2968" height="2124" data-path="images/email/test-email-with-tags.png" />
    </Frame>
  </Step>

  <Step title="テンプレートにスタイルを適用する">
    <Check>成功です！これで独自のスタイルをテンプレートに適用できます。[ドラッグ＆ドロップでメールをデザインする](./design-emails-with-drag-and-drop)を参照してください。</Check>
  </Step>
</Steps>

### プッシュテンプレート

プッシュ通知はスペースが限られているため、1つのアイテムを表示し、合計数に言及します。

**メッセージフィールド：**

[条件文](./using-liquid-syntax#if-elsif-else)を使用して、正しい文法でアイテムとアイテム数を表示します。

```liquid Liquid theme={null}
{% assign item_count = cart_items_count | plus: 0 %}
{% if item_count == 1 %}
You left {{product_name}} in your cart.
{% endif %}
{% if item_count == 2 %}
You left {{product_name}} and {{item_count | minus: 1}} more item in your cart.
{% endif %}
{% if item_count > 2 %}
You left {{product_name}} and {{item_count | minus: 1}} more items in your cart.
{% endif %}
```

**画像フィールド：**

```liquid Liquid theme={null}
{{product_image | default: "https://i.imgur.com/ssPCfbC.png"}}
```

**起動 URL フィールド：**

```liquid theme={null}
{{cart_url | default: "https://yourdomain.com/cart"}}
```

<Frame caption="Test & preview でプッシュテンプレートのパーソナライズをプレビュー">
  <img src="https://mintcdn.com/onesignal/Up-pAJT_jbhthm6E/images/push/preview-push-template-personalization-with-test-preview.png?fit=max&auto=format&n=Up-pAJT_jbhthm6E&q=85&s=97db90a05acdf4ed30f54a76b1d63b98" width="2880" height="2036" data-path="images/push/preview-push-template-personalization-with-test-preview.png" />
</Frame>

<Check>成功です！これでさらにテンプレートを作成し、[カート放棄 Journey](./abandoned-cart) で使用できます。</Check>

***

## 例：データタグでアプリ内メッセージをパーソナライズする

この例では、データタグでパーソナライズされたリワードアプリ内メッセージを示します。アプリ内メッセージは、データタグの値を複数のブロックタイプに置換します。

設定されたメッセージ：

* **テキストブロック** — 完了したレベルとそのレベルのリワードを表示
* **画像ブロック** — そのリワードに対応する画像と、デフォルト画像をフォールバックとして表示
* **ボタン2テキスト** — リワード値を表示し、デフォルト値は `100`
* **背景画像** — データタグの値から設定

<Frame caption="テキスト、画像、ボタンブロックでデータタグ置換が設定されたアプリ内メッセージエディター">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b697ab5-config1.png?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=c40e541c296b138a7f04ac561b3b0c64" alt="" width="872" height="968" data-path="images/docs/b697ab5-config1.png" />
</Frame>

メッセージはセッション開始時に、ユーザーの現在のデータタグ値を使用してレンダリングされます：

<Frame caption="データタグから置換された値でユーザーに表示されたアプリ内メッセージ">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/973f097-JustTheIAMTagSub.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=0626ef7b31dfbfece633e74b072fbff5" style={{ width:"100%" }} width="338" height="607" data-path="images/docs/973f097-JustTheIAMTagSub.png" />
</Frame>

<Note>
  サポートされているブロック、属性、タイミングルールについては、上記の[チャネルサポート](#チャネルサポート)の**アプリ内メッセージ**タブを参照してください。そこから改めて強調すべき2つのポイント：

  * **データタグは、ユーザーが新しいアプリセッションを開始する前に設定する必要があります。** セッション中に更新されたデータタグは、そのセッション中に表示されるアプリ内メッセージではレンダリングされません。
  * **データタグ置換は「テストメッセージを送信」のテスト送信ではレンダリングされません。** 置換を確認するには、実際のセッションからメッセージをトリガーしてください。
  * [プロパティ置換](./using-liquid-syntax#property-include)はアプリ内メッセージではサポートされていません。
</Note>

***

## 関連ページ

<Columns cols={2}>
  <Card title="メッセージパーソナライズ" href="./message-personalization" icon="sparkles">
    Custom Events とその他の方法の使い分けを含む、OneSignal のすべてのパーソナライズオプションの概要。
  </Card>

  <Card title="Tags" href="./add-user-data-tags" icon="tag">
    SDK、API、CSV インポートを介してユーザーに Tags を設定する方法を学びます。
  </Card>

  <Card title="Liquid 構文の使用" href="./using-liquid-syntax" icon="droplet">
    フィルター、条件分岐、ループ、文字列操作を含む完全な Liquid リファレンス。
  </Card>

  <Card title="Templates" href="./templates" icon="file">
    Journeys で使用する再利用可能なメッセージテンプレートを作成・管理します。
  </Card>

  <Card title="カート放棄チュートリアル" href="./abandoned-cart" icon="cart-shopping">
    Tags とプロパティを使用してカート放棄 Journey を構築します。
  </Card>
</Columns>

<Info>
  サポートが必要ですか？

  サポートチームとチャットするか、`support@onesignal.com`にメールしてください

  以下を含めてください：

  * 発生している問題の詳細と再現手順（利用可能な場合）
  * OneSignal App ID
  * 該当する場合は、External IDまたはSubscription ID
  * 該当する場合は、OneSignalダッシュボードでテストしたメッセージのURL
  * 関連する[ログまたはエラーメッセージ](/docs/ja/capturing-a-debug-log)

  お気軽にお問い合わせください！
</Info>

***
