Vai al contenuto principale
Tecnico

Come funziona la validazione del checkout di Shopify (e come le app la usano per bloccare gli ordini)

Jahangir Alam3 maggio 2026Aggiornato il 8 ottobre 2026Fatti verificati il 8 ottobre 202610 min read
CheckoutShop PayApple PayBuy it nowone checkserver-side

La validazione del checkout di Shopify è una Shopify Function, della Cart and Checkout Validation API, che un'app installa sul tuo negozio. Shopify la esegue sui propri server ogni volta che un carrello o un checkout cambia. Se la Function restituisce un errore, il checkout mostra il messaggio e l'acquirente non può completare l'ordine finché non risolve il problema. Gira sul checkout normale, sui pulsanti express come Shop Pay e Apple Pay, sui checkout headless e sulle bozze d'ordine, su qualsiasi piano Shopify quando arriva da un'app pubblica. Non gira su POS, rinnovi degli abbonamenti, modifiche agli ordini o ordini creati tramite API. Può bloccare un ordine, ma non può cambiare il carrello né riservare scorte.

Ultima verifica: 8 ottobre 2026, sulla documentazione per sviluppatori e sul centro assistenza di Shopify. Le fonti sono in fondo.

Trasparenza: OrderRules è un'app di validazione del checkout. Questa guida spiega prima la piattaforma Shopify, poi come la usiamo noi.

Validazione del checkout a confronto con le app basate su script nel carrello: checkout standard, Shop Pay, Apple Pay, Google Pay, link diretti al checkout e storefront headless

Cos'è una Function di validazione

Shopify Functions permette alle app di aggiungere la propria logica al backend di Shopify. Ogni API di Functions copre un compito: sconti, opzioni di consegna, metodi di pagamento e così via. La validazione è quella che decide se un carrello può andare al checkout.

