Advanced Forms


Requires ACF v5


Advanced Forms lets you build flexible forms using the power of Advanced Custom Fields. The plugin has been built with developers in mind and offers a large variety of helper functions and customization hooks.

  • Use all the fields provided by ACF, including repeaters and flexible content fields
  • Define forms and fields fully programmatically for easy integration with your theme/plugin, or use the intuitive UI
  • Either use the provided hooks to process form submissions as you wish or let the plugin automatically save them as entries
  • Optionally set up emails to be sent automatically with form submissions
  • Set a maximum number of entries created, limit a form to only logged in users, or schedule a form to only display during certain times. Custom restrictions can be applied by hooking in to a simple filter.


Advanced Forms is first and foremost built for developers and allows for simple integration with themes/plugins. Check out the documentation for guides and details about functions/hooks.


The documentation has been moved to a new site, check it out:


  • Form edit page with form settings and a list of form fields
  • Example of entry automatically generated after form submission including all form fields
  • Example of location rules on an ACF field group


  1. Upload the plugin files to the /wp-content/plugins/advanced-forms directory, or install the plugin through the WordPress plugins screen directly.
  2. Make sure ACF v5 is installed and activated.
  3. Activate the plugin through the ‘Plugins’ screen in WordPress.
  4. Read the documentation for instructions on how to create, configure, and display forms.


Installation Instructions
  1. Upload the plugin files to the /wp-content/plugins/advanced-forms directory, or install the plugin through the WordPress plugins screen directly.
  2. Make sure ACF v5 is installed and activated.
  3. Activate the plugin through the ‘Plugins’ screen in WordPress.
  4. Read the documentation for instructions on how to create, configure, and display forms.
Q: Does this plugin only work with ACF v5?

Yes. Versions 4 or lower of ACF are not supported.



My search is over.
Thank you for this outstanding plugin. The documentation is impeccable.
Out of all the plugins available, this is the only one that works 100% as described.
I was able to display all the forms that I had created with the ACF plugin on any page on the front end of my website (even through page builders like Divi).

The Entries, Statistics, Restrictions and Notification Tabs in the back-end are an extremely resourceful addition to your application/plugin.

Thank you once again for offering this much needed plugin to our community.

One of the very few Must-Have ACF Plugin

Advanced Forms is an awesome plugin which helped us to replace the aging Contact Form 7. I must say the latest update is really great with plenty of hooks which let us customize the user experience.

5/5, downloading and installing on every new projects!


Much sleeker than any other form plugin. A great extension that works just like ACF itself, which is nice.

How could we have ever lived without it?

Everybody agrees on the fact that ACF is one of the essential tools every WordPress developer should use. There was only something missing (although it seemed so close…): being able to use ACF from the frontend and create custom post types with ACF fields.
Our quest is over, as Advanced Forms fills the gap. The plugin is well polished and works very well, although it requires some hacking, notably when creating custom posts.
But overall, thanks to the outstanding documentation, Advanced Forms nailed it. THANKS!!

Great Plugin and Support

I love Advanced Custom Fields and am still only scratching the surface of what can be achieved with it. Along comes Advanced Forms and ACF gets even better.

Advanced Forms is easy to get going and Fabian’s support is fantastic and speedy.

I’ve found my new Form Builder!

Read all 7 reviews

Contributors & Developers

“Advanced Forms” is open source software. The following people have contributed to this plugin.


