Lead Generation template
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 interest, then route submissions into your app.
Updated
This Laravel demo request form captures a work email, company size, and product interest before your sales team follows up. Import it into FilaForms, then use the field table below as the starting structure for qualifying leads inside your application.
The imported form gives your team a ready schema and a submission record in the Laravel application it already runs. Sales can see the context needed for a first response, while developers can route each submission into an internal workflow.
Start with the questions that change how a person follows up. Company size can affect account ownership, expected buying process, and the depth of a product demonstration. Product interest lets a representative prepare for the feature area that brought the prospect to the form.
Ask for a work email because it gives the team a direct way to respond. Keep the request focused on qualification rather than treating it as a discovery call. The field table below provides the baseline, and you can change the labels or options to match the terms your customers use.
Chili Piper's 2025 Demo Form Conversion Rate Benchmark Report found that only 30% of qualified demo request submissions book a meeting. That gap makes a prompt, useful follow-up important after a prospect submits the form.
FilaForms is a Laravel form builder for Filament when form data needs to remain alongside your application records. Your team builds and adjusts the template visually in the panel. The submission stays in your own database, rather than in a separate hosted form account.
Fields in this template (9 fields, 6 required)
Field types used: Text, Email, Phone Number, Select, Textarea. Every field is editable in the builder after import.
Contact Details
| Field | Type | Required | Validation |
|---|---|---|---|
Full Name
full_name
|
Text | Yes |
required |
Email Address
email
|
Yes |
required |
|
Company Name
company_name
|
Text | Yes |
required |
Job Title
job_title
|
Text | No | none |
Phone Number
phone
|
Phone Number | No | none |
Company Size
company_size
|
Select, 5 options | Yes |
required |
Demo Requirements
| Field | Type | Required | Validation |
|---|---|---|---|
Which product interests you?
product_interest
|
Select, 4 options | Yes |
required |
Current Solution
current_solution
|
Text | No | none |
Main Challenge
main_challenge
|
Textarea | Yes |
required |
Form settings the template ships with
- Submit button
- Request my demo
- After submit
- show message
- Success message
- Your demo request is in. We will confirm a slot by email shortly.
- Admin email subject
- Demo request: {form_name}
- Auto-response subject
- Your demo request
Route qualified requests into your sales workflow
The field table below is deliberately short. It helps a sales team decide who should respond and what they should address first. A small set of qualification details helps them spot requests that need a fast reply.
Treat the imported template as a baseline, not a fixed sales process. A company selling to different regions may need a country field for assignment. A product with separate plans may need a plan-interest option. Add a question only when somebody has a clear follow-up action for the answer.
Add a preferred_time select field when the sales team works across time zones. It gives a prospect a way to suggest workable slots without a back-and-forth email. Keep the options broad enough for a representative to confirm the final time, especially when a team covers several regions.
The settings block controls the form behaviour in your panel. Make changes there instead of maintaining a hand-written Filament schema. This keeps the working form visible to the people who own lead collection and reduces the chance that code and form configuration drift apart.
FilaForms emits FormSubmitted after a prospect submits the form. Listen for FilaForms\Core\Events\FormSubmitted and read email, company_size, and product_interest from the submission data. The listener below writes the qualification details to Laravel's log, which gives you a runnable starting point for routing a lead.
Save the listener as app/Listeners/LogDemoRequest.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 LogDemoRequest
{
public function handle(FormSubmitted $event): void
{
$data = $event->submission->data;
$email = $data['email'] ?? null;
$companySize = $data['company_size'] ?? null;
$productInterest = $data['product_interest'] ?? null;
Log::info('Demo request received', [
'form_id' => $event->form->getKey(),
'submission_id' => $event->submission->getKey(),
'email' => $email,
'company_size' => $companySize,
'product_interest' => $productInterest,
]);
}
}
Replace the log call with the action your application needs. You might notify the account owner, create a lead in an internal sales model, or place the request in a review queue. Keep the original submission as the source record. Any derived lead record should retain the submission identifier so a teammate can inspect the full response later.
This template has no calendar booking. A developer or sales rep still has to schedule the actual call after the lead arrives. Add an integration or a separate scheduling step when immediate booking matters more than collecting qualification details first.
Use this template when developers already run the application and want demo requests close to customer and product data. Review the FilaForms features for Laravel and Filament when your workflow needs conditional questions, multi-step collection, or notification handling around the same submission.
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('demo-request');
Template schema (JSON)
{
"name": "Demo Request Form",
"description": "Product demo request form for sales qualification",
"icon": "heroicon-o-play-circle",
"category": "Lead Generation",
"popularity": "Very High",
"experience": {
"success_message": "<p>Your demo request is in. We will confirm a slot by email shortly.</p>",
"post_submit_action": "show_message",
"display_mode": "wizard",
"show_progress_bar": true,
"submit_button_text": "Request my demo"
},
"notification_config": {
"enabled": true,
"channels": [
"email"
],
"admin_emails": [
"sales@example.com"
],
"custom_admin_subject": true,
"admin_subject_template": "Demo request: {form_name}",
"send_auto_response": true,
"auto_response_email_field": "email",
"auto_response_subject": "Your demo request",
"auto_response_message": "<p>Thanks for requesting a demo. A member of the team will confirm your slot by email shortly.</p><p>If your timing is tight, reply to this email and we will prioritise it.</p>"
},
"sections": [
{
"name": "Contact Details",
"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 Name",
"type": "text",
"code": "company_name",
"required": true,
"width": "50"
},
{
"label": "Job Title",
"type": "text",
"code": "job_title",
"required": false,
"width": "50"
},
{
"label": "Phone Number",
"type": "phone",
"code": "phone",
"required": false,
"width": "50"
},
{
"label": "Company Size",
"type": "select",
"code": "company_size",
"required": true,
"options": [
{
"value": "1-10 employees"
},
{
"value": "11-50 employees"
},
{
"value": "51-200 employees"
},
{
"value": "201-1000 employees"
},
{
"value": "1000+ employees"
}
],
"width": "50"
}
]
},
{
"name": "Demo Requirements",
"fields": [
{
"label": "Which product interests you?",
"type": "select",
"code": "product_interest",
"required": true,
"options": [
{
"value": "Core Platform"
},
{
"value": "Enterprise Solution"
},
{
"value": "API Integration"
},
{
"value": "Custom Solution"
}
],
"width": "100"
},
{
"label": "Current Solution",
"type": "text",
"code": "current_solution",
"required": false,
"placeholder": "What are you currently using?",
"width": "100"
},
{
"label": "Main Challenge",
"type": "textarea",
"code": "main_challenge",
"required": true,
"placeholder": "What problem are you trying to solve?",
"width": "100"
}
]
}
]
}
Frequently asked questions
- What does this Laravel demo request form collect?
- It captures a work email, company size, and product interest so a sales team can qualify each lead before follow-up.
- Can I use this template to offer time slots?
- Yes. Add a preferred_time select field when your team works across time zones and needs to offer slots without a back-and-forth email.
- How do I route demo requests in my Laravel application?
- Listen for FilaForms\Core\Events\FormSubmitted and read email, company_size, and product_interest from the submission data.
- Does this form book a demo call?
- No. This form has no calendar booking, so a developer or sales rep still schedules the actual call after the lead arrives.