Zbývá jen X kusů ve vaší velikosti: inventární API a jeho spolehlivost

Only X left in your size mezi pomocí a manipulací

Hlášky typu „Zbývají poslední 2 kusy ve vaší velikosti“ patří mezi nejsilnější konverzní spouštěče v módě a obuvi. Pokud jsou založené na pravdivých datech, pomáhají zákazníkovi vyhodnotit riziko vyprodání a rychleji se rozhodnout. Pokud jsou však vymyšlené nebo „kosmeticky upravené“, jedná se o dark pattern, který poškozuje důvěru a může porušovat právo na transparentní informaci. Tento článek vysvětluje, jak navrhnout inventární API, integrace a UI tak, aby „Only X left in your size“ bylo pravdivé, auditovatelné a férové.

Terminologie: jaká data vlastně potřebujeme

  • SKU (Stock Keeping Unit): konkrétní varianta (např. Model A, barva Black, velikost 42).
  • ATS (Available To Sell): okamžitě prodejné kusy po odečtení rezervací a poškozených kusů.
  • ATP (Available To Promise): prodejní potenciál v čase, zahrnuje potvrzené příjmy zboží (ASN) a výrobu.
  • Reservations/Holds: krátkodobé blokace košíkem nebo platbou (typicky 5–30 minut), které snižují ATS.
  • Backorder/Preorder: prodej na budoucí datum, nepodléhá hlášce „poslední kusy“, pokud je dostupná náhrada.

Když je „Only X left“ užitečné a férové

  • Variantově přesné: hláška se vztahuje na vybranou velikost a barvu, nikoli na celý produkt.
  • Časově relevantní: čerpá z dat s nízkým zpožděním (ideálně < 60 s) a uvádí čas poslední aktualizace.
  • Spojené s logistikou: nabízí alternativy (jiná prodejna, jiná barva, doručení za X dní).
  • Bez paniky: jazyk je neutrální („Na skladě 2 ks ve velikosti 42“), nikoli nátlakový („Jen blázen by to nekoupil“).

Kdy je to dark pattern (co nedělat)

  • Fake scarcity: pevné „X“ bez vazby na sklad (např. vždy 3 ks).
  • Resetující se odpočet: umělý časovač, který se po refreshi vrátí, bez propojení na rezervace nebo cutoffy.
  • Agregace přes varianty: „poslední kusy“ na úrovni modelu, i když ve vybrané velikosti je 100+ ks.
  • Skrytá dynamika: neprozradíte, že stav zahrnuje držení v košících, která po určité době expirují.

Architektura: jak vypadá pravdivé inventární API

  1. Zdrojové systémy: WMS/ERP (sklad, reklasifikace), OMS (objednávky, storno), POS (prodejny), PSP/Checkout (rezervace během platby).
  2. Normalizační vrstva: mapuje varianty (SKU) a lokace (online sklad, prodejny, dropship), odstraňuje duplicity a poškozené kusy.
  3. Rules engine: konfiguruje, co se započítává do ATS (např. košíkové rezervace −R, picking −P, Q/C hold −Q).
  4. API endpointy:
    • /inventory/v1/availability?sku=...&loc=... → vrací ATS, ATP, reserved, last_updated, ttl.
    • /inventory/v1/variant-summary?productId=... → matice velikostí/barv s ATS/ATP.
    • /inventory/v1/holds → vytváření/expirace krátkodobých holdů během checkoutu.
  5. Cache a TTL: CDN edge cache 15–60 s, se stale-while-revalidate, aby UI nezpomalovalo, ale nezavádělo.
  6. Audit log: každá zobrazená hláška je zpětně vysledovatelná (jaké hodnoty API v daném čase vrátilo).

