Step-by-step workflows
Panel path in the starter is /admin. Navigation group: Forms.
Create a form (admin)
- Open Forms and click Create.
- Choose Blank form or Template on the start page.
- Core templates: Contact Us, Customer Feedback. Pro templates (wizard/tabs/pages/accordion) show a PRO badge.
- After create you land on the visual designer (edit page), not the list.
Build in the visual designer
- The edit page is a 3-panel designer: pages + palette (left), canvas (center), inspector (right).
- Add Content blocks (headings, banners, footers) and Fields from the palette.
- Use the header bar for name, layout, publish/active, save, and open preview.
- Configure the Thank you page from the left nav — Card (Core) or Review Card / Connect (Pro).
- Set per-field input masks (Pro) in the inspector for text, phone, and number fields.
- Form header/footer slots repeat chrome on every public page.
Publish and share
- Turn Published on (and keep Active on). Save.
- On the list, Open appears for published+active forms (new tab). The view page has Open public form.
- Share the URL shown under the form name (e.g.
/forms/contact-us).
Unpublished forms stay in the admin but 404 for guests.
Capture data on the public form
- Open the public URL. The page uses the package layout and CSS (no Filament theme required).
- Wizard / pages: complete the step, click Next or Save and continue. Only that section is validated. Drafts restore if the visitor comes back in the same session.
- Tabs: switch sections freely; everything validates on Submit.
- Accordion: expand/collapse sections; everything validates on Submit.
- Required fields show an asterisk. Errors appear under the field.
- On success, the success message displays. If a redirect URL is set, a Continue link appears (the visitor is not force-redirected).
Review submissions
- Open Submissions, or the Submissions relation on a form’s view/edit.
- Header charts: submissions over the last 14 days, and status doughnut.
- Tabs: Table / New / Reviewed / Archived.
- Filters: form (on the global list), status, submitted between dates, Field contains (internal field name + substring).
- Open a row to see labeled answers (option values mapped to labels). Mark Reviewed or Archive.
- Bulk: change status, archive, export selected, delete (audit logged).
Statuses: New (warning), Reviewed (success), Archived (gray), Spam (danger).
Export CSV / Excel / PDF
- On the submissions list, click Export (needs
export_form_submissionsonce Shield has created it). - Choose CSV, Excel (XML), or PDF.
- A notification shows the absolute path on the exports disk (default
storage/app/form-builder-exports/). Download from the server or copy the file. - Or select rows and use Export selected.
Clone, JSON export, import custom fields
Clone (admin)
List action Clone copies schema and settings, generates a new UUID/slug/path, and leaves the copy unpublished.
Export JSON (admin)
On Edit, Export JSON writes storage/app/form-builder-exports/{slug}.json using document().
CLI import/export
php artisan form-builder:export --slug=contact-us
php artisan form-builder:import storage/app/form-builder-export.json --publish
Import from Dynamic Fields (developer)
There is no Filament button in v1.0.0. In tinker, a seeder, or your own action:
$form = \Spiggle\FormBuilder\Models\Form::query()->where('slug', 'contact-us')->first();
$form->importCustomFields([1, 2, 3]); // custom_fields.id values
Fields append to the last section as a snapshot. Later edits in Custom Fields do not update the form. Submissions still go to form_builder_submissions, never custom_field_values.
Validate and store from code
$rules = app(\Spiggle\FormBuilder\Services\ValidationBuilder::class)->rules($form);
$ok = Validator::make(['data' => $payload], $rules)->passes();
app(\Spiggle\FormBuilder\Services\SubmissionManager::class)
->capture($form, $payload, request(), ['source' => 'api']);
Listen to Spiggle\FormBuilder\Events\FormSubmitted to send mail to notify_emails (addresses are stored on the form; v1 does not send mail by itself).