A project enquiry has two different outcomes: saving the brief and telling someone that it arrived. Treating those as one synchronous network operation creates an unnecessary failure dependency. If notification fails after the lead is saved, the visitor may retry and create a duplicate.
The conversion implementation saves a lead and a notification job in the same transaction. The request returns after persistence. A separate worker delivers the event with an ID the receiver can deduplicate, then records success or schedules another attempt.
The browser carries a submission key through uncertain retries. The backend compares a hash of the submitted data before returning an existing receipt. Reusing a key with a changed brief is a conflict, so the form creates a new key when the details change.
An enquiry contract
- Acknowledge persistence before showing success.
- Persist notification work alongside the lead.
- Bound retries and keep a visible failed state.
- Run analytics after acknowledgement and isolate its failures.