@php $isDone = in_array($this->jobStatus, ['completed', 'failed']); $pct = $this->totalRows > 0 ? min(100, (int) round(($this->exportedRows / $this->totalRows) * 100)) : ($this->jobStatus === 'processing' ? 5 : 0); $isRunning = $this->jobId && !$isDone; @endphp
{{-- Progress section --}} @if($this->jobId) @if($isDone) {{ $this->jobStatus === 'completed' ? 'Export Complete' : 'Export Failed' }} @else Exporting Product Images… @endif @if($isDone && $this->jobStatus === 'completed') {{ number_format($this->exportedRows) }} products exported @if($this->completedAt) — generated {{ $this->completedAt }}@endif @elseif(!$isDone) Processing in the background — you can leave this page and come back. @endif
@if($this->totalRows > 0) {{ number_format($this->exportedRows) }} / {{ number_format($this->totalRows) }} rows @elseif($this->jobStatus === 'pending') Queued… @else Starting… @endif {{ $pct }}%
@if($this->firstError)
{{ $this->firstError }}
@endif
@if($isDone && $this->jobStatus === 'completed') Download CSV @endif @if($isDone) New Export @endif
@endif {{-- Form section --}} @if(!$this->jobId) Export Product Images Generate a CSV manifest of product image URLs — one row per product, one column per image slot.
{{-- Filters --}}

Filters

Choose which products to include in the image export.

Uncheck to include all products, even those without images (useful for seeing what is missing).

{{-- Columns reference (spreadsheet style) --}}

Columns in the Export

One row per product. Number of image columns is determined at export time by the product with the most images.

CSV Columns
sku always
image_1 image URL
image_2 image URL
image_3 image URL
image_N… dynamic

Empty cells mean no image in that slot. Use this CSV with Import › Product Images to bulk-replace image URLs.

Start Export
@endif