{{ $c['name'] }}
{{ $c['objective_label'] ?? $c['objective'] }} @if(($c['active_adsets'] ?? 0) > 0) · {{ (int) $c['active_adsets'] }} ad set{{ (int) $c['active_adsets'] === 1 ? '' : 's' }} on @endif
- Amount spent {!! $info('What Meta billed for this campaign in the selected date filter (Today, Last 14 days, Last 30 days, etc.). It is not lifetime spend and it is not the monthly cap.') !!}
- {{ $money($c['spend'] ?? null) }}
- Budget {!! $info('The limit you set in Meta for this campaign: per day or lifetime. If it says “ad sets”, the money is on the ad sets, not the campaign. This is a setting, not how much was already spent.') !!}
- @if($budget === null) — @else {{ $money($budget) }}/ {{ $budgetKind }}{{ ($c['budget_source'] ?? '') === 'adsets' ? ' · ad sets' : '' }} @endif
- {{ ! empty($c['multiple_conversions']) ? 'Results' : ($c['result_label'] ?? 'Results') }} {!! $info(! empty($c['multiple_conversions']) ? 'Ads Manager Results for the selected dates. This campaign has more than one optimization event on delivering ad sets, so Tools cannot show a single number (same as Ads Manager “Multiple conversions”).' : 'Ads Manager Results for the selected dates: the optimization event of the delivering ad set (for example Messaging conversations started or Website checkouts initiated). Not a guessed pixel event.') !!}
- @if(! empty($c['multiple_conversions'])) — Multiple conversions @else {{ $qty($c['results'] ?? null, 1) }} @endif
- Cost / result {!! $info('Spend divided by that same Ads Manager result, for the selected dates. Meta reports it from cost_per_action_type. If Results is “Multiple conversions”, this cannot be a single number.') !!}
- {{ $money($c['cost_per_result'] ?? null) }} @if(empty($c['multiple_conversions']) && ($c['result_label'] ?? '') !== '' && ($c['result_label'] ?? '') !== 'Results') Per {{ $c['result_label'] }} @elseif(! empty($c['multiple_conversions'])) Multiple conversions @endif
- ROAS {!! $info('Purchase return on ad spend from Meta for the selected dates (purchase value ÷ amount spent). Only shown when Meta returns it. Not invented.') !!}
- {{ number_format((float) $c['roas'], 2) }}x
- Impressions {!! $info('How many times the ads were shown in the selected date filter. One person can create several impressions.') !!}
- {{ $qty($c['impressions'] ?? null) }}
- Reach {!! $info('How many unique people saw the ads at least once in the selected date filter. Different from impressions: reach counts people, impressions count views.') !!}
- {{ $qty($c['reach'] ?? null) }}
- Frequency {!! $info('Average times each person saw the ads in the selected date filter (impressions ÷ reach). Example: 3.62 means the typical person saw the ads about 3.6 times.') !!}
- {{ $qty($c['frequency'] ?? null, 2) }}
- Link clicks {!! $info('Clicks on the ad link in the selected date filter, as Meta reports inline_link_clicks. Not every click on the ad — only the link.') !!}
- {{ $qty($c['link_clicks'] ?? null) }}
- CTR {!! $info('Click-through rate: link clicks ÷ impressions, as a percent, for the selected date filter. How often a view became a link click.') !!}
- {{ $pct($c['link_ctr'] ?? null) }}
- CPC {!! $info('Cost per link click for the selected date filter: amount spent ÷ link clicks, as Meta reports it.') !!}
- {{ $money($c['cpc'] ?? null) }}
- CPM {!! $info('Cost per 1,000 impressions for the selected date filter. What you pay to show the ads one thousand times.') !!}
- {{ $money($c['cpm'] ?? null) }}
Scheduled start: {{ $fmtWhen($pendingStart->activate_at) }}@if($pendingStart->end_at) · ends {{ $fmtWhen($pendingStart->end_at) }}@endif
@elseif($isOn)Campaign is already On. This only writes Meta stop_time — it does not create a scheduled start.
Times are {{ $adsDisplayTz }}. Scheduling a start is an explicit order and can turn the campaign On even after a Deal Pause.
@endif