Docs · Webhooks
Webhook events
Subscribe a URL to a set of event names and receive HMAC-signed POSTs with a JSON payload. Failed deliveries retry with exponential backoff and surface in the admin /webhooks/{id}/deliveries view for manual replay.
Subscribe
curl -X POST 'http://143.110.171.125:4000/v1/webhooks/subscriptions' \
-H 'X-API-Key: lum_live_REPLACE_ME' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://your-app.example.com/webhooks/lumirecrm",
"events": ["deposit.settled", "withdrawal.requested"]
}'Verify the signature
Each delivery includes X-LumireCRM-Signature (hex HMAC-SHA256 over the raw body using your subscription secret) and X-LumireCRM-Event (the event name). Re-compute and compare in constant time.
Test a subscription
curl -X POST 'http://143.110.171.125:4000/v1/webhooks/subscriptions/{id}/test' \
-H 'X-API-Key: lum_live_REPLACE_ME'Event catalogue
| Event | When fired |
|---|---|
| trader.created | A new trader was provisioned (signup, manual add, lead conversion). |
| trader.updated | Trader profile fields, KYC level, or tags changed. |
| trader.deleted | Trader was soft-deleted (will be hard-deleted after 30 days per GDPR). |
| lead.created | New sales lead captured (form, marketing campaign, manual entry). |
| lead.converted | Lead converted to a trader. |
| kyc.requested | Trader uploaded KYC docs and submitted for review. |
| kyc.approved | KYC submission was approved (manual or auto via Sumsub). |
| kyc.rejected | KYC submission was rejected; reason in payload.detail. |
| deposit.created | Pending deposit created (awaiting gateway settlement). |
| deposit.settled | Deposit confirmed by gateway (Stripe / PayPal / Coinbase / bank). |
| deposit.failed | Gateway returned a hard failure. |
| withdrawal.requested | Trader requested a withdrawal. |
| withdrawal.approved | Withdrawal approved by an operator. |
| withdrawal.paid | Withdrawal funds dispatched. |
| withdrawal.rejected | Withdrawal denied; reason in payload.detail. |
| position.opened | New trading position opened on a connected platform. |
| position.updated | Position price/profit changed (sent on each sync delta). |
| position.closed | Position was closed. |
| support.ticket_created | Trader or operator opened a ticket. |
| support.ticket_replied | New message added to an existing ticket. |
| support.ticket_closed | Ticket marked resolved. |