feat(dataplane): record delivery attempt request/response timestamps#2694
Merged
Conversation
add per-attempt requested_at (request sent) and responded_at (response received) to delivery attempts. responded_at is null when the endpoint returns no HTTP response (network error or timeout). include acknowledged_at, requested_at and responded_at in eventdelivery.* meta event payloads so the push payload matches the delivery attempt polling api. surface delivery_mode in the dashboard: a selector on the subscription form and a delivery mode indicator on the event delivery details page. migration adds nullable requested_at/responded_at columns to delivery_attempts; partition and unpartition rebuilds preserve them.
olamilekan000
approved these changes
Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
requested_at(when the request is sent) andresponded_at(when the response is received).responded_atis null when the endpoint returns no HTTP response (network error or timeout).acknowledged_at,requested_atandresponded_attoeventdelivery.*meta event payloads so the pushed payload matches the delivery attempt polling API.delivery_modein the dashboard: a selector on the subscription form, and a delivery mode indicator on the event delivery details page.Details
requested_at/responded_atcolumns todelivery_attempts. The partition and unpartition rebuilds copy the new columns so existing data is preserved.Test plan
parseAttemptFromResponsefor success, response-with-error-status, and no-response (responded_at null)acknowledged_at,requested_at,responded_atNote
Medium Risk
Touches the core webhook delivery worker and
delivery_attemptsschema/partition migrations; nullable columns and tests limit blast radius, but incorrect timestamps could affect observability and meta-event consumers.Overview
Adds
requested_atandresponded_aton delivery attempts end-to-end: nullable DB columns (migration + partition rebuilds), worker capture on initial delivery and retry (responded_atonly when an HTTP status is received), persistence/API exposure, and OpenAPI updates.Meta events now include
acknowledged_aton the delivery envelope and the attempt’srequested_at/responded_atineventdelivery.*payloads so webhook consumers match the polling API.The dashboard gains delivery mode configuration on subscriptions and an at most once indicator on event delivery details, plus Requested/Responded timestamps on the attempt panel when present (legacy rows stay hidden).
Reviewed by Cursor Bugbot for commit 3321bcb. Bugbot is set up for automated code reviews on this repo. Configure here.