If a client paid but the appointment didn't appear, the cause is almost always the booking webhook.
Checklist
- Razorpay → Webhooks → Recent Deliveries: is the
payment_link.paidevent returning 200? A 400 means the webhook secret is missing or doesn't match. - Confirm the booking webhook secret in Razorpay matches the one configured for Calvy.
- Open the appointment list — Calvy also has a fallback that creates the appointment when the client lands on the success page, so it may appear shortly after.
Once the webhook returns 200, paid bookings appear instantly. See Configuring Razorpay webhooks.