Laravel Contact Form Template 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. Give visitors a way to reach you without exposing your email

 Contact template

Give visitors a way to reach you without exposing your email
============================================================

Import a Laravel contact form for Filament, store each message in your application, notify your team by email, and manage public-form spam.

 [ Open this template in the demo builder ](https://filaforms.app/app/templates/contact-form) 6 fields, 4 required. Free demo account, no card. 

 Updated September 2, 2026

 This Laravel contact form gives visitors a direct way to send a message without publishing an inbox address. Import it into FilaForms, then use the field table below to collect messages inside the application you run.

The imported template creates a submission in your application's database when a visitor sends the form. Laravel can route that source record into a support, partnership, or sales workflow, while your team keeps the original message available for review.

Use the field table below to keep the first contact useful and short. The email creates a reply path. The subject helps triage. The message provides the context your team needs before deciding who should answer.

Zuko Analytics, 2025 reports that only 38% of users who start a contact form go on to submit it. Keep the initial request focused on the information that changes the response, rather than collecting facts without a clear next action.

[FilaForms is a Laravel form builder for Filament](/) when form data belongs with the rest of your application records. Your team can adjust the visual form in the panel, while Laravel owns what happens after a visitor submits it.

  Fields in this template (6 fields, 4 required) 
------------------------------------------------

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

### Contact Information

    Field Type Required Validation      Full Name `full_name`   Text  Yes  `required`     Email Address `email`   Email  Yes  `required`     Phone Number `phone`   Phone Number  No  none     Company `company`   Text  No  none     Subject `subject`   Text  Yes  `required`     Message `message`   Textarea  Yes  `required`     

### Form settings the template ships with

 Submit buttonSend message

After submitshow message

Success messageThanks for getting in touch. We reply to every message within one working day.

Admin email subjectNew contact form message

Auto-response subjectWe received your message

  Route messages, notify your team, and protect the public form
-------------------------------------------------------------

Each message remains a FilaForms submission in your application's database. That record is the intake source, not merely the trigger for an email. A teammate can inspect it when a reply needs context, and your application can attach it to a customer, conversation, or lead record later.

Give one person or queue ownership of incoming messages. A general mailbox can work for a small team. A support queue may need subject-based routing. A sales queue may need a lead record before the first response. Keep the submission identifier on every derived record so the original message stays traceable.

Email notification should alert the team without becoming the only copy of a contact message. The listener below reads this template's `email`, `subject`, and `message` codes. It sends those values to the configured contact recipient, then leaves the submission available in FilaForms.

Set `mail.contact_recipient` to the inbox that owns contact messages. The fallback uses the configured sender address, which keeps the listener runnable before you add a separate recipient setting. Save the listener as `app/Listeners/EmailContactFormSubmission.php`. Laravel 12 discovers listeners in that directory automatically.

```
submission->data;

        $email = $data['email'] ?? null;
        $subject = $data['subject'] ?? null;
        $message = $data['message'] ?? null;

        Mail::raw(
            implode(PHP_EOL, [
                "Form ID: {$event->form->getKey()}",
                "Submission ID: {$event->submission->getKey()}",
                "From: {$email}",
                "Subject: {$subject}",
                '',
                (string) $message,
            ]),
            function (Message $mail) use ($email, $subject): void {
                $mail->to(config('mail.contact_recipient', config('mail.from.address')))
                    ->subject((string) $subject);

                if (is_string($email) && $email !== '') {
                    $mail->replyTo($email);
                }
            },
        );
    }
}

```

Replace the recipient with the inbox or routing process your team already uses. Keep the reply-to value when email is present. It lets a teammate answer the visitor directly from the notification instead of copying an address into a new message.

Public contact forms attract automated submissions. FilaForms ships a honeypot check for public forms. This template has no CAPTCHA integration, so a contact form under heavy bot traffic still needs a CAPTCHA or rate limiting added in the application. Measure unwanted submissions before adding friction for real visitors.

Use a sales-qualified variant when a sales representative must call or assess a lead before replying. Make phone required when a call is part of the expected next step. Keep that question optional for general support or partnership messages, because a forced phone number can discourage people who only need an email reply.

For a personal-site version, drop company when it does not affect the response. An independent consultant may only need a name, email, subject, and message. Removing company reduces the work for visitors and keeps the review queue focused on the message itself.

The field table below provides the initial structure. Change labels and routing to match the people who answer submissions. Review the [FilaForms features for Laravel and Filament](/features) if your contact flow needs conditional questions, multi-step collection, or additional notification handling.

 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('contact-form');
```

  Template schema (JSON) ```
{
    "name": "Contact Form",
    "description": "Simple contact form with name, email, subject, and message",
    "icon": "heroicon-o-envelope",
    "category": "Contact",
    "popularity": "Very High",
    "experience": {
        "success_message": "Thanks for getting in touch. We reply to every message within one working day.",
        "post_submit_action": "show_message",
        "submit_button_text": "Send message"
    },
    "notification_config": {
        "enabled": true,
        "channels": [
            "email"
        ],
        "admin_emails": [
            "hello@example.com"
        ],
        "custom_admin_subject": true,
        "admin_subject_template": "New contact form message",
        "send_auto_response": true,
        "auto_response_email_field": "email",
        "auto_response_subject": "We received your message",
        "auto_response_message": "Thanks for getting in touch. Your message is with our team and we reply to everything within one working day."
    },
    "sections": [
        {
            "name": "Contact Information",
            "description": "Your contact details",
            "fields": [
                {
                    "label": "Full Name",
                    "type": "text",
                    "code": "full_name",
                    "required": true,
                    "placeholder": "Enter your full name",
                    "width": "50"
                },
                {
                    "label": "Email Address",
                    "type": "email",
                    "code": "email",
                    "required": true,
                    "placeholder": "your@email.com",
                    "width": "50"
                },
                {
                    "label": "Phone Number",
                    "type": "phone",
                    "code": "phone",
                    "required": false,
                    "placeholder": "(555) 123-4567",
                    "width": "50"
                },
                {
                    "label": "Company",
                    "type": "text",
                    "code": "company",
                    "required": false,
                    "placeholder": "Company name",
                    "width": "50"
                },
                {
                    "label": "Subject",
                    "type": "text",
                    "code": "subject",
                    "required": true,
                    "placeholder": "What is this about?",
                    "width": "100"
                },
                {
                    "label": "Message",
                    "type": "textarea",
                    "code": "message",
                    "required": true,
                    "placeholder": "Tell us how we can help...",
                    "width": "100"
                }
            ]
        }
    ]
}
```

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

  Where do Laravel contact form submissions go? FilaForms stores every contact message as a submission in your application's database, where Laravel can route it into your support or sales workflow. 

 How can I email my team after a contact form submission? Listen for FilaForms\\Core\\Events\\FormSubmitted and send an email using the email, subject, and message values from the submission data. 

 Does this contact form prevent spam? FilaForms ships a honeypot check for public forms, but it has no CAPTCHA integration, so heavy bot traffic needs a CAPTCHA or rate limiting in the application. 

 Can I use this template for sales leads? Yes. Make phone required for a sales-qualified version, or drop company for a personal-site version. 

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

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

- [ Route business inquiries by type before you ever reply Import a Laravel general inquiry form for Filament, capture inquiry types and questions, t... ](https://filaforms.app/templates/inquiry-form)
- [ Route sales enquiries to the right rep with budget and timeline upfront Import a Laravel sales contact form for Filament, capture company and budget context, then... ](https://filaforms.app/templates/sales-contact)
- [ Let organizers submit a speaking invitation with the details you need Import a Laravel speaker request form for Filament, review event details, and route each i... ](https://filaforms.app/templates/speaker-request)
- [ Qualify demo requests before your sales team picks up the phone Import a Laravel demo request form for Filament, qualify leads by company size and product... ](https://filaforms.app/templates/demo-request)
- [ 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)

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