> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# テスト

> Webhook のテストとデバッグ

本番環境にデプロイする前に、webhook 連携が正しく動作することを確認してください。このページでは、ローカル環境で webhook を受信する方法と、配信や確認でよくある失敗の原因を特定する方法について説明します。

<div id="local-development">
  ## ローカル開発
</div>

Webhook には公開アクセス可能な URL が必要なため、開発中はローカルサーバーをインターネットに公開する必要があります。

<div id="using-cloudflare-tunnels">
  ### Cloudflare Tunnels の利用
</div>

[Cloudflare Tunnels](https://github.com/cloudflare/cloudflared/releases) は、ファイアウォールのポートを開放することなくローカルサーバーを公開できる無料の手段です。

```bash theme={null}
cloudflared tunnel --url localhost:3000
```

`https://abc123.trycloudflare.com` のような公開 URL が発行されます。この URL を Webhook の設定で使用してください：

```json theme={null}
{
  "url": "https://abc123.trycloudflare.com/webhook"
}
```

<div id="troubleshooting">
  ## トラブルシューティング
</div>

<div id="webhooks-not-arriving">
  ### webhook が届かない
</div>

* **エンドポイントにアクセスできない** - サーバーがインターネットから到達可能であり、ファイアウォールが受信接続を許可していることを確認してください
* **HTTP を使用している** - webhook の URL は HTTPS を使用する必要があります
* **イベントが間違っている** - webhook 設定の `events` フィルターを確認してください
* **タイムアウトエラー** - エンドポイントが 10 秒以内に応答することを確認してください

<div id="signature-verification-failing">
  ### 署名検証が失敗する
</div>

最もよくある原因は、生のリクエストボディではなく、パース済みの JSON ボディを使用していることです。2つ目の原因は誤ったシークレットを使用していることです。[アカウント設定](https://www.firecrawl.dev/app/settings?tab=advanced)の値と一致しているか確認してください。

```javascript theme={null}
// ❌ 誤り - 解析後のボディを使用している
const signature = crypto
  .createHmac('sha256', secret)
  .update(JSON.stringify(req.body))
  .digest('hex');

// ✅ 正解 - 生のボディを使用する
app.use('/webhook', express.raw({ type: 'application/json' }));
app.post('/webhook', (req, res) => {
  const signature = crypto
    .createHmac('sha256', secret)
    .update(req.body) // 生のバッファ
    .digest('hex');
});
```
