---
title: "Form configuration vs. form definition"
manual: "Form"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/typo3/cms-form:concepts-formdefinition-vs-formconfiguration@13.4"
source: "I/Concepts/FormConfigurationFormDefinition/Index.rst"
rendered: "2026-09-24T12:43:02+00:00"
---

# Form configuration vs. form definition {#concepts-formdefinition-vs-formconfiguration}

So far, we have only described the configuration of the form framework.
Once again, based on prototypes, the **form configuration** allows you to
define:

-   which form elements, finishers, and validators are available,
-   how those objects are pre-configured,
-   how those objects will be displayed within the frontend and backend.

In contrast, the **form definition** describes the specific form, including

-   all form elements and their corresponding validators,
-   the order of the form elements within the form, and
-   the finishers which are fired as soon as the form has been submitted.
-   Furthermore, it defines the concrete values of each property of the
    mentioned aspects.

In other words, the **prototype configuration** defines the existence of a
form element of type `Text` globally. The **form definition** declares
that such a form element of type `Text` is located on page 1 at position
1 of a specific form. In addition, it carries the information that this form
element comes with the HTML attribute "placeholder" with value "Your name
here". The form definition is written by the `form editor`.

## Example form definition {#example-form-definition}

```yaml
identifier: ext-form-simple-contact-form-example
label: 'Simple Contact Form'
prototype: standard
type: Form

finishers:
  -
    identifier: EmailToReceiver
    options:
      subject: 'Your message'
      recipients:
        your.company@example.com: 'Your Company name'
        ceo@example.com: 'CEO'
      senderAddress: '{email}'
      senderName: '{name}'

renderables:
  -
    identifier: page-1
    label: 'Contact Form'
    type: Page

    renderables:
      -
        identifier: name
        label: 'Name'
        type: Text
        properties:
          fluidAdditionalAttributes:
            placeholder: 'Name'
        defaultValue: ''
        validators:
          -
            identifier: NotEmpty
      -
        identifier: subject
        label: 'Subject'
        type: Text
        properties:
          fluidAdditionalAttributes:
            placeholder: 'Subject'
        defaultValue: ''
        validators:
          -
            identifier: NotEmpty
      -
        identifier: email
        label: 'Email'
        type: Text
        properties:
          fluidAdditionalAttributes:
            placeholder: 'Email address'
        defaultValue: ''
        validators:
          -
            identifier: NotEmpty
          -
            identifier: EmailAddress
      -
        identifier: message
        label: 'Message'
        type: Textarea
        properties:
          fluidAdditionalAttributes:
            placeholder: ''
        defaultValue: ''
        validators:
          -
            identifier: NotEmpty
      -
        identifier: hidden
        label: 'Hidden Field'
        type: Hidden
  -
    identifier: summarypage
    label: 'Summary page'
    type: SummaryPage
```
