Docs

Add a signature field and wire it into both your AcroForm and your Overlay template.

Collect signatures

A signature is the one field where the form schema and the PDF templates have to agree end-to-end. The visitor draws once; the captured image flows through the submit pipeline as an attachment, and each template type consumes it differently — the AcroForm renderer drops it into a real PDF signature widget, the Overlay renderer composites it as an inline image inside the rectangle you marked. Neither path re-prompts the visitor and neither path reads a separate copy.

1. Add the signature field to the form

Open Patient Intake in the admin shell. The form already has the demographics and contact pages from the earlier tutorials. Add a third page named consent after them.

Drag a signature field onto the new page. Set the key to signature and mark it required. Save the draft — the field appears in the published schema as { "key": "signature", "type": "signature", "required": true }.

That's the entire form-side change. Both PDF templates now have a signature payload key they can bind against.

2. Map the AcroForm signature widget

Open the PDF templates panel and click into the consent.pdf row. The widget inventory from tutorial 5 lists Patient Name, Date of Birth, Email, and Today. The PDF also carries one more widget that you skipped earlier because there was nothing to bind it to — a signature widget named Signature. It's a real AcroForm signature field, not a text widget, so the validator only accepts a signature-shaped binding.

The shape the renderer wants for a Signature widget is the __submitter_signature system token. Pick System token in the dropdown for the Signature row, then choose __submitter_signature.

The full mapping now reads:

{
  "entries": {
    "Patient Name": { "type": "form_field", "key": "full_name", "input_type": "text", "format_as_string": false },
    "Date of Birth": { "type": "form_field", "key": "dob", "input_type": "date", "format_as_string": false },
    "Email": { "type": "form_field", "key": "email", "input_type": "email", "format_as_string": false },
    "Today": { "type": "system_token", "token": "__submitted_at" },
    "Signature": { "type": "system_token", "token": "__submitter_signature" }
  }
}

The validator pairs __submitter_signature with the widget's declared type on save — if the widget weren't a signature widget the binding would come back with a type_mismatch error against that row. The renderer reads the captured image from the submission's attachment store and writes it into the widget as a native PDF signature field, so a downstream verifier sees a real signature, not a flattened bitmap.

3. Swap the Overlay placeholder for a signature region

Back in the PDF templates panel, open the hipaa-acknowledgment.pdf row. In tutorial 6 you authored a text region with id r_signature_placeholder bound to a literal empty string — a deliberate stand-in. Edit that region now: switch its kind from text to signature, and switch its binding from the literal to Signature fieldsignature.

The geometry stays exactly as you placed it. The region serializes like this:

{
  "id": "r_signature_placeholder",
  "page": 1,
  "x": 72.0,
  "y": 120.0,
  "w": 200.0,
  "h": 60.0,
  "kind": "signature",
  "binding": { "type": "signature_field", "key": "signature" },
  "font_size_pt": null
}

The save-time validator enforces the closed kind-to-binding matrix: a signature region must bind to a signature_field, and the key must point at a field whose form-schema type is signature. Mismatches surface as signature_field_required, unknown_signature_field, or signature_field_wrong_type inline against the region. The other two regions you authored in tutorial 6 — the patient-name text and the date text — stay as they were.

4. Save and re-publish

Save both template panels. Then click Publish on the form to cut a new definition version. As with the previous tutorials, public links keep working across the republish — the next visitor session loads the version that has the signature field plus both updated mappings.

Verify it worked

Open the public URL of Patient Intake in an incognito window. Fill in the demographics and contact pages, then on the new consent page draw a signature in the signature pad and submit.

The submit response still carries the two pdf_download_urls from before. Open the consent.pdf URL: the same four fields fill as in tutorial 5, and the Signature widget now shows your drawn signature inside its rectangle. Open the hipaa-acknowledgment.pdf URL: the patient name and date render where they did before, and the bottom-left rectangle that previously rendered as blank now shows the same drawn signature, composited as an inline image on top of the original scan.

If either PDF comes back without the signature, the most likely cause is the same one as the earlier tutorials — the visitor's session was pinned to the pre-publish definition. Close the tab, reopen the public URL, and submit again.

Next

Continue with Promote a submission to an entity.