Support Form: Configuration
Support Form for Sylius - channel configuration with subject source, recipient and privacy link, extra fields in the admin, incoming requests and practical examples
Support Form: Configuration
Live Demo: Try this and other plugins live — no installation, no risk: demo.markus-michalski.net
Admin interface
The plugin has three areas, which you reach through a single menu entry: Admin sidebar → MMKreativ Plugins → Support form. The entry opens the channel configuration. From there, two buttons lead to the fields and to the incoming requests.
The plugin does not read values from YAML files or environment variables. All settings live in the database and are maintained in the admin.
| Area | Path | Purpose |
|---|---|---|
| Channel configuration | /admin/support-form-channel-configurations |
Subject source, recipient and privacy link per channel |
| Support form fields | /admin/support-form-fields |
Extra fields of the form, apply to all channels |
| Support requests | /admin/support-requests |
View and delete incoming requests |
The admin path follows the parameter sylius_admin.path_name. If you changed the default admin, the first part of the path changes accordingly.
Channel configuration
There is at most one configuration per channel. If you create a second one for the same channel, the form reports "This channel already has a support form configuration."
| Setting | Default | Description |
|---|---|---|
| Channel | The channel the configuration applies to | |
| Subject source | Products | Where the choices in the "Subject" field come from: Products or Categories |
| Products | empty | These products are offered when the subject source is "Products" |
| Categories | empty | These categories are offered when the subject source is "Categories" |
| Recipient e-mail | empty | The notification about a new request goes here. Without a value the channel's contact e-mail is used. |
| Privacy policy page | empty | Turns "privacy policy" in the consent text into a link. Without a value it stays plain text. |
If you switch the subject source, the selection of the other source is kept. You can switch back and forth between products and categories without recreating the lists.
When the form shows free text
The subject is always required. The form shows a select list as long as the list of the active subject source is not empty. In these cases the customer types the subject freely instead:
- The channel has no configuration.
- The active source is empty, for example "Products" without a single selected product.
With a select list, the plugin stores the name of the product or category as the subject, not its code. The request stays readable even if you rename or delete the product later.
Privacy link
The "Privacy policy page" field accepts three notations:
| Input | Example | Note |
|---|---|---|
| Route name | shop_legal_datenschutz |
The link follows the current language automatically |
| Path | /{_locale}/datenschutz |
Starts with exactly one /. {_locale} is replaced by the current language. |
| Full URL | https://example.com/datenschutz |
http or https |
The link opens in a new tab. If you enter a route name that doesn't exist, the form shows the consent without a link. The admin form rejects input in any other format with the message "Please enter a route name, a path with exactly one leading "/" or a full http(s) URL."
Extra fields
Under Support form fields you define what the customer fills in besides the subject. The fields apply to all channels and appear in the order of their position.
Only the subject and the consent are fixed. You also create name, e-mail address and message yourself as fields. The plugin doesn't prescribe them.
| Setting | Description |
|---|---|
| Translations | Label (required) and placeholder (optional) per language |
| Field type | Text, multi-line text, e-mail, number, checkbox, date, time, date and time, or select |
| Required | The form can only be submitted with an answer |
| Position | Order in the form, smaller numbers first |
| Minimum / maximum value | Only for the field type "Number" |
| Minimum / maximum length | Only for the field types "Text" and "Multi-line text" |
| Select options | Only for the field type "Select": value and label per option |
The input fields for limits and select options are always visible, even when they don't fit the chosen field type. A help text says which type each one applies to.
The answer snapshot
When a request is submitted, the plugin stores each answer together with the label of its field. Later changes to a field therefore don't affect requests that have already arrived, and even a deleted field leaves an old request readable. The plugin stores a checkbox as "yes" or "no" and dates and times in the format of their field type. Empty answers are skipped.
The reply address
A field of type E-mail has a special role: the first answered e-mail value, sorted by position, becomes the address of the request. The confirmation goes to this address, and it serves as the reply address in your notification. If you don't create an e-mail field, the request has no address. Then there is neither a confirmation to the customer nor a Reply-To header in the notification.
Incoming requests
The list shows e-mail, subject, channel and time. E-mail, subject and time are sortable, the newest request is on top. The search covers e-mail and subject, not the answers to your extra fields, because those are stored in a column that can't be searched.
Each row has Show and Delete. Editing is not possible: an incoming request stays unchanged. If a channel is deleted, its requests are kept, only the channel reference is cleared.
Practical examples
Help with a purchased product. Create a configuration for the channel with the subject source "Products" and select the products customers ask about. Add the fields "E-mail" (type E-mail, required, position 10) and "Message" (type Multi-line text, required, maximum length 2000, position 20). The customer picks their product, writes their question and receives a confirmation.
General support form by topic. Choose the subject source "Categories" and the categories "Shipping", "Invoice" and "Complaint". Also create the field "Order number" (type Text, required) and the field "Urgency" (type Select, options normal and urgent).
Route requests into your ticketing system. Enter the intake inbox of your ticketing system under "Recipient e-mail", for example support@example.com. If the customer answers the e-mail field, their address appears as Reply-To in the notification, and the ticketing system can reply to them directly.
Enforce a retention period. Set up the cron job from Installation: Deleting old requests regularly so personal data isn't stored indefinitely.