Packstub

Configuration

php artisan vendor:publish --tag=packstub-form-builder-config
Key Default What it does
tables.forms, tables.submissions, tables.webhook_deliveries, tables.share_links form_builder_* Table names (set before migrating)
models.form, models.submission, models.webhook_delivery, models.share_link package models Model classes
field_types the built-ins Field types offered in the builder
choice_sources [] Named choice lists: ChoiceSource classes or value => label arrays (closures go through FormBuilder::choices())
routes.enabled true Register the routes at all
routes.prefix forms URL prefix
routes.middleware ['web'] Middleware of the submit, validate, unlock and definition routes
routes.page true The hosted page
routes.page_middleware ['web'] Its middleware
routes.page_layout packstub-form-builder::layout Its layout component
routes.embed true The embed script route
routes.share_prefix f Where share links live (/f/{token}); null turns them off
submissions.throttle 10,1 Rate limit per IP; null disables
submissions.store_ip true Record the IP
submissions.store_user_agent true Record the user agent
submissions.queue_notifications true Queue notification emails
submissions.retention_days 0 Delete submissions older than this when pruning (0 keeps them; per form in the panel)
submissions.anonymize_after_days 0 Strip IP and user agent from older submissions when pruning
uploads.disk, uploads.directory local, form-builder Where the file upload field stores files
uploads.max_kb 10240 Default size limit of an upload
uploads.attach_max_kb 10240 What the team email attaches at most, in total
spam.honeypot true Honeypot default (per form in the panel)
spam.honeypot_field _fb_website Name of the honeypot input
spam.min_seconds 2 Time-trap default (per form in the panel)
spam.token_field _fb_token Name of the token input
spam.token_ttl 120 Minutes a used token is remembered
spam.allowed_origins [] Hosts the form may be posted from (empty: any)
spam.blocklist.words, email_domains, ips [] Drop submissions that match
captcha.default null Provider for forms that pick none: turnstile, hcaptcha, recaptcha
captcha.{provider}.site_key, secret env The keys; captcha.recaptcha.min_score (0.5) for v3
notifications.from_email, from_name env Defaults for the emails a form sends
webhooks.queue true Queue deliveries
webhooks.attempts 3 Tries per delivery
webhooks.timeout 15 Seconds per request
webhooks.keep_days 30 Days the delivery log is kept
webhooks.verify_ssl true Verify the endpoint's certificate
formats.date, datetime, time Y-m-d, Y-m-d H:i, H:i Display formats in the panel, emails and exports
sinks [] SubmissionSink classes
frontend.styles true Inline the stylesheet with the Blade renderer
frontend.enhance true Inline the script (in-place submit, conditions, steps)
frontend.prefill true Let the page URL's query parameters fill fields (per form in the panel)
frontend.livewire_assets true Put Filament's frontend on pages that render the Livewire component
frontend.livewire_theme null Its stylesheet: null the compiled one, a path or URL, false none
tenancy.enabled false Scope forms to a tenant
tenancy.column, model, resolver tenant_id, null, null The column, the tenant model, a callable returning the current tenant (Filament's by default)
ownership.only_own false Show each user only the forms they created
ownership.see_all null A gate ability whose users still see every form
navigation.group, icon, sort, badge — Navigation of the Forms resource
gate null An ability checked before showing the resource

Plugin methods

FormBuilderPlugin::make()
    ->fieldTypes([ScoreField::class])
    ->withoutFieldTypes(['url'])
    ->resource(MyFormResource::class)
    ->withoutResource()
    ->navigationGroup('Content')
    ->navigationIcon('heroicon-o-inbox')
    ->navigationSort(3)
    ->navigationBadge(false)
    ->authorize(fn (): bool => auth()->user()->can('manage forms'));

Translations and views

php artisan vendor:publish --tag=packstub-form-builder-translations
php artisan vendor:publish --tag=packstub-form-builder-views
php artisan vendor:publish --tag=packstub-form-builder-assets

Every string, field type name, rule name, operator and frontend message is in lang/vendor/packstub-form-builder/en/form-builder.php.