監視と失敗時の対応
Webhook
監視
配信ログ
障害対応
Webhookは動いている間は静かなので、止まっても気づきにくい仕組みです。しかも4回続けて配信に失敗するとWebhookは自動で無効になり、その間のイベントは届きません。この記事では、レシートローラーで確認できる配信の状態と、止まったことに早く気づいて復旧する方法を説明します。
確認できる情報
| 情報 | どこで見るか | わかること |
|---|---|---|
active |
GET /api/v1/webhooks/{id}、開発者ポータルのアプリ詳細(有効/無効) |
false なら配信が止まっています。一時停止したか、4回続けて失敗して自動で無効になりました |
lastDeliveredAt |
GET /api/v1/webhooks/{id}、アプリ詳細の「最終送信」 |
最後に配信が成功(2xx)した日時(UTC)。テスト送信では更新されません |
| 配信ログ | GET /api/v1/webhooks/{id}/deliveries |
直近50件の試行ごとの結果 |
配信ログは開発者ポータルの画面には表示されません。APIで取得します。
配信ログの見方
curl https://receiptroller.io/api/v1/webhooks/{webhook_id}/deliveries \
-H "Authorization: Bearer {access_token}"
[
{
"id": "wdl_xxxxxxxxxxxx",
"webhookId": "wh_xxxxxxxxxxxxxxxx",
"eventType": "receipt.created",
"httpStatus": 503,
"success": false,
"attemptCount": 2,
"errorMessage": null,
"attemptedAt": "2026-10-26T03:16:44.0000000"
}
]
- 試行1回につき1行で、新しい順に最大50件が返ります。期間や状態で絞り込むパラメーターはありません
attemptCountはそのイベントの何回目の試行か(1〜4)ですhttpStatusは受信側が返したステータスです。0は接続できなかった、または10秒以内に応答がなかったことを示し、errorMessageに理由が入りますattemptedAtはUTCです- イベントID(
X-RR-Delivery)、ボディ、受信側のレスポンスボディは記録されません。どのイベントの試行かを突き合わせるには、受信側でX-RR-Deliveryと受信時刻をログに残してください - テスト送信は記録されません
止まったことに気づく
レシートローラーからWebhookの失敗や無効化を知らせる通知は届きません。自分の側で次のように見張ります。
- 無効化の検知:定期的に
GET /api/v1/webhooksを呼び、activeがfalseのものがあれば通知する。もっとも大事な監視です - 失敗の増加:配信ログで
success: falseの行や、attemptCountが2以上の行が続いていないかを見る - 届かなくなったこと:営業時間中に
lastDeliveredAtが長く更新されていなければ、受信側か連携元に問題がある可能性があります - 受信側の記録:受信件数(イベントごと)、署名検証の失敗件数、重複として捨てた件数、応答までの時間を残すと、原因を早く絞り込めます
止まったときの復旧
- 配信ログの
httpStatusとerrorMessageから原因を確認し、受信側を直します - テスト送信(
POST /api/v1/webhooks/test/{id})でsuccess: trueになることを確かめます。テスト送信は無効になっているWebhookにも送れます PATCH /api/v1/webhooks/{id}に{ "active": true }を送るか、開発者ポータルの再開ボタンで有効に戻します- 止まっていた間のイベントは届かないので、その期間の売上を取引一覧APIで取得して補います
よくある原因
| 配信ログ | 考えられる原因 |
|---|---|
httpStatus: 0 | 受信URLに届かない(DNS、TLS証明書、ファイアウォール、サーバー停止)か、10秒以内に応答していない |
401 / 403 | 受信側で署名検証に失敗している。シークレットの取り違えや、生のボディで計算していないことが多い(署名検証とセキュリティ) |
404 | 受信URLのパスが変わった。URLはあとから変えられないので、新しいURLでWebhookを登録し直す |
5xx | 受信側の処理が失敗している。重い処理や外部サービスへの送信を応答の後に回す(再送・順序・冪等性の設計) |
| 記録がない | 配信されていない。Webhookが届かないを参照 |
定期的に見直すこと
- 使っていないWebhookを削除する
- 送信されないイベント(
receipt.updatedなど)だけを購読しているWebhookがないか確認する - Webhookとの突き合わせに使うAPIでの定期取得が動いているか確認する
関連ガイド
公開日: 2026-04-27
更新日: 2026-10-26
カテゴリ
タグ
API (26)
OAuth (21)
Android (13)
iOS (12)
Webhook (9)
api (6)
oauth (5)
クイックスタート (5)
トラブル (5)
Node.js (4)
関連記事
-
Webhookの登録方法開発者ポータルの画面とAPIでWebhookを登録する手順、購読イベントの選び方、テスト送信、変更・一時停止・削除の方法を説明します。
-
SNS Webhookバイパス(LINEなど外部SNSのWebhook転送)レシートローラーがLINE等のSNSプラットフォームから受け取ったWebhookを、店舗側の同意のもとで開発者アプリへ転送する「SNS Webhookバイパス」機能の仕組み、設定方法、署名の取り扱い、注意点を解説します。
-
Webhookが届かないWebhookが届かないときに、テスト送信と配信ログで原因を切り分け、無効化・購読イベント・接続・署名検証を順に確認する手順です。
-
開発者向けヘルプ目次レシートローラー開発者向けヘルプ目次です。開発者申請、アプリケーション登録、OAuth認証とスコープ、実装ガイド(ウォレットアプリ・店舗向けWebhook・Survey API)、データ領域別ガイド、運用とセキュリティ、コミュニティ、トラブルシューティングまでをまとめています。
-
再送・順序・冪等性の設計Webhookの成功条件と再送の規則(1分・10分・1時間、最大4回)、順序と取りこぼし、X-RR-Deliveryで重複を除く受信側の作り方を説明します。