Profiles that match the platform
Server validation checks the URL’s scheme and hostname, rejects duplicate platforms and enforces your link limit.
Your own platforms
Add a community, customer portal or company website with its own label, icon and allowed domains.
Start with one field
array cast:
null. required() requires at least one completed link. Adding a row with an empty URL makes that row incomplete: enter its URL or remove it before saving.
Choose the available platforms
platforms() accepts enum cases, slugs or a Closure. Its order determines the choice order. null uses the default set; an explicit empty list offers no choices. Unknown platform names are configuration errors. Platforms already added to the list are removed from the choices and return when their rows are deleted.
Both current Threads.com URLs and older Threads.net URLs are accepted, following Meta’s domain migration.
Subdomains of an allowed domain are accepted. A lookalike such as
instagram.com.example.org is rejected for Instagram.
Exclude platforms
Dynamic platform selection
live() so Filament refreshes the configuration. Existing values are not silently deleted when a platform becomes unavailable; remove those rows before saving. The server validates against the current configuration.
Add your own platform
Use
icon for Hugeicons. A custom mastodon slug also resolves to hugeicons-mastodon when no icon is specified. Never put user-submitted HTML into iconSvg. Custom definitions are appended to the default set unless you provide platforms(). At most 128 platforms can be configured.
Offer only your own platforms
Provide both the definitions and an explicit choice list. Built-in platforms will not appear:hosts. An empty host list intentionally permits any valid HTTP/HTTPS domain; provide domains when links must be restricted.
Order and URL formatting
example.com/profile becomes https://example.com/profile when the input loses focus. Existing schemes are preserved and still validated. autoFormatUrls(false) requires users to supply a complete HTTP or HTTPS URL themselves. Formatting does not bypass domain validation.
Validation and safe storage
The server validates before normal Filament form state is saved. It rejects:- Unknown or excluded platforms and duplicate platform rows.
- Incomplete rows, non-HTTP schemes, embedded URL credentials and invalid hostnames.
- More rows than
maxLinks()permits. - Malformed payloads, nested URL values, unexpected row keys, control characters and invalid UTF-8.
- URLs over 4,096 bytes, platform values over 128 bytes and more than 128 rows.
['website' => 'https://example.com'] are accepted and saved in the list format. Malformed values are preserved for rejection rather than converted into an empty valid field.
Appearance and access
sm, md, lg. Variants are primary, secondary, soft, flat; ghost uses the flat input surface. URL inputs and the platform selector reuse the shared controls. Brand icons use Hugeicons with stroke width 2. The layout supports light/dark themes, narrow screens and RTL without a separate mobile input implementation.
Configuration reference
Normal field methods such as
label(), helperText(), required(), readOnly(), disabled() and state binding modifiers remain available. Configured values may be evaluated through Filament Closure injection.
JSON custom-field schemas
platforms, exclude_platforms, custom_platforms, max_links, reorderable and auto_format_urls. Common appearance and field settings use the normal schema configuration.