Puts the right HTML autocomplete attribute on your form fields, so browsers and password managers fill them in correctly — and so your forms satisfy WCAG 1.3.5 (Identify Input Purpose), which the European Accessibility Act has required since June 2025.
Fluent Forms does have a feature called “autocomplete”, but it is Google Maps / OpenStreetMap address lookup — a different thing entirely. The native HTML attribute, the one browsers and screen readers read, was missing. This adds it.
Use Cases
- Accessibility compliance – WCAG 1.3.5 is a Level AA criterion, and accessibility audits flag forms whose inputs don’t declare their purpose. This is usually the cheapest finding on the report to close.
- Fewer abandoned forms – a visitor’s browser fills name, email, phone and address in one tap instead of six. On mobile that is the difference between a completed enquiry and a closed tab.
- Cognitive accessibility – people who rely on their browser’s stored personal data to fill forms cannot do so at all when fields don’t declare what they hold.
- Password managers – a login or registration form that says
current-passwordornew-passwordworks with 1Password, Bitwarden and the browser’s own manager instead of fighting them.
How to Use
Nothing to switch on. Every form gets the attributes from the moment you update, including forms you built years ago.
To change what a field declares:
- Open the form in the editor and select the field
- Go to its Advanced tab
- Set Autofill Purpose
| Choice | What it does |
|---|---|
| Automatic (default) | Uses the field type — see the table below |
| Off — do not autofill | Renders autocomplete="off", telling the browser to leave this field alone |
| A token from the list | Renders that token, e.g. organization, new-password, bday |
| Anything you type | The dropdown accepts free text, so the full HTML autofill vocabulary works — billing street-address, section-work email, cc-number |
What “Automatic” Recognises
| Field | Attribute |
|---|---|
email | |
| Phone | tel |
| Website / URL | url |
| Country dropdown | country-name |
| Name → First / Middle / Last | given-name / additional-name / family-name |
| Address → Line 1 / Line 2 / City / State / ZIP / Country | address-line1 / address-line2 / address-level2 / address-level1 / postal-code / country-name |
Everything else — plain text inputs, textareas, dropdowns, numbers, dates, passwords — is left alone until you choose a purpose yourself.
That restraint is deliberate. WCAG 1.3.5 asks for the correct purpose, not any purpose: a guessed token makes the browser fill the wrong personal data into the wrong box, which is a worse accessibility problem than the missing attribute it was meant to fix. A text field labelled “Your reference” is not a name, and only you know whether your password field is a login or a registration.
Why passwords and dates aren’t automatic
A password field is new-password on a registration form and current-password on a login form — get it backwards and the browser offers to save the wrong thing. A date field is as often an appointment slot as a birthday. Both keep the setting, so you can say which in one click.
Key Features
Works on Existing Forms
The attribute is resolved when the form is rendered, so old forms get it without being opened, re-saved or migrated.
Never Overwrites What You Set
If a field already carries an autocomplete attribute — set by hand in Fluent Forms’ attributes panel, or added by another plugin — it is left untouched.
Name and Address Fields Are Mapped Part by Part
These are composite fields with several inputs, and each input gets its own token. That is where most of the accessibility value sits, and it is why they have no single dropdown of their own: one token cannot describe six inputs. Use the filter below to adjust them.
Turning It Off
There is no settings toggle. Switch the whole feature off with a filter:
// Everywhere.
add_filter('formenhancer/autocomplete', '__return_false');
// Only on form 42.
add_filter('formenhancer/autocomplete', function ($enabled, $form) {
return 42 === (int) $form->id ? false : $enabled;
}, 10, 2);
To change a single input’s token — including the sub-fields of name and address fields:
// Bill the address fields to a billing section.
add_filter('formenhancer/autocomplete_token', function ($token, $element, $inputName, $form) {
if ('address' === $element && 'address_line_1' === $inputName) {
return 'billing street-address';
}
return $token;
}, 10, 4);
// Never autofill anything on the internal staff form.
add_filter('formenhancer/autocomplete_token', function ($token, $element, $inputName, $form) {
return 19 === (int) $form->id ? 'off' : $token;
}, 10, 4);
Return null or an empty string to render no attribute at all.
Notes
- Hand-typed values are checked against the autofill grammar (letters, digits, hyphens, and the spaces that separate prefixes like
billingorsection-*). Anything else is dropped rather than rendered into the page. - Browsers ignore
autocomplete="off"on some fields — notably passwords, where password managers deliberately override it. That is browser behaviour, not a plugin limitation. - Further reading: the
autocompleteattribute on MDN, the full token list in the HTML spec, and Understanding WCAG 1.3.5.
Table of Contents