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 menu (select), Input element | 1/2 |
| 1.1.2 | Advice topic | Single choice (radio), Input element | 1/2 |
| 1.2 | Company data row | Row, Structure element | -- |
| 1.2.1 | Company | Single-line text (text), Input element | 1/2 |
| 1.2.2 | VAT ID | Single-line 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 (yellow), Content element | 1/1 - full row |
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. Two of them produce two inputs from one element: 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 Form category, with the chosen form
As its own block and as an element, in the Form 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 · SW10005 | 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 · SW10005 | 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 product arrived damaged, a device needs a repair, 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 formMarc sells espresso machines and grinders. Complaints used to arrive by email: "machine is dripping", without an order number, a photo or a serial number.
See the formBirgit runs a perennials nursery with mail order. Catalogue requests used to arrive by email and phone, and the addresses were typed up, sometimes with a postcode, sometimes without.
See the formLena sells wooden toys to families and to dealers. Dealer inquiries arrived by email, sometimes with a business licence attached, sometimes with a link, sometimes with nothing.
See the formBuyback requests used to arrive by email: "I still have a camera, what will you pay?" No model, no condition, no picture.
See the formSo far Sophie only heard back when something went wrong, as an email to customer service.
See the formKai sells saunas and infrared cabins. Before the purchase it is about dimensions, the power supply and delivery into the basement, and that gets sorted out on the phone.
See the formThe plugin itself is free and lets you build one form. What you add on lifts the limits and unlocks the history and the assignments.
Free
To try it out: one form with a few fields, placed in the shop through any Shopping Experience.
0 €
permanently, no term
Included
Starter
For small shops: as many fields as needed in one form and every submission kept in the history.
99 € a year 9.90 € a month
that is € 8.25 a month, plus VAT€ 19.80 saved cancel monthly, plus VAT
Everything from Free, plus:
Business
For most shops: several forms, also right on the product pages next to the matching product.
199 € a year 19.90 € a month
that is € 16.58 a month, plus VAT€ 39.80 saved cancel monthly, plus VAT
Everything from Starter, plus:
Enterprise
For large shops: unlimited forms, and questions after the purchase in the customer’s order details.
399 € a year 39.90 € a month
that is € 33.25 a month, plus VAT€ 79.80 saved cancel monthly, plus VAT
Everything from Business, plus:
Prices, limits and features as the plugin itself shows them. What counts for the purchase is the store.
As soon as one more field is needed, yes, at least below the Evolve plan. The shopping experiences in Shopware ship one form element with three types and fixed fields; every extra field means a template of your own. A form builder of its own comes from Shopware only with Evolve; the Shopware documentation says: “For creating your own form, you need the extension "CMS extensions". This is part of the Shopware Evolve plan of Shopware 6.” With the plugin you put together forms, conditions and placement in the administration, without writing code. All sources are on shop-formulare.de/en/comparison/.
No. Forms, conditions and placement are all set up in the administration. What is stored is what somebody entered.
Anything the 23 field types can ask for. Before the purchase, a product inquiry, a quote request form with quantity and preferred date, a callback request form with phone number and time, or a catalogue request form with address and country selection. Alongside the shop, a dealer inquiry form with company and VAT ID, a buyback form with photos and the condition as a choice, or a contest entry form with consent to the terms of participation.
In the customer account the form sits on the order and brings the order number and order date along by itself. That suits a complaint form with photos, a form for warranty claims, a repair request form with a fault description, or a service request form. For a feedback form or a short customer survey, single choice, slider and a text field are enough; the answers sit in the history and the CSV export.
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. Whoever wants to customize forms in Shopware 6 builds their own with it.
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. For spam protection it validates the CAPTCHA from the 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. Two 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.
Yes. The plugin needs no particular Shopware plan; it runs when the shop is self-hosted or runs in PaaS, not in Shopware SaaS. From the Evolve plan on, Shopware brings a form builder of its own with the extension “CMS extensions”; file upload, fields that depend on others and a store of the submissions do not appear in Shopware's guide for it. The CAPTCHA the paid plans add, Friendly Captcha, is not validated by this form.
The plugin 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.