HEX
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/8.4.25
System: Windows NT DESKTOP-4TAV2RJ 10.0 build 19045 (Windows 10) AMD64
User: fred (0)
PHP: 8.4.25
Disabled: NONE
Upload Files
File: C:/Users/fred/.codex/.tmp/plugins/plugins/zoom/skills/webhooks/troubleshooting/common-issues.md
# Common Issues

Quick diagnostics for Zoom Webhooks integrations.

## Signature Verification Fails (401 / "Invalid signature")

**Common causes**:
- You are computing the HMAC over a **re-serialized** body (different whitespace/key order).
- You are using the wrong secret (webhook secret vs OAuth secret).
- You are not including the `v0:{timestamp}:{body}` prefix exactly.

**Fix**:
- Verify signatures using the exact raw request body bytes (capture raw body before JSON parsing).
- Validate both `x-zm-signature` and `x-zm-request-timestamp` and reject stale timestamps (replay protection).

See: [verification.md](../references/verification.md)

## Timeouts / Retries / Duplicate Events

**Symptom**: Zoom retries delivery, you process the same event multiple times.

**Fix**:
- Respond fast (acknowledge ASAP, then enqueue work).
- Make handlers idempotent (dedupe by event ID/timestamp + payload identifiers).

## URL Validation Fails

**Symptom**: You can’t enable the webhook endpoint in Marketplace; validation fails.

**Fix**:
- Implement `endpoint.url_validation` response correctly (plainToken + encryptedToken).

See: [verification.md](../references/verification.md)