@extends('layouts.app') @section('title', 'Import Products') @section('breadcrumb') @endsection @section('content')
{{-- ══════════════ LEFT: Steps + Upload ══════════════ --}}
How it works
1
Download the template
It includes column instructions and a few example rows so you can see exactly how to fill it in.
2
Fill in your products
One row = one product + one variant. If a product has several variants, add one row per variant and repeat the product name.
3
Upload it below
New products are created automatically. Re-uploading the same file later (e.g. to fix a typo) safely updates existing rows instead of duplicating them.
Step 1 — Get the Template

The template has an Instructions sheet explaining every column, and a Products sheet where you'll enter your data.

Download Excel Template
Step 2 — Upload Your File
@csrf
@error('file')
{{ $message }}
@enderror Accepted formats: .xlsx, .xls — Max size: 10MB
{{-- ══════════════ RIGHT: Quick reference ══════════════ --}}
Quick Column Reference
Column Required
Product NameRequired
CategoryRequired
Variant NameRequired
Purchase PriceRequired
Selling PriceRequired
BrandOptional
Product TypeOptional
Serial TrackedOptional
Warranty MonthsOptional
UnitOptional
DescriptionOptional
Product SKUOptional
Variant SKUOptional
BarcodeOptional
Cost PriceOptional
Wholesale PriceOptional
Opening StockOptional
Min Stock AlertOptional
Reorder LevelOptional
Is ActiveOptional
SKU/Barcode columns left blank are auto-generated — leave them blank unless you already use your own codes.
{{-- ══════════════ Error report (shown after a failed/partial import) ══════════════ --}} @if(session('importErrors') && count(session('importErrors')) > 0)
Rows Skipped Due to Errors
@foreach(session('importErrors') as $err) @endforeach
Excel RowError
Row {{ $err['row'] }} {{ $err['message'] }}
@endif @endsection @push('scripts') @endpush