Legal template
Open a new client matter without a back-and-forth email chain
Import a Laravel legal client intake template for Filament, capture matter details, and route new enquiries into your application.
Updated
This Laravel legal client intake template gives prospective clients one place to describe a matter before your team responds. Import it into FilaForms, then use the field table below as the starting structure for a client portal your firm already runs.
The imported form captures matter details and initial conflict information. Your team receives each enquiry in the Laravel application it already operates, while the submission dashboard preserves the original response for review.
An intake form works best when it gives the reviewer enough context to decide the next step. The person submitting should understand that the form starts an enquiry. It should not suggest that the firm has accepted representation or created an attorney-client relationship.
Group the questions around the decision a staff member needs to make. Contact details identify who needs a reply. Matter context lets a reviewer assign the enquiry to an appropriate practice group. Time sensitivity helps the reviewer decide whether a request needs urgent attention.
The conflict-related prompts support a later review. They give a firm enough starting information to identify names or organisations worth checking. This form is not a conflict-of-interest check. A law firm still runs its own conflict search before opening the matter.
Clio says online intake forms improved conversion rates by up to 5% for solo and small law firms. Its source is Legal Trends Report for Solo and Small Law Firms, 2025. That result does not remove the need for a clear review process. It does show why a short, direct first step can matter when potential clients decide whether to contact a firm.
FilaForms is a Laravel form builder for Filament that keeps submissions in your application's database. The form is built visually in the panel, so staff can adjust wording and choices without a hand-written Filament schema.
Fields in this template (14 fields, 8 required)
Field types used: Text, Email, Phone Number, Date, Textarea, Radio, Select, Toggle Buttons, Rich Editor, File Upload. Every field is editable in the builder after import.
Client
| Field | Type | Required | Validation |
|---|---|---|---|
Full Name
full_name
|
Text | Yes |
required |
Email Address
email
|
Yes |
required | email |
|
Phone Number
phone
|
Phone Number | Yes |
required |
Date of Birth
date_of_birth
|
Date | No | none |
Address
address
|
Textarea | Yes |
required |
Client Type
client_type
|
Radio, 4 options | Yes |
required |
Company Name
company
|
Text | No | none |
Matter
| Field | Type | Required | Validation |
|---|---|---|---|
Practice Area
practice_area
|
Select, 8 options | Yes |
required |
Urgency
urgency
|
Toggle Buttons, 3 options | Yes |
required |
Opposing Party
opposing_party
|
Text | No | none |
Matter Summary
summary
|
Rich Editor | Yes |
required |
Key Dates
key_dates
|
Textarea | No | none |
Supporting Documents
documents
|
File Upload | No | none |
How Did You Hear About Us?
referral_source
|
Select, 6 options | No | none |
Form settings the template ships with
- Submit button
- Submit my enquiry
- After submit
- show message
- Success message
- Thank you. A solicitor will review your matter and contact you within one working day.
- Admin email subject
- New matter: {form_name}
- Auto-response subject
- We have received your enquiry
Route and adapt a new client matter
The field table below renders from the imported template. It provides a practical baseline for legal enquiries, rather than an attempt to collect every fact before a conversation. Keep the first submission focused on information your intake team will use immediately.
Make the opening screen explain what happens after submission. A useful confirmation tells the prospective client that the firm received the enquiry and will review it. It should avoid promises about response time unless the firm can meet them consistently.
An internal intake queue needs ownership. Assign a reviewer by practice area, office, or scheduled rotation. Urgency should guide review order, but it should not bypass conflict checks. A rushed matter still needs the same recordkeeping and professional review as any other enquiry.
For transactional-only work, remove opposing_party and key_dates. That variation suits firms with no litigation intake. Replace those prompts only when a specific transactional decision needs more context, such as a proposed closing window or the type of agreement involved.
Avoid collecting sensitive details that nobody will use during first review. More information can create a larger privacy and retention burden. Ask for additional documents or detailed facts after the team confirms the appropriate next contact.
The settings block controls the imported form's behaviour in your panel. Build and adjust the form there, rather than maintaining field definitions in application code. This keeps the form structure visible to the people who manage the intake process.
FilaForms emits FormSubmitted after a prospective client submits the form. A Laravel listener can read email, practice_area, and urgency from the submission data. The listener below writes an intake event that another part of your application can use for assignment or notification.
Save the listener as app/Listeners/LogLegalClientIntake.php. Laravel 12 discovers listeners in that directory automatically.
<?php
namespace App\Listeners;
use FilaForms\Core\Events\FormSubmitted;
use Illuminate\Support\Facades\Log;
final class LogLegalClientIntake
{
public function handle(FormSubmitted $event): void
{
$data = $event->submission->data;
$email = $data['email'] ?? null;
$practiceArea = $data['practice_area'] ?? null;
$urgency = $data['urgency'] ?? null;
Log::info('Legal client intake received', [
'form_id' => $event->form->getKey(),
'submission_id' => $event->submission->getKey(),
'email' => $email,
'practice_area' => $practiceArea,
'urgency' => $urgency,
]);
}
}
Replace the log call with the action your application needs. For example, create an internal review task, notify the intake coordinator, or route an enquiry to a practice-specific queue. Keep the original submission as the source record, even when you create a separate matter candidate record.
That separation protects the initial account of the enquiry. A reviewer can compare later notes with the original response. It also lets your internal workflow change without changing the imported form every time the firm's assignment process changes.
Use this template when client intake must live beside your portal data and internal workflows. Review the FilaForms features for Laravel and Filament if you need conditional questions, multi-step forms, or email notifications around the same intake process.
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('legal-client-intake');
Template schema (JSON)
{
"name": "Legal Client Intake",
"description": "Open a matter with client, opposing party and conflict detail",
"icon": "heroicon-o-scale",
"category": "Legal",
"popularity": "Very High",
"experience": {
"success_message": "<p>Thank you. A solicitor will review your matter and contact you within one working day.</p>",
"post_submit_action": "show_message",
"display_mode": "wizard",
"show_progress_bar": true,
"submit_button_text": "Submit my enquiry",
"one_per_person": false
},
"notification_config": {
"enabled": true,
"channels": [
"email"
],
"admin_emails": [
"intake@example.com"
],
"custom_admin_subject": true,
"admin_subject_template": "New matter: {form_name}",
"send_auto_response": true,
"auto_response_email_field": "email",
"auto_response_subject": "We have received your enquiry",
"auto_response_message": "<p>Thank you for contacting us. Your enquiry is with our intake team and a solicitor will be in touch within one working day.</p><p>Please do not send further documents until we confirm we can act for you.</p>"
},
"sections": [
{
"name": "Client",
"fields": [
{
"label": "Full Name",
"type": "text",
"code": "full_name",
"required": true,
"width": "50"
},
{
"label": "Email Address",
"type": "email",
"code": "email",
"required": true,
"validation": [
{
"name": "email",
"parameters": []
}
],
"width": "50"
},
{
"label": "Phone Number",
"type": "phone",
"code": "phone",
"required": true,
"width": "50"
},
{
"label": "Date of Birth",
"type": "date",
"code": "date_of_birth",
"required": false,
"width": "50"
},
{
"label": "Address",
"type": "textarea",
"code": "address",
"required": true,
"width": "100"
},
{
"label": "Client Type",
"type": "radio",
"code": "client_type",
"required": true,
"options": [
{
"value": "Individual"
},
{
"value": "Company"
},
{
"value": "Charity"
},
{
"value": "Public body"
}
],
"width": "50"
},
{
"label": "Company Name",
"type": "text",
"code": "company",
"required": false,
"width": "50"
}
]
},
{
"name": "Matter",
"fields": [
{
"label": "Practice Area",
"type": "select",
"code": "practice_area",
"required": true,
"options": [
{
"value": "Family"
},
{
"value": "Employment"
},
{
"value": "Property"
},
{
"value": "Commercial"
},
{
"value": "Immigration"
},
{
"value": "Personal injury"
},
{
"value": "Wills and probate"
},
{
"value": "Criminal"
}
],
"width": "50"
},
{
"label": "Urgency",
"type": "toggle-buttons",
"code": "urgency",
"required": true,
"options": [
{
"value": "Routine"
},
{
"value": "Time sensitive"
},
{
"value": "Deadline this week"
}
],
"width": "50"
},
{
"label": "Opposing Party",
"type": "text",
"code": "opposing_party",
"required": false,
"description": "Needed for our conflict of interest check",
"width": "100"
},
{
"label": "Matter Summary",
"type": "rich-editor",
"code": "summary",
"required": true,
"description": "Set out what happened and what outcome you want",
"width": "100"
},
{
"label": "Key Dates",
"type": "textarea",
"code": "key_dates",
"required": false,
"width": "50"
},
{
"label": "Supporting Documents",
"type": "file-upload",
"code": "documents",
"required": false,
"width": "50"
},
{
"label": "How Did You Hear About Us?",
"type": "select",
"code": "referral_source",
"required": false,
"options": [
{
"value": "Search engine"
},
{
"value": "Existing client"
},
{
"value": "Another firm"
},
{
"value": "Social media"
},
{
"value": "Advertisement"
},
{
"value": "Other"
}
],
"width": "50"
}
]
}
]
}
Frequently asked questions
- What does this Laravel legal client intake template capture?
- It captures matter details and initial conflict information. The field table below shows the imported structure.
- Can I adapt this form for transactional-only work?
- Yes. Remove opposing_party and key_dates when the firm handles transactional work with no litigation intake.
- How do I route a new legal matter in my Laravel application?
- Listen for FilaForms\\Core\\Events\\FormSubmitted and read email, practice_area, and urgency from the submission data.
- Does this template complete a conflict-of-interest check?
- No. This form is not a conflict-of-interest check. A law firm still runs its own conflict search before opening the matter.