Deutsch Demo shop Store

Form plugin for Shopware 6 Building your own forms in Shopware 6

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

How a form comes about Nine examples to see

33 element types 12 operators 6 places in the shop

dein-shop.de/produkte/beratung
Request product advice
Salutation
Ms
First name *
Mira
Last name *
Smith
Customer type *
Company
Company
Example Ltd.
Quantity
250
Urgency
Preferred date
1 Jul 2026

We call back the same working day.

Message *

I agree to be contacted. *

Send request

What Shopware can do on its own

Shopping experiences have one form element. It knows three types, and in all three the fields are fixed.

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.

Newsletter

Its own type with its own purpose: sign-up and sign-off. It leads into the newsletter recipient list, not into a mailbox.

Revocation form

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.

Where that stops

Three points at which the built-in tools have nothing left to offer.

One more field

Order number, preferred date, quantity, an attachment: the element has no place for them. The way there leads through your own template.

One field depends on another

Company and VAT ID should only appear when somebody ticked "company". A fixed template does not know that difference.

Looking it up later

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.

How you put a form together

Six steps, all in the administration, none in the source code. On the right, each step shows the same form one stage further along.

  1. 01

    Create a group

    A form starts as an empty section with a heading. The group asks nothing itself - it holds together what belongs together.

    Personal details

    no elements yet

  2. 02

    Put elements in

    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.

    Personal details
    Salutation
    Ms
    First name *
    Mira
    Last name *
    Schmidt
  3. 03

    Split into rows

    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.

    Personal details
    Salutation
    Ms
    First name *
    Mira
    Last name *
    Schmidt
  4. 04

    Push something in between

    Content elements fit between the rows: a subheading, a note, a divider. They ask nothing and do not show up in the submission later.

    Personal details
    Salutation
    Ms
    First name *
    Mira
    Last name *
    Schmidt

    We get back to you within one working day.

    Message
  5. 05

    Add conditions

    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".

    Personal details
    Salutation
    Ms
    First name *
    Mira
    Last name *
    Schmidt
    Customer type *
    Company
    Companyonly for "company"
    Muster GmbH
  6. 06

    Let it validate

    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.

    Personal details
    Salutation
    Ms
    First name *
    Mira
    Last name *at least 2 characters
    S

    Please enter at least 2 characters.

Every step in full

A tree, not a field list

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".

Structure

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.

Content

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.

Inputs

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.

All field types with their options

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.

Every input type at a glance

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.

Single-line text (text)
Mira
text
Multi-line text (textarea)
textarea
Dropdown menu (select)
Choice
select
Checkbox (checkbox)

Yes

checkbox
Date (date)
1 Jul 2026
date
Time (time)
09:30
time
Date + time (datetime-local)
1 Jul 2026 09:30
datetime-local
Number (number)
250
number
Slider (range)
range
Phone number (tel)
+49 30 123456
phone
Color picker (color)
#4c3fb5
color
URL (url)
https://beispiel.de
url
Email address (email)
mira@beispiel.de
email
Single choice (radio)
  • Yes
  • No
radio
Multiple choice (checkboxes)
  • A
  • B
checkbox-group
Image upload (file)

Choose an image

image
File upload (file)

Choose a file

file
Hidden field (hidden)

not visible

hidden
Country selection
Germany
country
Consent / agreement

I agree.

consent
Salutation
Ms
salutation
First name + Last name
Mira
Schmidt
firstname-lastname
Email address + Phone number
mira@…
+49 30 …
email-phone

Names and order come from the plugin, not from this page.

Read up on every type in the manual

What orders and explains the form

Not every element asks something. These structure the form or say something - and none of them shows up in the submission later.

Structure

Orders the form. These elements do not appear in the submission.

  • Group group
  • Row row

Content

Explains and separates. These elements do not end up in the payload either.

  • Heading title
  • Vertical line separator
  • Line break line-break
  • Free text content
  • Success message (green) alert-success
  • Info message (blue) alert-info
  • Warning message (yellow) alert-warning
  • Error message (red) alert-danger

Fields that listen to other fields

