Merge Fields
Merge fields reference previously entered answers inside other content. Use them to build personalized summaries, confirmations, and titles. They resolve both on screen and in the signed PDF.
Syntax
Double curly braces around a field's name:
{{fieldKey}}Always set an explicit name on any field you intend to reference.
Where merge fields work
- Inside
HTMLcontent fields. - Inside a form's case file title template.
Rules
- A referenced field must be required and non-conditional. Only fields guaranteed to have a value can be merged.
- If a referenced field has no value yet, the placeholder stays visible.
- Field keys are case-sensitive and must match exactly.
HTMLfields cannot be used as merge fields.
Special merge fields
Alongside form field keys, these built-in fields are available on every surface that supports merge fields:
| Merge field | Resolves to | When it's valid |
|---|---|---|
{{formName}} | The form's name. | Always. |
{{primarySigner.name}} | The primary signer's full name. | Always. |
{{primarySigner.email}} | The primary signer's email. | Always. |
{{additionalSigner.N.name}} | The Nth additional signer's full name. | Slot N must be required and non-conditional. |
{{additionalSigner.N.email}} | The Nth additional signer's email. | Slot N must be required and non-conditional. |
N is the zero-based index of an additional signer slot. Signer values come from the fields you map with mapTo or from a prefilled request.
Reference by field type
| Field type | Example key | Output | Example |
|---|---|---|---|
TEXT | {{text_FullName_0_0}} | Plain text | John Doe |
NUMBER | {{number_Amount_1_0}} | Numeric value as string | 12345 |
EMAIL | {{email_Email_0_1}} | Email address | [email protected] |
PHONE | {{phone_Phone_0_2}} | Phone number | +4512345678 |
DATE | {{date_StartDate_1_1}} | Date string | 2025-01-15 |
DATETIME | {{datetime_StartDate_1_1}} | DateTime string | 2025-01-15T10:30:00 |
CHOICE | {{choice_Option_1_2}} | Comma-separated values | Option A, Option B |
NIN | {{nin_NationalId_0_3}} | Country code + value | DK1234567890 |
BUSINESS_ID | {{business_id_BusinessNumber_0_0}} | Country code + value | DK12345678 |
FILE | {{file_Attachment_1_2}} | Comma-separated filenames | passport.png, picture.png |
Example: a personalized summary
An HTML field can reflect earlier answers back to the respondent before they sign. It accepts only the allowed tags:
{
"sections": [
{
"title": "Personal Information",
"fields": [
{ "type": "TEXT", "name": "full_name", "label": "Full Name", "required": true, "mapTo": "primarySigner.name" },
{ "type": "EMAIL", "name": "email_address", "label": "Email", "required": true, "mapTo": "primarySigner.email" }
]
},
{
"title": "Loan Details",
"fields": [
{ "type": "NUMBER", "name": "loan_amount", "label": "Loan Amount", "required": true, "validations": { "min": 10000, "max": 500000 } }
]
},
{
"title": "Application Summary",
"fields": [
{
"type": "HTML",
"content": "<p><strong>Please review:</strong></p><p>Applicant: <strong>{{full_name}}</strong></p><p>Email: {{email_address}}</p><p>Requested Amount: {{loan_amount}} DKK</p>"
}
]
}
]
}Each {{...}} is replaced with the value the respondent entered, both in the form and in the generated PDF.
Once the earlier fields are filled in, the summary renders like this:
Please review:
Applicant: Jane Smith
Email: [email protected]
Requested Amount: 250000 DKK
Updated 3 days ago
