A proper support desk for any WordPress site. Customers open tickets from a page on your site, follow the conversation by email or in their browser, and rate the service when it is done. Your team works every ticket from one screen in wp-admin - with departments, agents, canned replies, internal notes, attachments and SLA targets that tell you what is running late.
v1.0.0 · WordPress 5.8+ · PHP 7.4+ · free · self-contained, no external service
A contact form sends an email and forgets. This keeps the conversation: every ticket has a reference, a status, a priority, a department, an owner and a full thread. Drop [dsup_support] (or the Support Tickets block) on a page and your customers get a portal - open a ticket, read replies, add more information, attach a file, close it when they are happy.
Guests are first class. They do not need an account: their ticket carries a private link, and if they lose it they can ask for a fresh secure link by email. Signed-in customers see all of their tickets automatically. If you would rather everybody signed in, one setting requires a login for the whole portal.
The dashboard opens on what matters: open, unassigned, mine and past SLA. The ticket list filters by status, priority, department and agent, searches references, subjects and customers, takes bulk actions and exports to CSV. Open a ticket and you get the whole thread, internal notes the customer never sees, one-click canned replies, attachments, and the properties panel on the right.
New tickets assign themselves - round robin through a department's agents, or to whoever has the fewest open tickets. SLA targets per priority give every ticket a first response and resolution due time; anything late is flagged on the dashboard and in the list, and the team gets an email. Resolved tickets close themselves after a few quiet days, and customers who have gone quiet get a nudge.
The portal your customers use, and the desk your team answers from.






Built and tested the way the WordPress.org directory expects plugins to be built.
Zero errors and zero warnings against the WordPress Coding Standards, clean against the official Plugin Check tool, and covered by a 125 assertion test suite that runs against a real WordPress install.
Public forms carry a nonce, a honeypot, a signed timestamp and a per address rate limit. Attachments are validated, stored under a random non-executable name, and only served to somebody entitled to see them.
Custom database tables, so a busy desk never bloats your posts table. No external API, no tracking, no telemetry - and deleting the plugin leaves your history alone unless you ask for it to go.
Create a page, add [dsup_support] or the Support Tickets block, publish it, then pick that page under Support, Settings.
General, Billing, Technical - whatever fits. Give each one a notification inbox and the agents who look after it.
Any WordPress user can become an agent, with their own signature and departments. Support-only staff get the Support Agent role.
Choose first response and resolution targets per priority, decide when tickets auto-close, and let the hourly job do the chasing.

Why a ticket beats an inbox. A shared mailbox loses the thread, hides who is answering, and never tells you what is late. A ticket has an owner, a clock and a history - and your customer can see it too.
Install it, publish a page with the shortcode, and start taking tickets today.
Free · WordPress 5.8+ · PHP 7.4+ · published on the official WordPress.org plugin directory
Get it on WordPress.orgSearch for Demfilz Support Tickets under Plugins → Add New in your dashboard, install, activate, then add the shortcode to a page.
Yes. Guest tickets are on by default: a name, an email address and a message is all it takes. Every guest ticket carries a private link, and a guest who loses it can ask for a fresh secure link by email. If you would rather everyone signed in, one setting requires a WordPress login for the whole portal.
Into your own uploads folder, under a 32 character random file name with a neutral .dsupbin extension, so nothing in that folder can be executed or guessed. A deny rule is dropped alongside them for Apache and IIS. Files are only ever delivered through a handler that checks who is asking, so a customer can open their own attachments and nobody else's.
A first response target and a resolution target, in minutes, for each priority. Every ticket carries its own due times, the dashboard and the ticket list flag anything running late, and an hourly job emails the team when a target is missed. Set a target to zero to switch it off.
No. Tickets live in your database, files live in your uploads folder, and notifications go out through your site's own email. There is no external API, no tracking and no telemetry.
They stay. Deleting the plugin leaves every ticket, reply and attachment in place unless you first tick the delete on uninstall option under Support, Settings, Advanced.
Administrators, plus any user you promote to agent on the Agents screen. There is also a dedicated Support Agent role for support-only logins, which can work tickets but cannot change plugin settings or delete tickets.
From the official WordPress.org plugin directory - search for Demfilz Support Tickets under Plugins → Add New in your dashboard, or install it from there directly. A .zip download is also on this page if you would rather upload it by hand.
Yes. The forms carry a nonce and a signed timestamp, and if a cached page serves an expired nonce the visitor gets a clear "please reload and try again" message instead of a silent failure.
Extra fields on the ticket form, a knowledge base, email piping, integrations with the systems you already run - this is the kind of thing we build. Tell us what you need and we will come back with a plan and a fixed quote.