Support template

Let customers open a support ticket without emailing you first

Import a Laravel support ticket form for Filament, collect priority and attachments, then route each request with a Laravel listener.

Open this template in the demo builder 8 fields, 6 required. Free demo account, no card.

Updated

This Laravel support ticket form gives customers a clear way to report a problem, choose its priority, and attach relevant files. Import it into FilaForms to create a consistent initial request instead of asking customers to assemble details across email messages.

After a customer submits the form, FilaForms stores the initial request in your Laravel application's database and shows it in the Filament submission dashboard. Your support team can review the submission there. A Laravel listener reads the email, priority, and attachments values to route the request into the workflow you already operate.

The field table below creates a focused starting record for support. Contact information gives staff a reply path. Priority provides the customer's urgency signal. Attachments keep error images, screenshots, and other supporting material with the original request rather than scattered through a message thread.

HubSpot's 2024 State of Service report found that 82% of service professionals say customers expect their support requests resolved immediately. A clear intake path helps with that expectation. It does not require your team to promise immediate resolution. The first response should establish ownership, collect missing facts, and set an appropriate next step.

Fields in this template (8 fields, 6 required)

Field types used: Text, Email, Select, Textarea, File Upload. Every field is editable in the builder after import.

Contact Information

Field Type Required Validation
Your Name name Text Yes required
Email Address email Email Yes required
Account ID or Username account_id Text No none
Priority Level priority Select, 4 options Yes required

Issue Details

Field Type Required Validation
Issue Category category Select, 6 options Yes required
Subject subject Text Yes required
Description description Textarea Yes required
Attachments attachments File Upload No none

Form settings the template ships with

Submit button
Open ticket
After submit
show message
Success message
Your ticket is open. Check your inbox for the confirmation and reference number.
Admin email subject
New support ticket: {form_name}
Auto-response subject
Your support ticket is open

Route ticket submissions in Laravel

Keep priority separate from the decision your support team makes after review. A customer can accurately describe an issue as urgent. The actual response may still depend on account context, recent incidents, and the impact on other users. Store the selected priority with the submission, then let your Laravel workflow apply the rules that govern response and escalation.

Add a severity field when you need to record business impact independently from urgency. Priority describes how quickly the customer believes they need help. Severity can describe the scope of the failure, such as whether one person cannot complete a task or a shared function affects many users. Those values answer different questions, so they support clearer reporting and more deliberate escalation.

Use controlled severity options that match the language your support team already uses. Do not infer severity from priority alone. A low-priority report may reveal a serious underlying defect, and an urgent request may affect only a single workflow. The reviewer should be able to adjust the operational decision after reading the complete submission.

FilaForms emits FormSubmitted after a customer sends this template. Save the following listener as app/Listeners/RouteSupportTicket.php. It reads the submitted email, priority, and attachments values, then records the information that a support workflow needs to route the initial request.

<?php

namespace App\Listeners;

use FilaForms\Core\Events\FormSubmitted;
use Illuminate\Support\Facades\Log;

final class RouteSupportTicket
{
    public function handle(FormSubmitted $event): void
    {
        $data = $event->submission->data;

        Log::info('Support ticket received', [
            'form_id' => $event->form->getKey(),
            'submission_id' => $event->submission->getKey(),
            'email' => $data['email'] ?? null,
            'priority' => $data['priority'] ?? null,
            'attachments' => $data['attachments'] ?? [],
        ]);
    }
}

Laravel 12 discovers listeners in app/Listeners automatically. Replace the log call with the action that creates your internal support record, notifies a queue, or sends the request to an existing helpdesk integration. Keep the form responsible for collecting the initial request. Keep routing rules in Laravel, where they can use the records and ownership rules your application already has.

Treat attachments as evidence that requires handling rules. A screenshot can reveal account details, browser extensions, or customer data. Restrict access to staff who need the files. Define retention periods before support begins collecting large files or repeated diagnostic uploads. The original submission should remain available to reviewers even if later workflow records change ownership.

This form has no SLA timers, ticket status workflow, or agent assignment. It only captures the initial request. Use it when your application already has a process for ownership and follow-up, or when you want to add that process incrementally. Choose a full helpdesk system instead when the ticket lifecycle itself is the product you need to introduce.

