Every signed document filed on the customer

Fully executed contracts, sent change orders and manually uploaded files all land in one per-customer Documents list.

What it is

Contact_documents rows carry a name, url, type and size against a contact. The contracts flow files a 'Project Agreement — Fully Executed (<date>)' row pointing at the portal URL; sending a change order attaches a row pointing at the change order; staff can upload arbitrary files from the contact's Documents panel.

Also called: customer documents · where are my signed contracts · document storage · paperwork for this customer

See it
Every signed document filed on the customer
Prepared for
Sutter Kline
1140 Ridge Line Rd · Fair Play
Shell package$29,828
Concrete & site$8,660
Doors & windows$5,773
Trim & finish$3,849
Total
$48,110
Signature
The contact's Documents panel listing 'Project Agreement — Fully Executed (3/14/2026)' above uploaded files, newest first. ContactsView.tsx. Sample data — no customer information appears here.
How it works
  1. 1sendContractToCustomer() resolves the contact (directly, or via the estimate link) and inserts the document row.
  2. 2sendChangeOrder() attaches a row 'so it appears in the customer's Documents tab as a record of what was sent' — best-effort, because 'the CO row's status flip is the source of truth — the doc row is a convenience surface'.
  3. 3Manual uploads post the file to media storage and insert a row with its returned URL.
  4. 4The panel lists documents newest first for the selected contact.
Why we built it

The change-order attachment comment sets the model: the document row is a convenience surface over the record of truth, and it exists so a builder can answer 'what have we sent this customer?' from one place instead of three systems. The contract path deliberately refuses to file anything that isn't fully executed.

The problem
  • Signed paperwork living in inboxes
  • No single per-customer document list
  • Half-executed documents filed as final
Sound familiar?
What you get
One list per customer of everything sent and signed
Signed agreements filed automatically
Manual uploads live beside the generated ones

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →