@props(['contact' => null, 'groups' => collect(), 'tags' => collect()]) @php $selectedTagIds = $contact?->tags->pluck('id')->all() ?? old('tags', []); @endphp
{{-- Primary fields --}}
Basic information Required details and contact methods.
Name * @error('name')

{{ $message }}

@enderror
Email @error('email')

{{ $message }}

@enderror
Phone @error('phone')

{{ $message }}

@enderror
Company
Job title
Website
Address
Notes {{ old('notes', $contact?->notes) }} @php $initialCustom = old('custom_fields_keys') ? collect(old('custom_fields_keys'))->map(fn ($k, $i) => ['key' => $k, 'value' => old('custom_fields_values')[$i] ?? ''])->all() : collect($contact?->custom_fields ?? [])->map(fn ($v, $k) => ['key' => (string) $k, 'value' => is_scalar($v) ? (string) $v : json_encode($v)])->values()->all(); @endphp
Custom fields Anything that doesn't fit the standard fields — birthday party theme, allergies, preferred channel, etc.
No custom fields. Click Add field to define one.
Social Optional links and handles.
X / Twitter
LinkedIn
Facebook
{{-- Side metadata --}}
Organize
Group
Lifecycle stage
Birthday
Tags @if ($tags->isNotEmpty()) @endif @if ($tags->isEmpty())

No tags yet. Create some first.

@else
✨
tag matched. Click below to toggle.
@foreach ($tags as $tag) @endforeach
@endif
Cancel {{ $contact ? 'Save changes' : 'Create contact' }}