The settings block lets you adapt the imported template when your support process changes. You might add the severity field for business-impact reporting, or revise priority options to match your escalation policy. Make those changes with the team that receives tickets, because field labels shape how customers describe the problem and how staff interpret it.

Start with the imported template when you need an accountable support entry point inside an application you run. A Laravel form builder for Filament keeps the intake record close to your customer data. Review the FilaForms form features when you need notifications, submission review, or conditional questions for different support paths.

Use this template in your own application

With FilaForms installed, one call creates the form with every field, rule, and setting listed above. Then edit it in the builder.

use FilaForms\Core\Support\FormTemplates;

$form = FormTemplates::createFormFromTemplate('support-ticket');
Template schema (JSON)
{
    "name": "Support Ticket Form",
    "description": "Technical support request with priority and attachments",
    "icon": "heroicon-o-lifebuoy",
    "category": "Support",
    "popularity": "Very High",
    "experience": {
        "success_message": "<p>Your ticket is open. Check your inbox for the confirmation and reference number.</p>",
        "post_submit_action": "show_message",
        "submit_button_text": "Open ticket"
    },
    "notification_config": {
        "enabled": true,
        "channels": [
            "email"
        ],
        "admin_emails": [
            "support@example.com"
        ],
        "custom_admin_subject": true,
        "admin_subject_template": "New support ticket: {form_name}",
        "send_auto_response": true,
        "auto_response_email_field": "email",
        "auto_response_subject": "Your support ticket is open",
        "auto_response_message": "<p>Thanks for contacting support. Your ticket is open and a member of the team will reply during business hours.</p><p>Reply to this email to add more detail to the ticket.</p>"
    },
    "sections": [
        {
            "name": "Contact Information",
            "fields": [
                {
                    "label": "Your Name",
                    "type": "text",
                    "code": "name",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Email Address",
                    "type": "email",
                    "code": "email",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Account ID or Username",
                    "type": "text",
                    "code": "account_id",
                    "required": false,
                    "placeholder": "Your account identifier",
                    "width": "50"
                },
                {
                    "label": "Priority Level",
                    "type": "select",
                    "code": "priority",
                    "required": true,
                    "options": [
                        {
                            "value": "Low - General inquiry"
                        },
                        {
                            "value": "Normal - Standard issue"
                        },
                        {
                            "value": "High - Business impact"
                        },
                        {
                            "value": "Urgent - Critical issue"
                        }
                    ],
                    "width": "50"
                }
            ]
        },
        {
            "name": "Issue Details",
            "fields": [
                {
                    "label": "Issue Category",
                    "type": "select",
                    "code": "category",
                    "required": true,
                    "options": [
                        {
                            "value": "Technical Issue"
                        },
                        {
                            "value": "Billing Question"
                        },
                        {
                            "value": "Feature Request"
                        },
                        {
                            "value": "Bug Report"
                        },
                        {
                            "value": "Account Access"
                        },
                        {
                            "value": "Other"
                        }
                    ],
                    "width": "100"
                },
                {
                    "label": "Subject",
                    "type": "text",
                    "code": "subject",
                    "required": true,
                    "placeholder": "Brief description of the issue",
                    "width": "100"
                },
                {
                    "label": "Description",
                    "type": "textarea",
                    "code": "description",
                    "required": true,
                    "placeholder": "Please provide detailed information about your issue...",
                    "width": "100"
                },
                {
                    "label": "Attachments",
                    "type": "file-upload",
                    "code": "attachments",
                    "required": false,
                    "width": "100"
                }
            ]
        }
    ]
}

Frequently asked questions

What happens after someone submits this support ticket form?
FilaForms stores the initial request in your Laravel application's database and shows it in the Filament submission dashboard. A Laravel listener can then read the email, priority, and attachments values to route the request.
Can I track severity separately from priority?
Yes. Add a severity field when you need to record business impact independently from the urgency selected as priority.
How do I route a support ticket in Laravel?
Listen for FilaForms\\Core\\Events\\FormSubmitted, then use the submitted email, priority, and attachments values in the Laravel workflow that routes the request.
Does this template include ticket assignment or SLA tracking?
No. This form has no SLA timers, ticket status workflow, or agent assignment. It only captures the initial request.

More templates