Answers.Body: <p>To answer your questions in regards to how they will fit with Freeform...</p>
  
  <ol>
  <li><p>If what you mean by <strong>pre-populating fields with existing data</strong> is being able to fill fields with data from other elements, Freeform can do this. It allows you to <a href="https://docs.solspace.com/craft/freeform/v3/overview/fields-field-types.html#populating-fields-with-elements-predefined-options" rel="nofollow noreferrer">populate fields with data from other Craft Elements or even common Predefined data</a> included with Freeform such as States, Months, Date ranges, number ranges, etc. If what you mean is that you'd like a submitted form to retain its existing data when there's an error upon submitting the form, it can do that as well.</p></li>
  <li><p><strong>Forms can be duplicated</strong> in Freeform.</p></li>
  <li><p>You have <strong>full control over your <a href="https://docs.solspace.com/craft/freeform/v3/overview/formatting-templates.html" rel="nofollow noreferrer">template formatting</a></strong> in Freeform. You can use one of the <a href="https://docs.solspace.com/craft/freeform/v3/templating-extras/formatting-template-examples.html" rel="nofollow noreferrer">default formatting templates included with Freeform</a> (preset for popular frameworks), use one as a starting point and adjust as necessary, or completely customize your own thing.</p></li>
  <li><p>The best choice here would be to use Freeform's built-in <a href="https://docs.solspace.com/craft/freeform/v3/overview/fields-field-types.html#table" rel="nofollow noreferrer">Table field</a>, which allows you to collect and handle repeating data nicely.</p></li>
  <li><p>Freeform offers <strong><a href="https://docs.solspace.com/craft/freeform/v3/overview/fields-field-types.html" rel="nofollow noreferrer">a wide variety of field types</a></strong>, and included with them is the necessary validation for each.</p></li>
  <li><p><a href="https://docs.solspace.com/craft/freeform/v3/overview/fields-field-types.html#file-upload" rel="nofollow noreferrer">File Upload fields</a> are available with Freeform.</p></li>
  <li><p>Freeform's <strong><a href="https://docs.solspace.com/craft/freeform/v3/overview/conditional-rules.html" rel="nofollow noreferrer">Conditional Rules</a> feature allows you to show/hide fields based on the contents or selection or check of other field(s)</strong>. Included in this is also page jumping in <a href="https://docs.solspace.com/craft/freeform/v3/overview/multi-page-forms.html" rel="nofollow noreferrer">multi-page forms</a>.</p></li>
  <li><p>Freeform offers <strong>5 different ways to send <a href="https://docs.solspace.com/craft/freeform/v3/overview/email-notifications.html" rel="nofollow noreferrer">email notifications</a></strong>, and you can have <strong>as many different types of email notification templates</strong>, and <strong>customize them however you please</strong>.</p></li>
  <li><p>It depends what you mean by <em>translatable</em>, but <a href="https://docs.solspace.com/craft/freeform/v3/setup/translating.html" rel="nofollow noreferrer">Freeform forms can be translated</a> with <strong>static translation files</strong>. The CP itself is also translatable.</p></li>
  <li><p>Freeform has what we believe is fairly <a href="https://docs.solspace.com/craft/freeform/v3/" rel="nofollow noreferrer">comprehensive documentation</a>, and it's always getting better. And when questions or issues arise, you can always <a href="https://docs.solspace.com/craft/freeform/v3/support.html" rel="nofollow noreferrer">contact us for help</a>.</p></li>
  <li><p>Freeform is the most popular third party form plugin for Craft CMS, and it has <strong>a proven history of active development for years</strong>. You can preview the meaty <a href="https://docs.solspace.com/craft/freeform/v3/setup/changelog.html" rel="nofollow noreferrer">changelog</a> filled with countless feature additions, improvements and bug fixes. It's actively developed by <a href="https://solspace.com" rel="nofollow noreferrer">Solspace</a>, which has been around and developing software for well over a decade. :)</p></li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-01-21T05:31:51.787Z
