Sada zahradního nábytku s nejlepším ROAS v celém reklamním účtu. Dvanáct korun tržeb za každou korunu investovanou do reklamy, druhý nejprodávanější produkt sezony. A po odečtení nákupní ceny, dopravy a vratek ztráta 134 tisíc korun. Není to kuriozita. Je to běžný stav e-shopů, které vyhodnocují marketing podle obratu. Report ziskovosti produktů tenhle rozdíl vytáhne na světlo, a to až na úroveň jednotlivých SKU.
GA4 spočítá konverze. Google Ads ukáže ROAS. Sklik, Zboží.cz, Heureka i Glami pošlou svoje objednávky. Žádný z těch systémů ale neví, kolik jste za produkt zaplatili dodavateli. Nezná cenu balení, nevidí příplatek za nadrozměrnou zásilku a netuší, že se každý pátý kus vrátí zpátky na sklad.
Rozhodnutí pak vypadají naprosto logicky a přitom ztrátu prohlubují. Navýšíte rozpočet u kampaně s nejvyšším ROAS, protože čísla vypadají skvěle. Tím ale škálujete produkt, který na sebe po odečtení všech nákladů nevydělá. Čím víc utratíte, tím víc proděláte. A protože reklamní systém o marži nic neví, pomáhá vám v tom naplno.
Rozdíl mezi obratem a ziskem se navíc chová u každého produktu jinak. Drobné příslušenství s marží 40 % a poštovným za 79 korun hraje úplně jinou hru než trampolína, kterou musíte poslat paletovou přepravou a která se v pětině případů vrátí. Průměrná marže napříč e-shopem tenhle rozdíl spolehlivě zamaskuje.
Odtud pramení i klasický spor mezi marketingem a financemi. Marketing ukazuje růst tržeb a zlepšující se ROAS. Finance ukazují stagnující zisk. Obě strany mají pravdu, protože každá měří jiné číslo, a nikdo nemá po ruce přehled, který by je propojil.
Nejčastější slepá místa jsou přitom triviální. Slevové kódy, které se v přehledech schovají do průměrné ceny. Vratky zaúčtované v jiném měsíci než původní objednávka. Tržby s DPH porovnávané s náklady bez DPH. Každá z těch drobností posune výsledek o jednotky procent – a dohromady dokážou přepnout produkt ze zisku do ztráty. Dokud marketing nevidí marži, optimalizuje na obrat. A obrat se dá koupit skoro vždycky.
Report ziskovosti produktů sleduje jediné číslo: kolik z tržby vám na konci zůstane. Od tržby postupně odečte slevy, vratky, nákupní cenu zboží (COGS), logistiku a fulfillment, provize srovnávačů a marketplaces a nakonec náklady na reklamu. Výsledkem je příspěvek na krytí, a to na úrovni jednotlivých SKU nebo varianty.
Čistá marže v tomto reportu znamená podíl příspěvku na krytí na tržbě, tedy kolik z každé stovky korun zbude po všech nákladech, které jdou přiřadit konkrétnímu produktu. Fixní náklady firmy, jako je nájem skladu, mzdy nebo systémy, v ní nejsou. Rozpouštět je mezi tisíce SKU totiž nemá smysl: ať je rozdělíte jakkoli, výsledek řekne víc o zvoleném klíči než o produktu.

Cesta od tržby k zisku. Každý sloupec je jedna nákladová položka, kterou většina marketingových reportů vůbec nevidí.
Zásadní je poslední krok. Nákladovou strukturu si nějak počítá skoro každá firma, obvykle v tabulce, kterou jednou za čtvrtletí aktualizuje controlling. Skoro nikdo ale do té tabulky nedostane marketingové náklady přiřazené ke konkrétnímu produktu. Právě tohle propojení rozhoduje o tom, jestli report jen popisuje minulost, nebo vám řekne, kam příště poslat rozpočet.
Shoptet, WooCommerce, PrestaShop, Helios, WPJ i vlastní řešení. Podmínka je jediná: e-shop musí mít API, na které se dokážeme napojit. Stahujeme objednávky, položky, varianty, uplatněné slevové kódy i stornované a vrácené kusy. Varianta je přitom důležitější, než se zdá. U oblečení nebo nábytku se ziskovost mezi velikostmi a barvami liší klidně o desítky procent, protože se liší vratkovost.
GA4 doplní kontext, který samotné objednávky nemají: odkud návštěva přišla, jak dlouhá byla cesta k nákupu a které produkty si lidé hodně prohlíží, ale málo je kupují. Aby data měla granularitu na úrovni produktu a nezkreslilo je vzorkování, napojíme GA4 na BigQuery a pracujeme se surovým exportem místo agregovaných přehledů v rozhraní.
Google Ads, Sklik a Zboží.cz, Heureka, Glami, Meta, Adform. Náklady rozdělujeme podle product ID z feedu. U kampaní bez produktové struktury, typicky brandových, používáme podíl na tržbách dané kategorie. Kvalita tohohle kroku přímo závisí na tom, jak dobře máte nastavené měření. Bez server-side sběru dat a Google Tag Gateway vám část konverzí prostě vypadne a report bude systematicky lhát ve prospěch nejhůř měřených kanálů.
COGS, fulfillment, poštovné podle hmotnostních pásem, provize srovnávačů, náklady na zpracování vratky. Tahle data bývají nejroztříštěnější: část v ERP, část v tabulce od logistiky, část v hlavě finančního ředitele. Posbírat je stojí nejvíc času ze všech kroků a zároveň je to ta část, která celému reportu dává smysl.
Jeden detail, na kterém tenhle typ reportu nejčastěji padá: nákupní cena se v čase mění. Pokud si sklad uloží jen aktuální COGS a přepočítá s ní i loňské objednávky, meziroční srovnání marže nemá žádnou vypovídací hodnotu. Proto ukládáme nákladové hodnoty s platností od–do a každou objednávku počítáme s cenou, která platila v den jejího vzniku.
Všechno končí v datovém skladu, typicky v BigQuery, nad kterým vzniká vizualizace v Looker Studiu nebo Power BI. Report se aktualizuje denně nebo týdně podle toho, jak rychle se u vás rozhoduje. První obrazovka odpovídá na otázku, jestli firma vydělává víc než loni.

