Approval
The Approval element lets a reviewer approve or reject a form, with an optional or required comment, and runs events before and after the decision.
The Approval element is a purpose-built control for formalizing review decisions within Procesio Forms. It presents the reviewer with a clear Approve / Reject action pair and optionally requires them to leave a comment before their decision is recorded — enforcing accountability and audit-readiness in approval workflows.
Unlike a generic button or radio button, the Approval element captures rich metadata alongside the decision: the reviewer's user object (responseuser), the timestamp of the decision (responsedate), their written comment (comment), and the outcome itself (response). All of this data is part of the element's data model and flows directly into your process for downstream actions such as notifications, escalations, or document generation.
Comment requirements can be made conditional per outcome — you can require a justification on rejection but make it optional on approval, or vice versa, giving you fine-grained control over the governance policy your workflow enforces.
Key Use Cases
• Document, purchase order, or leave request approval workflows
• Multi-level approval chains where each reviewer's response is captured and stored
• Requiring a written reason for rejection (iscommentrequiredonreject: true) for compliance
• Reading responseuser and responsedate at runtime to stamp a document or send a notification
• Pre-filling the description with context-sensitive instructions based on the record being reviewed
Runtime API — Attributes in Procesio Forms
All attributes below are accessible and modifiable at runtime via the element's data model in Procesio Forms — on any available event such as onLoad, onChange, or custom triggers.
| API Name | Description | Type | Default | Notes |
|---|---|---|---|---|
| label | Display label above the approval control | string | — | — |
| tooltip | Help text shown alongside the label | string | — | — |
| description | Instructional text for the reviewer | string | — | — |
| infotext | Supplementary info displayed below the element | string | — | — |
| visible | Controls element visibility | boolean | true | — |
| comment | The reviewer's written comment — readable at runtime | string | — | — |
| responsedate | Timestamp of when the decision was made | string|date|null | — | — |
| responseuser | The user who made the decision (id, name) | object|null | — | — |
| response | The decision outcome — Approve or Reject | string|null | — | APPROVE, REJECT |
| name | Unique element name | string | — | — |
| id | Unique element ID | string | — | — |
| iscommentrequiredonapprove | Forces a comment when approving | boolean | false | — |
| iscommentrequiredonreject | Forces a comment when rejecting | boolean | false | — |
Comments
The reviewer sees a comment box above Approve and Reject. Its placeholder says whether a comment is needed: (required), (required on approve), (required on reject) or (optional). While a required comment is missing, the matching button is disabled, and hovering it shows "Please make sure that required comment is set".
Events
Open the element's Events group to run actions around the decision. The Approval element has seven events:
| Event | When it runs |
|---|---|
| onInput | When the reviewer changes the comment. |
| onBeforeApprove | After Approve is clicked, before the decision is saved. |
| onBeforeReject | After Reject is clicked, before the decision is saved. |
| onBeforeSubmit | After either button is clicked, before the decision is saved. It runs after onBeforeApprove or onBeforeReject. |
| onAfterApprove | After an approval is saved. |
| onAfterReject | After a rejection is saved. |
| onAfterSubmit | After either decision is saved. |
Values that the before events write into the form, for example with a data mapping or a process, are saved together with the decision.
In the before and after events, $event holds the decision: response (APPROVE or REJECT), comment, responseUser (the reviewer's id and name) and responseDate. A script run by the event can read it. Processes and mappings can read the same decision values from the element itself.
See Trigger events for form and elements for the actions an event can run.
Forms saved before September 2025 have no event slots on their Approval elements. Open such a form in the Form Designer and publish it again to add them. Its approvals keep working without this step.
For support, please join our Discord community for further assistance and support.
Document Signing
The Document Signing element sends a PDF to one or more people for signature from a form, guides each signer through signing it, and produces a signed PDF with their names and the signing date.
Dynamic Assignee across forms
The Dynamic Assignee Across Forms element enables powerful cross-form task assignment scenarios within Procesio. It allows one form to dynamically…