Answers.LastActivityDate: 2019-11-07T14:27:57.530Z
Answers.LastEditDate: 2019-11-07T14:27:57.530Z
Answers.UserDisplayName: Solspace
Answers.Body: <p>I work with Sprout and can answer your questions with regards to Sprout Forms. </p>
  
  <p><strong>1. It should be possible to prepopulate fields with existing data</strong></p>
  
  <p>This will happen by default in a lot of standard use cases when you are using <a href="https://sprout.barrelstrengthdesign.com/docs/forms/default-form-templates.html" rel="nofollow noreferrer">Form Templates</a> and when validation fails, for example. It's also possible to populate a Form Entry dynamically using the <a href="https://sprout.barrelstrengthdesign.com/docs/forms/entries.html#templating" rel="nofollow noreferrer">setEntry</a> variable.</p>
  
  <p><strong>2. Duplicating forms should be possible</strong></p>
  
  <p>You can duplicate a form by selecting <code>Save-&gt;Save as New Form</code></p>
  
  <p><strong>3. Templating completely customizable</strong></p>
  
  <p>Sprout Forms templates are 100% customizable down to the individual field type. See:</p>
  
  <ul>
  <li><a href="https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html" rel="nofollow noreferrer">Template Overrides</a> - allow you to override form templates with your own custom HTML right within your Craft templates/ folder. You get full access to the form templates being output and can customize them however you'd like.</li>
  <li><a href="https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-templates.html" rel="nofollow noreferrer">Form Templates API</a> - allows you to manage Template Overrides as custom, reusable Form Templates in a plugin or module</li>
  <li><a href="https://sprout.barrelstrengthdesign.com/docs/forms/rendering-options.html" rel="nofollow noreferrer">Rendering Options</a> - allow you to dynamically override certain characteristics in existing Form Templates</li>
  </ul>
  
  <p><strong>4. Ability to dynamically add more rows of fields (like in a reservation for a hotel where you can add more rooms or persons)</strong></p>
  
  <p>Sprout Forms avoids supporting fields that may require javascript and interactivity on the front-end by default (as we can't predict all the potential use cases of how this type of interactivity should be implemented), however, we do support custom <a href="https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-fields.html" rel="nofollow noreferrer">Form Fields</a> and <a href="https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html" rel="nofollow noreferrer">Template Overrides</a> which should give you all the control you need to create the advanced field types you need on the front-end and style and script them however you need.</p>
  
  <p><strong>5. Validation for at least the basic field types</strong></p>
  
  <p>All Form Fields provide validation. Custom <a href="https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-fields.html" rel="nofollow noreferrer">Form Fields</a> can be created to support additional validation requirements.</p>
  
  <p><strong>6. File uploads should be possible</strong></p>
  
  <p>File Uploads are supported via the File Upload Form Field.</p>
  
  <p><strong>7. Custom conditions for custom fields (like a checkbox only checkable after checking another one before)</strong></p>
  
  <p>Forms allow you to add Conditional Rules for your Fields.</p>
  
  <p>For more advanced scenarios, conditional logic could also be handled via your templates and CSS and Javascript. Form Fields support adding custom CSS Classes, <a href="https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html" rel="nofollow noreferrer">Template Overrides</a> allow you to customize any details about how your Form and Field HTML is output so you can interact with it how you need, and while it's currently undocumented, you can also add pre-defined CSS Classes as a dropdown option if you create custom <a href="https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-templates.html#form-template-class" rel="nofollow noreferrer">Form Templates</a> via the API.</p>
  
  <p><strong>8. Custom email template</strong></p>
  
  <p>Sprout Forms Notifications are powered by an integration with Sprout Email so you have the full feature set of Sprout Email Notification Emails in Sprout Forms.</p>
  
  <p>Similar to Form Templates, Email Notifications allow you to control every detail of the HTML and Text versions of your emails via <a href="https://sprout.barrelstrengthdesign.com/docs/email/template-overrides.html" rel="nofollow noreferrer">Email Template Overrides</a></p>
  
  <p>Reporting is handled in a similar way and is powered by Sprout Reports.</p>
  
  <p><strong>9. Translatable</strong></p>
  
  <p>Translating forms is tricky business. This is because the problem is the reverse of the problem Craft is solving by default. Craft Elements support translations of the content being submitted to custom fields where Form Elements need to support translations of the Labels and Descriptions of the fields being submitted, and the user adds the content afterward in whatever language they are given the option to submit it.</p>
  
  <p>Sprout Forms supports translating a form by duplicating a form. Outside of that, Sprout Forms ensures the plugin itself is translatable however the translation itself would have to happen outside of the plugin.</p>
  
  <p><strong>10. Good documentation</strong></p>
  
  <p>We think we have decent docs and we're always looking to improve, so please drop us a note if you feel we could add a useful example:</p>
  
  <p><a href="https://sprout.barrelstrengthdesign.com/docs/forms/" rel="nofollow noreferrer">Sprout Forms Documentation</a></p>
  
  <p>If you ever feel stuck or are curious about how to tackle a hard problem using Sprout Plugins, we also offer a free half-hour <a href="https://sprout.barrelstrengthdesign.com/docs/support/training.html" rel="nofollow noreferrer">coaching session</a></p>
  
  <p><strong>11. Active development</strong></p>
  
  <p>Sprout Forms is built by Barrel Strength Design who is has been involved in the Craft CMS community since it was called Blocks CMS. All of our commercial plugins are actively developed and supported and Sprout Forms will continue to benefit from new features we are developing in our other plugins as well (Email, Reporting, Imports, Fields).</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-11-09T17:05:26.763Z
Answers.Text: Thank you very much for your detailed answer! I will definitely take a look at Sprout forms, and I am still waiting for some answers with regard to Solspace Forms. Thank you, once again, so much for all the effort you put into this!
Answers.UserDisplayName: Luke
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-11-08T13:26:40.747Z
Answers.LastActivityDate: 2019-10-17T22:30:18.590Z
Answers.LastEditDate: 2019-10-17T22:30:18.590Z
Answers.UserDisplayName: Ben Parizek
Body: <p>I'm currently using <a href="https://github.com/am-impact/amforms" rel="nofollow noreferrer">amforms from a&amp;m impact</a> on a couple of sites. However, it looks like this plugin won't get a craftcms version 3 update. In addition, my requirements for a form plugin have expanded considerably since my clients want more advanced functionality. Therefore, I am now searching for a good alternative. </p>
  
  <p><strong>My requirements are as follows:</strong></p>
  
  <ol>
  <li>It should be possible to prepopulate fields with existing data</li>
  <li>Duplicating forms should be possible</li>
  <li>Templating completely customizable </li>
  <li>Ability to dynamically add more rows of fields (like in a reservation for a hotel where you can add more rooms or persons)</li>
  <li>Validation for at least the basic field types </li>
  <li>File uploads should be possible</li>
  <li>Custom conditions for custom fields (like a checkbox only checkable after checking another one before)</li>
  <li>Custom email template</li>
  <li>Translatable</li>
  <li>Good documentation</li>
  <li>Active development</li>
  </ol>
  
  <p>Right now <a href="https://docs.solspace.com/craft/freeform/v3/" rel="nofollow noreferrer">Solspace's Freeform</a> looks most promising and I already know their calendar plugin. However, <a href="https://github.com/barrelstrength/craft-sprout-forms" rel="nofollow noreferrer">Sprout Forms</a> also looks quite capable. </p>
  
  <p>Does anyone of you has experience with one of these plugins or can recommend another plugin that meets all or most of the criteria?</p>
  
  <p>Thank you so much for your help!</p>
  
Tags: <plugins><form><plugin-sproutforms><plugin-contactform><plugin-freeform>
Title: Looking for an advanced form plugin for Craft CMS
ThreadText: # Looking for an advanced form plugin for Craft CMS
  
  (Asked by: username_0 on 2018-11-07)
  
  I'm currently using [amforms from a&m impact](https://github.com/am-impact/amforms) on a couple of sites. However, it looks like this plugin won't get a craftcms version 3 update. In addition, my requirements for a form plugin have expanded considerably since my clients want more advanced functionality. Therefore, I am now searching for a good alternative.
  
  **My requirements are as follows:**
  
  1. It should be possible to prepopulate fields with existing data
  2. Duplicating forms should be possible
  3. Templating completely customizable
  4. Ability to dynamically add more rows of fields (like in a reservation for a hotel where you can add more rooms or persons)
  5. Validation for at least the basic field types
  6. File uploads should be possible
  7. Custom conditions for custom fields (like a checkbox only checkable after checking another one before)
  8. Custom email template
  9. Translatable
  10. Good documentation
  11. Active development
  
  Right now [username_1's Freeform](https://docs.username_1.com/craft/freeform/v3/) looks most promising and I already know their calendar plugin. However, [Sprout Forms](https://github.com/barrelstrength/craft-sprout-forms) also looks quite capable.
  
  Does anyone of you has experience with one of these plugins or can recommend another plugin that meets all or most of the criteria?
  
  Thank you so much for your help!
  
  **Tags:** plugins, form, plugin-sproutforms, plugin-contactform, plugin-freeform
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2019-01-21. Score: 6
  
  To answer your questions in regards to how they will fit with Freeform...
  
  1. If what you mean by **pre-populating fields with existing data** is being able to fill fields with data from other elements, Freeform can do this. It allows you to [populate fields with data from other Craft Elements or even common Predefined data](https://docs.username_1.com/craft/freeform/v3/overview/fields-field-types.html#populating-fields-with-elements-predefined-options) included with Freeform such as States, Months, Date ranges, number ranges, etc. If what you mean is that you'd like a submitted form to retain its existing data when there's an error upon submitting the form, it can do that as well.
  2. **Forms can be duplicated** in Freeform.
  3. You have **full control over your [template formatting](https://docs.username_1.com/craft/freeform/v3/overview/formatting-templates.html)** in Freeform. You can use one of the [default formatting templates included with Freeform](https://docs.username_1.com/craft/freeform/v3/templating-extras/formatting-template-examples.html) (preset for popular frameworks), use one as a starting point and adjust as necessary, or completely customize your own thing.
  4. The best choice here would be to use Freeform's built-in [Table field](https://docs.username_1.com/craft/freeform/v3/overview/fields-field-types.html#table), which allows you to collect and handle repeating data nicely.
  5. Freeform offers **[a wide variety of field types](https://docs.username_1.com/craft/freeform/v3/overview/fields-field-types.html)**, and included with them is the necessary validation for each.
  6. [File Upload fields](https://docs.username_1.com/craft/freeform/v3/overview/fields-field-types.html#file-upload) are available with Freeform.
  7. Freeform's **[Conditional Rules](https://docs.username_1.com/craft/freeform/v3/overview/conditional-rules.html) feature allows you to show/hide fields based on the contents or selection or check of other field(s)**. Included in this is also page jumping in [multi-page forms](https://docs.username_1.com/craft/freeform/v3/overview/multi-page-forms.html).
  8. Freeform offers **5 different ways to send [email notifications](https://docs.username_1.com/craft/freeform/v3/overview/email-notifications.html)**, and you can have **as many different types of email notification templates**, and **customize them however you please**.
  9. It depends what you mean by *translatable*, but [Freeform forms can be translated](https://docs.username_1.com/craft/freeform/v3/setup/translating.html) with **static translation files**. The CP itself is also translatable.
  10. Freeform has what we believe is fairly [comprehensive documentation](https://docs.username_1.com/craft/freeform/v3/), and it's always getting better. And when questions or issues arise, you can always [contact us for help](https://docs.username_1.com/craft/freeform/v3/support.html).
  11. Freeform is the most popular third party form plugin for Craft CMS, and it has **a proven history of active development for years**. You can preview the meaty [changelog](https://docs.username_1.com/craft/freeform/v3/setup/changelog.html) filled with countless feature additions, improvements and bug fixes. It's actively developed by [username_1](https://username_1.com), which has been around and developing software for well over a decade. :)
  
  
  ---
  
  ### Answer by username_2 on 2018-11-08. Score: 3
  
  I work with Sprout and can answer your questions with regards to Sprout Forms.
  
  **1. It should be possible to prepopulate fields with existing data**
  
  This will happen by default in a lot of standard use cases when you are using [Form Templates](https://sprout.barrelstrengthdesign.com/docs/forms/default-form-templates.html) and when validation fails, for example. It's also possible to populate a Form Entry dynamically using the [setEntry](https://sprout.barrelstrengthdesign.com/docs/forms/entries.html#templating) variable.
  
  **2. Duplicating forms should be possible**
  
  You can duplicate a form by selecting `Save->Save as New Form`
  
  **3. Templating completely customizable**
  
  Sprout Forms templates are 100% customizable down to the individual field type. See:
  
  * [Template Overrides](https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html) - allow you to override form templates with your own custom HTML right within your Craft templates/ folder. You get full access to the form templates being output and can customize them however you'd like.
  * [Form Templates API](https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-templates.html) - allows you to manage Template Overrides as custom, reusable Form Templates in a plugin or module
  * [Rendering Options](https://sprout.barrelstrengthdesign.com/docs/forms/rendering-options.html) - allow you to dynamically override certain characteristics in existing Form Templates
  
  **4. Ability to dynamically add more rows of fields (like in a reservation for a hotel where you can add more rooms or persons)**
  
  Sprout Forms avoids supporting fields that may require javascript and interactivity on the front-end by default (as we can't predict all the potential use cases of how this type of interactivity should be implemented), however, we do support custom [Form Fields](https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-fields.html) and [Template Overrides](https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html) which should give you all the control you need to create the advanced field types you need on the front-end and style and script them however you need.
  
  **5. Validation for at least the basic field types**
  
  All Form Fields provide validation. Custom [Form Fields](https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-fields.html) can be created to support additional validation requirements.
  
  **6. File uploads should be possible**
  
  File Uploads are supported via the File Upload Form Field.
  
  **7. Custom conditions for custom fields (like a checkbox only checkable after checking another one before)**
  
  Forms allow you to add Conditional Rules for your Fields.
  
  For more advanced scenarios, conditional logic could also be handled via your templates and CSS and Javascript. Form Fields support adding custom CSS Classes, [Template Overrides](https://sprout.barrelstrengthdesign.com/docs/forms/template-overrides.html) allow you to customize any details about how your Form and Field HTML is output so you can interact with it how you need, and while it's currently undocumented, you can also add pre-defined CSS Classes as a dropdown option if you create custom [Form Templates](https://sprout.barrelstrengthdesign.com/docs/forms/custom-form-templates.html#form-template-class) via the API.
  
  **8. Custom email template**
  
  Sprout Forms Notifications are powered by an integration with Sprout Email so you have the full feature set of Sprout Email Notification Emails in Sprout Forms.
  
  Similar to Form Templates, Email Notifications allow you to control every detail of the HTML and Text versions of your emails via [Email Template Overrides](https://sprout.barrelstrengthdesign.com/docs/email/template-overrides.html)
  
  Reporting is handled in a similar way and is powered by Sprout Reports.
  
  **9. Translatable**
  
  Translating forms is tricky business. This is because the problem is the reverse of the problem Craft is solving by default. Craft Elements support translations of the content being submitted to custom fields where Form Elements need to support translations of the Labels and Descriptions of the fields being submitted, and the user adds the content afterward in whatever language they are given the option to submit it.
  
  Sprout Forms supports translating a form by duplicating a form. Outside of that, Sprout Forms ensures the plugin itself is translatable however the translation itself would have to happen outside of the plugin.
  
  **10. Good documentation**
  
  We think we have decent docs and we're always looking to improve, so please drop us a note if you feel we could add a useful example:
  
  [Sprout Forms Documentation](https://sprout.barrelstrengthdesign.com/docs/forms/)
  
  If you ever feel stuck or are curious about how to tackle a hard problem using Sprout Plugins, we also offer a free half-hour [coaching session](https://sprout.barrelstrengthdesign.com/docs/support/training.html)
  
  **11. Active development**
  
  Sprout Forms is built by Barrel Strength Design who is has been involved in the Craft CMS community since it was called Blocks CMS. All of our commercial plugins are actively developed and supported and Sprout Forms will continue to benefit from new features we are developing in our other plugins as well (Email, Reporting, Imports, Fields).
  
  > **Comments:**
  > **username_0**: Thank you very much for your detailed answer! I will definitely take a look at Sprout forms, and I am still waiting for some answers with regard to username_1 Forms. Thank you, once again, so much for all the effort you put into this!  
  
  ---
  
  