| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| value | String | Synonymn for guid |
| classname | String | CSS class name(s) to be applied to the field |
| type | String | The field type (text, textarea, select, checkbox, etc...) |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | The default output that the form_field would produce if it were output directly to the template. The default output may change at any time. Template developers should avoid using this and should handle the output of different form fields themselves. May include additional markup in the editor preview to make it easier to edit content |
Should be used to output a hidden field inside a form, which by definition is not displayed to or directly editable by users.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "hidden" |
| field_id | String | The value that should be used for the name attribute of the hidden field |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| classname | String | CSS class name(s) to be applied to the field. Although the field is not displayed, the classname may still be used when setting the field value (eg: for the editor to specify the type of data to save in the field) |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| output | String | Default HTML markup for this field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more |
Hidden form fields are generally only useful for template developers, since the user is not able to directly edit their value. When including a hidden field in a form, developers should ensure that there is some way for the value to be set - typically either using liquid markup to specify the value explicitly in the template or using javascript after the form is displayed to calculate and set a dynamic value
Should be used to display a list of checkboxes inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "checkboxlist" |
| items | object | A dictionary containing all of the checkboxes and their values to be included in the checkboxlist, where the keys are the value to be stored and the values are the text to be displayed |
| options | String | The raw and un-parsed options for the checkboxlist field |
| delimiter | String | The string that is used to distinguish one option from another in both the raw options property and the final saved value |
| value_delimiter | String | The string that should be used to distinguish the value for each option from the text to be displayed, where the value is to the left of value_delimiter and the text is to the right. Any options that do not contain the value_delimiter will use the full option as both the text and the value |
| count | Integer | The number of options in this checkboxlist |
| default_value | String | The raw and un-parsed default value for this checkboxlist field. Includes all of the values for the options that should be checked by default, separated by the delimiter |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to check at least one checkbox in this list |
| required_message | String | The message to display when the user attempts to submit the form without checking any checkboxes in this list |
| validators | validators | The list of validators that should be used to validate this form field, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this checkboxlist, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Should be used to display a textarea field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "textarea" |
| placeholder | String | The pladeholder text to display when this textarea does not have a value |
| default_value | String | The text to include in this textarea by default when the form is initially displayed |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to enter text in this textarea |
| required_message | String | The message to display when the user attempts to submit the form without entering any text in this textarea |
| validators | validators | The list of validators that should be used to validate this textarea, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this textarea field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Should be used to display a checkbox field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "checkbox" |
| default_value | Boolean | Whether or not the checkbox should be checked by default when the form is displayed |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to "true" or "false". This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to check this checkbox before submitting the form |
| required_message | String | The message to display when the user attempts to submit the form without checking this checkbox |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Should be used to display a file upload field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "file" |
| allow_multiple | Boolean | Whether or not this field may be used to upload multiple files at once |
| accept | String | A string containing the types of files that may be uploaded using this field. Intended to be used directly in the "accept" property of an HTML file input element |
| required | Boolean | Will be true if the user is required to upload a file before submitting the form |
| required_message | String | The message to display when the user attempts to submit the form without uploading a file |
| validators | validators | The list of validators that should be used to validate this form field, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this file field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
There may be additional restrictions on file uploads that are not specified in the validators, such as max upload filesize. Furthermore, after being uploaded, all files are automatically scanned for malware, although that does not prevent users from uploading malicious files; it only reports the expected security status of the file to administrators
Should be used to display a group of fields inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "group" |
| fields | list | The list of fields in the group. May include other groups as well |
| collapsible | Boolean | Whether or not the group of fields may be collapsed (partially hidden) on the page |
| collapsed | Boolean | Whether or not the group of fields should initially be collapsed (partially hidden) when the form is first displayed |
| element_id | String | A helper property containing a unique ID for this group on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the group |
| condition | condition | The condition that should be used to show and hide this group |
| classname | String | CSS class name(s) to be applied to the group |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this group and all of the fields in this group, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Groups may be deeply nested, which templates should be able to handle. Template developers may optionally handle collapsing and expanding groups, although if possible it is recommended to allow it for optimal feature parity with the editor options when editing form fields
Should be used to display a submit button inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "submit" |
| button_value | String | Optional. If specified, this should be used as the value for the submit button. This is not typically used, but may be helpful in some edge cases |
| text_is_html | Boolean | If true, the template should use the button_html property when displaying the submit button. If false, the template should use the button_text property, which should be propertly escaped since it is not supposed to contain HTML markup |
| button_html | String | The html markup to display inside the submit button. Should be used if the text_is_html property is true |
| button_text | String | The plain text to display inside the submit button. Should be used if the text_is_html property is false |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for the submit button, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Almost every form should have one and only one submit button.
Should be used to display a custom button inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "button" |
| button_type | String | The type of button to display. Will be one of "none", "button", "reset", or "submit" |
| button_value | String | Optional. If specified, this should be used as the value for the button (eg: for submit buttons) |
| text_is_html | Boolean | If true, the template should use the button_html property when displaying the button. If false, the template should use the button_text property, which should be propertly escaped since it is not supposed to contain HTML markup |
| button_html | String | The html markup to display inside the button. Should be used if the text_is_html property is true |
| button_text | String | The plain text to display inside the button. Should be used if the text_is_html property is false |
| on_click | String | The custom javascript to execute when this button is clicked. Note that there is no guarantee that the javascript is valid or that any other functions or variables that it may reference have been defined. This functionality should only be used by developers and power users who know what they are doing |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for the button field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
The button field should only be used by power users who know what they are doing, and should always be tested to ensure that it works as anticipated. Most of the time the submit field should be used instead.
Should be used to display a select list inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "select" |
| allow_multiple | Boolean | Whether or not to allow users to select more than one option from this select list |
| items | object | A dictionary containing all of the options and their values to be included in the select list, where the keys are the value to be stored and the values are the text to be displayed |
| options | String | The raw and un-parsed options for the select list |
| delimiter | String | The string that is used to distinguish one option from another in both the raw options property and the final saved value |
| value_delimiter | String | The string that should be used to distinguish the value for each option from the text to be displayed, where the value is to the left of value_delimiter and the text is to the right. Any options that do not contain the value_delimiter will use the full option as both the text and the value |
| count | Integer | The number of options in this select list |
| default_value | String | The raw and un-parsed default value for this select list. Includes the value of all options that should be selected by default, separated by the delimiter |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to select an option in this list |
| required_message | String | The message to display when the user attempts to submit the form without selecting an option in this list |
| validators | validators | The list of validators that should be used to validate this form field, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Should be used to display a radio field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "radio" |
| items | object | A dictionary containing all of the options and their values to be included in the template, where the keys are the value to be stored and the values are the text to be displayed |
| options | String | The raw and un-parsed options for the radio field |
| delimiter | String | The string that is used to distinguish one option from another in the raw options property |
| value_delimiter | String | The string that should be used to distinguish the value for each option from the text to be displayed, where the value is to the left of value_delimiter and the text is to the right. Any options that do not contain the value_delimiter will use the full option as both the text and the value |
| count | Integer | The number of options in this radio field |
| default_value | String | The value of the radio option that should be selected by default when this form is displayed |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to select one of the radio options |
| required_message | String | The message to display when the user attempts to submit the form without selecting a radio option |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this radio field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Should be used to display a text label inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "label" |
| element_id | String | A helper property containing a unique ID for this label on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the label. Not typically used for label fields, although the developer may specify an alternate use for this or may customize the output using this |
| condition | condition | The condition that should be used to show and hide this label |
| classname | String | CSS class name(s) to be applied to the label |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this label, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
How the label is displayed in the form is entirely up to the template developer as there is currently no way for editors to specify the styling to use when displaying labels
Should be used to display a captcha inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "captcha" |
| theme | String | "light" or "dark" |
| captcha_size | String | "compact" or "normal" |
| google_recaptcha_site_key | String | The public Google ReCaptcha site key, which is required for the captcha to work |
| required | Boolean | Will always be true |
| required_message | String | The message to display when the user attempts to submit the form without passing the catpcha |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for the captcha field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
Captcha fields are recommended in order to prevent bots from spamming forms, although each form may only have a single catpcha field. Additionally, it is not recommended for the captcha field to be conditional, as that would defeat its purpose.
Should be used to display a text field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "text" |
| is_numeric | Boolean | Will be true if the field should only be used to enter numbers, which may only include integers or may include decimals as well. This is a convenience property which uses the validators to check if the field validates for numeric or decimal values |
| placeholder | String | The pladeholder text to display when this field does not have a value |
| default_value | String | The text to include in this field by default when the form is initially displayed |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to enter text in this field |
| required_message | String | The message to display when the user attempts to submit the form without entering any text in this field |
| validators | validators | The list of validators that should be used to validate this text field, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |
The text field may also be used to display number inputs, although there are not number-specific properties (eg: increment) so it is currently up to the template developer's discretion how they want to display number inputs
Should be used to display a date field inside a form.
| Name | Type | Description |
| is_valid | Boolean | Will always be true |
| type | String | Will always be "date" |
| default_value | time | Optional. The default value to use for this date field when the form is displayed. Will be null if there is no default value |
| map_to_attribute | String | If the user is signed into a profile when they submit this form and map_to_attribute is set, the profile attribute specified in map_to_attribute will be set to the value of this field. This should also be used to override the default value if the user is signed into a profile and the specified attribute has already been set |
| required | Boolean | Will be true if the user is required to enter a date before submitting the form |
| required_message | String | The message to display when the user attempts to submit the form without entering a date |
| validators | validators | The list of validators that should be used to validate this date field, if applicable |
| element_id | String | A helper property containing a unique ID for this field on this instance of this form. This value should be different every time the form is output |
| subtext | text | Help or hint text to display together with the field |
| condition | condition | The condition that should be used to show and hide this form field |
| classname | String | CSS class name(s) to be applied to the field |
| field_id | String | The identifier for this field |
| label | String | The label for this field |
| output | String | Default HTML markup for this date field, which makes a number of assumptions about other elements on the page that may or may not be included. Developers should avoid using the default output in order to guarantee that forms work as expected, including styling, validation, conditionals, and more. May include additional markup in the editor preview to make it easier to edit content |