Here’s a situation a contact form needs to handle: someone writes a message, presses Send, and the website saves it. Then the service meant to notify the business stops responding.
Should the form ask that person to try again?
Our form acknowledges the saved message. The inquiry is already in our care, even if the notification fails. Asking someone to submit it again would make them repeat their work and could create a duplicate.
That choice comes with a responsibility on our side.
What “received” actually means
Our contact service saves the inquiry in a database before attempting to notify us. If saving fails, the form reports an error and offers email as a fallback. It shouldn’t claim to have a message it couldn’t keep.
If saving succeeds but notification fails, the inquiry stays recorded with that failure attached.
Even a successful notification response tells us only that the receiving service accepted the request. It doesn’t prove that an email reached an inbox, let alone that a person read it. Those are different steps.
A timeout is an awkward kind of uncertainty
When a request times out, the sender stops waiting for a response. That doesn’t necessarily mean the receiver did nothing. It might have accepted the notification before the connection failed.
Simply sending again can therefore send twice.
Our service gives each inquiry an ID and includes it with the notification, so the receiver has a way to recognize a repeat. The form also checks repeated submissions. An identical message from the same email address is suppressed for 24 hours, ignoring differences in whitespace.
There’s a cost to that rule: an intentional identical submission during that window is suppressed too. It’s a deliberate boundary, not a perfect reading of someone’s intentions.
The unfinished part still needs an owner
At the time of this note, our contact service does not automatically retry failed notifications. Its operational report surfaces failures and inquiries whose notifications have remained pending long enough to need attention.
The message is recoverable, but someone still has to handle it. Saving a record isn’t a substitute for following up.
That’s the part we want the form to get right: once it tells you we have your message, the remaining problem belongs on our side of the counter.