要件
イベントを送信する前に、次のことを確認してください:- アクセスするには営業チームにお問い合わせください。
- URL/IPアドレスが有効で、HTTPまたはHTTPS経由で到達可能です。
- エンドポイントは公開ルーティング可能です(つまり、ファイアウォールの背後やlocalhostにはありません)。
- ドメインには有効なトップレベルドメイン(例:
.com、.org、.net)が必要です。 - ジャーニーWebhookはOneSignal APIを呼び出すために使用できません。
セットアップ
ジャーニーが作成されたら、次の手順に従います:- OneSignalダッシュボードでデータ > Webhookに移動します。
- クリックして新しいWebhookを作成します。
- 次を定義します:
- HTTPメソッド(通常は
POST) - ターゲットURL
- カスタムヘッダー(例:認証用)
- ボディコンテンツ(プレーンテキストまたはJSON、オプションでLiquidを使用)
- HTTPメソッド(通常は

Webhook設定画面
許可されていないヘッダー
次のヘッダーを設定することはできません:content-lengthreferermetadata-flavorx-google-metadata-requesthostx-onesignalで始まるすべてのヘッダー
Webhookのテスト
curlなどのツールを使用して、エンドポイントを手動でテストすることもできます:bash
パーソナライゼーション
すべてのWebhookフィールドはLiquid構文をサポートしており、ユーザーとサブスクリプションデータをリクエストに動的に挿入できます。 ボディの例: 詳細については、Liquid構文の使用ガイドを参照してください。
ユーザーデータリファレンス
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 }} | ✅ |
タグは、アクティブなジャーニー外でWebhookをテストするときには使用できません。ライブに移行する前に動作を検証するには、テストサブスクリプションを使用してください。
ジャーニーにWebhookを追加する
- Webhookを作成してテストした後、ジャーニーを開きます。
- 必要な場所にWebhookステップを追加します。
- 以前に構成したWebhookを選択します。

ジャーニー内のWebhookステップ
デバッグとログ
Webhook統計
Webhookの統計タブに移動して、Webhookのパフォーマンスを表示します。これには次のものが含まれます:- 送信されたイベントの合計
- レスポンス時間のトレンド
- ステータスコードの分布

Webhookレポートページ
ログタブ
より詳細なインサイトについては、ログタブに次が表示されます:- 最近のリクエスト/レスポンスデータ
- ステータスコードとエラーメッセージ
- ヘッダーとペイロード(該当する場合)

Webhookログページ
再試行ロジックと無効化動作
OneSignalは、回復可能なエラー(例:429 Too Many Requests)のために失敗したWebhookリクエストを再試行します。再試行は、遅延を増やしながら行われます。
再試行が繰り返し失敗すると、Webhookは永久に失敗としてマークされ、これ以上の試行は行われません。
自動無効化
Webhookが一貫して失敗する場合、OneSignalはそれ以上の問題を防ぐためにそれを無効にします。管理者は、Webhookが無効になる前と後に、メールアラートとダッシュボードバナーを受け取ります。これが発生した場合は、再度有効にする前に、Webhookのトラブルシューティング、修正、テストに時間を費やしてください。 Webhookを取り込むAPIが、メッセージ送信によって生成されるイベントのボリュームを処理できることが重要です。アプリによって生成されるメッセージ送信のボリュームを確認すると、APIに必要なパフォーマンスが反映されます。パフォーマンスガイダンス
- 遅いまたは過負荷のエンドポイント(特に429レスポンスの場合)は、無効化をトリガーする可能性があります。
- APIは、タイムアウトを回避するために、イベントを迅速に記録し、追加の処理を延期する必要があります。
- ボリュームはユーザーアクティビティに応じてスケーリングされます—エンドポイントがこのスループットを処理できることを確認してください。
- 受信イベントの重複を排除するには、
event.id値(ヘッダーまたはボディで利用可能)を使用します。
成功のためのヒント
- Webhookを最初に自分のサーバーに接続し、サードパーティサービスに直接接続しないでください。
- OneSignal WebhookはすべてのパブリックAPIを呼び出すことができますが、自分のサーバーを経由することで、より多くの制御が得られます。
- デバッグ、ログの追加、認証の処理、必要に応じたリクエストの調整またはキューイングが容易です。
- サードパーティサービスは、ボリュームが急増した場合にリクエストをレート制限またはブロックする可能性があり、OneSignalはこれらの制限を管理しません。
- Webhook実行は、ユーザーがジャーニーのそのステップに到達するとすぐに発生します。
- 多くのユーザーが一度にWebhookステップに到達すると、OneSignalはレート制限なしでHTTPリクエストのバーストを送信します。
- これにより、外部サービスを簡単に圧倒したり、レート制限をトリガーしたり、予期しない料金が発生したりする可能性があります。
- 次のことができる軽量APIレイヤーまたはキューイングプロキシを構築することを検討してください:
- Webhookを確実に取り込む
- レート制限またはバッチ処理を適用する
- サードパーティサービスへのリクエストを正常にルーティングする
- サードパーティAPIは慎重に使用してください:
- ほとんどの人気のあるツール(例:Slack、Twilio、Segment)は、パブリックHTTP APIを提供しています。
- レート制限、認証要件、エラー処理戦略を確認してください。
- ドキュメントでコード例を検索して、Webhookリクエストがどのようなものかを確認してください。
Webhookを保護する
リクエストがOneSignalから送信され、改ざんされていないことを確認するには:- 共有シークレットを使用してHMAC署名ヘッダーを使用する
- ヘッダーにカスタム認証トークンを追加し、サーバー側で検証する