> ## 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.

# ジャーニーWebhook

> ジャーニーステップから外部サーバーへHTTPリクエストを送信し、Liquid構文でユーザーデータを使ってパーソナライズ。再試行ロジックとデバッグツールも備えています。

ジャーニーWebhookは、ジャーニーステップからサーバーまたは公開アクセス可能なエンドポイントへHTTPリクエストを送信します。HTTPメソッド、URL、ヘッダー、ボディコンテンツを設定できます。リクエストは[Liquid構文](./using-liquid-syntax)を使用してユーザー固有のデータでパーソナライズでき、ジャーニーイベントをCRM、分析プラットフォーム、またはカスタムバックエンドとリアルタイムで同期できます。

## 要件

* アクセスするには[OneSignal営業チームにお問い合わせ](https://onesignal.com/contact)ください。
* URLまたはIPアドレスは有効で、HTTPまたはHTTPS経由でアクセス可能である必要があります。
* エンドポイントは**公開ルーティング可能**でなければなりません——ファイアウォールの背後やlocalhostにはありません。
* ドメインには有効なトップレベルドメイン（`.com`、`.org`、`.net`など）が必要です。

<Warning>
  ジャーニーWebhookはOneSignal APIを呼び出すことができません。外部システムへのデータ送信専用に設計されています。
</Warning>

***

## セットアップ

ジャーニーが作成されたら、次の手順に従います：

1. OneSignalダッシュボードで**データ > Webhooks**に移動します。
2. クリックして新しいWebhookを作成します。
3. 次を定義します：
   * **HTTPメソッド**（通常は `POST`）
   * **ターゲットURL**
   * **カスタムヘッダー**（例：認証トークン）
   * **ボディコンテンツ**（プレーンテキストまたはJSON、オプションでLiquidを使用）

<Frame caption="Webhook設定画面">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f4bb77a-Screenshot_2023-04-20_at_9.24.03_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=79005b0332776e4703954789fe40c5ea" alt="HTTPメソッド、URL、ヘッダー、ボディフィールドを含むWebhook設定フォーム" width="1038" height="926" data-path="images/docs/f4bb77a-Screenshot_2023-04-20_at_9.24.03_PM.png" />
</Frame>

### 許可されていないヘッダー

次のヘッダーを設定することはできません：

* `content-length`
* `referer`
* `metadata-flavor`
* `x-google-metadata-request`
* `host`
* `x-onesignal`で始まるすべてのヘッダー

### Webhookのテスト

curlなどのツールを使用して、エンドポイントを手動でテストすることもできます：

```bash theme={null}
curl -X POST https://yourserver.com/webhook \
  -H "Content-Type: application/json" \
  -d '{ "user_id": "abc123" }'
```

ジャーニーに追加する前に、エンドポイントが到達可能で機能していることを検証するのに役立ちます。

***

## パーソナライゼーション

すべてのWebhookフィールドは[Liquid構文](./using-liquid-syntax)をサポートしており、ユーザーとサブスクリプションデータをリクエストに動的に挿入できます。

利用可能なプロパティの完全なリストについては、[メッセージパーソナライゼーション](./message-personalization)を参照してください。

### ユーザーデータリファレンス

`user`オブジェクトの次のプロパティは、Liquid構文を介してWebhookフィールドで利用できます：

| プロパティ        | タイプ    | 使用方法                                | テストで利用可能？ |
| ------------ | ------ | ----------------------------------- | --------- |
| OneSignal ID | String | `{{ user.onesignal_id }}`           | ✅         |
| External ID  | String | `{{ user.external_id }}`            | ✅         |
| Tags         | Object | `{{ user.tags.your_tag_key_here }}` | ❌         |
| Language     | String | `{{ user.language }}`               | ✅         |

<Warning>
  タグは、アクティブなジャーニー外でWebhookをテストするときには使用できません。ライブに移行する前に動作を検証するには、[テストサブスクリプション](./test-users)を使用してください。
</Warning>

***

## ジャーニーにWebhookを追加する

1. Webhookを作成してテストした後、ジャーニーを開きます。
2. 必要な場所に**Webhookステップ**を追加します。
3. 以前に構成したWebhookを選択します。

ユーザーがそのステップに到達するたびに、パーソナライズされたデータでWebhookが起動します。

<Frame caption="ジャーニー内のWebhookステップ">
  <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/7e6782f-Screenshot_2023-04-20_at_3.54.09_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=e017a2eff865b6de671a34b71c437332" alt="メッセージステップ間にWebhookステップが接続されたジャーニーキャンバス" width="664" height="1058" data-path="images/docs/7e6782f-Screenshot_2023-04-20_at_3.54.09_PM.png" />
</Frame>

***

## デバッグとログ

### Webhook統計

Webhookの**統計**タブに移動して、Webhookのパフォーマンスを表示します。これには次のものが含まれます：

* 送信されたイベントの合計
* レスポンス時間のトレンド
* ステータスコードの分布

<Frame caption="イベント数とレスポンス時間を示すWebhook統計">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f0cfcb8-small-Screenshot_2023-04-21_at_9.04.57_AM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=f4514d8cecf78831bd55019cfce61b9b" alt="イベント数、レスポンス時間のトレンド、ステータスコード分布を含むWebhook統計タブ" width="1185" height="1007" data-path="images/docs/f0cfcb8-small-Screenshot_2023-04-21_at_9.04.57_AM.png" />
</Frame>

### ログタブ

より詳細なインサイトについては、ログタブに次が表示されます：

* 最近のリクエスト/レスポンスデータ
* ステータスコードとエラーメッセージ
* ヘッダーとペイロード（該当する場合）

<Frame caption="リクエストとレスポンスの詳細を示すWebhookログ">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/729c24f-Screenshot_2023-04-20_at_9.27.31_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=3923dcf3fbf2975e27b5f158a1442824" alt="最近のリクエスト、ステータスコード、ペイロードを含むWebhookログタブ" width="2130" height="1264" data-path="images/docs/729c24f-Screenshot_2023-04-20_at_9.27.31_PM.png" />
</Frame>

***

## 再試行ロジックと無効化動作

OneSignalは、回復可能なエラー（例：`429 Too Many Requests`）のために失敗したWebhookリクエストを再試行します。再試行は、遅延を増やしながら行われます。

再試行が繰り返し失敗すると、Webhookは**永久に失敗**としてマークされ、これ以上の試行は行われません。

### 自動無効化

Webhookが一貫して失敗する場合、OneSignalはそれ以上の問題を防ぐためにそれを無効にします。管理者は、Webhookが無効になる前と後に、メールアラートとダッシュボードバナーを受け取ります。根本原因を特定し、再度有効にする前にWebhookをテストしてください。

エンドポイントはジャーニーが生成するイベントのボリュームを処理できる必要があります。アプリのメッセージ送信量を確認して、APIに必要なスループットを見積もってください。

### パフォーマンスガイダンス

* 遅いまたは過負荷のエンドポイント（特に`429`レスポンスの場合）は、自動無効化をトリガーする可能性があります。
* イベントを迅速に記録し、タイムアウトを回避するために追加の処理を延期してください。
* ボリュームはユーザーアクティビティに応じてスケーリングされます——エンドポイントがピークスループットを処理できることを確認してください。
* 受信イベントの重複を排除するには、`event.id`値（ヘッダーまたはボディで利用可能）を使用します。

### 信頼性のベストプラクティス

* **まず自分のサーバーを経由してルーティングし**、サードパーティサービスに直接接続しないでください。これにより、ログ記録、認証、スロットリング、キューイングを制御できます。サードパーティサービスはボリュームスパイク時にリクエストをレート制限またはブロックする可能性があり、OneSignalはこれらの制限を管理しません。
* **バーストに備えてください。** Webhookの実行はユーザーがステップに到達するとすぐに発生します。多くのユーザーが一度にWebhookステップに到達すると、OneSignalはレート制限なしでHTTPリクエストのバーストを送信します。Webhookを確実に取り込み、レート制限またはバッチ処理を適用し、サードパーティサービスへのリクエストを適切にルーティングできる軽量APIレイヤーまたはキューイングプロキシの構築を検討してください。
* **サードパーティAPIの制限を確認してください。** Slack、Twilio、Segmentなどの人気ツールはパブリックHTTP APIを提供していますが、独自のレート制限、認証要件、エラー処理があります。直接接続する前にドキュメントを確認してください。

***

## Webhookを保護する

リクエストがOneSignalから送信されたことを確認するには、カスタム認証ヘッダー（例：`Authorization: Bearer YOUR_SECRET_TOKEN`）を追加し、リクエストを受け入れる前にサーバー側で検証します。

***

## よくある質問

### WebhookでOneSignal APIを呼び出せますか？

いいえ。ジャーニーWebhookは外部システムへのデータ送信専用に設計されています。OneSignal APIを呼び出すことはできません。ジャーニーイベントに基づいてOneSignalデータを更新するには、Webhookを自分のサーバー経由でルーティングし、サーバーからOneSignal APIを呼び出してください。

### なぜWebhookが自動的に無効化されたのですか？

OneSignalは、継続的に失敗するWebhookをそれ以上の問題を防ぐために無効にします。**ログ**タブでエラーの詳細（ステータスコード、レスポンスボディ）を確認し、根本原因を修正し、再度有効にする前にWebhookをテストしてください。一般的な原因には、エンドポイントのダウンタイム、認証エラー、レート制限があります。

### Webhookイベントの重複を排除するにはどうすればよいですか？

`event.id`値（ヘッダーまたはリクエストボディで利用可能）を使用してユニークなイベントを識別します。処理済みのイベントIDをサーバーに保存し、重複をスキップします。再試行が同じイベントを複数回配信する場合、これは特に重要です。

### OneSignalはWebhookリクエストをレート制限しますか？

いいえ。OneSignalはユーザーがステップに到達するとすぐに、レート制限なしでWebhookリクエストを送信します。多くのユーザーが一度にWebhookステップに到達すると、エンドポイントはリクエストのバーストを受け取ります。ピークボリュームを処理できるようにエンドポイントを構築するか、キューイングプロキシを使用してリクエストをバッファリングおよびバッチ処理してください。

### Journeyを起動せずにWebhookをテストできますか？

はい。Webhook設定の**テスト**ボタンを使用してサンプルリクエストを送信します。[タグ](./add-user-data-tags)はテストリクエストでは利用できません——完全な検証のためには、ライブジャーニーで[テストサブスクリプション](./test-users)を使用してください。

***

## 関連ページ

<Columns cols={2}>
  <Card title="ジャーニー概要" icon="route" href="./journeys-overview">
    ジャーニーの紹介とマルチチャネルワークフローの仕組み。
  </Card>

  <Card title="ジャーニーアクション" icon="code-branch" href="./journeys-actions">
    待機ステップ、分岐ロジック、タイムウィンドウ、分割パスを追加します。
  </Card>

  <Card title="Liquid構文" icon="code" href="./using-liquid-syntax">
    OneSignalメッセージとWebhookのLiquidテンプレートの完全リファレンス。
  </Card>

  <Card title="メッセージパーソナライゼーション" icon="user-pen" href="./message-personalization">
    タグ、Liquid、動的コンテンツを含むすべてのパーソナライゼーション方法の概要。
  </Card>
</Columns>
