Webhooks are how Razorpay notifies Calvy that a payment or subscription event happened. Without them, a payment can succeed but the booking/plan won't update.
Set up two webhooks (Razorpay → Settings → Webhooks)
| Endpoint | Events |
|---|---|
https://calvy.io/api/razorpay/webhook |
payment_link.paid |
https://calvy.io/api/billing/webhook |
all subscription.* events |
For each webhook, set a secret, and make sure the same secret is configured for Calvy. After saving, send a test event and confirm it returns 200 in Razorpay's "Recent Deliveries".
If bookings or plans aren't updating after payment, a missing or mismatched webhook secret is the most common cause.