Layout
Groups, rows and the twelve-column grid.
What you set on the field, the sender notices right away, and the server still does not rely on it.
What you enter under "Options" ends up on the field in the storefront. The browser keeps to it before anything is sent at all.
CancelSave
Once so it feels good. Once so it is true.
min="1" checked by the browsermax="10000" checked by the browserrequired checked by the browserIf validation fails, the form comes back with the entered values and the error messages. Only the form area is swapped, the page does not reload.
Mandatory fields, character limits, number ranges and allowed file extensions are real attributes. The sender gets feedback right away, without a detour via the server.
Afterwards the server checks the same rules again (and before that, which elements were visible at all according to their conditions). What was invisible is neither required nor stored.
There is no second place for keys here.
Form spam protection here means the shop's CAPTCHA. The plugin configuration has one switch for it, nothing more. If it is on, whatever is entered as the active CAPTCHA under Settings, Shop, Basic Information is validated, per sales channel.
The plugin stores no keys of its own. Whoever changes provider changes it in one place, and the form follows.
Exactly three are validated: honeypot, basic CAPTCHA and Google reCAPTCHA v3 (three of the four the Shopware core brings; Google reCAPTCHA v2 is not among them). The honeypot keeps spam out without customers solving a CAPTCHA: a hidden field that only bots fill in.
That list is fixed. If a CAPTCHA is active in the shop that is not on it (Google reCAPTCHA v2 from the core, say, or Friendly Captcha, which the paid Shopware plans add), it is skipped on this form, without an error. The honeypot still applies if it is active as well.
Groups, rows and the twelve-column grid.
All 23 field types and what they do.
Mandatory fields, limits, CAPTCHA.
Twelve operators and the OR rule.