Signatures & signing
Forms collects signatures two ways. The simple way: drop a SIGNATURE field on the form, the respondent signs once, you get a PDF with the signature embedded. The full way: wire AdaptDoc, define signing parties, and the submission becomes a multi-party sequential e-sign workflow that routes the PDF to every signer in order.
Capturing a signature on the form
Add a Signature field anywhere in the form. The public renderer shows a canvas the respondent draws on with a mouse, finger, or stylus — plus a Type instead tab that renders their name in a script font. Either way, the signature is sent as a base64 PNG (capped at 150 KB).
Once submitted, the signature:
- Shows as a thumbnail in the responses table.
- Embeds in every PDF style — inline in Form-print, above a dated signature line in Letterhead and Document.
- Stays small — 150 KB cap, validated at submit.
Signing parties (multi-party documents)
A "party" is one person who signs the document. The Branded estimate template ships with two — Property Owner and Bigfoot Roofing. In the editor, the Signing parties panel lets you add, rename, reorder, or remove them.
Each SIGNATURE field gets a party dropdown — pick which party signs that block. The Acceptance row in the Branded estimate template, for example, has two side-by-side SIGNATURE fields, one assigned to each party.
Without an integration wired, parties just label signatures inside the PDF — useful even on its own. With AdaptDoc wired (next section), each party becomes a signer in a sequential routing order.
The AdaptDoc bridge
AdaptDoc is Adaptensor's e-signature platform. Wiring it turns every submission into a fully tracked, multi-party signing workflow. Open AdaptDoc e-signature from the editor (or visit /forms/<id>/integrations) to configure it:
- Connector URL — your AdaptDoc inbound connector endpoint.
- Shared secret — the HMAC key Forms signs each payload with. Stored AES-256-GCM-encrypted on the Forms side.
- Template ID — the AdaptDoc template the submission's answers should fill.
- Field map — JSON mapping form fields to AdaptDoc template fields.
- Signer slot map — which Forms party slots into which AdaptDoc signer role.
- Active toggle — flip the whole integration on or off without losing config.
What happens on submit
- The respondent submits the public form.
- Forms saves the submission and immediately marks it DRAFT.
- The user sees the success screen — no waiting.
- In the background, Forms HMAC-signs the payload and POSTs it to your AdaptDoc connector.
- AdaptDoc clones the template, fills the fields with submitted answers, creates one signer per party, builds a sequential signing workflow, and starts routing it.
- For Document-style forms, Forms also renders the PDF, uploads it to Vercel Blob, and attaches the URL so AdaptDoc can use the branded PDF directly instead of the template file.
Watching status from the responses table
Every submission gets a Signing status column when an integration exists: Draft, Sent, Signed, or Error. If AdaptDoc returns an error, the message is surfaced inline so you can fix the config and resend.
Security details
- Connector secrets are AES-256-GCM encrypted at rest, keyed by the
FORMS_ENCRYPTION_KEYenv var. - Every outbound payload is HMAC-SHA256 signed with the shared secret; AdaptDoc rejects unsigned or tampered payloads.
- The integration config page never returns the secret to the browser — only
hasSecret: true. - The integration endpoint is owner-only, like every other form management route.
On the roadmap
- Real-time
SIGNEDwebhook from AdaptDoc back to Forms (so the status flips automatically instead of by polling). - Template auto-registration — pick the AdaptDoc template from a picker instead of pasting an ID.
- Picker-driven field map UI to replace the JSON textarea.
Back to the editor essentials: Building a form. Or see how all this prints: Documents & PDFs.