Webhooks
Qefro consumes webhooks from billing and messaging providers. Configure secrets in the Admin Console and always verify signatures / challenges.
Short definition (citation-ready)
Qefro billing webhooks verify Razorpay signatures and update entitlements; WhatsApp webhooks verify Meta challenges and ingest inbound customer messages into a bound workspace.
Billing (Razorpay)
| Item | Detail |
|---|---|
| Endpoint | POST /api/v1/billing/webhook |
| Auth | Razorpay signature verification |
| Important events | payment.captured, payment.failed, subscription lifecycle |
| Failures | Stored with error_code / error_reason / error_description when present |
| Idempotency | Order-level guards against duplicate captures |
Enable payment.failed in the Razorpay Dashboard webhook settings or failures may not appear in-product.
WhatsApp (Meta Cloud API)
| Item | Detail |
|---|---|
| Verify | GET /api/v1/whatsapp/webhook |
| Inbound | POST /api/v1/whatsapp/webhook |
| Config | Encrypted tokens + workspace binding in Admin Console |
| Plan | Growth+ |
Guide: Deploy WhatsApp AI.
Architecture
Workflow
Operate webhooks safely
- Copy endpoint URLs from docs/console — HTTPS only.
- Set secrets in provider + Qefro — Never commit them.
- Send a test event — Confirm 2xx and in-app effect.
- Monitor failures — payment.failed + Meta delivery errors.
- Rotate secrets on staff change — Update both sides.
FAQ
Can I push outbound webhooks from Qefro to my server?
Prefer Business Tools for request/response integrations. Outbound event webhooks may expand later — check Release Notes.
Why is my plan not upgrading after payment?
Confirm Razorpay webhook delivery, signature secret, and that captured events reached /billing/webhook. Check Billing UI and support.