Act on verified events only
A webhook URL is public and forgeable. Never trust the body alone. Verify the signature over the raw bytes (the exact bytes received, not a re-serialised copy) before doing anything, and return a non-200 so the service knows to retry.
Be fast and idempotent
Handlers run on a hot path. Do the work fast or hand it to a queue, and make it idempotent using the event id, because services resend events. A handler that double-counts on a resend is the classic webhook bug.