Customers approve work line by line before you do it. You will be able to follow an approval from request to proof, and know when the estimate.approved event reaches your connected systems.
Before you start #
You need the owner, manager or advisor role. Approvals belong to the front desk.
Steps #

- Build the estimate with its lines. Each line starts as pending.
- Request approval. The order gets a link token once, and the approval status becomes "Awaiting approval" when any line is pending.
- Send the link to the customer. Dispatch logs "Approval link sent to the customer." even when the customer has no contact details on file.
- The customer opens the link, types their full name (at least two characters) and approves or declines each group of lines.
- Dispatch sets each answered line to approved or declined and recomputes the status: Approved (all lines approved), Declined (all declined), Partly approved, or Awaiting approval while some lines still wait.
- For a phone or in-person approval, record it yourself. Every pending line becomes approved, and the timeline names who approved and how.
Proof that Dispatch keeps #
A link answer keeps an evidence record: the consent wording version, the time, the customer's network address and device, and a hash of the exact estimate text the customer saw. The link answer needs the consent version and the hash. A staff-recorded approval can carry the same record.
When the event fires #
estimate.approved is sent to connected webhooks for every approval that approves at least one line, whether staff recorded it or the customer answered by link. An answer that only declines sends nothing.
Technical details
- The estimate text that is hashed lists each line's group, kind, description, quantity, unit price and taxable flag, then the total.
- The evidence record stays out of sync payloads and API lists.
- In version 0.1.0 the console routes record approvals. No public API call records one.
If something goes wrong #
- The invalid-link message: the link token is wrong or was replaced.
- "Please type your full name to sign.": type at least two characters.
- "Choose approve or decline for at least one item.": answer at least one group.
- "There was nothing waiting for approval.": every line already has an answer.
- "1 line is still waiting for approval. Approve or remove them first.": appears when completing an order.