Free Core: dynamic custom fields for any Eloquent model
This documentation is for the public Core package. Attach text, selects, dates, and toggles to User (or any model) without adding JSON columns. Values live in an EAV table. File uploads, tags, and multi-select are Pro.
What Core is
Spiggle Dynamic Fields Core is a free Laravel + Filament plugin that lets administrators define extra fields in the panel, then injects those fields into host resources (forms, tables, infolists).
It is not a public form product. For public capture, use Spiggle Form Builder. The two packages share field-type names; Form Builder can copy Dynamic Fields definitions into a form schema.
Admin users
Create Core fields in System → Custom Fields, set types and options, and they appear on the target model’s resource. Clone and Pro types require a Pro license.
Developers
Add HasCustomFields to a model, call CustomFieldMapper in a Filament schema, and values persist on save.
What is stored
Definitions in custom_fields, options in custom_field_options, values in custom_field_values. File bytes are Pro (Spatie media), not Core blobs.
Who this is for
- Filament operators who need extra profile or record attributes without a developer shipping a migration every time.
- Laravel developers wiring the free Core package into a host app.
- Shield / Spatie Permission admins who will grant
manage_custom_fields.
Documentation contents
Usage guide
Install Core from GitHub or Packagist, register the Filament plugin, publish config and migrations, host model traits, Shield permissions, Artisan commands, and config keys.
Workflows
Step-by-step: create a field, add it to a resource, capture, validate, store, and present data.
Features
Every field type, marked Core or Pro, plus builder UX.
GitHub (Core)
Public source, issues, and releases for spiggle/dynamic-fields-core. Download Core here.
Quick start
On a fresh host app:
composer require spiggle/dynamic-fields-core
php artisan vendor:publish --tag=dynamic-fields-config
php artisan migrate
Or clone / require the public repo: skillbobby/Spiggle-Dynamic-Fields-Core.
Register the plugin on the panel, add HasCustomFields, then map fields into a resource:
use Spiggle\DynamicFields\Filament\DynamicFieldsPlugin;
use Spiggle\DynamicFields\Facades\CustomFieldMapper;
$panel->plugin(DynamicFieldsPlugin::make());
Section::make('Custom Profile Data')
->schema(CustomFieldMapper::makeFormFields(User::class));
Full steps, Shield, and seed commands are in the usage guide.
Pro add-on (paid)
Pro adds file fields, tags, multi-select, RichEditor, conditional visibility, clone, and license activation. Price: $29.99 limited-time deal (normally $49.99). See product pricing. Open a Buy Pro issue on this public repo. Pro source is not public.
Related plugin
Spiggle Form Builder (spiggle/form-builder) builds public forms. It reuses Dynamic Fields types via FieldCatalog when this package is installed. Submissions do not write to custom_field_values.
Site: Spiggle Form Builder. Repo: skillbobby/Spiggle-Form-Builder.