Proposals
Long-form sales documents with rich content and e-signature.
Last updated 2026-05-05
Proposals are richer than estimates: they support a WYSIWYG body (sections, images, tables) plus an itemized pricing block and an embedded e-signature pad in the customer portal. Use them when the deal needs context — scope, deliverables, timeline — alongside the price. Each proposal renders to a paginated PDF at preview time so the customer sees exactly what arrives in their email.
The acceptance event captures the signer's name, IP, user agent, and a SHA-256 hash of the rendered PDF — the bundle is stored as immutable evidence in S3 under proposals/<id>/signed.pdf.
Related endpoints
GET /api/tenant/proposals— list.POST /api/tenant/proposals— create draft.POST /api/tenant/proposals/:id/send— email + portal link.POST /api/tenant/proposals/:id/sign— record signer + freeze evidence.GET /api/tenant/proposals/:id/pdf— rendered PDF.
See the source at apps/web/src/app/(tenant)/proposals and apps/api/src/proposals.