Skip to content

Implement webhook delivery with retry and ordering guarantees #28

Description

@grantfox-oss

src/config.rs accepts WEBHOOK_URLS but there is no implementation of webhook delivery. Without webhook dispatch, external systems cannot react to registration and revocation events in real time. There is no retry strategy, no ordering guarantee across multiple webhooks, and no dead-letter queue for failed deliveries.

Evidence:

  • src/config.rs parses WEBHOOK_URLS from environment.
  • src/event.rs defines webhook event structures but they are not sent.
  • No integration between contract events or Soroban event parsing and webhook transmission.
  • No exponential backoff, jitter, or dead-letter queue implementation.

Impact:

External systems miss critical events or receive them out of order, leading to stale replicas and inconsistent user experience. Failed webhooks corrupt external database state if retried naively.

Likely files to change:

  • src/event.rs
  • src/config.rs
  • src/stellar.rs
  • src/metrics.rs
  • src/cache.rs
  • Cargo.toml
  • README.md
  • New webhook dispatch module or service

Acceptance criteria:

  • Webhook events are dispatched asynchronously after event finalization.
  • Failed deliveries trigger exponential backoff with jitter.
  • Webhook delivery includes idempotency tokens based on transaction hash and event index.
  • Dead-letter queue captures failed deliveries for manual replay.
  • Multiple webhook recipients are contacted in order without skipping.
  • Metrics track delivery latency, failure rate, and dead-letter queue depth.
  • README documents webhook event schema and retry semantics.

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official CampaignenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions