Shopify a închis developer preview-ul pentru Discounts Allocator Function API și a confirmat că nu o va lansa ca API stabil. Majoritatea dezvoltatorilor nu au nimic de făcut. Singura excepție reală: aplicațiile care încă declară target-ul de extensie purchase.discounts-allocator.run, pentru că deploy-ul le va eșua până îl elimină din configurație.

Anunțul a apărut pe changelog-ul oficial Shopify, care rămâne sursa de referință pentru orice echipă tehnică ce menține aplicații pe platformă. Link-ul e aici, ca să nu lucrăm din auzite: Shopify Changelog.

Ce s-a schimbat, concret

Discounts Allocator Function API exista doar în developer preview. Permitea unei aplicații să controleze felul în care discounturile se alocă pe liniile din coș, adică cine primește reducerea și în ce ordine, la nivel de linie de comandă. Preview-ul s-a închis, API-ul a fost eliminat și nu va fi relansat. Alocarea discounturilor rămâne în logica de platformă a Shopify.

Motivul invocat de Shopify este simplu: controlul nativ asupra modului în care se aplică discounturile s-a îmbunătățit între timp, inclusiv suprapunerea mai multor discounturi de produs pe aceeași linie. Cu alte cuvinte, majoritatea cazurilor de utilizare sunt acoperite de mecanismele actuale, deci nu mai are sens să ducă API-ul mai departe.

Trei lucruri se schimbă efectiv. Mutațiile discountsAllocatorFunctionRegister și discountsAllocatorFunctionUnregister sunt scoase din versiunea unstable a Admin GraphQL API. Nu au fost niciodată disponibile într-o versiune stabilă, deci nu ai un contract public rupt, ai doar un preview închis. Funcțiile înregistrate în timpul preview-ului sunt dezînregistrate automat, pentru tine, fără intervenție. Iar referința API și tutorialul „Build a discounts allocator” au fost eliminate de pe shopify.dev.

Pentru crearea de discounturi prin funcții, ruta care rămâne valabilă este Discount Function API, documentată în secțiunea de discounts pentru apps.

Cine este afectat și cine nu

Aici merită să fim foarte preciși, pentru că panica inutilă costă mai mult decât un deploy picat.

Nu sunt afectate aplicațiile care nu au folosit niciodată Discounts Allocator Function API sau target-ul de extensie aferent. Nu trebuie să schimbe nimic.

Sunt afectate două categorii. Prima: aplicațiile care au participat la preview și au înregistrat o funcție de tip Discounts Allocator. A doua, și cea care doare operațional: aplicațiile a căror configurație încă declară target-ul purchase.discounts-allocator.run.

Pentru a doua categorie, acțiunea obligatorie este să ștergi extensia din configurația aplicației. Până nu o faci, comanda shopify app deploy eșuează pentru întreaga aplicație, inclusiv pentru modificările aduse celorlalte extensii, cu eroarea „API not found for target: purchase.discounts-allocator.run”.

Nuanța care contează: versiunile deja publicate ale aplicației rămân instalabile, dar funcțiile Discounts Allocator nu mai rulează. Restul funcționalității aplicației nu e afectat. Eșecul apare la următorul deploy. După ce scoți extensia și faci redeploy, totul revine la normal, iar celelalte extensii se actualizează din nou.

Un punct de verificare pe care nu îl declar cert, pentru că anunțul nu îl acoperă: nu știm din sursă dacă există contracte sau termene comerciale speciale pentru partenerii care au investit în preview. Dacă ai un acord de parteneriat, întrebarea corectă se adresează direct reprezentanților Shopify. Nu presupune.

De ce contează dincolo de un API scos

Pentru un operator de ecommerce, un API care dispare sună a problemă tehnică izolată. Nu e chiar așa.

Discounts Allocator promitea control fin asupra modului în care reducerile se distribuie pe coș. Gândește-te la un coș cu trei produse, un cod de reducere de 10% pe tot coșul, un discount de produs pe al doilea articol și o promoție de tip „cumpără 2, primești 1”. Ordinea și modul de alocare a reducțiilor influențează marja finală. Aici voiai să intervii.

Shopify spune acum că logica de platformă acoperă majoritatea cazurilor, inclusiv stacking-ul mai multor discounturi de produs pe aceeași linie. Bine. Dar „majoritatea cazurilor” nu înseamnă „toate”. E o decizie de platformă care mută controlul de la aplicație la platformă. Pentru un merchant, asta e de obicei o veste bună pe termen lung, mai puțin cod de întreținut. Pentru o aplicație de nișă care își construise diferențierea pe acest control, e o lovitură de poziționare.

Aici intervine și lecția mai largă. Fiecare funcție de discount pe care o pui în producție ar trebui să aibă un plan B: ce faci dacă mecanismul dispare în 12 luni? Dacă răspunsul e „nu știu”, ai o dependență ascunsă în funnel.

Ce înseamnă pentru tine, ca antreprenor sau marketer român

