LumireCRM

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

EventWhen fired
trader.createdA new trader was provisioned (signup, manual add, lead conversion).
trader.updatedTrader profile fields, KYC level, or tags changed.
trader.deletedTrader was soft-deleted (will be hard-deleted after 30 days per GDPR).
lead.createdNew sales lead captured (form, marketing campaign, manual entry).
lead.convertedLead converted to a trader.
kyc.requestedTrader uploaded KYC docs and submitted for review.
kyc.approvedKYC submission was approved (manual or auto via Sumsub).
kyc.rejectedKYC submission was rejected; reason in payload.detail.
deposit.createdPending deposit created (awaiting gateway settlement).
deposit.settledDeposit confirmed by gateway (Stripe / PayPal / Coinbase / bank).
deposit.failedGateway returned a hard failure.
withdrawal.requestedTrader requested a withdrawal.
withdrawal.approvedWithdrawal approved by an operator.
withdrawal.paidWithdrawal funds dispatched.
withdrawal.rejectedWithdrawal denied; reason in payload.detail.
position.openedNew trading position opened on a connected platform.
position.updatedPosition price/profit changed (sent on each sync delta).
position.closedPosition was closed.
support.ticket_createdTrader or operator opened a ticket.
support.ticket_repliedNew message added to an existing ticket.
support.ticket_closedTicket marked resolved.