本文へ移動
Developers

Guide

Webhookを処理する

Webhookは少なくとも一回届く前提で、署名を検証し、event IDで重複を除外してから処理します。

Delivery flow

  1. 1
    受信

    raw bodyと署名ヘッダーを保持

  2. 2
    検証

    時刻とHMAC署名を検証

  3. 3
    重複排除

    evt_preview_01を一意に記録

  4. 4
    処理

    Jobを再取得して次工程へ

Verify the signature

Pseudo verification
const expected = hmacSha256(webhookSecret, timestamp + "." + rawBody);if (!timingSafeEqual(signature, expected)) {  return new Response("invalid signature", { status: 401 });}
JSON化する前のbodyを使う

署名対象はraw bodyです。parse後に再構築したJSONで検証しません。

Retries and duplicates

状況期待する処理
2xx配信完了
408 / 429 / 5xx指数バックオフで再送
同じevent ID成功済みなら副作用を再実行しない
順序が前後Jobを再取得して現在状態を正本にする

Event reference