Localhost
Webhook localhost by framework
These pages are for a handler you already run in a specific framework. They are not the general how to test webhooks walkthrough, and they are not a symptom list. Each article uses that framework’s real port, route file, and body-parsing rules.
Mercur is not affiliated with Vercel, the Express maintainers, the FastAPI project, or the Django Software Foundation. Provider signature rules come from Stripe and GitHub docs, not from Mercur.
Inspect the request Connect localhost
Pick the framework
Next.jsNext.js webhook localhostApp Router Route Handler on 3000. request.text() before constructEvent.ExpressExpress webhook localhostexpress.raw() on 127.0.0.1:3000. Global express.json() breaks GitHub HMAC.FastAPIFastAPI webhook localhostUvicorn on 8000. await request.body() before json.loads; not payload: dict.DjangoDjango webhook localhostcsrf_exempt + ALLOWED_HOSTS for *.mercur.sh. request.body, not request.POST.
Not in this wave
Flask, Nest, Laravel, Rails, and Spring Boot are omitted until we can publish a handler that is not the same article with a different name. If your stack is missing, start with the inspector, then connect localhost to whatever port that process prints.