Contact form
Salutation, first name, last name, email, phone, subject, message. Whether first name, last name and phone are mandatory is a basic setting. Which fields exist is nobody's decision.
Shopware ships a contact form, and it works exactly as long as nobody wants an extra field. This page shows what the built-in tools carry, where they stop, and how the plugin builds a form from groups, rows and 23 field types.
View in the Shopware Store Open the demo shop
Shopping experiences have one form element. It knows three types, and in all three the fields are fixed.
Salutation, first name, last name, email, phone, subject, message. Whether first name, last name and phone are mandatory is a basic setting. Which fields exist is nobody's decision.
Its own type with its own purpose: sign-up and sign-off. It leads into the newsletter recipient list, not into a mailbox.
The third type, for the case the law provides for. Here too the fields are part of the template.
The element itself has five settings: type, headline, recipient address, whether the shop address receives a copy, and the confirmation text. None of them touches a field.
Three points at which the built-in tools have nothing left to offer.
Order number, preferred date, quantity, an attachment: the element has no place for them. The way there leads through your own template.
Company and VAT ID should only appear when somebody ticked "company". A fixed template does not know that difference.
The core does not store the submission. It validates it, raises an event, a flow turns that into an email. After that it lives in the mailbox and nowhere else.
Six steps, all in the administration, none in the source code. On the right, each step shows the same form one stage further along.
A form starts as an empty section with a heading. The group asks nothing itself - it holds together what belongs together.
Now the fields go in. Each gets a label, optionally a placeholder, and you decide whether it is mandatory. Stacked, they first take the full width.
Three fields side by side instead of stacked: within a row a twelve-column grid distributes the width. A third is four columns, a half is six.
Content elements fit between the rows: a subheading, a note, a divider. They ask nothing and do not show up in the submission later.
A field may listen to another. Twelve operators are available - "equals", "contains", "greater than", "is empty" and their counterparts. The company only appears once somebody picked "company".
Finally the rules: mandatory, shortest and longest entry, smallest and largest value, earliest and latest date, permitted file types. The browser reports at once, and the server checks the same rule again.
Groups and rows are elements themselves. The indent says what something sits inside, and the width only applies within a row.
Elements
| # | Name | Type | Width |
|---|---|---|---|
| 1 | Product advice | Group, Structure element | — |
| 1.1 | Customer type row | Row, Structure element | — |
| 1.1.1 | Customer type | Dropdown (select), Input element | 1/2 |
| 1.1.2 | Advice topic | Radio (radio), Input element | 1/2 |
| 1.2 | Company data row | Row, Structure element | — |
| 1.2.1 | Company | Text (text), Input element | 1/2 |
| 1.2.2 | VAT ID | Text (text), Input element | 1/2 |
| 1.3 | Project row | Row, Structure element | — |
| 1.3.1 | Quantity | Number (number), Input element | 1/3 |
| 1.3.2 | Urgency | Slider (range), Input element | 1/3 |
| 1.3.3 | Preferred date | Date (date), Input element | 1/3 |
| 1.4 | Rush notice | Warning message, Content element | 1/1 |
Rebuild of the outline from the administration, with the values of the demo form "Request product advice".
Group and row. In the storefront a group becomes a section with its own heading, a row divides up the width. Neither takes any input.
Eight output elements: heading, free text, line break, rule, and four message kinds in green, blue, yellow and red. The rush notice above is one of them.
The 23 field types. Only these are validated and stored. Three of them produce two inputs from one element: salutation, first name with last name, email with phone.
Width is a twelve-column grid and only applies within a row: 12 is the whole row, 6 a half, 4 a third, 3 a quarter. Outside a row the full width always applies.
These are the 23 types a form is built from, each as it appears in the shop. From a single line of text to the field pair that asks for first and last name in one go.
Yes
checkboxChoose an image
imageChoose a file
filenot visible
hiddenI agree.
consentNames and order come from the plugin, not from this page.
Not every element asks something. These structure the form or say something - and none of them shows up in the submission later.
Orders the form. These elements do not appear in the submission.
Explains and separates. These elements do not end up in the payload either.
Every element can carry conditions, a row or a group included. It then takes everything inside it along.
Customer type: Private
Customer type: Company
The condition sits on the "company data" row, not on the two fields inside it. Without reloading the page.
Which ones are on offer depends on the field the condition looks at. Text fields know "contains", number fields "is greater than", checkboxes "is checked".
One satisfied rule is enough for an element to appear. The server evaluates the same rules again before validation, so a tampered form smuggles nothing through.
For urgent requests we recommend adding a phone number.is greater than 7
The same mechanism with a number: the yellow message hangs on the rule "greater than 7".
Three places, and at two of them an assignment decides which form it becomes.
Shopping experience
Block "Form Manager" from the forms category, with the chosen form
As its own block and as an element, in the forms category. You put it into a section and pick the form - it brings its own place with it.
Three positions to choose from: below the buy box, below the description, or in a tab of its own. Plus three ways to show it - visible right away, collapsed behind a button, or as a link.
| Form | Context | Sales channel | Date |
|---|---|---|---|
| Request product advice | Product · SWDEMO10005 | Storefront | 21 June 2026 |
| Order query | Order · 10042 | Storefront | 21 June 2026 |
| Contact form | — | Storefront | 21 June 2026 |
In the order list and in the order detail. The order number comes along by itself: afterwards it sits on the submission as its context, without anybody having typed it.
An assignment names the form, the products or a dynamic product group, optionally a rule from the rule builder, and a priority. If two assignments hit the same product, the higher number wins. A parent product covers the whole variant family.
They sit in a history, with the context they came from.
| Form | Context | Sales channel | Date |
|---|---|---|---|
| Request product advice | Product · SWDEMO10005 | Storefront | 21 June 2026 |
| Order query | Order · 10042 | Storefront | 21 June 2026 |
| Contact form | — | Storefront | 21 June 2026 |
Rebuild of the history. The list also carries the customer, plus filters and the CSV export.
What gets stored is what somebody entered: type, key, label, value. Groups and rows do not end up in it.
The CSV columns come from the stored submissions, not from today's form. A form changed or deleted later therefore does not make old submissions unreadable.
The form says what the sender sees afterwards: free text or one of the four message kinds. On top of that you can store an address that receives an email.
The CSV export starts with 14 fixed columns. They are there for every submission, whatever the form looks like - the form's own fields follow.
The export looks back: it takes the labels that applied when the submission arrived. Renaming a field later does not change an old row.
The plugin configuration as it appears in the administration. Few switches - most of it you decide on the form itself.
Each starts from a situation shops really have and ends with a form that resolves it. The fields are the ones the plugin offers.
Requests come in about everything: delivery time, invoice, a product question, a complaint.
See the formA machine, a material, a made-to-measure piece of furniture: customers ask before buying whether it fits.
See the formA reseller wants 500 units, delivered to Austria, by the end of the quarter. They write a three-line email, and sales then asks back three times.
See the formAdvice, a fitting, a workshop slot, a pickup: the customer should propose a time.
See the formPrinted textiles, signs, business cards: the customer supplies the artwork. So far by mail, with the subject "attached" and no order reference.
See the formThe article arrived damaged, the invoice is missing, one line item should go back.
See the formThe shop is hiring. The careers page has an address for applications, and the documents arrive in every conceivable shape.
See the formA handful of dates, limited places, catering included. The kitchen needs the number of people and the dietary requirements, and it needs them beforehand.
See the formA customer wants to revoke. They find the form on a legal page, fill it in and type the order number from memory - or not at all.
See the formThe extension itself is free and lets you build one form. What you add on lifts the limits and unlocks the history and the assignments.
Free
0 €
permanently, no term
For small forms without history and without automatic integrations.
Starter
99 € a year 9.90 € a month
that is € 8.25 a month, plus VAT€ 19.80 saved cancel monthly, plus VAT
For more extensive forms, more input fields and traceable submissions.
Business
199 € a year 19.90 € a month
that is € 16.58 a month, plus VAT€ 39.80 saved cancel monthly, plus VAT
For growing shops that want to use forms specifically on product pages.
Enterprise
399 € a year 39.90 € a month
that is € 33.25 a month, plus VAT€ 79.80 saved cancel monthly, plus VAT
For professional form processes with the full feature set and unlimited forms.
Prices, limits and features as the extension itself shows them. What counts for the purchase is the store.
As soon as one more field is needed, yes. The shopping experiences in Shopware ship one form element with three types and fixed fields; every extra field means a template of your own. With the plugin you put together forms, conditions and placement in the administration, without writing code.
No. Forms, conditions and placement are all set up in the administration. What is stored is what somebody entered.
It does not have to. The built-in element stays where it is; this one is for the cases the fixed fields do not cover.
In a history in the administration, with form, context, customer, sales channel and date, plus a CSV export. Optionally an email goes out on top of that.
They stay readable. A submission stores its own labels and values, and the CSV export builds its columns from the stored submissions rather than from the current definition.
Yes. An assignment names products or a dynamic product group and carries a priority; the higher number wins. A parent product covers its whole variant family.
No, and that is on purpose. It validates whatever CAPTCHA the shop has selected in its basic settings: honeypot, basic CAPTCHA or Google reCAPTCHA v3. A CAPTCHA outside those three is skipped.
23 input types, 8 content elements and 2 structure elements, so 33 in total. Three of the input types produce two inputs from one element.
Yes, that is what conditions are for. Twelve operators, and which of them are on offer depends on the type of the field the condition looks at. A condition on a whole row takes everything inside it along.
They go into the Shopware media manager, in the folder set in the plugin configuration. The submission holds the reference, not the file. Allowed extensions and maximum size are set on the field.
Labels, placeholders and option lists are maintained per language, like any other translatable content in Shopware.
It works on any Shopware 6. The paid plans bring no form module of their own; the one thing they add here is a fourth CAPTCHA, and that one is not validated by this form.
The extension is free and lets you build one form with up to five elements. The plans lift those limits and unlock the history and the assignments; they start at 8.25 € a month, paid yearly, plus VAT.
Yes. The free plan is the trial: install it, build a form, place it. The demo shop shows the finished result without installing anything.
It stores what the sender entered, plus the sales channel, the language, the time and, if signed in, the customer. Nothing is passed to a third party.