Build, publish, capture, and review forms
A visual schema builder in Filament, a public Livewire renderer at /forms/{path}, and a submission inbox with filters, charts, 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, builder UX, public forms, files, tags, redirects, submissions, charts, and exports.
GitHub repository
Source and issues for spiggle/form-builder.
Quick start
composer require spiggle/form-builder:@dev
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.