Markus Michalski FAQ

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

Deutsche Version

Back to overview

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:

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.

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.