# Form plugins

> Contact Form 7, WPForms, Gravity Forms, Fluent Forms and page builder forms with AjaxPress, and how to test yours.

Source: https://arraystory.com/docs/ajaxpress/form-plugins/

Form plugins and AjaxPress get along without any setup. This page explains why, and how to check a form on your own site.

## Why they work

Most form plugins already submit their forms in the background, with their own script, and show the confirmation message in place. That includes Contact Form 7, WPForms, Fluent Forms, Formidable Forms, Ninja Forms, Forminator, Elementor and Bricks forms, and Gravity Forms with ajax turned on.

When a plugin handles its own submission, AjaxPress sees that and stays out of the way. The form behaves exactly as it does without AjaxPress.

Forms that submit the ordinary way, such as Gravity Forms without ajax, or a hand-written form, are submitted by AjaxPress in the background instead, and the result page appears without a full reload. See [Forms](https://arraystory.com/docs/ajaxpress/forms/).

## Things that work as usual

- **Validation messages** and required fields.
- **CAPTCHA, reCAPTCHA and Cloudflare Turnstile.** Each page loads its own scripts, so the challenge is set up fresh on every page.
- **Multi-step forms**, conditional fields and calculations.
- **Email notifications** and entries, which are handled on your server.

## Things to test

After installing AjaxPress, submit each important form once, logged out, and check:

1. The confirmation message appears, or the confirmation page loads.
2. The notification email and the entry arrive, **once**.
3. If the form **redirects** after submitting (to a thank-you page, or to a payment page), you land on the right page, and the address bar shows it.
4. **File upload** fields work. Forms with a file field always submit the normal way, which is expected.

## If a form misbehaves

| Symptom | Try |
| --- | --- |
| The entry or email arrives twice | Update AjaxPress (2.4.2 fixed the known cases), then opt the form out |
| The form stops before its confirmation message | Same |
| The page changes, but the confirmation is missing | Opt the form out |
| The form works only after a full page reload | Opt the form out, or [exclude the page](https://arraystory.com/docs/ajaxpress/exclude-links/) |

To opt a form out, add `data-ajaxpress-ignore-submit` to the form or an element around it. With a form plugin, the simplest place is a wrapper: a **Custom HTML** block around the form's shortcode, or a custom attribute on the page builder section that holds the form:

```html
<div data-ajaxpress-ignore-submit>
  [contact-form-7 id="123"]
</div>
```

See [Forms](https://arraystory.com/docs/ajaxpress/forms/#opt-a-form-out) and [Form problems](https://arraystory.com/docs/ajaxpress/form-problems/).
