Skip to content

Support Tickets (Help Desk)

Turn every “Contact Us” form into a real helpdesk. Customers raise a ticket from a floating Help & Support popup, choose a topic (Pre-Sales, After-Sales or Product Tech Support), and you handle the whole conversation from one admin screen — with departments, canned responses, SLA timers, satisfaction ratings, file attachments and email notifications.

Everything works on the Luma storefront out of the box, and the exact same data is exposed over GraphQL for a headless/Astro storefront.

The storefront support popup

Magento

Open Source 2.4.9 GA (and later 2.4.x).

PHP

Tested on 8.4 and 8.5.

Storefront

Luma popup and headless — the same settings, departments and tickets are served over GraphQL.

Who can ask

Guests and logged-in customers (guest access is configurable).
  1. Enable the module: Stores → Configuration → AgenticEcom · Sales, Customers & Marketing → Support Tickets (Help Desk) → General → Enable Support Tickets = Yes.

  2. The three default departments — Pre-Sales, After-Sales and Product Tech Support — are created for you. Adjust them under Help Desk → Departments.

  3. Visit your storefront. A floating Help & Support button appears bottom-right. Raise a test ticket.

  4. Open Help Desk → Tickets in the admin, click the ticket, and reply. The customer is emailed your response and can reply straight back.

The floating button opens a popup that adapts to the chosen topic:

  • Pre-Sales asks only for the essentials — name, email, subject and message.
  • After-Sales and Product Tech Support also reveal an Order number and an optional Product field, so your team has the context they need immediately.

Logged-in customers have their name and email filled in automatically. Guests provide their own and receive a secure link to follow the conversation by email.

Departments are fully admin-configurable under Help Desk → Departments.

Departments grid

FieldWhat it does
NameThe label customers see in the popup.
CodeUnique identifier (auto-generated from the name).
DescriptionShort helper text shown to customers.
Routing EmailWhere new tickets in this department are emailed. Falls back to the global address, then the store’s general contact.
Ask for an order numberWhen Yes, the popup reveals the Order number + Product fields.
Default AssigneeAn admin user automatically assigned to new tickets in this department.
ActiveHide a department without deleting its history.

The ticket screen is a complete conversation view: the full thread on the left, and everything you need to act on the right.

The admin ticket conversation view

From here you can:

  • Reply to the customer (they’re emailed instantly), or add an Internal note that only your team can see.
  • Insert a Canned response with one click (see below).
  • Attach files to your reply.
  • Change the Status, Priority and Assigned agent — all saved with the same button.
  • Jump straight to the linked order in Sales.

Statuses move automatically as the conversation flows, and you can always set them by hand.

StatusMeaningSet automatically when…
NewJust raised, not yet opened.A ticket is created.
Awaiting SupportThe ball is in your court.A customer replies.
Awaiting CustomerWaiting on the customer.An agent replies.
Open / On HoldIn progress / parked.You set them manually.
ResolvedSorted — triggers the satisfaction request.You mark it resolved.
ClosedFinished.You close it (a customer reply re-opens it).

Save your common replies once under Help Desk → Canned Responses, then insert them into any reply with the Insert canned response dropdown. Responses can be global or scoped to a single department, so agents only see the macros that are relevant to the ticket they’re on.

Set a first-response target (in hours) per priority under Configuration → SLA Targets. Each new ticket gets an SLA due time, shown on the ticket and as a sortable column in the grid, so nothing slips through the cracks.

When a ticket is Resolved, the customer is invited (by email and on the ticket page) to rate the support they received from 1–5 stars, with an optional comment. Ratings appear on the ticket in the admin.

Customers and agents can attach files (screenshots, photos of a faulty item, documents). For safety, every upload is checked against an allow-list of extensions and a size cap before it is stored, and files are saved under random names so the originals can never collide or be guessed. Configure the allow-list under Configuration → Attachments.

The module sends transactional emails through Magento’s standard mail system (so it works with your SMTP/relay setup). Every email has its own template you can customise under Marketing → Email Templates:

TemplateSent toWhen
New TicketAgentsA ticket is raised
Ticket ReceivedCustomerA ticket is raised
Customer RepliedAgentsThe customer replies
Agent RepliedCustomerYou reply
Status ChangedCustomerThe status changes
Rate Your SupportCustomerA ticket is resolved

Logged-in customers get a Support Tickets entry in their account navigation, listing every ticket with its status and a link into the full conversation.

My Support Tickets in the customer account

A headless storefront uses the same engine through GraphQL. Nothing extra to configure — the popup settings, departments and tickets are all available.

{
supportConfig {
enabled
allow_guests
popup_enabled
button_text
heading
accent_color
csat_enabled
recaptcha_site_key # public key only — the secret is never exposed
departments { id name description requires_order }
}
}

All settings live under Stores → Configuration → AgenticEcom · Sales, Customers & Marketing → Support Tickets (Help Desk).

Configuration

GroupKey settings
GeneralEnable, allow guest tickets, reference prefix & start number.
Storefront PopupShow the button, button text, heading, intro, position, accent colour, mobile visibility.
AttachmentsEnable, allowed extensions, max size, max files per message.
SLA TargetsFirst-response hours per priority.
CSATEnable the satisfaction rating.
Spam ProtectionHoneypot, reCAPTCHA v3 keys, minimum score.
Email NotificationsEnable, agent address, sender identity, and a template per email.
  • Every admin controller is gated by granular ACL (reply, delete and configuration are separate privileges).
  • Guest tickets are protected by a 64-character secure token compared with hash_equals.
  • Attachments are extension-allow-listed, size-capped and stored under random names.
  • Stored messages are saved as plain text and escaped on output (no stored XSS).
  • The reCAPTCHA secret is encrypted and never exposed; only the public site key reaches the storefront.

Do customers need an account? No. Guests can raise tickets (if allowed) and follow them via the secure link in their emails. You can require login under General → Allow Guest Tickets.

Does it work with my headless storefront? Yes — supportConfig, supportDepartments, createSupportTicket, replyToSupportTicket, rateSupportTicket, supportTicket and customerSupportTickets cover the whole flow.

Where do attachments go? Under pub/media/agenticecom/support/<ticket>/… with randomised filenames; they’re only downloadable by someone who can access the ticket.

Can I route departments to different inboxes? Yes — set a Routing Email on each department. It falls back to the global notification address, then the store’s general contact.