Majitel skupiny e-shopů potřebuje rychlou odpověď na jednoduchou otázku: kolik jsme tento měsíc prodali a kolik nás to stálo. Každý e-shop má ale vlastní administraci, vlastní exporty a vlastní měnu. Faktury jsou jinde, náklady na reklamu ještě jinde. Odpověď znamenala skládat tabulku z desítek exportů.
Od 16. března 2026 to dělá přehled, který jsem postavil a provozuju. Tahle poznámka je o tom, jak rostl a co do něj postupně přibylo. O tom, jak se čísla v něm ověřují do haléře, píšu zvlášť v poznámce 141 460 dokladů do haléře.
Jak přehled rostl
Na začátku se data synchronizovala jednou denně ráno. V červnu přehled četl čtyři české e-shopy na Shoptetu. V polovině července přibyly slovenské a polské, celkem deset e-shopů na Shoptetu. Hned se ukázalo, že měna patří k objednávce, ne k e-shopu. Od té doby se všechno přepočítává kurzem ČNB.
Koncem července přibylo šest zahraničních e-shopů na Shopify. Tři chyby v konektoru na Shopify odhalilo až živé API: verze rozhraní, rozsah oprávnění a chybějící kurz jedné měny po jejím přechodu na euro. Dvacátého srpna přibyl sedmnáctý e-shop. Dnes jich je jedenáct na Shoptetu a šest na Shopify, v šesti zemích.
Co přehled tahá
Objednávky ze Shoptetu a Shopify, zpětně přes milion, aby šlo srovnávat trendy napříč lety.
Faktury. E-shopy na Shopify fakturují přes Fakturoid. Od 4. srpna jsou napojené všechny účty a přehled z nich drží 141 460 dokladů.
Náklady na reklamu. Google Ads jsou napojené od poloviny července, koncem července na všech tehdejších e-shopech. Na začátku srpna se Meta rozšířila ze čtyř na 14 účtů pro všech jedenáct e-shopů, které na Facebooku inzerují, a Sklik na pět účtů s dvouletou historií. Reklamu, která nemá API, jde zadat ručně, stejně jako měsíční náklady agentur za jednotlivé e-shopy. Útrata za reklamu se převádí na koruny až při čtení, takže se dá porovnat s tržbami bez ohledu na měnu účtu.
Kurzy ČNB pro přepočet všeho, co není v korunách.
Deset minut místo jednou denně
Od 20. srpna synchronizace běží každých deset minut. Jeden běh přes všech sedmnáct e-shopů trvá zhruba 16 sekund. V noci proběhne ještě důkladnější průchod, který zpětně projde faktury za posledních čtrnáct dní a zachytí dodatečné změny.
Rychlost ale nestačí, synchronizace se může zaseknout. Od 10. září proto každý běžící job každou minutu zapíše tep. Zaseknutý job se pozná podle toho, že netepe, ne podle toho, jak dlouho běží, a job, který přeruší nasazení, se vrátí do fronty zhruba do 15 minut místo 24 hodin.
Nápověda přímo v aplikaci
Začátkem srpna přišla od uživatelů konkrétní stížnost: nevědí, co která obrazovka dělá a kde co najdou. Aplikace do té doby neměla žádnou dokumentaci.
Nápověda má jedenáct článků, slovníček 45 metrik a kontextový otazník v hlavičce každé obrazovky. U každého čísla je vysvětlivka s odkazem do slovníčku. Slovníček je jediný zdroj definic, takže vzorec každé metriky je popsaný na jednom místě a obrazovky ho přebírají.
Články jsem nepsal po paměti. Vznikly z průzkumu kódu, ve kterém agenti prošli 417 prvků rozhraní a všech 45 metrik i se vzorci. Vedlejší efekt byl nečekaně užitečný: vypadlo z toho osm oprav samotné aplikace, které nikdo nenahlásil. Vysvětlivky na mobilu se například nedaly otevřít vůbec a čísla na hlavní obrazovce se překrývala na všech šířkách.
Cíle a predikce
V polovině srpna dostal denní přehled marketingové cíle. Vedle skutečnosti ukazuje cíl obratu i rozpočítaný na den, rozdíl proti cíli, denní průměr, průměr potřebný na zbytek měsíce a predikci. U PNO, tedy podílu nákladů na reklamu na obratu, je cíl taky a hodnota nad ním svítí červeně.
Review téhle změny chytilo jedenáct chyb. Dvě z nich stojí za zmínku, protože by je z obrazovky nikdo nepoznal. Skupinové plány srovnávaly obrat všech e-shopů s cílem jen pro jejich část. A jedna část aplikace počítala dny v UTC, zatímco zbytek v pražském čase, takže se kolem půlnoci rozcházely.
Vlastní měna e-shopu
Od 10. září jde zahraniční e-shop číst i v jeho vlastní měně, na přehledu i v reklamě. Denní přehled celé skupiny zůstává v korunách, protože sčítat se dají jen čísla ve stejné měně.
Co si z toho odnést
Přehled pro majitele neroste podle plánu, ale podle toho, jak roste firma. Integrace se ověřují proti živému API, protože dokumentace neřekne všechno. Nápověda psaná podle kódu, ne po paměti, najde i chyby v aplikaci. A cíle a predikce mají smysl jen tehdy, když čísla pod nimi sedí.