Laravel Testimonial Collection for Filament | 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. Collect customer testimonials your marketing team can actually publish

 Feedback &amp; Surveys template

Collect customer testimonials your marketing team can actually publish
======================================================================

Import a Laravel testimonial collection form for Filament, collect publishable customer feedback, and route consented submissions into your application.

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

 Updated September 2, 2026

 This Laravel testimonial collection form gives customers a clear place to leave a review, provide a rating, and grant permission to publish their words. Import it into FilaForms when your Laravel application needs testimonial submissions stored beside the customer records and editorial workflow you already run.

The field table below provides the imported structure, and the settings block controls how it behaves in your panel. After a customer submits the form, your team reviews the submission in FilaForms. Laravel then routes the email, rating, and publish permission into an approval workflow.

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

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

### Your Information

    Field Type Required Validation      Full Name `full_name`   Text  Yes  `required`     Email Address `email`   Email  Yes  `required`     Company `company`   Text  No  none     Job Title `job_title`   Text  No  none     

### Your Testimonial

    Field Type Required Validation      Overall Rating `rating`   Select, 5 options  Yes  `required`     How long have you been a customer? `customer_duration`   Select, 5 options  No  none     Your Testimonial `testimonial`   Textarea  Yes  `required`     May we publish your testimonial? `publish_permission`   Radio, 4 options  Yes  `required`     

 Turn customer feedback into approved testimonial content
--------------------------------------------------------

The field table below separates what a customer says from the context your team needs to assess it. A review has more value when an editor can connect it to a person, understand the rating, and see whether publication is allowed. This structure gives marketing a reviewable record instead of an isolated quote copied from an inbox.

Keep the first request focused on the customer's experience. Ask for the detail that makes a quote useful on a page. That means the problem they had, the result they noticed, or the part of the product they would recommend. The reader should have enough room to write naturally. Your editor should still have enough context to decide whether the statement fits the page where it may appear.

BrightLocal's 2024 Local Consumer Review Survey found that 50% of consumers trust online reviews as much as personal recommendations from friends and family. That makes approval and attribution application work, not an afterthought. A testimonial should not move directly from a form response to a public page without someone checking its accuracy, relevance, and permission.

Use the settings block to match the collection flow to the relationship with the customer. A request sent after a successful support case can use a warmer introduction than a request sent after a new customer finishes onboarding. An account manager may ask for feedback after a milestone. A product team may request it after a customer adopts a specific feature. The form can stay consistent while the invitation and review route reflect the moment that prompted it.

Do not treat a rating as a complete editorial decision. A high rating may come with a short response that lacks useful detail. A lower rating can reveal an issue that support should handle before anyone requests permission to quote it. Review the submission as a whole, then decide whether to publish, follow up, or send the feedback to the relevant team.

Adapt the template for a consumer app
-------------------------------------

For a B2C app, drop `job_title` and `company`, then add a photo upload field so testimonials can carry a customer photo. Those business details often add friction for individual customers. A photo can provide useful context when your marketing team has permission to show it with the testimonial.

Treat that photo as separate from the written consent decision. Your review process should confirm where the image may appear and how long it may remain in use. The publish permission can help establish the intended publication path, but it does not settle every rights question around an image.

You may also adjust the follow-up copy for the channel that brought the customer to the form. A post-purchase request can ask about the buying experience. An in-app prompt can ask about the result after someone has used the product. Keep the form's purpose stable, and give each invitation enough context that the customer knows what they are being asked to share.

Avoid adding a question because it might be useful someday. Each extra request creates more information for someone to review and protect. Keep fields only when they change the editorial decision, the approval process, or the way your application routes the submission.

Route submissions through Laravel
---------------------------------

FilaForms emits `FormSubmitted` after a customer submits this template. The listener below reads `email`, `rating`, and `publish_permission` from the submission data. It logs a compact handoff record with both model identifiers, which you can replace with your own approval action or queued workflow.

Save this listener as `app/Listeners/LogTestimonialSubmission.php`. Laravel 12 discovers listeners in that directory automatically.

```
submission->data;

        $email = $data['email'] ?? null;
        $rating = $data['rating'] ?? null;
        $publishPermission = $data['publish_permission'] ?? null;

        Log::info('Testimonial submission received', [
            'form_id' => $event->form->getKey(),
            'submission_id' => $event->submission->getKey(),
            'email' => $email,
            'rating' => $rating,
            'publish_permission' => $publishPermission,
        ]);
    }
}

```

