What you get
When a payment confirms, AlgoVoi delivers apayment.confirmed event to one or more destinations you configure in Settings → Notifications:
- 9 destinations: Slack, Discord, Microsoft Teams, Mattermost, Rocket.Chat, Google Chat, Zulip, Telegram, generic webhook (your own backend).
- Stripe-shaped event JSON for the generic webhook. Chat destinations get human-readable cards instead.
- HMAC-SHA256 signing in Stripe-compatible header format.
- Auto-retry up to 32 hours with exponential backoff.
- Audit log at
dash.algovoi.co.uk/notificationsshowing every delivery attempt with status, attempt count, last HTTP code, last error, and a payload preview. - Manual retry button for failed deliveries.
Generic webhook event schema
Field notes
HMAC verification
Header:X-AlgoVoi-Signature: t={unix_ts},v1={hex}
Verify by:
- Parsing
tandv1from the header. - Rejecting if
abs(now - t) > 300. Five-minute tolerance, replay window. - Computing
hmac_sha256(secret, f"{t}.{raw_body}"). - Comparing in constant time with
v1.
Python example
Node example
Retry schedule
If your endpoint returns non-2xx or times out (5 second timeout per attempt), AlgoVoi schedules a retry:
Six attempts over about 32 hours. After the sixth, the delivery is marked
failed. You can manually retry from the dashboard audit log even after dead-letter.
Idempotency contract
Receivers must dedupe onid. AlgoVoi guarantees at-least-once delivery, not exactly-once. The same event may arrive twice if:
- Your endpoint returned 2xx but we didn’t receive the response in time
- A worker process restarted mid-delivery
- A maintenance retry fired against a delivery that had already succeeded
id) is your responsibility.
Status codes
AlgoVoi treats responses by status family:
For events you intentionally don’t handle (future event types), return 200 with a body indicating you ignored it. 4xx will trigger retry storms.
See also
- Notifications concept page for the broader picture (9 destinations, audit log)
- Quickstart to set up your first webhook