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
Support Form
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
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.