Build, publish, capture, and review forms
A visual drag-drop designer in Filament, a public Livewire renderer at /forms/{path}, and a submission inbox with filters, analytics charts (Pro), and CSV / Excel / PDF export.
What it is
Spiggle Form Builder is a Laravel + Filament plugin for standalone forms. The schema is a portable JSON document. The public page does not depend on Filament CSS. Submissions are stored in their own tables — not as Dynamic Fields EAV rows.
Field types match Spiggle Dynamic Fields when that package is installed (FieldCatalog). You can copy custom-field definitions into a form with Form::importCustomFields($ids).
Admin users
Create forms under Forms, design sections and fields, publish, then review Submissions.
Site visitors
Open the public URL (default /forms/contact-us), complete the layout (single, wizard, tabs, or pages), and submit.
Developers
Register the plugin, migrate, optionally enable root-path vanity URLs, and listen for FormSubmitted.
Who this is for
- Operators who need contact, registration, application, or survey forms without a custom Livewire page each time.
- Reviewers who triage inbox status (new / reviewed / archived / spam), export, and archive.
- Developers embedding the plugin in a Filament v5 host (this starter already registers it next to Dynamic Fields).
Documentation contents
Usage guide
Install, register the plugin, publish config/migrations/views, routing, Shield permissions, Artisan, and config keys.
Workflows
Create a form, publish it, capture data, validate, store, review, export, clone, and import custom fields.
Features
Layouts, field types, visual designer, content blocks, thank-you layouts, input masking, public forms, files, submissions, charts, and exports.
GitHub repository
Source and issues for spiggle/form-builder-core.
Quick start
composer require spiggle/form-builder-core
php artisan vendor:publish --tag=form-builder-config
php artisan migrate
use Spiggle\FormBuilder\Filament\FormBuilderPlugin;
$panel
->plugin(\Spiggle\DynamicFields\Filament\DynamicFieldsPlugin::make()) // optional, recommended
->plugin(FormBuilderPlugin::make());
Public forms: /{prefix}/{base_path} (default prefix forms). Example: /forms/contact-us.
Seed demos: php artisan form-builder:seed (Contact Us, Event Registration, Job Application, Customer Feedback).
Related plugin
Spiggle Dynamic Fields (spiggle/dynamic-fields v1.1.0) attaches extra attributes to Eloquent models. Form Builder can run without it; types then come from config/form-builder.php. Site: Spiggle Dynamic Fields. Repo: skillbobby/Spiggle-Dynamic-Fields.