Translate “Advanced Forms” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Added filters for easier inclusion in themes and plugins.
  • Added field include support for image and file fields.
  • Added action after entry has been created (af/form/entry_created).
  • Improved output sanitation for field includes.
  • Fixed issue which sometimes caused “Invalid argument” warnings.


  • Added Polish language translations (thanks @Triloworld).
  • Fixed undefined index “post_type” warnings.


  • Fixed bug where form data would be lost on forms without file uploaders.


  • Added automatic upload of files for the basic uploader. A simple af_save_field will now suffice for file fields with the basic uploader.
  • Added global field setting “Hide from admin?”. Perfect for shared field groups used both for a form and admin, where some fields might only be relevant in the form.
  • Fixed issue where the plugin didn’t work with ACF included through a theme.


  • Added new filter mode. When active a form will not show a success message after submission but instead display all fields again with their submitted values, effectively working as a filter. Set argument filter_mode as true to activate.
  • Improved field inclusion with better dropdowns and contextual options.
  • Improved admin interface with icons and better settings naming.
  • Improved field include support for fields with posts, users, and terms.
  • Added new helper function af_save_all_fields for saving all fields from a form to a post.
  • Changed name of af_save_field_to_post to af_save_field. af_save_field_to_post still works but will be removed in a future version.
  • Added support for default field values.
  • Added filters for pre-filling field values.
  • Added asterix for required fields.
  • Fixed bug where select2 in fields wouldn’t work.
    • many minor improvements and bug fixes.


  • Revised field parsing behind the scenes to more closely match ACF and ensure compatibility. This also improves support for clone fields which should now work as expected in combination with entries and af_get_field. Note: clone fields will no longer be expanded in the global fields array. af_get_field will return values of cloned fields if referenced by name.
  • Added option to include all fields in emails/success messages. Fields will be rendered in a simple and consistent table structure with minimal styling (easily overriden!).
  • Added support for displaying repeaters in emails/success messages.
  • Fixed bug where entry info wasn’t displayed.
  • Fixed bug where filtering entries by form didn’t work.


  • Added helper function af_save_field_to_post( $field_key_or_name, $post_id ) for saving submitted fields directly to posts. No need to mess with update_field!
  • Optimized scripts and styles to only be enqueued when a form is displayed.
  • Added ability to display field values in success messages similar to how they can be used in emails.


First major update to Advanced Forms!

  • Added global plugin object containing info about the latest submission, accessible from anywhere.
  • Revised submission handling. Submission data is now saved to the global object which simplifies the API (af_get_field no longer requires the field parameter and can be used anywhere). As a side effect the af_success URL parameter is no longer necessary!
  • Added target attribute and helper function af_has_submission. The new target attribute lets you specify a custom URL to point the form to. Combined with the af_has_submission function you can now use your submitted form data anywhere and display it however you like.

Check out the updated documentation for more info: Displaying a form and Processing form submissions.


  • Added argument to specify uploader type (media library or basic file field). Similar to acf_form.
  • Added argument for excluding certain fields from form by field key or name (thanks David!)
  • Fixed issue which generated ‘undefined index’ warnings (again, thanks David)

  • Added class for required fields and added field instructions to form output (big thanks to David!)
  • Fixed issue where form wasn’t returned when echo = false
  • Fixed issue where arguments after submission where loaded as object instead of array

  • Set the default content type of emails to HTML
  • Updated styling to keep submit button on its own row
  • Fixed issue with shortcode output being echoed instead of returned
  • Fixed undefined index notice on some admin pages

  • Quick-fix of an issue with field value includes in “From” headers


  • Added option to only display form for logged in users
  • Added option to only display form during certain times
  • Added filters for creating own form restrictions. Check out the documentation for more info.


  • Added option to restrict number of entries
  • Added filters to modify form before rendering
  • Simplified form admin interface


  • Added ability to include form fields in email recipient, subject, and content
  • Added the option to set “From” header in emails
  • Added filters for email headers and attachments
  • Fixed a bug where rows couldn’t be added to repeaters/flexible content fields
  • Fixed a bug where emails wouldn’t be sent after form submission


First version of Advanced Forms!

  • The ability to create forms using an intuitive UI or programmatically
  • Full support for all ACF fields
  • Automatically save form data to entries
  • Define emails to be sent after form submissions
  • Plenty of actions and filters to customize your forms and their functionality