Monitor your Paddle webhook

If your Paddle webhook endpoint goes down for an hour, subscription activations queue up silently. Customers paid but have no plan. You don't find out from Paddle — you find out from a support ticket.

A naïve monitor that just sends GET /api/payments/webhook won't help: it'll return 405 and your verifier will reject unsigned payloads. Here's how to do it right.

Approach 1 — POST a synthetic payload (recommended)

Valpero supports POST monitors with custom headers and body. Add a lightweight ping path that short-circuits Paddle's signature check when a special token is present.

1. Add a ping bypass to your webhook handler

@router.post("/api/payments/webhook")
async def payment_webhook(request: Request):
    if request.headers.get("x-valpero-ping") == settings.VALPERO_PING_TOKEN:
        return {"ok": True, "ping": True}
    raw_body = await request.body()
    sig = request.headers.get("paddle-signature", "")
    # …normal Paddle verification below

2. Create a Valpero monitor

HTTP, POST, body {}, header X-Valpero-Ping: <your token>. Add a keyword check for "ping": true.

If the endpoint is unreachable, returns 5xx, or stops matching the keyword, Valpero alerts you within 30 seconds (Pro plan).

Approach 2 — Watch a downstream side-effect (heartbeat)

If you can't modify the webhook handler, watch what happens after a real event lands. After each successful transaction.completed event, hit a Valpero heartbeat URL:

import httpx
await httpx.get("https://valpero.com/heartbeat/PING_TOKEN")

If no event arrives in N minutes, Valpero alerts you. Catches both "endpoint down" and "Paddle stopped sending events."

Don't rely on heartbeats alone — they miss the case where your endpoint quietly returns 200 but doesn't process the event. Combine with Approach 1.

Bonus — monitor Paddle's own status

Add a Valpero monitor against https://status.paddle.com/ with a keyword check for All Systems Operational. When Paddle itself is degraded, you'll know before your customers do.

Wrapping up

Three monitors total — synthetic POST, heartbeat, Paddle's status. Together they cover the full failure surface with minimal overhead.

// share:
// try the tools: SSL · DNS · Ping · Headers

Stop checking by hand. Get paged automatically.

Free forever for one site. No card required.

Start free →
// related
Custom domain for your status page
6 min read
Redeeming an AppSumo / lifetime deal code
3 min read
Free web tools — what each one does
5 min read