Kumiko 0.413 brings the helpdesk: contact form and inbox
The new helpdesk feature takes questions, contact requests and problem reports from the website and from inside the app. The app's SystemAdmins get a mail without personal data and answer from an inbox of their own.
Framework 0.413 ships the bundled feature helpdesk. An app mounts it with createHelpdeskFeature({ appName }) and gets three parts: a form for the website, a problem report for signed-in users and an inbox in the admin. The recipients are always the app’s SystemAdmins; there is no separate recipient list.
The website form asks for name, email address, kind of request and message. The website loads the script /helpdesk/client.js straight from the app. Spam protection needs no third party: a hidden honeypot field, a minimum time before submitting, a proof-of-work challenge that is valid once, and rate limits per IP address and per email address. Spam gets the same response as a real request and is not stored. The sender receives a fixed acknowledgement that repeats nothing they typed, so the form cannot be abused to send mail to other people.
Signed-in users report a problem from inside the admin, with attachments and details of the page they are on. They get a copy of their report.
Every new request triggers a mail to all SystemAdmins. It contains only the kind of request, the app name and a link into the inbox. Name, address, subject and message are left out on purpose, because a mail that has been sent cannot be deleted later. A Telegram chat can be connected as an option; it is off by default.
In the inbox, SystemAdmins see open and done requests. The detail view shows the history with delivery status, replies and notes. Replies go to the sender by mail, and the SystemAdmin sets the reply-to address in the settings. A request counts as open until someone has replied or marked it as done.
Requests are personal data: they are ready for crypto-shredding, are included when a user’s data is exported or erased, and have a retention period of 365 days.
publicstatus, CashColt, Kumiko Studio and OFFLOT already use it.