Automatizace importů a exportů dat v e-shopu
Ruční import CSV jednou týdně funguje, dokud e-shop neroste. Ukážeme, jak z něj udělat spolehlivý automatický proces, který se nerozbije potichu.
Import produktů z tabulky a export objednávek do účetnictví dělá na začátku skoro každý e-shop ručně. Jednou týdně stáhnete CSV, opravíte pár sloupců v Excelu a nahrajete ho zpátky. Funguje to do chvíle, kdy přibude druhý dodavatel, marketplace nebo ERP. Pak ruční krok zabírá hodiny a chyby se objevují tam, kde je vidí zákazník: v ceně, dostupnosti nebo popisu.
Automatizace importů a exportů není jen „naplánovat skript na noc“. Je to proces se vstupem, transformací, validací, zápisem a kontrolou. V článku ukážeme, jak ho postavit tak, aby se nerozbil potichu.
Co všechno se dá automatizovat
V e-shopu teče data oběma směry. Typické toky, které řešíme:
| Tok | Směr | Typická frekvence | Typický formát |
|---|---|---|---|
| Katalog od dodavatele | dovnitř | denně | XML feed, CSV, API |
| Sklad a dostupnost | dovnitř | minuty až hodiny | XML, API, webhook |
| Ceny a ceníky | dovnitř | denně nebo při změně | CSV, XLSX, API |
| Objednávky do ERP | ven | průběžně | API, XML |
| Faktury a doklady | ven | denně | XML, PDF |
| Feedy pro srovnávače a marketplace | ven | několikrát denně | XML |
| Zákazníci do CRM a e-mailingu | ven | průběžně | API |
Každý tok má jiné nároky. Katalog snese zpoždění několik hodin. Sklad ne. Objednávka, která do ERP dorazí dvakrát, způsobí víc škody než objednávka, která dorazí o deset minut později. Proto si nejdřív u každého toku ujasněte, jak čerstvá data potřebujete a co se stane, když přijdou dvakrát nebo vůbec.
Formáty a jejich pasti
CSV je univerzální, ale křehké. Rozbije ho jiný oddělovač, jiné kódování nebo středník uvnitř popisu. Příklad z praxe: Shoptet v nápovědě k importu produktů uvádí, že CSV musí používat středník jako oddělovač a podporuje kódování Windows-1250 i UTF-8. Soubor uložený v Excelu s jiným nastavením pak skončí rozsypanou diakritikou nebo posunutými sloupci.
XLSX je pohodlné pro lidi, ne pro stroje. Excel rád přepíše EAN na vědecký zápis nebo odřízne nuly na začátku kódu. Pro automatický proces ho používejte jen jako vstup od lidí, nikdy jako mezikrok mezi dvěma systémy.
XML má pevnou strukturu a dá se validovat proti schématu. Proto je standardem pro feedy dodavatelů a srovnávačů. Víc v hesle XML feed.
JSON přes API je nejlepší volba tam, kde ho obě strany umí. Dostanete typovaná data, chybové kódy a možnost měnit jen to, co se změnilo.
Architektura: extrakce, transformace, zápis
Každý automatický import má stejnou kostru. Odborně se jí říká ETL (extract, transform, load):
- Extrakce. Stažení dat ze zdroje: URL feedu, FTP nebo SFTP server, API dodavatele, e-mailová příloha.
- Uložení surových dat. Originální soubor si uložte s časovou značkou. Když se něco pokazí, víte, co přesně přišlo.
- Transformace. Mapování kategorií a parametrů, přepočet cen a marží, sjednocení jednotek, deduplikace.
- Validace. Kontrola povinných polí, rozsahů a počtů. Tady se zastaví většina problémů.
- Zápis. Import do e-shopu přes API nebo vestavěný import, v dávkách.
- Kontrola a log. Kolik záznamů přišlo, kolik se zapsalo, kolik skončilo chybou a proč.
Klíčové je párování. Každý záznam musí mít stabilní klíč, podle kterého proces pozná, jestli produkt vytvořit, nebo aktualizovat. Typicky kód produktu, EAN nebo kód dodavatele. Když se klíč změní, vznikne duplicita. Proto má import navíc být idempotentní: když ho spustíte dvakrát se stejnými daty, výsledek je stejný.
Plánování: cron, fronty, nebo vestavěný import
Nejjednodušší spouštěč je cron: skript běží každý den ve 3:00 nebo každých 15 minut. Stačí pro katalog a ceníky. Pro sklad a objednávky bývá lepší reagovat na událost, tedy webhook nebo frontu zpráv. Rozdíly rozebíráme v článku Cron joby vs. realtime.
Pronajímané platformy mají vlastní nástroje. Shoptet nabízí automatický import produktů z XML feedu s plánováním do časových oken. Počet aktualizací denně se podle nápovědy liší podle tarifu (k 9/2026, aktuální podmínky ověřte v nápovědě Shoptetu). Pro jednoduchý feed od dodavatele to stačí. Když potřebujete data upravit, spojit více zdrojů nebo přepočítat ceny, vložíte mezi dodavatele a e-shop vlastní transformační vrstvu.
Velké objemy: dávky, asynchronní úlohy a limity API
Import desítek tisíc produktů po jednom přes API je pomalý a naráží na limity. Platformy proto nabízejí hromadné operace. Konkrétní příklady (k 9/2026):
| Platforma | Hromadná operace | Důležité limity |
|---|---|---|
| Shoptet | Asynchronní úlohy (jobs), např. snapshot všech produktů ve formátu JSON Lines | Výsledek je ke stažení 24 hodin, vyžaduje registrovaný webhook job:finished; max. 3 souběžná spojení na token |
| WooCommerce | Endpoint batch v REST API | Výchozí limit 100 objektů na jednu dávku, lze změnit filtrem |
| Shopify | Bulk operations v GraphQL Admin API | Vstupní JSONL soubor max. 100 MB, operace musí doběhnout do 24 hodin |
Z tabulky plyne pár pravidel, která platí obecně:
- Posílejte data v dávkách, ne po jednom záznamu a ne všechno naráz.
- Respektujte rate limity. Shoptet používá algoritmus leaky bucket a při přetížení vrací HTTP 429 s hlavičkou
Retry-After. Skript musí počkat a zkusit to znovu, ne spadnout. - Omezte paralelismus. Deset souběžných procesů nad jedním tokenem vám import nezrychlí, jen vyrobí chyby.
- Posílejte jen změny. Porovnejte nová data s posledním stavem a aktualizujte jen rozdíly. Import je pak rychlejší a méně zatěžuje platformu.
Validace: nejlevnější místo, kde chybu zastavit
Většina škod z automatických importů nevzniká chybou kódu, ale chybou v datech. Dodavatel pošle prázdný feed, cenu bez DPH místo s DPH nebo sklad nula u všech položek. Automat to poslušně zapíše. Proto před zápisem kontrolujeme:
- Počet záznamů. Když obvykle chodí 12 000 produktů a dnes 300, import se zastaví a pošle upozornění.
- Povinná pole. Kód, název, cena, DPH. Záznam bez nich se nezapíše.
- Rozsahy. Cena, která se změnila o víc než stanovené procento, jde do kontroly.
- Formát. EAN má správnou délku a kontrolní číslici, URL obrázku vrací obrázek.
- Hromadné výpadky. Pokud má najednou nulový sklad víc než určitý podíl katalogu, je chyba spíš ve zdroji než ve skladu.
Prahy nastavte podle vašich dat. Lepší je import jednou zbytečně zastavit než jednou zapsat nesmysl do celého katalogu.
Exporty: objednávky, doklady a feedy
U exportů je hlavní riziko opačné: data odejdou dvakrát, nebo neodejdou vůbec. Objednávka zdvojená v ERP znamená dvojí expedici. Chybějící faktura znamená problém v účetnictví. Pomáhají tři věci:
- Stav exportu u každého záznamu. Objednávka ví, jestli už byla předána a kdy.
- Potvrzení z cílového systému. Export je hotový, až když ERP vrátí své ID dokladu.
- Opakování s kontrolou duplicit. Při chybě spojení se export zkusí znovu, ale cílový systém podle ID pozná, že objednávku už má.
Feedy pro srovnávače a marketplace generujte tak, aby se neměnila ID produktů. Změna ID znamená pro Google Merchant Center nebo Heureku nový produkt bez historie.
Monitoring: jak se dozvědět, že import neproběhl
Nejhorší automatický import je ten, který tři dny neběží a nikdo to neví. Minimum, které nastavujeme:
- upozornění, když import neskončí do stanoveného času,
- upozornění na chybové stavy a na neobvyklé počty záznamů,
- denní souhrn: kolik vytvořeno, aktualizováno, přeskočeno, chybných,
- uložené logy aspoň za poslední týdny, abyste mohli zpětně dohledat, co se stalo.
Podrobněji v článku Monitoring integrací.
Jak na to prakticky
Checklist pro každý nový automatický tok dat:
- Víte, kdo je vlastníkem zdroje dat a na koho se obrátit při chybě?
- Má každý záznam stabilní párovací klíč?
- Ukládáte surová vstupní data s časovou značkou?
- Validujete počty, povinná pole a rozsahy před zápisem?
- Dá se import bezpečně spustit znovu bez duplicit?
- Respektuje proces limity API a pracuje v dávkách?
- Dostanete upozornění, když import neproběhne nebo skončí chybou?
- Je proces zdokumentovaný tak, aby ho převzal i někdo jiný?
Pokud vám některý bod chybí nebo trávíte ruční prací s tabulkami hodiny týdně, ozvěte se. Navrhneme a postavíme automatické importy a exporty včetně validace a monitoringu, případně celou automatizaci procesů kolem objednávek a skladu. Cenu připravíme po konzultaci podle počtu zdrojů a složitosti transformací.
Potřebujete s tím pomoct?