# JavaScript Form Builder
### Example Code
```javascript
```
### Attributes
```json
{
"data-token": {
"type": "string",
"doc_type": "object",
"description": "JSON Web Token (JWT HS256) with a payload signed using the API key.
Ensure that the JWT token is generated on the backend to prevent unauthorized access to your documents.",
"required": true,
"properties": {
"user_email": {
"type": "string",
"required": true,
"description": "Email of the owner of the API signing key - admin user email."
},
"integration_email": {
"type": "string",
"required": false,
"description": "Email of the user to create a template for.",
"example": "signer@example.com"
},
"template_id": {
"type": "number",
"required": false,
"description": "ID of the template to open in the form builder. Optional when `document_urls` are specified."
},
"external_id": {
"type": "string",
"description": "Your application-specific unique string key to identify this template within your app.",
"required": false
},
"folder_name": {
"type": "string",
"description": "The folder name in which the template should be created.",
"required": false
},
"document_urls": {
"type": "array",
"required": false,
"description": "An Array of URLs with PDF files to open in the form builder. Optional when `template_id` is specified.",
"example": "['https://www.irs.gov/pub/irs-pdf/fw9.pdf']"
},
"name": {
"type": "string",
"required": false,
"description": "New template name when creating a template with document_urls specified.",
"example": "Integration W-9 Test Form"
},
"extract_fields": {
"type": "boolean",
"required": false,
"description": "Pass `false` to disable automatic PDF form fields extraction. PDF fields are automatically added by default."
}
}
},
"data-host": {
"type": "string",
"required": false,
"description": "DocuSeal host domain name. Only use this attribute if you are using the on-premises DocuSeal installation or docuseal.eu Cloud.",
"example": "yourdomain.com"
},
"data-roles": {
"type": "string",
"required": false,
"description": "Comma separated submitter role names to be used by default in the form.",
"example": "Company,Customer"
},
"data-fields": {
"type": "string",
"doc_type": "array",
"required": false,
"description": "A list of default custom fields with `name` to be added to the document. Should contain an array of field properties as a JSON encoded string.",
"example": "[{ \"name\": \"FIELD_1\", \"type\": \"date\", \"role\": \"Customer\", \"default_value\": \"2021-01-01\" }]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"required": true,
"description": "Field name."
},
"type": {
"type": "string",
"required": false,
"description": "Field type.",
"enum": [
"heading",
"text",
"signature",
"initials",
"date",
"number",
"image",
"checkbox",
"multiple",
"file",
"radio",
"select",
"cells",
"stamp",
"payment",
"phone",
"verification"
]
},
"role": {
"type": "string",
"required": false,
"description": "Submitter role name for the field."
},
"default_value": {
"type": "string",
"required": false,
"description": "Default value of the field."
},
"title": {
"type": "string",
"required": false,
"description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
},
"description": {
"type": "string",
"required": false,
"description": "Field description displayed on the signing form. Supports Markdown."
},
"width": {
"type": "number",
"required": false,
"description": "Field width in pixels."
},
"height": {
"type": "number",
"required": false,
"description": "Field height in pixels."
},
"format": {
"type": "string",
"required": false,
"description": "Field format. Depends on the field type."
},
"options": {
"type": "array",
"required": false,
"description": "Field options. Required for the select field type."
},
"validation": {
"type": "object",
"required": false,
"description": "Field validation rules.",
"properties": {
"pattern": {
"type": "string",
"required": false,
"description": "Field pattern.",
"example": "^[0-9]{5}$"
},
"message": {
"type": "string",
"required": false,
"description": "Validation error message."
}
}
}
}
}
},
"data-submitters": {
"type": "string",
"doc_type": "array",
"required": false,
"description": "A list of default submitters with `role` name to be added to the document. Should contain an array of field properties as a JSON encoded string.",
"example": "[{ \"email\": \"example@company.com\", \"name\": \"John Doe\", \"phone\": \"+1234567890\", \"role\": \"Customer\" }]",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"required": false,
"description": "Submitter email."
},
"role": {
"type": "string",
"required": true,
"description": "Submitter role name."
},
"name": {
"type": "string",
"required": false,
"description": "Submitter name."
},
"phone": {
"type": "string",
"required": false,
"description": "Submitter phone number, formatted according to the E.164 standard."
}
}
}
},
"data-required-fields": {
"type": "string",
"doc_type": "array",
"required": false,
"description": "A list of required default custom fields with `name` that should be added to the document. Should contain an array of field properties as a JSON encoded string.",
"example": "[{ \"name\": \"FIELD_1\", \"type\": \"date\", \"role\": \"Customer\", \"default_value\": \"2021-01-01\" }]",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"required": true,
"description": "Field name."
},
"type": {
"type": "string",
"required": false,
"description": "Field type.",
"enum": [
"heading",
"text",
"signature",
"initials",
"date",
"number",
"image",
"checkbox",
"multiple",
"file",
"radio",
"select",
"cells",
"stamp",
"payment",
"phone",
"verification"
]
},
"role": {
"type": "string",
"required": false,
"description": "Submitter role name for the field."
},
"default_value": {
"type": "string",
"required": false,
"description": "Default value of the field."
},
"title": {
"type": "string",
"required": false,
"description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
},
"description": {
"type": "string",
"required": false,
"description": "Field description displayed on the signing form. Supports Markdown."
},
"width": {
"type": "number",
"required": false,
"description": "Field width in pixels."
},
"height": {
"type": "number",
"required": false,
"description": "Field height in pixels."
},
"format": {
"type": "string",
"required": false,
"description": "Field format. Depends on the field type."
},
"options": {
"type": "array",
"required": false,
"description": "Field options. Required for the select field type."
},
"validation": {
"type": "object",
"required": false,
"description": "Field validation rules.",
"properties": {
"pattern": {
"type": "string",
"required": false,
"description": "Field pattern.",
"example": "^[0-9]{5}$"
},
"message": {
"type": "string",
"required": false,
"description": "Validation error message."
}
}
}
}
}
},
"data-field-types": {
"type": "string",
"required": false,
"description": "Comma separated field type names to be used in the form builder. All field types are used by default.",
"example": "text,date"
},
"data-draw-field-type": {
"type": "string",
"required": false,
"default": "text",
"description": "Field type to be used by default with the field drawing tool.",
"example": "signature"
},
"data-custom-button-title": {
"type": "string",
"required": false,
"description": "Custom button title. This button will be displayed on the top right corner of the form builder."
},
"data-custom-button-url": {
"type": "string",
"required": false,
"description": "Custom button URL. Only absolute URLs are supported."
},
"data-with-title": {
"type": "boolean",
"required": false,
"default": true,
"description": "Set `false` to remove document title from the builder."
},
"email-subject": {
"type": "string",
"required": false,
"description": "Email subject for the signature request. Required if `email-body` specified"
},
"email-body": {
"type": "string",
"required": false,
"description": "Email body for the signature request. Required if `email-subject` specified"
},
"data-with-send-button": {
"type": "boolean",
"required": false,
"default": true,
"description": "Show the \"Recipients\" button."
},
"data-with-upload-button": {
"type": "boolean",
"required": false,
"default": true,
"description": "Show the \"Upload\" button."
},
"data-with-add-page-button": {
"type": "boolean",
"required": false,
"default": false,
"description": "Show the \"Add Blank Page\" button."
},
"data-with-sign-yourself-button": {
"type": "boolean",
"required": false,
"default": true,
"description": "Show the \"Sign Yourself\" button."
},
"data-with-documents-list": {
"type": "boolean",
"required": false,
"default": true,
"description": "Set `false` to now show the documents list on the left. Documents list is displayed by default."
},
"data-with-fields-list": {
"type": "boolean",
"required": false,
"default": true,
"description": "Set `false` to now show the fields list on the right. Fields list is displayed by default."
},
"data-with-field-placeholder": {
"type": "boolean",
"required": false,
"default": false,
"description": "Set `true` to display field name placeholders instead of the field type icons."
},
"data-preview": {
"type": "boolean",
"required": false,
"default": false,
"description": "Show template in preview mode without ability to edit it."
},
"data-only-defined-fields": {
"type": "boolean",
"required": false,
"default": false,
"description": "Allow to add fields only defined in the `data-fields` attribute."
},
"data-autosave": {
"type": "boolean",
"required": false,
"default": true,
"description": "Set `false` to disable form changes autosaving."
},
"data-i18n": {
"type": "string",
"required": false,
"default": "{}",
"description": "JSON encoded string that contains i18n keys to replace the default UI text with custom values. See template_builder/i18n.js for available i18n keys."
},
"data-language": {
"type": "string",
"required": false,
"default": "en",
"description": "UI language, 'en', 'es', 'de', 'fr', 'pt', 'he', 'ar' languages are available."
},
"data-background-color": {
"type": "string",
"required": false,
"description": "The form builder background color. Only HEX color codes are supported.",
"example": "#ffffff"
},
"data-custom-css": {
"type": "string",
"required": false,
"description": "Custom CSS styles to be applied to the form builder.",
"example": "#sign_yourself_button { background-color: #FFA500; }"
}
}
```
### Callback
```json
{
"load": {
"type": "event",
"required": false,
"description": "Custom event to be triggered on loading the form builder template data.",
"example": "document.querySelector('docuseal-builder').addEventListener('load', (e) => e.detail)"
},
"upload": {
"type": "event",
"required": false,
"description": "Custom event to be triggered on uploading a document to the template.",
"example": "document.querySelector('docuseal-builder').addEventListener('upload', (e) => e.detail)"
},
"send": {
"type": "event",
"required": false,
"description": "Custom event to be triggered on sending documents for signature to recipients.",
"example": "document.querySelector('docuseal-builder').addEventListener('send', (e) => e.detail)"
},
"change": {
"type": "event",
"required": false,
"description": "Custom event to be triggered every time a change to the template is made.",
"example": "document.querySelector('docuseal-builder').addEventListener('change', (e) => e.detail)"
},
"save": {
"type": "event",
"required": false,
"description": "Custom event to be triggered on saving changes of the template form.",
"example": "document.querySelector('docuseal-builder').addEventListener('save', (e) => e.detail)"
}
}
```