Event types
Subscribe with an explicit list or
"*" for everything.
Events carry contextual blocks where relevant: trigger (what caused it,
e.g. rule_violation, profit_target, first_trade), ruleType (which
rule fired, e.g. max_loss, daily_loss), payout (payout ID, amounts,
balances), import (import key details), and previousAttributes for
change events.
Verifying signatures
Every delivery is HMAC-SHA256 signed with your endpoint’s secret (whsec_..., shown when you create the webhook).
Request headers:
The signed message is
`${timestamp}.${rawBody}`:
Compute the HMAC over the raw request body, before any JSON parsing —
re-serialized JSON may not match byte-for-byte.
Delivery, retries, and auto-disable
- Your endpoint should respond 2xx within 10 seconds; anything else counts as a failed attempt.
- Failed deliveries retry up to 5 attempts with backoff: immediately, then after 1 min, 5 min, 30 min, and 2 h.
- Consecutive failures eventually auto-disable the endpoint (you can re-enable it from the dashboard or API once your endpoint is healthy).
- Any event can be redelivered on demand from the dashboard or API — which is also why you should deduplicate.
Deduplication
StoreX-Hyperprop-Delivery IDs you’ve processed and skip repeats. Retries
and manual redeliveries reuse the same event payload, so an idempotent
consumer is all you need for exactly-once effects.