Laravel Training Feedback Form Template | FilaForms                                 [ ![Filaforms Logo](https://filaforms.app/logo.svg)FilaForms

 ](https://filaforms.app)  [ Features ](https://filaforms.app#features) [ Pricing ](https://filaforms.app/pricing) [ Blog ](https://filaforms.app/blog) [ Documentation ](https://docs.filaforms.app)  [ Try Demo ](https://filaforms.app/login) [ Buy a license ](https://filaforms.app/pricing#plans) 

 [ Features ](https://filaforms.app#features) [ Pricing ](https://filaforms.app/pricing) [ Blog ](https://filaforms.app/blog) [ Documentation ](https://docs.filaforms.app) [ Try Demo ](https://filaforms.app/login) [ Buy a license ](https://filaforms.app/pricing#plans) 

  1. [Home](https://filaforms.app)
2. /
3. [Form Templates](https://filaforms.app/templates)
4. /
5. Let trainees rate a session and its trainer

 Feedback &amp; Surveys template

Let trainees rate a session and its trainer
===========================================

Import a Laravel training feedback form template for Filament, then route session ratings and recommendations to the right trainer.

 [ Open this template in the demo builder ](https://filaforms.app/app/templates/training-feedback) 10 fields, 5 required. Free demo account, no card. 

 Updated September 2, 2026

 Import this Laravel training feedback form template when trainees need a short way to rate one completed session and its trainer. The imported template gives your application a consistent feedback flow for every cohort, while keeping each response attached to the session your team ran.

After a trainee submits it, FilaForms stores the response in your application's database and emits a submission event. Your Laravel code can use that event to send the course name, overall rating, and recommendation response to the person responsible for the training. That is a useful fit for an internal LMS or corporate learning tool built with a [Laravel form builder for Filament](/features).

The field table below covers the response data that the template renders. Its grouping keeps the trainee focused on the session experience before asking for an overall judgment. This matters when a poor rating needs follow-up. The training owner can see whether the response relates to the course, the trainer, or a mismatch between the session and its audience.

  Fields in this template (10 fields, 5 required) 
-------------------------------------------------

 Field types used: Text, Date, Radio, Toggle Buttons, Textarea, Toggle. Every field is editable in the builder after import.

### Session

    Field Type Required Validation      Course Name `course_name`   Text  Yes  `required`     Session Date `session_date`   Date  Yes  `required`     Trainer `trainer`   Text  No  none     Format `format`   Radio, 3 options  No  none     

### Your Rating

    Field Type Required Validation      Overall Rating `overall_rating`   Radio, 4 options  Yes  `required`     Content Was Relevant `relevance`   Radio, 4 options  Yes  `required`     Pace `pace`   Toggle Buttons, 3 options  Yes  `required`     What Worked Well? `worked_well`   Textarea  No  none     What Would You Change? `improvements`   Textarea  No  none     I would recommend this training `would_recommend`   Toggle  No  none     

 Route feedback and improve the next session
-------------------------------------------

Laravel 12 discovers listeners in `app/Listeners` automatically. A listener gives your application one place to decide who receives a response. The example maps a template form to a training mailbox. Replace the mailbox values with addresses that belong to the people who own those sessions.

```
 'training-team@example.test',
        ];

        $recipient = $recipients[$event->form->getKey()] ?? 'training-team@example.test';
        $courseName = (string) ($event->submission->data['course_name'] ?? 'Training session');
        $overallRating = (string) ($event->submission->data['overall_rating'] ?? 'Not provided');
        $wouldRecommend = (string) ($event->submission->data['would_recommend'] ?? 'Not provided');

        Mail::raw(
            "Course: {$courseName}\nOverall rating: {$overallRating}\nWould recommend: {$wouldRecommend}",
            function (Message $message) use ($recipient, $courseName): void {
                $message->to($recipient)->subject("Training feedback: {$courseName}");
            },
        );
    }
}

```

Keep the recipient mapping close to the training ownership data in your application. A fixed mapping works for a small program with a few recurring sessions. A training catalog can instead resolve the owner before the form is shown, then send the owner a notification after submission. The event listener remains the boundary between collected feedback and the operational response.

Avoid treating one response as a verdict on a trainer. A single low rating can reveal a useful issue. It can also reflect a difficult cohort, a required course, or a session held at the wrong time. Route low ratings to the training owner first. They can inspect the session context before changing course material or deciding that a trainer needs support.

ATD Research, as cited by Devlin Peck in 2025, found that 71% of organizations use the Kirkpatrick model to evaluate training. Use the rating as one signal in that evaluation. Pair it with the learning objective for the session and the follow-up action your team can take. The submission dashboard gives staff a place to review individual responses, while the listener handles the immediate alert.

For a self-paced course, remove the trainer field because there is no live instructor to assess. Add a `self_paced_module` code so every response identifies the module that a learner completed. That variation keeps the same session-focused feedback pattern. It also prevents reports from implying that an instructor caused an issue in material that learners completed independently.

Use the course name to distinguish repeated offerings of the same program. A course can have different outcomes when its audience, examples, timing, or trainer changes. If your application already has session records, connect the surrounding workflow to that record. You can then use your own reporting queries to compare feedback across dates or cohorts without changing the imported form for each session.

This template is not a training analytics system. It captures feedback for one session. It does not calculate a trainer's average score across sessions or track completion rates over time. Build those measures from your training records and stored submissions when your program needs longitudinal reporting.

The form suits teams that need feedback to stay inside the application they operate. It also works well when the next step is a Laravel notification, a support task, or an internal review. Review the [FilaForms feature set](/features) when you need the surrounding submission dashboard, visual builder, and notification workflow in the same Filament panel.

 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('training-feedback');
```

  Template schema (JSON) ```
{
    "name": "Training Feedback Form",
    "description": "Rate a training session and its trainer",
    "icon": "heroicon-o-academic-cap",
    "category": "Feedback & Surveys",
    "popularity": "Medium",
    "sections": [
        {
            "name": "Session",
            "fields": [
                {
                    "label": "Course Name",
                    "type": "text",
                    "code": "course_name",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Session Date",
                    "type": "date",
                    "code": "session_date",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Trainer",
                    "type": "text",
                    "code": "trainer",
                    "required": false,
                    "width": "50"
                },
                {
                    "label": "Format",
                    "type": "radio",
                    "code": "format",
                    "required": false,
                    "options": [
                        {
                            "value": "In person"
                        },
                        {
                            "value": "Virtual"
                        },
                        {
                            "value": "Self paced"
                        }
                    ],
                    "width": "50"
                }
            ]
        },
        {
            "name": "Your Rating",
            "fields": [
                {
                    "label": "Overall Rating",
                    "type": "radio",
                    "code": "overall_rating",
                    "required": true,
                    "options": [
                        {
                            "value": "Excellent"
                        },
                        {
                            "value": "Good"
                        },
                        {
                            "value": "Average"
                        },
                        {
                            "value": "Poor"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Content Was Relevant",
                    "type": "radio",
                    "code": "relevance",
                    "required": true,
                    "options": [
                        {
                            "value": "Strongly agree"
                        },
                        {
                            "value": "Agree"
                        },
                        {
                            "value": "Neutral"
                        },
                        {
                            "value": "Disagree"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Pace",
                    "type": "toggle-buttons",
                    "code": "pace",
                    "required": true,
                    "options": [
                        {
                            "value": "Too slow"
                        },
                        {
                            "value": "Just right"
                        },
                        {
                            "value": "Too fast"
                        }
                    ],
                    "width": "100"
                },
                {
                    "label": "What Worked Well?",
                    "type": "textarea",
                    "code": "worked_well",
                    "required": false,
                    "width": "100"
                },
                {
                    "label": "What Would You Change?",
                    "type": "textarea",
                    "code": "improvements",
                    "required": false,
                    "width": "100"
                },
                {
                    "label": "I would recommend this training",
                    "type": "toggle",
                    "code": "would_recommend",
                    "required": false,
                    "default": true,
                    "width": "100"
                }
            ]
        }
    ]
}
```

  Frequently asked questions
--------------------------

  Can this template notify the trainer after feedback is submitted? Yes. A Laravel listener can read the submitted ratings and route each form's feedback to its trainer or training owner. 

 How should I adapt the form for self-paced training? Remove the trainer field and add a self\_paced\_module code, so each response identifies the asynchronous module being reviewed. 

 Does this template calculate trainer averages or completion rates? No. The template captures feedback for one session. It does not calculate trainer averages across sessions or track completion rates over time. 

 What should happen when a rating signals a problem? Route low ratings to the training owner, then review the session context before changing course material or trainer support. 

   Run this form inside your Laravel app.
--------------------------------------

 FilaForms installs as a Filament plugin. Submissions land in your own database.

 [ Try it in the demo ](https://filaforms.app/app/templates/training-feedback) [ See pricing ](https://filaforms.app/pricing) 

More templates
--------------

- [ Ask attendees how your event went, right after it ends Import a Laravel event feedback form for Filament, collect attendee ratings, and route eac... ](https://filaforms.app/templates/event-feedback)
- [ Find out how engaged your team really is, department by department Import a Laravel employee engagement survey for Filament, compare department feedback, and... ](https://filaforms.app/templates/employee-engagement-survey)
- [ Let users tell you which product features to fix next Import a Laravel product feedback form for Filament, capture ratings and detailed feedback... ](https://filaforms.app/templates/product-feedback)
- [ Learn who buys your product and why before you build more Import a Laravel market research survey template, capture buyer context and budget signals... ](https://filaforms.app/templates/market-research-survey)
- [ Brief a writer with everything they need before they start Import a Laravel content request form template for Filament, collect complete writer brief... ](https://filaforms.app/templates/content-request)
- [ Capture honest feedback before an employee's last day Install a Laravel exit interview form for Filament, route sensitive answers carefully, and... ](https://filaforms.app/templates/exit-interview)
- [ Capture scope changes and client approval before work starts Import a Laravel change request form for Filament, record scope, cost, priority, and clien... ](https://filaforms.app/templates/change-request)
- [ Collect customer testimonials your marketing team can actually publish Import a Laravel testimonial collection form for Filament, collect publishable customer fe... ](https://filaforms.app/templates/testimonial-collection)

    ![FilaForms Logo](/logo.svg) FilaForms 

 Laravel form infrastructure for Filament. Stop rebuilding forms on every project.

 [ Buy a license   ](https://filaforms.app/pricing#plans) 

 ### Product

 [ Features ](https://filaforms.app#features) [ Documentation ](https://docs.filaforms.app) [ Blog ](https://filaforms.app/blog) [ Compare form builders ](https://filaforms.app/compare) [ Templates ](https://filaforms.app/templates) [ Pricing ](https://filaforms.app/pricing) [ About ](https://filaforms.app/about) [ Contact ](mailto:hello@filaforms.app) 

 ### Legal

 [ Terms of Service ](https://filaforms.app/terms-of-service) [ Privacy Policy ](https://filaforms.app/privacy-policy) 

  © 2025-2026 FilaForms. All rights reserved.

 [    ](mailto:hello@filaforms.app) [    ](https://x.com/MinasyanManuk)
