Představte si, že máte na skladě dvoje tenisky. Tenisky A stojí 2.500 Kč a máte na nich marži 400 Kč, tenisky B stojí 2.000 Kč a máte na nich marži 600 Kč.
Které byste raději prodali? S největší pravděpodobností to budou tenisky B, ale reklamní platformy to budou dělat přesně naopak. Čím vyšší tržby, tím lepší. A to je většinou první impulz proč, firmy začínají optimalizovat na marži.
Pojďme se spolu podívat, jak reklamním systémům vysvětlit, že tržby nejsou všechno, a naučit je optimalizovat na zisk (POAS). Nejprve se zaměříme na byznysový pohled – jak k optimalizaci marže přistoupit a vyhnout se častým chybám. Poté navážeme technickou částí s konkrétním postupem nastavení.
Možná si právě říkáte, že existují daleko užitečnější formy optimalizace, ale optimalizace na marži je ideální začátek a jakmile jím zvládnete projít, můžete se v rámci optimalizace posunout zase dál.
Článek vychází z našeho webináře o obohacování dat pro reklamní platformy.
Co od optimalizace na marži očekávat a kdy to nemá smysl
Na úvod si pojďme říct, že optimalizace na marži skutečně funguje. Pokud reklamní platformě řekneme, že má místo na tržby cílit na marži, můžeme se spolehnout, že náš požadavek splní.
V momentě, kdy všechno nachystáme správně, můžeme čekat pokles tržeb do 10 % a nárůst zisku mezi 10 a 20 %. Ano, výkyvy můžou být na obě strany, ale toto je standardní očekávání.
Optimalizovat na marží nedává smysl, pokud máte plošně nastavenou úroveň marže napříč produkty nebo pokud nejste schopni se vypořádat s pastmi (viz níže - prolink na danou sekci). To pak může minimálně ve střednědobém horizontu napáchat více škody než užitku.
Jak určit velikost marže
V teorii je práce s marží jednoduchá. Jen odečteme nákupní cenu od prodejní a máme výsledek.
Ve skutečnosti je to ale složitější. Existuje spousta úrovní marže, se kterými můžeme pracovat. Budeme od prodejní ceny kromě nákupní odečítat i marketingové náklady? A co náklady na logistiku, skladování nebo vratky a reklamace?
Pro řízení firmy je přesná definice marže zásadní. Z hlediska optimalizace kampaní naštěstí už tolik ne. Naprosto stačí, když reklamním platformám posíláme přibližnou hodnotu marže. Důsledně si však pohlídejte, aby se marže počítala konzistentně stejným způsobem. Čím menší výkyvy v hodnotách, které posíláme, tím stabilnější výsledky kampaní.
Pro zjednodušení: když budu dál v článku mluvit o marži, myslím tím metriku, kterou posíláme do reklamního systému. Jak napočítat marži pro finální vyhodnocení, případně jak pracovat s více úrovněmi marže, je nad rámec tohoto návodu a dál do toho zabrušovat nebudeme.
Základní pravidlo je, že do finální marže počítáme všechny náklady, které jsou napříč produkty variabilní. Produkt A je bude mít odlišné od produktu B. Například pokud nějaké zboží dotuji na dopravě víc než jiné, je náročnější na skladování apod., dává smysl zohlednit to v marži. Zahrnovat do ní náklady, které jsou fixní, smysl ale postrádá a může být naopak kontraproduktivní.
It’s a trap
Všechno zní až podezřele jednoduše, že? Spočítat marži, poslat ji do systémů a už jen sledovat, jak roste zisk. Kde jsou ty pasti, na které je potřeba dát si pozor? Pojďme si je ukázat na příkladu pet shopu.
Nerozpočítávejte fixní náklady do marže.
Když odečteme od prodejní ceny všechny variabilní náklady, vyjde nám krycí příspěvek. Pokud bychom ale rozpočítali fixní náklady do marže, u některých produktů by se mohla marže snížit natolik, že by je reklamní platformy přestaly nabízet.
Tím by nám klesly celkové tržby, což by vzhledem k logicky stále stejné výši fixních nákladů nemělo pozitivní dohru. Dokud se tedy produkt podílí na krytí fixních nákladů, měli bychom jeho prodeje maximalizovat.
Máme v nabídce i vodítka. Čistě na variabilních nákladech se nám zaplatí, ale pokud do nich rozpočítáme i fixní, jsou najednou na nule. Google i Meta je tak přestanou nabízet, prodeje nám klesnou na minimum, ale žádná jiná příbuzná kategorie je nezastoupí. Dobrým úmyslem jsme se tak dostali do ztráty.
Vemte v potaz specifikum vaší produktové nabídky.
Prodáváte odzkoušené otevíráky? Produkty, díky kterým si zákazník váš e-shop vyzkouší, je s nimi spokojený a s velkou pravděpodobností se vrátí? I když nemají dobrou marži, tak v momentě, kdy je reklamní platformy přestanou nabízet, nejspíš to v dlouhodobém období pocítíte.
Prodáváme skvělé pamlsky, na které máme úžasnou zpětnou vazbu a zákazníci se nám díky nim vrací. Bohužel je to levná položka s minimální marží. Google i Meta je tak přestanou nabízet a přijdeme o zákazníky, kteří nám sice nepřinesou zisk rovnou, ale v delším období se několikanásobně vrátí.
Rozmyslete se, jak pracovat se zpětnými bonusy.
Pokud od dodavatele dostáváte zpětné bonusy podle objemu prodeje, je určení marže na produktu o něco těžší. Buď si můžete dopředu spočítat jakého objemu pravděpodobně dosáhnete (a jaká bude tedy pravděpodobná marže na produktu), nebo můžete přidat dynamický prvek. Dynamický prvek zajistí, že čím více se budete blížit hranici pro další zpětný bonus, tím vyšší marži budete do reklamní platformy posílat.
Purina se skvěle prodává, jen nově mění podmínky a pro své odběratele zavádí zpětné bonusy. Spočítáme jak velkou marži tak na produktech budeme podle předchozích prodejů mít. To je o 5 % méně než v minulém období. Google i Meta tak budou Purinu méně nabízet a ve výsledku se jí prodá výrazně méně, než jsme čekali. Kvůli tomu si sáhneme na menší zpětný bonus a ve výsledku skončíme se zápornou marží.
Potřebujete vyprodat sklady?
Narazit můžete v momentě, kdy se potřebujete zbavit staré kolekce, nebo nějakou produktovou kategorii přestáváte prodávat. Začnete zboží nabízet ve slevě a pokud byste dál kampaně optimalizovali dle marže, pravděpodobně je nikdy nevyprodáte. Jednoduchým řešením je v těchto kampaních změnit optimalizaci zpět na tržby. O něco složitější a škálovatelnější možností je přechod na rozšířenou marži.
Kouzlo jménem rozšířená marže
Rozšířená marže představuje způsob, jak se vypořádat s většinou pastí. Je to metrika, kde k reálné marži přimícháte další ingredience podle vašich byznysových cílů. Není to skutečná marže, ale optimalizační nástroj.
Chcete podpořit prodej produktů, které jsou silné otvíráky? Přidejte jim k samotné marži i akviziční bonus. Chcete vyprodat starou kolekci? Přidejte jim k samotné marži likvidační bonus.
Máme ‚Mňamózní pamlsky pro štěňata‘, které mají reálnou marži 50 Kč. Z dat víme, že 30 % prvozákazníků, kteří si je koupí, se do 3 měsíců vrátí a udělá další nákupy s průměrnou marží 500 Kč. Akviziční bonus tak určíme jako 30 % z 500 Kč = 150 Kč. Rozšířená marže (eP) nám vyjde jako 50 Kč (reálná marže) + 150 Kč (akviziční bonus), celkově tedy 200 Kč. A pokud to chceme dělat opravdu správně, tak akviziční bonus budeme posílat pouze u nových objednávek a nebudeme ho připočítávat u těch opakovaných.
Rozšířená marže je ideálním mezikrokem mezi optimalizací na marži a pokročilými technikami typu optimalizace na celkovou hodnotu zákazníka (CLV). Můžete začít třeba tím, že upravíte hodnoty na úrovni kategorií podle toho, jak často po nich navazují opakované nákupy. Prostě psí žrádlo bude mít zpravidla výrazně vyšší hodnotu CLV než psí obojek.
O optimalizaci na CLV a dalších pokročilých technikách ale víc příště. Raději se podívejme, jak optimalizaci na marži vůbec nastavit.
Jak na přechod
Jak k přechodu přistoupit z businessového hlediska? Přejít naráz se vším, postupně převádět jednotlivé kategorie nebo ještě jinak?
Ve spoustě případů nás v možnostech přechodu bude limitovat struktura kampaní. Pokud jedeme na minimu spojených kampaních (jak je dnešní best practice), reálně možnost pozvolného přechodu nemáme a ať se nám to líbí, nebo ne, je potřeba přejít vcelku.
Já osobně bych si rozhodně dal pozor a přechod dělal mimo sezónu. Je to přeci jen dost velká změna a chcete minimalizovat vnější vlivy.
Samotné technické nastavení je potřeba pořešit na dvou úrovních. Nastavení v rámci reklamního systému a nastavení samotného posílání dat. Společně si projdeme nastavení na dvou hlavních reklamních systémech (Google Ads a Meta Ads).
Nastavení reklamního systému
V rámci Google Ads je postup celkem přímočarý. Vytvoříme novou konverzi pro marži a přidáme ji jako sekundární konverzi. Minimálně měsíc posíláme data, aby se reklamní systém mohl učit + pro kontrolu setupu a odhadu dopadu. Potom dopočítáme odpovídající POAS a přepneme z jedné konverzní akce na druhou.
Po přepnutí se kampaně dostanou na nějakou dobu (zpravidla dva týdny) do učící fáze. Zhruba čtrnáct dní tak budou výsledky rozhozené, na což je potřeba se připravit a výkyvy očekávat.
Pozor, u Meta Ads sice můžeme také nastavit custom konverzi, ale není na ní možné optimalizovat DPA kampaně. Pro účely optimalizace na marži ji nelze použít.
Máme tedy dvě možnosti. Buď vytvoříme nový pixel, kde do purchase budeme posílat marži, nebo budeme dál pracovat s jedním pixelem, kde místo stávající hodnoty tržeb začneme posílat marži. Kvůli kontrole setupu, odhadu dopadu a případně postupného přechodu doporučuji řešení přes nový pixel.
Nastavení konverzí bychom měli a teď jak dostat data do reklamního systému.
Posílání dat do reklamního systému
Posílání marže klasicky přes GTM
Nejčastější způsob. Nějakým způsobem napočítáte hodnotu marže a necháte ji vývojáře odesílat do datové vrstvy, nebo jako custom event odkud ji přes GTM posíláme do jednotlivých reklamních systémů.
Tento přístup má ale dva zásadní nedostatky. Dáváte veřejně vědět hodnotu marže, což je zpravidla citlivý údaj, který úplně nechcete, aby konkurence znala. Zpravidla taky potřebujete větší spolupráci s vývojem a doba, za jakou optimalizaci dle marže nasadíte, se dost prodlouží.
Možná vás napadne, že na to vyzrajete a do datové vrstvy dáte zašifrovanou hodnotu marže. A až pak si ji v rámci GTM pomocí vlastního klíče rozšifrujete. To vypadá na první pohled neprůstřelně. Konkurence takto sice nevyčte hodnotu marže z datové vrstvy, ale vy ji dál budete posílat v čitelné podobě (už rozšifrovanou) do jednotlivých nástrojů a protože to posíláte frontendově, je velmi jednoduché ji odchytit.
Zpětné nahrání hodnoty marže
V rámci Google Ads máme u zpětného nahrání dvě možnosti. Buď upravíme hodnotu již odeslané konverze přes Conversion Adjustmens, nebo přidáme novou konverzi s marží přes Enhanced conversions for leads. Nenechte se zmást názvem,můžete přes něj úplně stejně odesílat e-commerce data.
U Facebooku pak máme jen jednu možnost - odeslat jako novou konverzi. Je potřeba si dát pozor na to, že u offline importu konverzí přes Facebook Conversion API funguje deduplikace konverzí jiným způsobem než při deduplikaci mezi Pixelem a Conversion API. Meta vezme v případě stejného order ID vždy první konverzi a další zahodí.
Zpětná nahrávání marže se hodí, jen pokud je nápočet marže příliš složitý, a nejde tak spočítat v době objednávky. Což jsou ale dost okrajové případy.
U dlouhodobých kampaní zpoždění s odesláním marže z hlediska optimalizace kampaní nevadí. Problém však nastává u flash sales. Tedy akcí, které trvají jen pár dní či hodin. V tomto případě je zpětné nahrávání marží nepoužitelné.
Posílání marže server-side přes sGTM
Posílání marže server-side jde dělat více způsoby v závislosti na tom, jak moc můžeme zatížit naše vývojářské oddělení. Popíši za mě ideální variantu.
Nejdřív si napočítáme hodnotu marže nebo alespoň někam nachystáme všechny variabilní náklady, které od prodejní ceny chceme odečítat. Část může být dynamická (třeba to, jak se mění prodejní cena nebo jak se blížíme k hranici pro zpětný bonus) a část statická (například nákupní cena nebo náklady na dopravu).
To je obrovská výhoda tohoto postupu. Nepotřebujete, aby vývojáři vytvářeli složité řešení, které vše bude přepočítávat, ale vezmete už existující data (nejčastěji v ERP nebo alespoň účetním programu) a vypomůžete si třeba vzorečky v Google Sheets.
V dalším kroku si všechny potřebné proměnné napojíme na Firestore. Můžeme pro to využít víceméně libovolnou databázi, Firestore má ale jednu zásadní výhodu. Data jsme z něj schopní vytáhnout opravdu velmi rychle a to je při odesílání konverzních dat klíčové. V ideálním světě se snažíme, aby nebylo zpoždění dat větší než 500ms, v méně ideálním, ale ještě zvládnutelném, je to kolem 1s. Jakékoliv zpoždění totiž může způsobit ztrátovost dat.
A v posledním kroku se při odeslání konverze podíváme do Frestore, vytáhneme z něj aktuální hodnotu marže a tu server-side odešleme do odpovídající reklamní platformy.
A jak s tou rozšířenou marží
Při práci s rozšířenou marží máte dvě možnosti - buď přeskočíte druhou konverzi pro marži a rovnou budete v rámci druhé konverze posílat eP, nebo si pro rozšířenou marži vytvoříte třetí konverzi.
Osobně mi nedává smysl proč by se businessová (nikoliv optimalizační) marže měla počítat a reportovat v reklamní platformě a ne v BI, ale pokud je to pro vás nezbytné, vytvořte raději třetí konverzi pro eP, na kterou budete optimalizovat.
S rozšířenou marží se z technického hlediska pracuje nejlépe při server-side odesílání z Firestore. Nemusíte vymýšlet extra sofistikované řešení. Můžete na něj totiž napojit třeba i jen Google Sheet, u kterého budete upravovat které produkty jsou pro vás teď klíčové z hlediska prodeje a kterým tedy opticky navýšit hodnotu marže.
Debugging, kontroly, ladění
Rozmysleli jste si, jak marži počítat, vyřešili jste technické napojení? Tak hurá na spouštění.
A teď nastává ta správná chvíle na to se zastavit, všechno zkontrolovat a až poté ostře na optimalizaci dle marže přejít.
Debugging a kontrola správnosti posílání dat je celkem jasná. Sedí maržové konverze s tržbovými 1:1? Jak se systém popere s peakem v objednávkách, kdy se jich v jednu chvíli odešle třeba 100x tolik, co běžně? Nejsou u nějakých objednávek rozdíly mezi tržbami a marží nějak zvláštní (běžní podezřelí, kde se marže nastavuje špatně, jsou sady produktů a čerstvě zalistované produkty)?
Neméně důležitá je ale kontrola předběžných výsledků.
Nehledě na to jak dobře rozšířenou marži nastavíte, nejspíš se vám změní struktura prodaných produktů / kategorií, případně i zákazníků.
Při finální kontrole po přechodu na optimalizaci na marži vždy ověřujeme:
- jak se změnila struktura produktů / kategorií, které kampaně prodávají - nevypadla nám nějaká kategorie nebo značka, která je pro nás businessově důležitá?
- nezačaly kampaně vodit jiné složení zákazníků - nerecyklují se ve větším stávající zákazníci a nevymírá nám tak akvizice? chovají se zákazníci po objednávce stejně, je tam obdobné procento navazujících objednávek?
A ještě předtím než ten přechod uděláme, můžeme se připravit na to, jak ta změna bude asi vypadat.
Na jednom místě si zobrazíme hodnotu konverzí podle stávajícího přístupu (optimalizace na tržby) a vedle nich hodnotu dle nového přístupu (optimalizace na marži). Zaměříme se na objednávky s největším rozdílem mezi současným a budoucím řešením. Uvidíme tak, jaký typ objednávek nám nejspíš už nepřijde a naopak ty, kterých bude přibývat výrazně více.
Už v tuto chvíli si lze všimnout, že se rozšířená marže nechová tak, jak bychom chtěli a můžeme před ostrým spuštěním ještě ladit.
tldr
- dobře si rozmyslete, jak budete marži počítat a co do ní zahrnete
- nerozpočítávejte do marže fixní náklady - dokud budou objednávky pokrývat nákupní cenu a variabilní náklady, chcete maximalizovat tržby
- když můžete, posílejte hodnoty realtime přes server-side
- posílání marže ex post je ok, ale pozor pokud pracujete s flash sales
- připravte se na nečekané a raději rovnou začněte pracovat s rozšířenou marží
- nepodceňte debugging a odhad chování po přechodu
- vytvořte si záchytné reporty pro podchycení změn ve struktuře produktů a zákazníků
A dál?
Optimalizace na marži je skvělý začátek, kam se ale posunout dál? U e-commerce je to podle mě celková hodnota zákazníka (CLV), u leadových businessů či gamingu optimalizace podle lead nebo session scoringu (jak se chová zákazník v rámci návštěvy nebo poté v trialu / prvních dnech po stažení hry). Něco víc si o tom řekneme třeba v navazujícím článku. Sledujte dál naše tučňáčí webináře, ať vám nic důležitého neuteče.