Kombinace, kterou vidíme často: tržby rostou dvouciferně, příspěvek na krytí klesá. Marže se rozpouští ve slevách, dopravě a vratkách rychleji, než obrat stíhá růst.
Druhá obrazovka pojmenuje konkrétní viníky. Tady většinou nastane ticho.

Sada nábytku Rattan má nejvyšší ROAS v celé tabulce a druhou nejvyšší ztrátu. Trampolínu zabíjí kombinace paletové dopravy a vratek. Hadice a LED set přitom vydělávají 39 a 36 procent a v žádné prezentaci o nich nepadne slovo
Třetí obrazovka řeší načasování. Sezonalita se totiž u obratu a marže chová jinak a rozdíl mezi těmi dvěma křivkami je často ten nejdražší graf v celé firmě.

Nejsilnější měsíc v obratu bývá nejslabší v zisku. Bez tohohle pohledu se slevová sezona plánuje naslepo.
Ve třech krocích. Nejdřív napojíme zdroje, tedy e-shop, GA4, reklamní systémy a nákladové tabulky, a sjednotíme je na společný klíč produktu. To je ta nudná a nejdůležitější část: bez konzistentního product ID napříč feedy, ERP a analytikou se nic dalšího postavit nedá.
Pak přijde datový sklad. Data v něm žijí v jedné struktuře a hlavně s historií, kterou vám žádná reklamní platforma sama neuchová. Google Ads i Sklik data po čase agregují nebo mažou, e-shop přepisuje ceny a marže a meziroční srovnání tím ztrácí smysl. Sklad tenhle problém řeší jednou provždy.
Nakonec nad tím vznikne report, který čte marketingový manažer i majitel, ne jen analytik. Data o marži přitom patří mezi nejcitlivější čísla ve firmě, takže je řešíme jako jakákoli jiná finanční data: přístup podle rolí a žádné COGS ve sdílených dashboardech pro externí partnery.
Frekvenci aktualizace určuje ten, kdo report čte. Majiteli e-shopu obvykle stačí týdenní pohled se srovnáním proti minulému roku a proti plánu. Performance tým potřebuje denní data, aby stihl zareagovat na to, co se v kampaních děje tenhle týden. Obojí čerpá ze stejného skladu, liší se jen obrazovka a rozsah detailu.
Jakmile máte historii na úrovni produktu pohromadě, otevírá se další patro. Stejná data slouží jako vstup pro predikci poptávky a plánování zásob, protože model potřebuje přesně to, co jste právě posbírali.
Vyplatí se, pokud máte stovky až tisíce SKU, výrazně odlišné marže napříč sortimentem, drahou nebo rozměrnou dopravu, vysokou vratkovost nebo prodáváte přes srovnávače a marketplaces s provizemi. Čím pestřejší sortiment, tím víc peněz se schovává v průměru.
Nevyplatí se, pokud prodáváte pár desítek položek s prakticky stejnou marží a stejným poštovným. Tam si vystačíte s dobře vedenou tabulkou a čas i rozpočet dají větší smysl jinde. Podobně u čistě lead-genového byznysu, kde se návratnost počítá jinak a kde dává větší smysl měřit hodnotu poptávky než marži na produktu.
Report ziskovosti produktů sám o sobě nic nezmění. Změní ale to, o čem se na poradách mluví. Místo hádky o atribuci máte na stole konkrétní seznam položek, na které se vyplatí inzerovat, a seznam těch, které jen tiše ujídají z výsledovky. A to je rozdíl, který se dá spočítat.
Chcete vědět, jestli se to u vás dá postavit? Ozvěte se týmu Data a analytika ve Fragile. Projdeme s vámi, jaká data už máte, co chybí a jak dlouho by první verze reportu trvala.