Datová pravidla: kdy zobrazit upozornění a jaký text

  • Prahy:
    • ATS ≤ 3 → „Poslední kusy (3 ks) ve velikosti 42“
    • 4 ≤ ATS ≤ 10 → „Omezené množství (8 ks)“
    • ATS > 10 → žádné upozornění; zobrazte pouze „Na skladě“
  • Vazba na inbound: pokud ATS = 0, ale ATP za 72 h ≥ 10 → „Znovu skladem do 3 dnů (předobjednejte)“.
  • Rezervace v košících: pokud reserved_by_carts > 0 → „V košících zákazníků: 5 ks (rezervace expirují do 10 min).“
  • Více lokací: „Online 0 ks, Prodejna Eurovea 2 ks (rezervovat na vyzvednutí?)“

Varianty a velikosti: matice dostupnosti bez lží

U produktů s velikostmi/barvami zobrazte interaktivní mřížku (velikost × barva) s legendou „Na skladě / Poslední kusy / Na cestě / Vyprodané“. Hlášku „Only X left“ zobrazujte pouze pro aktuálně vybranou kombinaci. Pro přístupnost: ARIA popisy a textové hodnoty (nikoli pouze barva). Pro mobil: skupinové přepínače s informací v řádku, nikoli až pod nimi.

Rezervace a závod s časem: spravedlivé „holds“

  • Soft hold v košíku (např. 10 min): snižuje ATS, pokud uživatel aktivně interaguje.
  • Hard hold při platbě (např. 15 min): blokuje položku, aby nedošlo k oversellu.
  • Transparentnost: UI zobrazuje „Rezervováno pro vás do 12:14“ a po expiraci nabízí alternativy.
  • Spravedlnost: limitujte počet paralelních holdů na zákazníka/IP, aby se předešlo blokování zásob boty.

Offline prodejny a omnichannel: BORIS, ROPIS, ISPU

  • ISPU (In-Store Pickup): hláška musí odrážet inventář konkrétní prodejny s latencí do několika minut (POS → API).
  • BORIS: pokud je online ATS nízké, nabídněte vrácení/výměnu v prodejně, ale nezapočítejte to do „Only X left“.
  • ROPO/ROPOS: při přechodu mezi kanály zachovejte konzistentní čísla; zobrazujte čas poslední synchronizace pro každý kanál.

Bezpečnost a odolnost: race conditions, oversell, fallbacky

  • Optimistické odečítání: při „Přidat do košíku“ dočasně odebírejte ATS; na pozadí potvrďte nebo vraťte.
  • Idempotentní operace: opakované kliky nevytvoří více holdů; použijte requestId.
  • Graceful degradation: pokud API neodpovídá, nezobrazujte paniku; zobrazte „Stav skladu se načítá…“ bez vymyšlených čísel.
  • Anti-bot: rate-limiting na holdy, hCaptcha/turnstile na podezřelé vzorce, detekce skriptovaných košíků.

Microcopy: neutrální a informativní jazyk

  • Dobré: „Na skladě 2 ks ve velikosti 42. Rezervováno v košících: 3 ks (expirace do 8 min).“
  • Špatné: „Poslední šance! Už nikdy nebude!“
  • Dobré: „Vyprodáno online. Dostupné v prodejně Central: 1 ks. Rezervujte na 24 h.“
  • Dobré: „Očekávané naskladnění do úterý (potvrzený inbound 60 ks).“

Právní a etický rámec (EU orientačně)

  • Pravdivost tvrzení: skladové tvrzení jsou ověřitelné fakty; zavádění může být nekalou obchodní praktikou.
  • Transparentnost: pokud hláška zahrnuje košíkové rezervace, uveďte to. Nepoužívejte drobný tisk se zásadní informací.
  • Omnibus a slevy: pokud hláška doprovází slevu, referenční ceny musí být korektní; „Only X left“ nesmí zakrývat pseudo-slevu.
  • Přístupnost: informace musí být čitelná (≥16 px, kontrast), dostupná i pro čtečky obrazovky.

Měření dopadu: KPI nad konverzí

