Summary
The SDK has generated reporting webhook payloads (ReportingDeliveryReadyWebhook, ReportingStatusChangedWebhook, and ReportingLedgerChangedWebhook) and durable generic webhook sender/supervisor primitives, but ReportingProducer/the reporting ledger has no transactional event or outbox seam connecting committed ledger changes to those publishers.
An adopter that sends after commit can lose a notification on process crash. Sending before commit can publish an event for state that never committed. Reimplementing this bridge in every seller defeats the reliability feature.
The same missing integration prevents honest advertisement of supports_webhook_activity: AdCP expects retained, account-scoped delivery attempts to be returned by list_accounts(include_webhook_activity=true), not merely the ability to make an HTTP request.
Desired SDK behavior
- Persist a reporting notification/outbox record atomically with the ledger transition it describes.
- Map committed transitions to the generated reporting webhook payloads with stable notification IDs and idempotency keys.
- Dispatch through the existing hardened sender/supervisor, including tenant-scoped signing resolution.
- Retain delivery attempts and expose an account-scoped projection/helper suitable for
list_accounts webhook activity.
- Supply capability helpers/boot validation so
supports_webhook_activity and reporting webhook support are advertised only when the durable components are configured.
An adopter-owned callback may remain as an escape hatch, but the PostgreSQL happy path should not require a second transaction or custom queue implementation.
Acceptance criteria
Adopter impact
This is what lets a buyer-side agent ask “has this publisher sent reporting automatically?” and lets a seller proactively notify/ping the buyer without building an unreliable parallel event system around the SDK ledger.
Summary
The SDK has generated reporting webhook payloads (
ReportingDeliveryReadyWebhook,ReportingStatusChangedWebhook, andReportingLedgerChangedWebhook) and durable generic webhook sender/supervisor primitives, butReportingProducer/the reporting ledger has no transactional event or outbox seam connecting committed ledger changes to those publishers.An adopter that sends after commit can lose a notification on process crash. Sending before commit can publish an event for state that never committed. Reimplementing this bridge in every seller defeats the reliability feature.
The same missing integration prevents honest advertisement of
supports_webhook_activity: AdCP expects retained, account-scoped delivery attempts to be returned bylist_accounts(include_webhook_activity=true), not merely the ability to make an HTTP request.Desired SDK behavior
list_accountswebhook activity.supports_webhook_activityand reporting webhook support are advertised only when the durable components are configured.An adopter-owned callback may remain as an escape hatch, but the PostgreSQL happy path should not require a second transaction or custom queue implementation.
Acceptance criteria
list_accounts(include_webhook_activity=true).Adopter impact
This is what lets a buyer-side agent ask “has this publisher sent reporting automatically?” and lets a seller proactively notify/ping the buyer without building an unreliable parallel event system around the SDK ledger.