Markus Michalski FAQ

Support Form

Configurable support request form for Sylius - subject choices from products or categories per channel, extra fields in the admin, stored requests, confirmation mail, Shop API

Deutsche Version

Back to Sylius Plugins

Support Form

Sylius
PHP
License

This documentation always describes the latest published version.

Live Demo: Try this and other plugins live — no installation, no risk: demo.markus-michalski.net

Overview

The Sylius contact form only sends an e-mail with a free-text subject. A support form needs more: customers should pick from a curated list what they need help with, for example a product they bought or a product category. And you, as the shop owner, want to add extra fields such as an order number or urgency without changing code.

This plugin adds its own form at /support for that. You decide per channel which products or categories are offered as subjects. You define all other fields in the admin. Only the subject and the consent to the privacy policy are fixed. Every request is stored, you get an e-mail, and the customer can receive a confirmation.

The form works the same in the shop and through the Shop API. Both paths use the same validation and the same processing, so a headless frontend follows the same rules as the storefront.

graph LR
    A["Storefront /support"] --> C["Request processing"]
    B["Shop API POST /shop/support-requests"] --> C
    C --> D["PRE_PERSIST event"]
    D --> E["Store request"]
    E --> F["E-mail to you"]
    E --> G["Confirmation to the customer"]
    E --> H["Admin list and admin API"]

Documentation

Page Content
Installation and Operation Installation, setup command, update, deleting old requests regularly, uninstall
Configuration Channel configuration, extra fields, requests in the admin, practical examples
Storefront The form in the shop, footer link, e-mails, privacy link, theme customization
Shop API Endpoints for headless clients, request body, error format
Extensibility Event before storing, form extensions, replaceable services
Troubleshooting and FAQ Common problems, known limitations, frequently asked questions
Technical Details Flow as a diagram, plugin structure, tables and migrations

Features

Feature Description
Dedicated form Route /support, independent of the Sylius contact form
Subject choices per channel A curated list of products or categories. Without a configuration the customer types the subject freely.
Extra fields in the admin Nine field types: text, multi-line text, e-mail, number, checkbox, date, time, date and time, select. With translations, required flag, order and limits.
Stored requests Admin list with detail view, answers stored as a snapshot
Recipient per channel The notification goes to a dedicated address, for example the intake inbox of your ticketing system
Confirmation to the customer A short receipt including a copy of the details, as soon as the customer has given an e-mail address
Privacy link per channel "Privacy policy" in the consent text becomes a link
Shop API Submitting, field definitions and subject choices for headless clients
Command to delete mmd:support-requests:purge removes old requests so personal data doesn't stay around forever
Setup command mmd:support-form:setup runs only this plugin's migrations
Event before storing An extension can reject requests on both paths, for example for spam protection

Requirements

Requirement Version Notes
Sylius ^2.2 Tested against Sylius 2.2 and 2.3
PHP ^8.3
API Platform ^4.2.1 or ^5.0 Installed with Sylius, both major versions are tested
Database MySQL/MariaDB PostgreSQL is not supported. The migrations are written in MySQL DDL.

The form has no spam protection of its own. The confirmation mail goes to any address typed into the form. Read the known limitations before going live.

License

License

Commercial license: one license covers one Sylius installation (all channels, plus its development and staging environments). Redistribution is not allowed, updates are included for 12 months from purchase.

Support

For license questions, technical questions or bugs, reach me at support@markus-michalski.net.