Metrika Definice Co očekávat
Conversion Rate (CR) % relací s nákupem Mírný růst při férových hláškách
OOS Incidents Počet oversell/storno kvůli nedostatku Pokles s holdy a rychlým ATS
Complaint Rate Stížnosti na „klamavé skladové info“ Pokles u auditovatelných hlášek
Refund/Cancel Rate Podíl zrušení kvůli nedostupnosti Pokles po zavedení konzistentních API
Stale Data Ratio % odpovědí s věkem > TTL < 2 % mimo incidenty

A/B testování bez manipulace

  • Hypotéza: „Varianta s pravdivým ATS (včetně času aktualizace) zlepší CR o 2–4 % bez nárůstu stížností.“
  • Varianty: A) bez hlášky; B) „Na skladě X ks“; C) „Poslední X ks“ s inbound alternativou.
  • Stop kritéria: pokud roste OOS incidents nebo Complaint Rate, zobrazení je nepřesné – vypnout a překalibrovat.

Implementační detaily: prahy, lokalizace, časová pásma

  • Prahy podle kategorie: u rychloobrátkového zboží nastavte nižší prahy (poslední <= 5), u pomaloobrátkového vyšší.
  • Lokalizace: „Na skladě 2 ks“ versus „2 items left“ – pozor na gramatiku a formát čísel.
  • Časy: zobrazujte v časové zóně zákazníka (např. Europe/Prague) a uvádějte „naposledy aktualizováno 12:06“.

Prevence zneužívání a interní governance

  • Content guidelines: zakázat hyperboly („nikdy už nebude“), povolit pouze fakta.
  • Change management: každá změna prahů v administraci je logována s důvodem (sezóna, promo).
  • Interní audit: měsíční náhodný výběr hlášek a zpětná kontrola proti logům API.
  • Incident handling: pokud dojde k masovému oversellu, automatické stažení hlášek a banner s vysvětlením.

Alternativy k „Only X left“, když zásoby kolísají

  • ETA zásob: „Dodání do 3–5 dní (potvrzený inbound).“
  • Částečná expedice: „Zašleme dnes 1 ks, zbytek v úterý.“
  • Substituce: navrhněte podobné SKU s lepší dostupností místo vyvolávání paniky.

Příklady UI kompozic

  • Variant Card: Vybraná velikost 42 → „Na skladě 2 ks • Aktualizováno před 45 s • Prodejna Nivy 1 ks“.
  • Checkout Hold: Po přidání → „Rezervováno pro vás do 14:21. Dokončete objednávku, jinak se položka uvolní.“
  • OOS State: „Vyprodáno online. Naskladnění do 3 dnů (předobjednat). Alternativa: velikost 43 na skladě 7 ks.“

Technická kontrola kvality: validace a monitoring

  • Consistency checks: ATS ≥ 0, ATS ≤ fyzický stock − poškozené; rezervace ≤ ATS+ATP.
  • Alerting: pokud Stale Data Ratio > práh nebo prudký nárůst OOS incidentů, vypnout hlášky a poslat alert.
  • Synthetic tests: robot, který každou minutu kontroluje, zda UI a API vrací stejná čísla pro vzorové SKU.

Checklist: „Only X left“ správně od A po Z

  • ✅ Zobrazovat na úrovni konkrétní varianty, nikoli modelu.
  • ✅ Čerpat z ATS se zohledněním rezervací a TTL <= 60 s.
  • ✅ Uvádět čas poslední aktualizace a vysvětlovat košíkové rezervace.
  • ✅ Nabízet alternativy: jiná prodejna, naskladnění, substitut.
  • ✅ Jazyk je neutrální a přístupný; žádné přehánění.
  • ✅ Mít audit logy a pravidelné interní ověřování.
  • ✅ Při výpadku API nelhat – raději nic nezobrazit.

Pravdivost jako konverzní motor