Every element can carry conditions, a row or a group included. It then takes everything inside it along.

Customer type: Private

Product advice
Customer type *
Private
Advice topic *
  • Selection help
  • Technical question
  • Quote
Message *
What would you like to know?

Customer type: Company

Product advice
Customer type *
Company
Advice topic *
  • Selection help
  • Technical question
  • Quote
Company *
Example Ltd.
VAT ID
GB123456789
Message *
What would you like to know?

The condition sits on the "company data" row, not on the two fields inside it. Without reloading the page.

Twelve operators

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".

All operators in the manual

Several conditions mean OR

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.

Planned quantity
250
Urgency 9
Preferred date
1 Jul 2026

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".

Where the form appears

Three places, and at two of them an assignment decides which form it becomes.

Shopping experience

Hero section

Block "Form Manager" from the forms category, with the chosen form

Shopping experiences

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.

More on this

Product
Enquiry
Below buy box
Product
Enquiry
Below description
Product
Enquiry
Own tab

Product page

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.

More on this

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

Customer account

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.

More on this

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.

What happens to the submissions

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.

Only the actual values

What gets stored is what somebody entered: type, key, label, value. Groups and rows do not end up in it.

The export looks back

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.

Reply and notification

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.

History, context, CSV and email in detail

What a submission holds

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.

01ID 02Form 03Context type 04Context ID 05Context reference 06Context data 07Customer 08Customer ID 09Customer number 10Email 11Sales channel 12Language 13Domain 14Created at … then the form's own fields

The export looks back: it takes the labels that applied when the submission arrived. Renaming a field later does not change an old row.

What can be configured

The plugin configuration as it appears in the administration. Few switches - most of it you decide on the form itself.

Default

  • Folder for file uploads In which folder in the media manager should file uploads of forms be saved?

CAPTCHA

  • Activate CAPTCHA If enabled, the forms validate the CAPTCHA selected in Settings > Shop > Basic Information. Supported are Honeypot, Basic CAPTCHA and Google reCAPTCHA v3.

Product detail page

  • Activate product forms Global switch for all product detail page form assignments. If disabled, no product forms are displayed, regardless of the individual assignments.
  • Position Controls where assigned product forms are displayed on product detail pages.
  • Display mode Controls whether the form is visible directly or opened first by the customer.

Order detail page

  • Activate order forms Global switch for all order detail page form assignments. If disabled, no order forms are displayed, regardless of the individual assignments.
  • Display mode Controls how assigned order forms are displayed in the customer account order area.

Every setting in the manual

Nine forms from practice

Each starts from a situation shops really have and ends with a form that resolves it. The fields are the ones the plugin offers.

What the plugin costs

The 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.

  • 1 form
  • 5 elements per form
  • history with CSV export
  • forms on products
  • forms on orders

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.

  • 1 form
  • unlimited elements per form
  • history with CSV export
  • forms on products
  • forms on orders
Most chosen

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.

  • 5 forms
  • unlimited elements per form
  • history with CSV export
  • forms on products
  • forms on orders

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.

  • unlimited forms
  • unlimited elements per form
  • history with CSV export
  • forms on products
  • forms on orders

Prices, limits and features as the extension itself shows them. What counts for the purchase is the store.

Frequently asked questions

Do I need a plugin for custom forms in Shopware?

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.

Do I need to touch any code?

No. Forms, conditions and placement are all set up in the administration. What is stored is what somebody entered.

Does this replace the built-in contact form?

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.

Where do the submissions end up?

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.

What happens to old submissions when I change the form?

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.

Can one product show a different form than another?

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.

Does it bring its own CAPTCHA?

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.

How many field types are there?

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.

Can a field depend on another one?

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.

What happens to uploaded files?

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.

Is the form translated?

Labels, placeholders and option lists are maintained per language, like any other translatable content in Shopware.

Does it work with the paid Shopware plans?

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.

What does it cost?

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.

Can I try it out first?

Yes. The free plan is the trial: install it, build a form, place it. The demo shop shows the finished result without installing anything.

Does it store personal data?

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.