Use the handoff to create an internal review item rather than a public testimonial. An editor can verify the wording, choose the right product page, and ask for clarification when the response lacks context. A customer success owner can contact a respondent if a rating indicates an unresolved issue. Your application can preserve the original submission while related records track those decisions.

Keep publish permission visible in the review workflow. It should inform whether a quote can proceed to editorial review. It should not become an automatic publishing switch. The `publish_permission` field records consent to publish, not proof the testimonial is genuine or a signed photo release. Confirm provenance and any additional release requirements through the process appropriate for your organisation.

Choose a different tool when the application boundary does not fit
------------------------------------------------------------------

Choose this template when developers already run the customer-facing application and want submission data in the same database as the rest of their workflow. [FilaForms is a Laravel form builder for Filament](/) when you need visual form building with application-owned data. Review the [FilaForms features for Laravel and Filament](/features) before deciding which approval steps should remain inside your application.

 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('testimonial-collection');
```

  Template schema (JSON) ```
{
    "name": "Testimonial Collection",
    "description": "Collect customer testimonials and reviews for social proof",
    "icon": "heroicon-o-star",
    "category": "Feedback & Surveys",
    "popularity": "High",
    "sections": [
        {
            "name": "Your Information",
            "fields": [
                {
                    "label": "Full Name",
                    "type": "text",
                    "code": "full_name",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Email Address",
                    "type": "email",
                    "code": "email",
                    "required": true,
                    "width": "50"
                },
                {
                    "label": "Company",
                    "type": "text",
                    "code": "company",
                    "required": false,
                    "width": "50"
                },
                {
                    "label": "Job Title",
                    "type": "text",
                    "code": "job_title",
                    "required": false,
                    "width": "50"
                }
            ]
        },
        {
            "name": "Your Testimonial",
            "fields": [
                {
                    "label": "Overall Rating",
                    "type": "select",
                    "code": "rating",
                    "required": true,
                    "options": [
                        {
                            "value": "5 - Excellent"
                        },
                        {
                            "value": "4 - Very Good"
                        },
                        {
                            "value": "3 - Good"
                        },
                        {
                            "value": "2 - Fair"
                        },
                        {
                            "value": "1 - Poor"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "How long have you been a customer?",
                    "type": "select",
                    "code": "customer_duration",
                    "required": false,
                    "options": [
                        {
                            "value": "Less than 3 months"
                        },
                        {
                            "value": "3-6 months"
                        },
                        {
                            "value": "6-12 months"
                        },
                        {
                            "value": "1-2 years"
                        },
                        {
                            "value": "2+ years"
                        }
                    ],
                    "width": "50"
                },
                {
                    "label": "Your Testimonial",
                    "type": "textarea",
                    "code": "testimonial",
                    "required": true,
                    "placeholder": "Tell us about your experience...",
                    "width": "100"
                },
                {
                    "label": "May we publish your testimonial?",
                    "type": "radio",
                    "code": "publish_permission",
                    "required": true,
                    "options": [
                        {
                            "value": "Yes, with my full name"
                        },
                        {
                            "value": "Yes, with first name only"
                        },
                        {
                            "value": "Yes, anonymously"
                        },
                        {
                            "value": "No"
                        }
                    ],
                    "width": "100"
                }
            ]
        }
    ]
}
```

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

  What happens after a customer submits this testimonial form? Your team can review the submission in FilaForms, then use a Laravel listener to route the email, rating, and publish permission into an approval workflow. 

 How should I adapt this testimonial form for a B2C app? Drop job\_title and company, then add a photo upload field so testimonials can carry a customer photo. 

 Does publish\_permission prove that a testimonial is genuine? No. The publish\_permission field records consent to publish, not proof the testimonial is genuine or a signed photo release. 

   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/testimonial-collection) [ See pricing ](https://filaforms.app/pricing) 

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

- [ 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)
- [ Let visitors report broken pages with a screenshot and the page URL Import a Laravel website feedback form for Filament to capture page URLs, issue types, and... ](https://filaforms.app/templates/website-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)
- [ 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)
- [ 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)
- [ Enroll a student with guardian and medical details in one form Import a Laravel student enrollment form for Filament, collect guardian and medical detail... ](https://filaforms.app/templates/student-enrollment)

    ![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)
