The nine destinations
| Logo | Destination | Type |
|---|---|---|
| Slack | Slack | Block Kit message |
| Discord | Discord | Embed |
| Teams | Microsoft Teams | Adaptive Card |
| Mattermost | Mattermost | Slack-compatible |
| Rocket.Chat | Rocket.Chat | Slack-compatible |
| Google Chat | Google Chat | Cards v2 |
| Zulip | Zulip | Text message with topic |
| Telegram | Telegram | sendMessage (per chat ID) |
| Webhook | Generic webhook | Stripe-shaped JSON |
What’s the same across destinations
Every destination shares the same delivery infrastructure:- Per-destination signing secret, prefixed
algvw_…, rotatable from the dashboard. - Auto-retry: 30s, 2 min, 10 min, 1 h, 6 h, then dead-letter. Six attempts over about 32 hours.
- Audit log at
dash.algovoi.co.uk/notificationsshowing every delivery attempt with status, attempt count, last HTTP code, last error, payload preview. - Manual retry: the audit log has a “retry” button for failed deliveries.
- At-least-once delivery: receivers must dedupe on the event
id.
What’s different
For chat-style destinations, AlgoVoi builds a human-readable message tailored to that destination’s card format (Slack Block Kit, Teams Adaptive Card, etc.). For the generic webhook, AlgoVoi sends a Stripe-shaped event JSON.Configuring destinations
In the dashboard go to Settings → Notifications. Add a destination:- For Slack, paste an incoming-webhook URL.
- For Discord, paste a channel webhook URL.
- For Teams, paste a workflow URL.
- For Telegram, paste a bot token plus a chat ID.
- For the generic webhook, paste any HTTPS URL.
Same offer text everywhere
Adding a tenth destination is a one-file change in the gateway. The existing nine all share the same payload-builder dispatch table.Reliability
Notifier failures never block on-chain confirmation. The first delivery attempt fires inline at payment confirmation (typically sub-second), but if it fails, the customer-facing 200 response is unaffected. The retry queue picks up failed deliveries on a 30-second tick.See also
- Outbound webhooks for the generic-webhook payload schema
- Quickstart for setting up your first webhook