An estimate is a proposal sent to a client to accept or decline.
The proposal link carries its own signature
A client needs no account to view or accept a proposal. The link sent to them is signed for that specific estimate, so editing the URL does not reach anyone else's.
Treat the link like a key: whoever holds it can accept that one proposal.
Optional line items are the client's choice
A line item can be marked optional. The client then decides at acceptance whether they want it, and the final total is built from what they chose.
Whatever was selected at that moment is recorded and kept. Editing the line items afterwards does not change what the client accepted — deliberately: the accepted document has to stay what was signed.
Converting does not move the estimate
Once accepted, an estimate can be turned into a draft invoice. That creates a new document; the estimate stays where it is as the record of what was agreed.
The invoice is created as a draft rather than sent, so you can review it before it goes out.
"Viewed" means the client really opened it
A sent estimate flips itself to viewed the first time the client opens the proposal link. You do not have to do anything.
This matters because only the public proposal page changes it — looking at the estimate yourself in the admin does not mark it viewed. So the status is real evidence: the link reached the client and they opened it.
It is recorded once; later visits do not change the status again.
Expiry
An estimate past its valid-until date can no longer be accepted, even if the client still has the link.