コンテンツにスキップ

Webhook を設定する

Webhook は、エントリーやメディアが変わったときに、指定した URL へ通知を送る仕組みです。記事を公開したら静的サイトを作り直す、Slack に知らせる、といったことに使います。このページでは、管理画面で Webhook を設定し、届いたかどうかを確かめるまでを説明します。

  • スペースで[Webhook の管理]の権限が要ります。初めからあるロールでは、[オーナー]と[管理者]です
  • 通知を受け取る URL を用意しておきます。Vercel の Deploy Hook、Netlify の Build Hook、Slack の Incoming Webhook なら、それぞれのサービスで URL を発行しておきます

Webhook を作るには、次のようにします。

  1. 管理画面の左のメニューで、[Webhook]を押します。
  2. [Webhook を作成]を押します。
  3. [名前]に、見分けるための名前を入れます(例:「本番サイトの再ビルド」)。
  4. [種類]で、送り先に合うものを選びます(下の「種類」の表)。
  5. [送信先の URL]に、通知を送る URL を入れます。
  6. [対象のコンテンツタイプ]で、通知するコンテンツタイプを選びます。すべてのコンテンツタイプとメディアの変化を通知するときは、[すべてのコンテンツタイプとメディア]のままにします。
  7. [通知するイベント]で、通知したいイベントにチェックを入れます。初めは[エントリーの公開・公開中の更新]と[エントリーの削除]にチェックが入っています。
  8. (省略可)[署名のシークレット]に、8〜256 文字の文字列を入れます。受け手で、通知が Hako CMS から来たことを確かめるときに使います。
  9. (省略可)送り先が認証のヘッダーを求めるときは、[カスタムヘッダー]の[ヘッダーを追加]を押して、[ヘッダー名]と[値]を入れます。
  10. [有効にする]にチェックが入っていることを確かめて、[作成]を押します。

作った Webhook の画面が開きます。続けて、下の「テストを送る」で、届くことを確かめます。

種類 送るもの 使うとき
カスタム 何が起きたかを表す JSON 自分で作った受け手に送る
Vercel(Deploy Hook) 空の JSON Vercel のサイトを作り直す
Netlify(Build Hook) 空の JSON Netlify のサイトを作り直す
Slack(Incoming Webhook) 「記事「…」を公開しました」のような文 Slack のチャンネルに知らせる

[Vercel(Deploy Hook)]と[Netlify(Build Hook)]では、まだ送っていない通知がたまっていれば、1 回にまとめて送ります。続けて何件も公開しても、ビルドが何度も走りません。

[カスタム]で送る JSON の形と、署名の確かめ方は、Webhook を受け取るにあります。

画面の名前 イベント名 いつ送るか
エントリーの公開・公開中の更新 entry.published 公開した。公開中のエントリーを直して公開した
下書きの保存 entry.draft_saved 下書きを保存した(新しく作ったときを含む)
公開終了 entry.unpublished 公開をやめた
エントリーの削除 entry.deleted エントリーを削除した
予約公開の失敗 entry.schedule_failed 予約公開が、公開の決まりに合わずに実行できなかった
メディアの追加 media.uploaded メディアをアップロードした
メディアの削除 media.deleted メディアを削除した
  • 管理画面での操作のほか、API キーでの書き込みでも送ります
  • 予約公開と予約公開終了が実行されたときも、[エントリーの公開・公開中の更新]と[公開終了]を送ります
  • 下書きを捨てたときは送りません
  • メディアのイベントは、[対象のコンテンツタイプ]を[すべてのコンテンツタイプとメディア]にしたときだけ選べます

Webhook の画面で、[テストの送信]を押します。

テストの通知がすぐに送られ、ボタンの横に結果([成功]か[失敗]と、送り先が返した状態コード)が表示されます。テストの通知のイベントは[テスト](ping)です。失敗しても、再送はしません。

[Vercel(Deploy Hook)]と[Netlify(Build Hook)]では、テストでも実際にビルドが始まります。

届いたかを確かめる(送信履歴)

Section titled “届いたかを確かめる(送信履歴)”

Webhook の画面の下の[送信履歴]に、送った通知が新しい順に並びます。

列 中身
日時 送った日時
イベント 送ったイベント
結果 [成功][失敗][送信待ち]と、送り先が返した状態コード
送信回数 送った回数(再送を含む)

[日時]を押すと、その通知の[送った本文]と、送り先の[応答]が開きます。再送を待っているときは、「次の再送:」のあとに日時が出ます。

送信履歴は 30 日で消えます。

送り先が 2xx 以外を返した、つながらなかった、10 秒以内に応答がなかったときは、失敗です。リダイレクト(3xx)も失敗になります。

失敗した通知は、最大 5 回、30 秒、2 分、10 分、1 時間、6 時間の間を置いて、自動で送り直します。

送り先を直したあとで、すぐに送り直したいときは、[送信履歴]でその通知の[日時]を押して開き、[もう一度送る]を押します。「送信を予約しました」と表示され、同じ内容の通知を、もう一度最初から送ります。

Webhook を変える、止める、削除する

Section titled “Webhook を変える、止める、削除する”

Webhook の画面のフォームで値を変えて、[保存]を押します。「保存しました」と表示されます。

  • シークレット: [署名のシークレット]で、[変えない][新しくする][消す]から選びます。[消す]にすると、署名を付けなくなります
  • 一時的に止める: [有効にする]のチェックを外して、[保存]を押します。一覧に[無効]と出て、通知を送らなくなります。止めている間も、[テストの送信]はできます
  • 削除: 右上の[Webhook を削除]を押し、確かめの画面でもう一度[Webhook を削除]を押します。送信履歴も消えます
  1. 対象のコンテンツタイプのエントリーを 1 件公開します(エントリーを書く・公開する)。
  2. [Webhook]の画面で、作った Webhook の名前を押します。一覧の[最後の送信]の列でも、最後の結果が分かります。
  3. [送信履歴]の先頭に、[エントリーの公開・公開中の更新]が[成功]で出ていることを確かめます。

通知は、操作のあと、ふつうは 1〜2 秒で送られます。