Skip to main content

Meet Formidable

Formidable is a forms add-on for ExpressionEngine 7.5 and later. Build a form in the control panel, or keep the form you already wrote, and Formidable handles everything after: rendering, validation, spam protection, storage, notifications and handing submissions on to the services you use.

Why Formidable?​

Most form tools make you choose. Either a builder owns your markup, or you own your markup and write the plumbing yourself. Formidable doesn't make you pick.

  • One tag, a complete form. {exp:formidable:form form_handle="contact"} renders a finished, accessible form from a theme. That's the whole template.
  • Then take over as much as you like. Swap one class, one attribute, one field's markup, or the whole form. Every layer you don't replace keeps working.
  • Or bring your own. Wrap a hand-written form in {exp:formidable:capture} and Formidable builds the form behind it, leaving your markup exactly as you wrote it.
  • The server is the source of truth. Conditions, required fields, computed values and limits are decided again on submit, whatever the browser sent.

What's in the box​

Where to start​

Formidable is available from the ExpressionEngine add-on store.

New to Formidable? Read these three in order. They take about fifteen minutes, and everything else will make sense afterwards.

  1. Installation: where to get Formidable, its requirements, and the two folders to copy.
  2. Your first form: build a contact form and put it on a page.
  3. How it works: the pieces, and the path a submission takes through them.

Already comfortable? Jump to the form tag reference, or learn to render a form your way.

Requirements​

ExpressionEngine7.5 or later
PHP8.2 or later
DatabaseWhatever your version of ExpressionEngine requires
About the examples

Template examples name the file they belong in. Where a page shows the HTML Formidable produces, it's labelled either rendered output, copied from a real install, or illustrative, written by hand to show a shape. Every tag parameter in these docs is checked against the add-on's source each time the site builds.