Contact template
Route business inquiries by type before you ever reply
Import a Laravel general inquiry form for Filament, capture inquiry types and questions, then route each submission through your application.
Updated
This Laravel general inquiry form captures a visitor's inquiry type alongside their question. Import it into FilaForms, then use the field table below to collect a useful submission inside the application you run.
After a visitor submits the form, FilaForms stores the inquiry in your application's database. Your Laravel code can read the inquiry type before anyone replies. That gives the first reviewer a simple basis for sending each message to sales, support, partnerships, or another owner.
The field table below supports that first decision without turning a short question into a long application. An email address gives the reviewer a reply path. The inquiry type gives the message a destination. The question preserves the visitor's own description before a teammate summarizes it elsewhere.
Inquiry type works best when its choices match the teams that can act on them. Use labels that your reviewers already understand. A catch-all choice is useful when a visitor cannot classify the message, but do not make every choice vague. Clear choices reduce interpretation during the first review.
Keep the question open enough for a person to explain their need. A short prompt can ask what they need help with, rather than requiring them to fit an unfamiliar category. The inquiry type supplies structure. The question provides the context that a routing rule cannot infer.
Zuko Analytics' 2026 form benchmarking puts enquiry forms at a 42.7% starter-to-completion rate, the lowest of any form type it tracks. Keep the opening form focused on information that changes the next response. A review team can request extra details later when the inquiry type makes those details relevant.
For a public site, link to this form from the contact area and describe the kinds of messages it accepts. The Laravel form builder for Filament keeps the visual form configuration in the panel. Your application remains responsible for the work that happens after someone submits it.
Fields in this template (4 fields, 4 required)
Field types used: Text, Email, Select, Textarea. Every field is editable in the builder after import.
Your Information
| Field | Type | Required | Validation |
|---|---|---|---|
Name
name
|
Text | Yes |
required |
Email
email
|
Yes |
required |
|
Inquiry Type
inquiry_type
|
Select, 5 options | Yes |
required |
Detailed Question
question
|
Textarea | Yes |
required |
Route the submission before the first reply
Treat each submission as intake, not as a conversation already assigned to a team. The reviewer should first identify who owns the inquiry type. They should then read the question for urgency, account context, or a request that needs a different destination. This sequence keeps inbox habits from deciding where messages go.
Define an owner for every inquiry type before publishing the form. A sales inquiry might create a lead review. A support inquiry might reach the support queue. A partnership inquiry might reach a relationship owner. Your application can use the same routing boundaries that it already uses for internal work.
The listener below reads the email, inquiry type, and question from this template. It records the values with the form and submission identifiers. Replace the log call with the application action that delivers the inquiry to its owner.
<?php
declare(strict_types=1);
namespace App\Listeners;
use FilaForms\Core\Events\FormSubmitted;
use Illuminate\Support\Facades\Log;
final class LogGeneralInquiry
{
public function handle(FormSubmitted $event): void
{
$data = $event->submission->data;
Log::info('General inquiry received', [
'form_id' => $event->form->getKey(),
'submission_id' => $event->submission->getKey(),
'email' => $data['email'] ?? null,
'inquiry_type' => $data['inquiry_type'] ?? null,
'question' => $data['question'] ?? null,
]);
}
}
Save the listener in app/Listeners/LogGeneralInquiry.php. Laravel 12 discovers listeners in that directory automatically. Logging first gives you a safe checkpoint. You can confirm the imported field codes and the selected inquiry type before connecting the listener to a notification or task workflow.
Preserve the submission identifier when you create a related lead, support record, or internal task. That reference lets a teammate return to the original question when later notes lose context. It also prevents duplicate copying when more than one team needs to see the same inquiry.
For business inquiries, add a company field before the question. The company value separates messages sent on behalf of an organization from individual requests. A sales owner can use that distinction to decide whether account research belongs in the first reply. An individual requester can leave the field empty when it does not apply.
Place the company question after the inquiry type when it helps explain the route. Do not make it decide the route by itself. A person writing from a company may still need support or ask a general question. The inquiry type should remain the explicit routing signal.
Review the queue regularly and adjust ownership when a category reaches the wrong team. A category that repeatedly moves between teams needs a clearer label or a different destination. The submission data can reveal that pattern without asking visitors to choose from a longer set of options.
This template has no built-in routing or ticketing logic. Someone still has to read inquiry_type and triage the message manually. Add application-owned routing or ticket creation when your team needs automatic handoffs, escalation rules, or response tracking.
The FilaForms features for Laravel and Filament help when different inquiry types need conditional questions or a multi-step flow. Keep the first version small. Extend it only when the answers change what the receiving team can do next.
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('inquiry-form');
Template schema (JSON)
{
"name": "General Inquiry Form",
"description": "Detailed inquiry form for business questions and service requests",
"icon": "heroicon-o-question-mark-circle",
"category": "Contact",
"popularity": "High",
"sections": [
{
"name": "Your Information",
"fields": [
{
"label": "Name",
"type": "text",
"code": "name",
"required": true,
"width": "50"
},
{
"label": "Email",
"type": "email",
"code": "email",
"required": true,
"width": "50"
},
{
"label": "Inquiry Type",
"type": "select",
"code": "inquiry_type",
"required": true,
"options": [
{
"value": "Product Information"
},
{
"value": "Pricing"
},
{
"value": "Partnership"
},
{
"value": "Technical Support"
},
{
"value": "Other"
}
],
"width": "100"
},
{
"label": "Detailed Question",
"type": "textarea",
"code": "question",
"required": true,
"placeholder": "Please provide details about your inquiry...",
"width": "100"
}
]
}
]
}
Frequently asked questions
- What happens after someone submits this inquiry form?
- FilaForms stores the inquiry as a submission in your application's database, where Laravel can route it using the inquiry type before anyone replies.
- Can I adapt this template for business inquiries?
- Yes. Add a company field to distinguish business inquiries from individual ones before you reply.
- How do I route inquiries in a Laravel application?
- Listen for FilaForms\Core\Events\FormSubmitted and read email, inquiry_type, and question from the submission data in a Laravel listener.
- Does this form create tickets or route messages automatically?
- No. This form has no built-in routing or ticketing logic, so someone still has to read inquiry_type and triage the message manually.