Contact template
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 invitation to the person who manages bookings.
Updated
This Laravel speaker request form gives event organizers one place to send a speaking invitation with the context a booking owner needs. Import it into FilaForms, then use the field table below to collect each request inside the Laravel application you run.
The imported template creates a submission record when an organizer sends the form. Your booking owner can review the invitation details, and Laravel can route the request into the workflow that already handles speaker decisions. This keeps the form intake close to your event, editorial, or partnership records.
The field table below should support a fast first decision. An event date establishes the time constraint. A topic explains what the organizer expects the speaker to cover. Travel coverage signals whether the request may require an expense conversation before anyone commits.
Keep the intake focused on facts that change the next action. A booking owner needs enough context to decide whether to reply, ask a follow-up question, or decline. Questions that do not influence those decisions add work for organizers and slow the review queue.
Use the same labels that appear in your existing booking process. An event team may call the request an invitation, while a podcast team may call it a guest proposal. The template can use either language, provided the person reviewing submissions understands the terms without interpretation.
FilaForms stores each invitation in your application's database. That gives the booking owner a source record they can inspect while replying. It also lets your application attach its own event, contact, or opportunity records after a person accepts the request.
For a public conference site, send organizers to this page from the section where speakers are introduced. For a company blog, place it beside editorial contact details. The Laravel form builder for Filament keeps the visual form configuration in the panel, while your application owns the work that follows a submission.
Fields in this template (11 fields, 7 required)
Field types used: Text, Link, Date, Number, Radio, Email, Toggle, Textarea. Every field is editable in the builder after import.
Event
| Field | Type | Required | Validation |
|---|---|---|---|
Event Name
event_name
|
Text | Yes |
required |
Event Website
event_website
|
Link | No | none |
Event Date
event_date
|
Date | Yes |
required |
Location
location
|
Text | Yes |
required |
Expected Audience
audience
|
Number | No |
integer | min:1 |
Format
format
|
Radio, 3 options | Yes |
required |
Request
| Field | Type | Required | Validation |
|---|---|---|---|
Your Name
requester_name
|
Text | Yes |
required |
Email Address
email
|
Yes |
required | email |
|
Topic
topic
|
Text | Yes |
required |
Travel and Fees Covered
covers_travel
|
Toggle | No | none |
Anything Else?
notes
|
Textarea | No | none |
Route invitations to the person who makes booking decisions
The first review should produce a clear outcome. Assign one person or a small group to own the incoming queue. They can check the event date, assess the proposed topic, and determine whether travel coverage affects the response. This prevents requests from sitting in a general inbox with no responsible owner.
Treat the submission as intake rather than confirmation. A request may be a good fit in principle but conflict with an existing engagement. It may also require information about audience, format, timing, or travel arrangements. A short reply that asks for the missing decision detail is more useful than accepting based on an incomplete form.
The listener below reads the event date, topic, and travel coverage from this template. It records those values with the form and submission identifiers. Replace the log call with the notification or application action that sends each request to the booking owner.
<?php
declare(strict_types=1);
namespace App\Listeners;
use FilaForms\Core\Events\FormSubmitted;
use Illuminate\Support\Facades\Log;
final class LogSpeakerRequest
{
public function handle(FormSubmitted $event): void
{
$data = $event->submission->data;
Log::info('Speaker request received', [
'form_id' => $event->form->getKey(),
'submission_id' => $event->submission->getKey(),
'event_date' => $data['event_date'] ?? null,
'topic' => $data['topic'] ?? null,
'covers_travel' => $data['covers_travel'] ?? null,
]);
}
}
Save the listener in app/Listeners/LogSpeakerRequest.php. Laravel 12 discovers listeners in that directory automatically. The logged data gives you a runnable checkpoint before you connect the event to an email notification, an internal task, or a booking queue.
Keep the submission identifier when your application creates a related booking record. The identifier lets a teammate trace a later decision back to the organizer's original request. It also avoids copying every answer into several records before the request has passed initial review.
For paid speaking engagements, add a fee code when the booking owner needs a budget signal before deciding whether to continue. Place the fee question near the information that frames the engagement. Make the question optional if some organizers cannot commit a budget until a conversation takes place.
For virtual-only events, remove covers_travel. Travel coverage cannot affect the booking decision when nobody will travel. Removing that question shortens the form and tells organizers that you understand the format they selected.
Screen the first response with the same standards your speaker uses offline. Check whether the topic suits the audience. Check whether the event date leaves enough preparation time. Check whether travel coverage creates a cost that requires approval. Store those judgments in application-owned records if you need a history beyond the submitted invitation.
Do not use the template as a calendar system. The form does not check calendar availability or auto-decline conflicting dates. Someone still reviews and replies to each request. Add a separate availability check or booking workflow when your process needs an immediate answer.
The FilaForms features for Laravel and Filament help when a request needs conditional questions or a multi-step flow. Keep this template as the intake surface. Let Laravel handle routing, approval, and any calendar logic that follows a submitted invitation.
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('speaker-request');
Template schema (JSON)
{
"name": "Speaker Request Form",
"description": "Invite a speaker with event, audience and travel details",
"icon": "heroicon-o-microphone",
"category": "Contact",
"popularity": "Medium",
"sections": [
{
"name": "Event",
"fields": [
{
"label": "Event Name",
"type": "text",
"code": "event_name",
"required": true,
"width": "50"
},
{
"label": "Event Website",
"type": "link",
"code": "event_website",
"required": false,
"width": "50"
},
{
"label": "Event Date",
"type": "date",
"code": "event_date",
"required": true,
"width": "50"
},
{
"label": "Location",
"type": "text",
"code": "location",
"required": true,
"placeholder": "City, country or Online",
"width": "50"
},
{
"label": "Expected Audience",
"type": "number",
"code": "audience",
"required": false,
"validation": [
{
"name": "integer",
"parameters": []
},
{
"name": "min",
"parameters": [
"1"
]
}
],
"width": "50"
},
{
"label": "Format",
"type": "radio",
"code": "format",
"required": true,
"options": [
{
"value": "In person"
},
{
"value": "Virtual"
},
{
"value": "Hybrid"
}
],
"width": "50"
}
]
},
{
"name": "Request",
"fields": [
{
"label": "Your Name",
"type": "text",
"code": "requester_name",
"required": true,
"width": "50"
},
{
"label": "Email Address",
"type": "email",
"code": "email",
"required": true,
"validation": [
{
"name": "email",
"parameters": []
}
],
"width": "50"
},
{
"label": "Topic",
"type": "text",
"code": "topic",
"required": true,
"width": "100"
},
{
"label": "Travel and Fees Covered",
"type": "toggle",
"code": "covers_travel",
"required": false,
"description": "Turn off if the event cannot cover travel",
"default": true,
"width": "100"
},
{
"label": "Anything Else?",
"type": "textarea",
"code": "notes",
"required": false,
"width": "100"
}
]
}
]
}
Frequently asked questions
- What happens after an organizer submits this speaker request form?
- FilaForms stores the invitation as a submission in your application's database, where your Laravel code can route it to the person who manages bookings.
- Can I use this template for paid speaking engagements?
- Yes. Add a fee code when paid engagements need a budget signal before the booking owner reviews the request.
- Should virtual events ask whether the organizer covers travel?
- No. Remove covers_travel when every event is virtual, because that answer cannot affect the booking decision.
- How do I notify the booking owner about a request?
- Listen for FilaForms\Core\Events\FormSubmitted and read event_date, topic, and covers_travel from the submission data in a Laravel listener.
- Does this form check speaker availability?
- No. The form does not check calendar availability or auto-decline conflicting dates, so someone still reviews and replies to each request.