Să traducem în termeni de business, nu de GraphQL.

Dacă ai un magazin pe Shopify și folosești o aplicație de discounturi, întrebarea de pus furnizorului este simplă: folosiți purchase.discounts-allocator.run în configurație? Dacă da, aplicația are un deploy blocat până când dezvoltatorul scoate extensia. Traducere: s-ar putea ca update-urile aplicației să nu mai ajungă la tine. Nu te panica, dar pune întrebarea.

Dacă ești pe partea de dezvoltare sau ai un developer în echipă, verifică în repo dacă target-ul mai apare. E o căutare de două minute care îți salvează ore de debugging pe un deploy picat în toiul unei campanii.

Dacă ești marketer și te întrebi de ce contează pentru tine: contează pentru că discounturile sunt pârghia ta principală de conversie pe perioadele promoționale. Cum se alocă reducerea pe coș influențează marja reală pe comandă, nu doar rata de conversie. Un AOV care crește din discounturi agresive, cu marjă comprimată, este o victorie falsă pe dashboard dacă nu citești și profitul pe comandă. Am scris separat despre de ce merită să verifici feed-ul până în coș înainte de sezon, într-un articol despre pregătirea catalogului din Merchant Center pentru promoții.

Și mai e un unghi de fundament tehnic. Când un API public se schimbă sau dispare, vizibilitatea în căutare și în asistenții AI se lovește de link-uri moarte și referințe vechi. Lecția despre URL-uri clare și duplicate pentru vizibilitatea în AI se aplică și aici: documentația scoasă de pe shopify.dev lasă în urmă articole terțe care încă recomandă un API mort.

Ce aș verifica în următoarele 7 zile

Lista mea de verificare, ca recomandare, nu ca fapte confirmate de sursă:

  1. Caută în configurația aplicației sau în repo dacă apare purchase.discounts-allocator.run. Dacă da, șterge extensia și fă redeploy.
  2. Rulează un deploy de test pe un mediu non-producție și confirmă că trece fără eroarea de target.
  3. Întreabă fiecare furnizor de aplicație de discounturi dacă a fost afectat. Răspunsul corect e „nu folosim target-ul” sau „l-am scos”.
  4. Documentează în echipă unde stă acum logica de alocare a discounturilor. Dacă era în app și acum e în platformă, scrie asta undeva. Memoria e un plan prost.
  5. Separă datele de marjă de datele de conversie în perioadele promoționale, ca să vezi dacă o schimbare de alocare mută profitul pe comandă.

Ce NU putem afirma din această sursă: nu știm câte aplicații au fost afectate, nu știm dacă există merchanți care au pierdut bani din funcții care nu mai rulează, nu știm dacă logica nativă acoperă chiar toate cazurile pe care le acoperea API-ul. Sursa spune „majoritatea cazurilor”, ceea ce lasă loc pentru excepții. O verificare incompletă nu dovedește că funcția lipsește, dovedește doar că nu ai testat încă.

FAQ

Trebuie să fac ceva dacă aplicația mea nu a folosit niciodată Discounts Allocator? Nu. Shopify spune explicit că aplicațiile care nu au folosit API-ul sau target-ul de extensie nu sunt afectate și nu trebuie să schimbe nimic.

De ce îmi eșuează deploy-ul chiar dacă nu am modificat extensia? Pentru că target-ul purchase.discounts-allocator.run încă apare în configurație. Cât timp e acolo, shopify app deploy eșuează pentru întreaga aplicație, inclusiv pentru modificările aduse altor extensii. Scoate-l și redeploy.

Mai pot crea discounturi prin funcții? Da, prin Discount Function API, documentat în secțiunea de discounts pentru apps de pe shopify.dev. Discounts Allocator, în schimb, nu va reveni.

Ce se întâmplă cu versiunile deja publicate? Rămân instalabile, dar funcțiile Discounts Allocator nu mai rulează. Restul aplicației funcționează normal.

AI ajută, dar decizia și execuția rămân umane

Un asistent AI e bun la ce e bun: să scaneze un changelog, să caute un string în configurație, să îți facă o listă de verificat și să explice un mesaj de eroare în română simplă. Un tool poate ridica steagul, dar nu poate decide pentru tine dacă scoți extensia acum sau în sprint-ul următor.

Decizia și execuția rămân la om. Media buyer-ul care știe ce marjă are pe fiecare linie de coș în perioada promoțională, developerul care înțelege ce rupe un deploy, marketerul care separă AOV de profitul pe comandă. Nimeni nu deleagă asta către un tool care nu poartă consecințele.

Iar pasul concret, auditul aplicațiilor și al configurărilor Shopify pentru a vedea exact ce e afectat și ce trebuie scos, îl face ALLSoft Agency.

Fără hype. Doar target-ul șters înainte să pice deploy-ul.

Notă editorială: articol adăugat retrospectiv la 2026-09-12, în ediția din 2026-09-10. Data ediției nu reprezintă data lansării anunțului.