{{ __('Meta Ads / New') }}
{{ __('Create Meta Ads') }} {{ __('campaign') }}
{{ __('Draft / unsaved') }}
@if ($errors->any())
{{ __('Could not save the campaign:') }}
    @foreach ($errors->all() as $msg)
  • {{ $msg }}
  • @endforeach
@endif
@csrf
01 {{ __('Campaign details') }} {{ __('required') }}
@php $goal = old('optimization_goal', 'MESSAGES'); @endphp
Minimum recommended budget is $1/day.
{{ __('Digits only, no plus sign.') }}
02 {{ __('Audience targeting') }} {{ __('Meta ad set') }}
@php $oldCountries = (array) old('target_countries', []); @endphp
{{ __('Pick one or more — Meta uses ISO codes.') }}
@php $oldInterests = (array) old('interests', []); @endphp
{{ __("Pick from Meta's curated interest taxonomy — leave empty for broad targeting.") }}
03 {{ __('Ad creative') }} {{ __('headline, text, media') }}
{{-- Live preview thumbnail — appears after file pick. Dimension validation runs client-side so the user catches under-1080 images BEFORE the server round-trip. --}}
{{-- Build-with-AI modal — vanilla Tailwind, same overlay/panel pattern as /templates/create#ai-modal so the visual language stays consistent. Opened by #open-ai-modal in the sticky bar. POST submission lives in user-campaigns-create.js. --}}