# Webhook で Drime Sign のイベントを受け取る

Drime Sign でドキュメントが送信、閲覧、署名、辞退、完了されたときにサーバーで HTTP 通知を受け取り、各リクエストが Drime から届いたものか確認します。

更新日：2026-10-21  
出典：https://drime.cloud/ja/support/integrations-and-api/sign-webhooks

Webhook を使うと、署名リクエストで何かが起こるたびに、Drime からサーバーにリクエストが送られます。各リクエストは JSON の `POST` で、シークレットで署名されているため、Drime から届いたものかどうかをサーバーで確認できます。

## Webhook を追加する

1. **設定** \> **開発者** \> **Webhook** を開きます。

   Sign から開く場合は、**環境設定**をクリックして **Webhook** タブを開き、**開発者設定を開く**をクリックします。

2. **Webhook を追加**をクリックします。

3. **エンドポイント URL** に、リクエストを受け取るサーバーのアドレスを入力します。

4. **イベント**で、受け取りたいイベントをそれぞれ**オン**にして、**Webhook を作成**をクリックします。

   **Webhook を作成しました**と表示されれば完了です。

5. この時点でシークレットをコピーしてから、**完了**をクリックします。

   **Webhook のシークレット：今すぐコピーしてください**とあるとおり、シークレットは一度しか表示されません。安全な場所に保管してください。

![新しい Webhook のダイアログ。デモサーバーのエンドポイント URL と、Drime Sign のイベント一覧が表示されている](https://drime.cloud/media/01M5F06YR56KKN1FP1T6WCV3QW/8adc8de810cf-web-sign-webhook-create.png)

## イベント

| イベント | 送信されるタイミング |
| --- | --- |
| `envelope.sent` | ドキュメントが署名に回されたとき |
| `envelope.completed` | すべての署名者が署名したとき |
| `envelope.declined` | 署名者が辞退し、ドキュメントが辞退扱いになったとき |
| `signer.viewed` | 署名者がドキュメントを開いたとき |
| `signer.signed` | 署名者が署名したとき |
| `signer.declined` | 署名者が辞退したとき |
| `template.created` | テンプレートが作成されたとき |

## Drime から送られる内容

各リクエストには、次のヘッダーが含まれます。

- `X-Drime-Event`：イベント（例：`envelope.completed`）
- `X-Drime-Delivery`：配信の番号
- `X-Drime-Signature`：`sha256=` に続けて、シークレットで計算した生のボディの HMAC SHA-256

JSON のボディには、`event_type`、`event_uuid`、`timestamp`、`data`（対象のドキュメントとその署名者）が含まれます。**Webhook** セクションの**リクエストの例と署名の検証**に、完全な例が表示されます。

同じ配信が複数回届くことがあります。`event_uuid` を使って、各イベントを1回だけ処理してください。

## 署名を検証する

シークレットを使ってリクエストの生のボディの HMAC SHA-256 を計算し、`X-Drime-Signature` ヘッダーと比較します。Node.js の場合の例は次のとおりです。

```js
import crypto from 'node:crypto';

function isFromDrime(rawBody, header, secret) {
  const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  return header.length === expected.length && crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}
```

JSON として解析する前の、受け取ったままのボディを使ってください。

## 配信をテスト・確認する

- **テスト送信**でテストイベントを送信できます。**テストイベントをキューに追加しました。配信ログをご確認ください**と表示されます。
- **配信履歴**には、各リクエストがステータス（**成功**、**保留中**、**失敗**）とともに一覧表示されます。**再送信**で配信をもう一度送信できます。
- サーバーが応答しない場合やエラーを返した場合、Drime は約34時間にわたって最大10回まで再試行します。
- **オン**／**オフ**のスイッチで、Webhook を削除せずに一時停止できます。一時停止すると **Webhook を一時停止しました**、再び有効にすると **Webhook を有効にしました**と表示されます。

## シークレットの変更と Webhook の削除

- **鍵を再生成**で新しいシークレットを作成します。アプリに**シークレットを再生成しますか？現在のシークレットは直ちに使用できなくなります。** と警告が表示されます。すぐにサーバーの設定を更新してください。
- **削除**で Webhook を削除します。**この Webhook とその配信履歴を削除しますか？** と確認が表示されます。

## うまくいかない場合

| 表示される内容 | 対処方法 |
| --- | --- |
| **エンドポイント URL を入力してください** | Webhook を作成する前に、サーバーのアドレスを入力してください。 |
| **イベントを少なくとも1つ有効にしてください** | **イベント**でイベントを1つ以上選んでください。 |
| 配信が**失敗**のままになる | サーバーにインターネットからアクセスでき、成功を示すコードを返すことを確認してください。そのあと、**再送信**をクリックします。 |
| サーバーで署名の検証に失敗する | 解析した JSON ではなく生のボディで HMAC を計算し、現在のシークレットを使ってください。**鍵を再生成**のあとは、古いシークレットは使えません。 |

## 次のステップ

- [アプリを開発する・Webhook を接続する](https://drime.cloud/ja/support/integrations-and-api/build-an-integration)
- [API トークンを作成する](https://drime.cloud/ja/support/integrations-and-api/api-tokens)
- [署名済みドキュメントの監査証明書の内容](https://drime.cloud/ja/support/sign/audit-trail-and-certificate)
