Shopify Functions vs Scripts (Plus): differenze e migrazione

Shopify Functions vs Scripts

Per i merchant Plus, Scripts erano lo strumento storico per logiche custom su sconti, spedizione e pagamento. Dal 2023 Shopify ha introdotto Functions come sostituto moderno e più potente. Scripts verranno deprecati ad agosto 2025. In questa guida vediamo differenze e come migrare.

Cosa sono Scripts

Scripts (Plus only) sono pezzi di Ruby eseguiti dal Script Editor app durante checkout: Line Item Scripts (modificano prezzi/sconti carrello), Shipping Scripts (alterano metodi spedizione), Payment Scripts (nascondono metodi pagamento). Esempio classico: applicare sconto 10% se carrello contiene 3+ prodotti della stessa categoria.

Cosa sono Functions

Functions sono moduli WebAssembly (compilati da Rust, JavaScript o AssemblyScript) eseguiti dal motore Shopify Functions in tempi sotto i 5ms. Tipi disponibili: Discount Functions (sconti complessi), Shipping Discount, Payment Customization (nascondi/rinomina/riordina metodi), Delivery Customization (modifica opzioni spedizione), Cart Validation (validazione carrello), Cart Transform (bundle, merge line items).

Differenze chiave

Disponibilità: Scripts solo Plus, Functions per tutti i piani (con limiti su Standard). Linguaggio: Scripts Ruby, Functions Rust/JS/AssemblyScript. Performance: Functions più veloci (WASM). Estendibilità: Functions hanno più tipi di customization. Versionamento: Functions deployate via Shopify CLI in app. Deprecation: Scripts deprecati agosto 2025.

Procedura migrazione passo-passo

  1. Elenca tutti gli Scripts attivi nel Script Editor.
  2. Identifica il tipo equivalente Function (discount, shipping, payment, ecc.).
  3. Installa Shopify CLI.
  4. Crea app: shopify app init.
  5. Genera Function: shopify app generate extension e scegli Discount (o altro tipo).
  6. Scegli linguaggio (Rust raccomandato per perf, JS per facilità).
  7. Implementa la logica equivalente allo Script.
  8. Testa localmente: shopify app function run.
  9. Deploy: shopify app deploy.
  10. Configura la Function dal Shopify Admin (Settings > Discounts > Create discount > Custom Function).
  11. Disattiva lo Script equivalente solo dopo aver verificato la Function in produzione.
  12. Pianifica la migrazione completa entro agosto 2025.

Esempio: sconto carrello tier

Function in JS che applica 5% per 3+ items, 10% per 5+, 15% per 10+:

export function run(input) {
  const totalItems = input.cart.lines.reduce((sum, line) => sum + line.quantity, 0);
  let percent = 0;
  if (totalItems >= 10) percent = 15;
  else if (totalItems >= 5) percent = 10;
  else if (totalItems >= 3) percent = 5;
  if (percent === 0) return { discounts: [] };
  return {
    discounts: [{
      targets: [{ orderSubtotal: { excludedVariantIds: [] } }],
      value: { percentage: { value: percent } }
    }],
    discountApplicationStrategy: "FIRST"
  };
}

Errori comuni e come risolverli

  • Non migrare in tempo: a deprecation Scripts attivi smettono di funzionare; checkout potrebbe rompersi.
  • Logica non equivalente: alcune logiche Ruby non hanno equivalente diretto; richiede refactor.
  • Performance issues: Functions hanno limite 5ms; codice lento fallisce.
  • Discount stacking: Shopify limita combinazioni discount; verifica strategy (FIRST/ALL).

Domande frequenti

D: Functions sono disponibili sui piani non Plus?
R: Sì, con alcune limitazioni (es. Cart Transform è Plus-only).

D: Costo Functions?
R: Sviluppo gratis, hosting Shopify; servono competenze sviluppo o agency.

D: Posso avere più Functions attive?
R: Sì, con limiti per tipo: 5 Discount Functions, 25 Cart Validation, ecc.

Performance e limiti

Shopify Functions girano in WebAssembly sandbox con limiti stringenti: max 5ms execution time, max 200KB output, no network access, no file system, no random/time non-deterministic. Logiche pesanti devono essere pre-calcolate o cached via metafields. Per debug usa shopify app function run --input=test.json in locale. Profiling: l'output include cost analysis. Eccedere i limiti causa fallback (no Function applicata) silenzioso, lo Shopify checkout procede senza modifiche.

Function types disponibili

Tipi al 2025: Discount (sconti automatici complessi), Shipping Discount, Payment Customization (nascondi/rinomina/riordina), Delivery Customization, Cart Validation (blocca checkout se condizioni), Cart Transform (bundle, merge - Plus only), Order Routing (Plus, scegli location fulfillment), Fulfillment Constraints. Ogni tipo ha schema input/output specifico documentato su shopify.dev/docs/api/functions.

Checklist operativa

Prima di considerare l'argomento implementato correttamente, verifica questa checklist sintetica: configurazione tecnica testata in ambiente di staging o development store, backup attivo prima di ogni modifica critica, documentazione interna aggiornata per il team operativo, training agli operatori che useranno la funzionalità, monitoraggio di metriche chiave (conversion rate, AOV, ticket support) per 30 giorni post-implementazione, revisione legale se l'implementazione tocca aspetti GDPR, fiscali o di pagamento, piano di rollback chiaro nel caso di problemi imprevisti, comunicazione ai clienti se il cambiamento influenza la loro esperienza (es. nuovo checkout, nuovi metodi di pagamento, nuovi tempi di spedizione). Una implementazione tecnica senza queste fasi di accompagnamento spesso non produce i risultati attesi e genera attriti interni o sui clienti.

Risorse utili e community

Per approfondire ulteriormente: la documentazione ufficiale Shopify su shopify.dev e help.shopify.com aggiorna costantemente le guide; il Shopify Community Forum ha thread attivi su quasi ogni argomento con risposte da Shopify Experts; Shopify Partner Academy offre corsi gratuiti per merchant e sviluppatori; YouTube channel ufficiale Shopify pubblica walkthrough delle nuove feature. Per il mercato italiano cerca community come Shopify Italia su Facebook o gruppi LinkedIn dedicati a e-commerce manager italiani: il confronto con altri merchant che vivono problemi simili è una scorciatoia preziosa rispetto a documentazione internazionale generica.

Hai bisogno di aiuto?

Se vuoi un Shopify ottimizzato dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?