Ako već negdje vodiš dućan — na WooCommerceu, Shopifyju ili u vlastitoj tablici — cijeli katalog ne moraš prepisivati ručno u WebShopHR. Artikle uvoziš iz CSV datoteke koju izvezeš iz postojeće platforme, jednim uploadom.
U izborniku s lijeve strane otvori Uvoz. Na vrhu ekrana su upute: podržani formati, koje se kolone čitaju i napomena o kvoti. Uvoz ima tri koraka:

Nakon uvoza dobiješ rezultat: koliko je artikala uvezeno i koliko je redaka preskočeno (uz nekoliko primjera zašto). Novi artikli pojave se u Artiklima odmah, a u tražilici dućana za nekoliko trenutaka (indeksiranje ide u pozadini).

Parser sam prepoznaje format po nazivima stupaca u prvom retku CSV-a — ne moraš ništa posebno označavati. Podržana su tri izvora:
| Izvor | Kako se prepoznaje | Stupci koji se čitaju |
|---|---|---|
| WooCommerce | header sadrži Name i Regular price |
Name, Description, Regular price, Stock, SKU |
| Shopify | header sadrži Handle i Title |
Title, Body (HTML), Variant Price, Variant Inventory Qty, Handle |
| WebShopHR (generički) | header sadrži name i price_eur |
name, description, price_eur, stock, slug |
Sve ostale stupce iz WooCommerce/Shopify exporta (težina, porezni razred, tagovi, dobavljač…) tiho preskačemo — uvozimo samo ono što WebShopHR treba za artikl. Ako header ne odgovara nijednom od tri oblika, uvoz staje s porukom da format nije prepoznat i ništa se ne mijenja.
Iz svakog retka nastaje jedan proizvod s ovim poljima:
Body (HTML) očisti od HTML oznaka u čisti
tekst (naslovi, liste i podebljano ostaju kao tekst, tagovi nestaju)1.234,56 €) i engleski (1234.56)
zapis; redak s cijenom 0 ili neispravnom cijenom se preskačeslug
(WebShopHR); ako ga nema, gradi se iz nazivaDelimiter (zarez ili točka-zarez) prepoznaje se automatski, a UTF-8 BOM koji Excel voli dodati na početak datoteke se ignorira — hrvatski znakovi (č, ć, š, ž, đ) ostaju ispravni.
Shopify u exportu ponavlja isti Handle za svaku varijantu proizvoda. U ovoj
verziji uvoza svaki redak postaje zaseban artikl — varijante se ne
spajaju natrag u jedan proizvod s podvarijantama. Retke koji su samo nastavak
varijante (bez Title) preskačemo. Ako želiš prave varijante (veličina/boja
pod jednim artiklom), posloži ih nakon uvoza na artiklu (vidi
Artikli).
Uvoz donosi naziv, opis, cijenu, zalihu i slug — ne i slike ni dodjelu kategorijama. Slike WooCommerce/Shopify čuvaju na svojim serverima pa ih ne povlačimo; fotografije i kategorije posložiš nakon uvoza. Time izbjegavamo i da ti katalog ovisi o tuđem hostingu slika.
Uvoz je sve-ili-ništa. Ako bi CSV prešao ograničenje broja artikala tvog paketa (Free paket: do 10 artikala — neograničeno ako je trgovina povezana s Arges ERP-om ili na Pro/Enterprise paketu), ništa se ne uvozi i dobiješ poruku koliko artikala stane, a koliko ih CSV donosi. Tako ne završiš s pola uvezenog kataloga.
Ako se slug novog artikla poklopi s postojećim, automatski se dodaje sufiks
(-2, -3…) da URL ostane jedinstven. Po završetku uvoza dobiješ broj
uvezenih i preskočenih artikala (uz nekoliko primjera zašto je redak
preskočen), a katalog se osvježi u tražilici dućana automatski.
Ekran "Uvoz" u pozadini zove WebShopHR API, koji možeš koristiti i izravno (npr. za skriptirani prijenos):
POST /api/v1/items/import
Datoteku šalješ na dva načina — kao upload datoteke (multipart form polje
csv) ili kao sirovo text/csv tijelo zahtjeva. Gornja granica je 5 MB
po datoteci (CSV je običan tekst, pa je to i za nekoliko tisuća artikala više
nego dovoljno).
Uspješan odgovor (200) je JSON s brojem uvezenih i preskočenih artikala te
do 10 primjera preskočenih redaka:
{ "imported": 3, "skipped": 0, "errors": [] }
Greške dolaze kao {"error": "..."}: 400 ako datoteka nedostaje, a
422 ako format nije prepoznat, ako nema nijednog valjanog retka ili ako bi
uvoz prekoračio kvotu paketa (u tom slučaju se, kao i u CMS-u, ništa ne
uvozi).