Skip to main content

Create a form

Create a custom form to get user input. This will generate a link which can be distributed for input. When used with the 'Wait for a response from a custom user form' the Wrkflow will wait for a form submission before continuing.

Application

  • Forms

Inputs (what you have)

NameDescriptionData TypeRequired?Example
Form contentHTML of the form data to present to the user. See documentation for configuration detailsText (Long)Yes
<input type="text" name="username" value="John">
<select name="country">
<option value="Canada" selected>Canada</option>
<option value="USA">USA</option>
</select>
Wait time limitThe amount of time this action should wait for a response in hours. Note the maximum wait time is 7 days (in hours).Number with decimalsYes0.05

Outputs (what you get)

NameDescriptionData TypeRequired?Example
Form IDID of the formText (Short)No
Response linkLink to the formText (Short)No

The form response contains the submitted values from the controls in Form content. Give each form field a name so it has a stable key in the response.

Key Assignment:​

Each input field should have a name attribute, which is used as the key in the form response. This requirement ensures that each field has a unique and consistent identifier.

Behaviour for Each Input Type:​

  1. Radio Buttons:

    • Only the selected (checked) radio button in each group is included in the form response.
    <!-- Example HTML for Radio Buttons --><input type="radio" name="color" value="red" checked><input type="radio" name="color" value="blue">
    // Resulting JSON { "color": "red" }
  2. Checkboxes:

    • For checkboxes with the same name, all checked values are stored together in an array.
    <!-- Example HTML for Checkboxes --><input type="checkbox" name="hobbies" value="reading" checked><input type="checkbox" name="hobbies" value="sports" checked><input type="checkbox" name="hobbies" value="music">
    // Resulting JSON { "hobbies": ["reading", "sports"] }
  3. Other Input Types (e.g., Text, Select Dropdowns, and Textareas):

    • Each input's value is stored in the form response under the key specified by the name.
    <!-- Example HTML for text, textarea, and select controls -->
    <input type="text" name="username" value="John">
    <textarea name="comments">Please follow up next week</textarea>
    <select name="country">
    <option value="ca" selected>Canada</option>
    <option value="us">USA</option>
    </select>
    // Resulting JSON {"username":"John","comments":"Please follow up next week","country":"ca"}
  4. File Inputs:

    • File inputs can accept up to 5GB of data for a single file upload.

Collecting table responses​

Use Dynamic Table in the User Forms builder when you want to collect row-based structured data. Set a response table ID, add a field for each column, and choose the input type for each column. The builder supports text, number, date and time, email, phone, select, checkbox, radio, textarea, and rich text fields. The ID becomes the key for the table in the form response. A regular Table under Styling Text is for displaying table content and does not collect rows.

The form response stores each table as an array of row objects. The column headings become the object keys; controls in each cell provide the values. A cell without a control contributes its text, and fully blank rows are omitted. Other form fields remain top-level values.

For example, a table with the ID reviewers and the headings First Name, Role, and Active can return:

{
"comments": "Please follow up next week",
"reviewers": [{"First Name": "John", "Role": "reviewer", "Active": ["yes"]}]
}

To let respondents add or remove rows, enable Allow users to add rows. New rows are based on the table's first body row. The response table still uses the same array-of-objects shape.

For hand-written HTML, opt a table into response collection with data-collect="rows" and a unique, non-empty id. Add data-repeatable="rows" to let respondents change the row count:

<table id="reviewers" data-collect="rows" data-repeatable="rows">
<thead>
<tr>
<th>First Name</th>
<th>Role</th>
<th>Active</th>
</tr>
</thead>
<tbody>
<tr>
<td><input id="reviewerName" name="reviewerName" /></td>
<td>
<select id="reviewerRole" name="reviewerRole">
<option value="reviewer">Reviewer</option>
<option value="approver">Approver</option>
</select>
</td>
<td>
<input
type="checkbox"
id="reviewerActive"
name="reviewerActive"
value="yes"
/>
</td>
</tr>
</tbody>
</table>

Each response table needs one header row in <thead> with non-empty, unique headings, and every body row must have one <td> per heading. Merged cells and nested tables are not supported. Give each input cell a distinct id or name; radio or checkbox options within the same cell can share a name. Keep table IDs distinct from each other and from standalone form response keys so response keys do not collide.

Outcomes

NameDescription
SuccessThis status is selected if the job has successfully completed.

Requirements

  • N/A