Events and retries can reach your application at different times. Receipt order alone is not a reliable timeline of what the recipient saw. Use the message reference and event timestamps, and handle repeated events without repeating customer actions.
Compare the stored message state with the incoming events before marking delivery as lost. Preserve a small redacted sequence for support if states contradict each other. Include event types, message reference, and times; omit signing secrets and customer content. Do not resend solely because an earlier event arrived late.