Ecco come funziona:

  1. Un'app fornisce la Function. È compilata in WebAssembly e distribuita con l'app. Tu installi l'app; non tocchi codice.
  2. La esegue Shopify, non il tuo tema. La Function gira nell'infrastruttura di Shopify, non nel browser dell'acquirente. Disattivare JavaScript o modificare la pagina non la salta.
  3. Legge un input e restituisce errori. Shopify le passa il carrello e i dati collegati. La Function restituisce un elenco di errori, ciascuno con un messaggio e un target (l'intero carrello o un campo specifico).
  4. Il checkout mostra il messaggio. Elenco vuoto: il checkout prosegue. Qualche errore: Shopify mostra i messaggi e blocca il completamento finché l'acquirente non cambia qualcosa.

Shopify esegue la Function in diversi momenti del percorso d'acquisto: interazioni con il carrello, interazioni con il checkout e completamento del checkout. Una Function può verificare in quale passaggio si trova e scegliere di bloccare solo al checkout, così l'aggiunta al carrello non fallisce mai.

Shopify mantiene le Functions piccole e veloci. Ogni esecuzione ha limiti rigidi sulle istruzioni e sulla dimensione dell'input, quindi la logica deve essere semplice e i dati compatti.

Ecco un esempio semplificato in JavaScript del target attuale, cart.validations.generate.run. È illustrativo, non è il codice di OrderRules:

// Simplified example, not production code.
// Input comes from a GraphQL input query (cart lines, buyer identity, metafields).
export function cartValidationsGenerateRun(input) {
  const limits = input.shop.limits?.jsonValue ?? {}; // written by the app ahead of time
  const errors = [];

  for (const line of input.cart.lines) {
    const productId = line.merchandise.product?.id;
    const remaining = limits[productId];
    if (remaining !== undefined && line.quantity > remaining) {
      errors.push({
        message: `Only ${remaining} left for today. Lower the quantity to continue.`,
        target: "$.cart",
      });
    }
  }

  return { operations: [{ validationAdd: { errors } }] };
}

Nota cosa manca: nessuna query al database, nessuna chiamata API, nessun "conta gli ordini di oggi". La Function vede solo ciò che c'è nel suo input. Questo determina tutto ciò che segue.

Dove gira e dove no

Shopify documenta su quali superfici girano le Functions di validazione. La tabella segue il riferimento della Cart and Checkout Validation API.

SuperficieLa validazione gira?Note
Carrello e checkout del negozio onlineSìCarrello e checkout sono elencati separatamente; entrambi supportati
Shop Pay, Apple Pay, Google Pay, PayPal express, Acquista oraSìElencati come Storefront Accelerated Checkout
Storefront headless (Storefront API)SìInclusi Hydrogen e front end personalizzati
Checkout B2BSìGli acquirenti aziendali ricevono la stessa validazione
Bozze d'ordine (admin e checkout da fattura)SìElencate come Draft Order (Admin and Checkout) e Shopify Admin
Shopify POSNoLe vendite in negozio non vengono validate
Ordini di rinnovo degli abbonamentiNoViene validato solo il primo checkout dell'abbonamento
Modifiche agli ordiniNoModificare un ordine dopo l'acquisto salta la validazione
Create Order APINoOrdini creati da altre app o integrazioni
Preordine e prova prima di acquistareNoLe opzioni di acquisto differito non sono supportate

Quindi "non può essere aggirata" non è esatto. Un acquirente non può saltare la validazione dal negozio online o da un pulsante express. Ma un ordine da POS, un rinnovo, una modifica o l'API non ci passa mai. Se conti su un limite, verifica quali di questi canali usa il tuo negozio.

Cosa può vedere una Function

Una Function dichiara una query di input, scritta in GraphQL, e Shopify la compila a ogni esecuzione. Tra i campi utili:

  • Righe del carrello: quantità, variante, prodotto, peso, attributi della riga.
  • Identità dell'acquirente: se l'acquirente ha effettuato l'accesso e, per i clienti, campi come numero di ordini e importo speso.
  • Metafield: su negozio, prodotti, varianti e clienti.
  • Attributi del carrello: per esempio, una data di consegna scelta nella pagina del carrello.
  • Il passaggio del percorso d'acquisto: interazione con il carrello, interazione con il checkout o completamento del checkout.

Cosa non può fare in un'app pubblica: chiamare la rete. Non può chiedere al server dell'app "quanti ordini oggi?" durante il checkout. Il conteggio lo fa l'app altrove. Ascolta le notifiche degli ordini di Shopify, aggiorna i suoi totali e li scrive nei metafield. La Function legge quei metafield all'esecuzione successiva.

Ecco perché i conteggi in una Function sono istantanee. Sono aggiornati quanto l'ultima scrittura nei metafield, non in tempo reale.

Cosa può e non può fare

Può bloccare con un messaggio. È tutto il suo output. I messaggi possono riferirsi all'intero carrello o a un campo specifico del checkout, e un'app può lasciarti scrivere il testo che preferisci.

Non può cambiare le quantità. Una Function di validazione non può ridurre una quantità, rimuovere una riga o cambiare un prezzo. I vecchi Shopify Scripts potevano modificare il carrello in silenzio; la validazione no. L'acquirente legge il messaggio e corregge il carrello. Altre API di Functions, come Cart Transform o gli sconti, gestiscono le modifiche al carrello, e non bloccano il checkout.

Non può riservare scorte o fasce orarie. La Function legge un'istantanea e dice sì o no. Non trattiene nulla. Se due acquirenti vanno al checkout per l'ultima unità, o per l'ultimo posto in una fascia di consegna, quasi nello stesso momento, entrambi possono leggere "ne resta 1" ed entrambi possono passare. La validazione rende affidabili i limiti con il traffico normale. Non garantisce che tu non li superi mai.

Fino a 25 Functions di validazione per negozio. Shopify limita quante Functions di validazione possono essere attive contemporaneamente. Più app possono aggiungerne una ciascuna, e girano tutte; basta che una restituisca un errore per bloccare il checkout.

Piani

  • Le app pubbliche dell'App Store con Functions funzionano su ogni piano Shopify. Non ti serve Plus per installare un'app di validazione.
  • Le app personalizzate con Functions richiedono Shopify Plus. Riguarda i negozi che costruiscono una propria Function privata.
  • Shopify Scripts non c'è più. Gli Scripts hanno smesso di funzionare il 30 giugno 2026. Molti limiti di quantità vivevano negli script sugli articoli. Se anche i tuoi, vedi sostituire Shopify Scripts con Functions per le regole di quantità e di checkout.

JavaScript nel tema vs validazione

Molti strumenti per i limiti girano nel tema: nascondono un pulsante, limitano un campo quantità o mostrano un avviso nella pagina del carrello. È utile per mostrare i limiti presto. Non è un'applicazione effettiva delle regole.

JavaScript nel tema o nella pagina del carrelloFunction di validazione
Checkout normale del negozio onlineSolo se l'acquirente passa dalla pagina del carrello con JavaScript attivoSì
Pulsanti Shop Pay, Apple Pay, Google Pay nelle pagine prodottoNo, saltano la pagina del carrelloSì
Link diretti al checkoutNoSì
Storefront headlessNo, non c'è un temaSì
Bozze d'ordineNoSì
POSNoNo
Rinnovi degli abbonamenti, modifiche agli ordini, ordini via APINoNo
Può mostrare i limiti prima del checkoutSìNo, solo messaggi quando il carrello viene verificato
Si può saltare disattivando JavaScriptSìNo

Nessuno dei due copre POS o rinnovi. La configurazione migliore usa entrambi: messaggi nello storefront perché gli acquirenti vedano i limiti presto, e una Function di validazione come blocco definitivo al checkout.

Lo stesso vale per le date di consegna. Un selettore di date rende grigi i giorni pieni o chiusi nel browser, ma i pulsanti express e i link diretti al checkout saltano la pagina in cui si trova il calendario. Solo una Function di validazione ricontrolla la data scelta al checkout. Vedi come si confrontano le app Shopify per il selettore della data di consegna sulla validazione del checkout.

Come la usa OrderRules

OrderRules installa una Function di validazione. Imposti le regole nell'app; l'app tiene i conteggi e li scrive nei metafield; la Function li legge al checkout e blocca gli ordini che violano una regola. Controlla:

  • Orari del negozio e festività: chiude il checkout fuori dai tuoi orari.
  • Tetti di ordini: tetti giornalieri per tutto il negozio, più tetti settimanali e mensili sui piani a pagamento.
  • Tetti per prodotto, variante e collezione: totali condivisi tra tutti gli acquirenti.
  • Quantità minima d'ordine e incremento di quantità: per prodotto o variante, per ordine.
  • Limiti per cliente: ordini, unità, spesa o peso per periodo, per i clienti che hanno effettuato l'accesso.
  • Date di consegna e fasce di ritiro sul piano Advanced: cutoff, date di chiusura e tetti per fascia.

Il messaggio per ogni tipo di regola si modifica in Impostazioni. Le regole vengono verificate su ogni superficie della tabella sopra in cui gira la validazione. Gli ordini POS e i rinnovi non vengono bloccati, ma contano comunque nei tuoi limiti. I conteggi sono istantanee, quindi due checkout quasi simultanei per l'ultimo posto possono passare entrambi.

L'applicazione delle regole al checkout è inclusa in ogni piano, compreso il piano gratuito Starter. Tutti i dettagli: dove vengono verificate le regole di OrderRules: compatibilità e limitazioni.

Letture correlate

Fonti

Provalo sul tuo negozio

Installa OrderRules dallo Shopify App Store. La validazione del checkout è inclusa in ogni piano, e i piani a pagamento hanno una prova gratuita di 14 giorni.

Domande frequenti

È un'API di Shopify Functions, la Cart and Checkout Validation API. Un'app installa una piccola Function che Shopify esegue sui propri server quando un carrello o un checkout cambia. La Function restituisce un elenco di errori. Se l'elenco non è vuoto, Shopify mostra i messaggi e l'acquirente non può completare il checkout finché il problema non è risolto.

No. I negozi su qualsiasi piano possono usare le app pubbliche dell'App Store che includono Functions di validazione. Solo le app personalizzate con Functions richiedono Shopify Plus.

Sì. Shopify elenca i checkout accelerati come supportati, quindi la stessa Function gira per i pulsanti express di Shop Pay, Apple Pay, Google Pay e PayPal. Gira anche sui checkout headless (Storefront API), sui checkout B2B e sulle bozze d'ordine.

Shopify elenca come non supportati POS, ordini di rinnovo degli abbonamenti, modifiche agli ordini, ordini creati con la Create Order API e le opzioni di acquisto in preordine o prova prima di acquistare. Gli ordini da queste fonti non vengono bloccati da una Function di validazione.

No. Una Function di validazione può solo restituire errori. Non può cambiare quantità, rimuovere articoli o modificare prezzi. L'acquirente vede il messaggio e modifica il carrello da sé.

Non da sola. Nelle app pubbliche una Function non può fare chiamate di rete, quindi l'app le passa i conteggi tramite metafield e la Function legge un'istantanea. Non può riservare scorte o fasce orarie, quindi due checkout che si chiudono quasi nello stesso momento per l'ultimo posto possono passare entrambi.

Pronto a prendere il controllo dei tuoi ordini?

Prova OrderRules gratis