Se il tuo negozio usava gli Shopify Scripts per sconti, regole di spedizione o metodi di pagamento, dal 30 giugno 2026 quegli script non funzionano più. E il vecchio checkout.liquid, il file con cui si personalizzava il checkout, è già andato in pensione.
Oggi sconti, spedizioni e pagamenti su misura si fanno con le Shopify Functions: piccoli programmi che girano dentro Shopify e decidono, per esempio, quale sconto applicare o quali metodi di pagamento mostrare. L’aspetto del checkout invece si cambia con l’editor del checkout, il branding e le Checkout UI extensions.
Ti spiego le date, cosa sono le Functions in parole semplici, come si personalizza il checkout oggi, un esempio completo di sconto a scaglioni e cosa puoi fare con ogni piano.
Cosa è cambiato: Scripts e checkout.liquid
Il passaggio è durato due anni. Ecco le tappe, verificate a ottobre 2026 sul changelog di Shopify e nella documentazione su checkout.liquid.
Le date
- 13 agosto 2024:
checkout.liquidsmette di funzionare per le pagine informazioni, spedizione e pagamento; - 28 agosto 2025:
checkout.liquide gli script aggiuntivi vengono spenti anche nelle pagine Grazie e Stato dell’ordine dei negozi Plus; - 15 aprile 2026: gli Shopify Scripts non si possono più modificare né pubblicare;
- 30 giugno 2026: tutti gli Scripts smettono di essere eseguiti;
- 26 agosto 2026: scadenza per i negozi non Plus per passare alle nuove pagine Grazie e Stato dell’ordine.
Cosa smette di funzionare
Gli Scripts ancora pubblicati sono stati disattivati: gli sconti e le regole che facevano non si applicano più. Il riquadro degli “script aggiuntivi” nelle impostazioni del checkout è in sola lettura da agosto 2025.
Se lì dentro avevi incollato codici di tracciamento (conversioni, pixel pubblicitari), vanno spostati nel nuovo sistema degli eventi cliente, di cui parlo più sotto. Le personalizzazioni grafiche fatte con checkout.liquid vanno rifatte con gli strumenti nuovi.
Shopify Functions in parole semplici
Una Function è un pezzo di codice, scritto di solito in Rust o JavaScript e compilato in WebAssembly, che Shopify esegue sui suoi server in un momento preciso del carrello o del checkout. Riceve i dati che le servono (il carrello, il cliente, le impostazioni dello sconto) e restituisce una decisione: “applica il 10%”, “nascondi questo metodo di pagamento”.
Non può chiamare server esterni (salvo casi particolari per i negozi enterprise), non usa date o numeri casuali e deve stare in limiti precisi di memoria e calcolo. Si distribuisce sempre dentro un’app. I tipi principali, dalla documentazione delle Function API:
Sconti
La Discount Function API riunisce in un’unica API gli sconti sui prodotti, sull’ordine e sulla spedizione. Su ogni negozio si possono attivare fino a 25 funzioni di sconto, che lavorano in parallelo senza sapere l’una dell’altra.
Spedizioni
La Delivery Customization nasconde, rinomina o riordina le opzioni di spedizione al checkout: per esempio togliere il corriere espresso per certe zone o per prodotti ingombranti.
Pagamenti
La Payment Customization fa lo stesso con i metodi di pagamento: nascondere il contrassegno sopra una certa cifra, o mostrare il bonifico solo ai clienti business.
Convalida del carrello
La Cart and Checkout Validation blocca il checkout con un messaggio quando una regola non è rispettata: quantità massime, combinazioni di prodotti non ammesse, ordini minimi. Ci sono poi API più specifiche, come la Cart Transform per i bundle.

Personalizzare il checkout oggi
Il checkout di Shopify non si riscrive più: si configura e si estende in punti precisi. Questo lo rende più sicuro e aggiornato da solo, ma chiede di ragionare in modo diverso.
Branding del checkout
Logo, colori e caratteri si impostano dall’editor del checkout e degli account, disponibile su tutti i piani. Lo stile avanzato tramite la Checkout Branding API è invece riservato ai negozi Plus, come riporta la tabella di Shopify sulla checkout extensibility.
Checkout UI extensions
Sono blocchi che un’app aggiunge al checkout: un messaggio, un campo in più, una casella da spuntare. Nelle pagine informazioni, spedizione e pagamento funzionano solo sul piano Plus; nelle pagine Grazie e Stato dell’ordine sono disponibili su tutti i piani.
Non tutto ciò che riguarda gli obblighi verso il cliente passa dal checkout. Il pulsante di recesso, per esempio, va messo nel negozio e nell’area cliente, dove resta raggiungibile per tutto il periodo di recesso.
Pixel e tracciamento
I codici di tracciamento non si incollano più nel checkout: si gestiscono in Impostazioni > Eventi cliente, con i pixel delle app o con pixel personalizzati che girano in un ambiente isolato. Così raccolgono gli eventi anche nel checkout, senza poter modificare la pagina.
Un esempio: sconto a scaglioni con una Function
Mettiamo che tu voglia il 10% di sconto sopra i 100 euro di carrello e il 15% sopra i 200. Le impostazioni standard degli sconti di Shopify coprono già molti casi, quindi prima controllo sempre lì. Se servono regole che non ci sono, scrivo una Function dentro un’app.
Parto dal modello ufficiale, generato con Shopify CLI dalla cartella dell’app:
terminale
shopify app generate extension --template discount --flavor vanilla-js --name sconto-scaglioniLa CLI crea la cartella extensions/sconto-scaglioni/. Il file di configurazione dice a Shopify in quale momento eseguire la funzione (il “target”) e con quali dati. Il modello include anche la parte per gli sconti sulla spedizione: se non serve, la tolgo, e resta questo:
extensions/sconto-scaglioni/shopify.extension.toml
api_version = "2026-07"
[[extensions]]
name = "Sconto a scaglioni"
handle = "sconto-scaglioni"
type = "function"
[[extensions.targeting]]
target = "cart.lines.discounts.generate.run"
input_query = "src/cart_lines_discounts_generate_run.graphql"
export = "cart-lines-discounts-generate-run"
[extensions.build]
command = ""
path = "dist/function.wasm"La versione dell’API (2026-07) è quella che scrive il modello della CLI al momento in cui scrivo. La funzione riceve solo i dati chiesti nella query di input: qui il subtotale del carrello e le classi di sconto attive.
extensions/sconto-scaglioni/src/cart_lines_discounts_generate_run.graphql
query CartInput {
cart {
cost {
subtotalAmount {
amount
}
}
}
discount {
discountClasses
}
}E questa è la funzione vera e propria. Cerca lo scaglione più alto raggiunto e restituisce uno sconto percentuale sul subtotale dell’ordine:
extensions/sconto-scaglioni/src/cart_lines_discounts_generate_run.js
import {
DiscountClass,
OrderDiscountSelectionStrategy,
} from '../generated/api';
// Scaglioni dal più alto al più basso: soglia sul subtotale e percentuale
const TIERS = [
{ threshold: 200, percentage: 15 },
{ threshold: 100, percentage: 10 },
];
export function cartLinesDiscountsGenerateRun(input) {
if (!input.discount.discountClasses.includes(DiscountClass.Order)) {
return { operations: [] };
}
const subtotal = parseFloat(input.cart.cost.subtotalAmount.amount);
const tier = TIERS.find((t) => subtotal >= t.threshold);
if (!tier) {
return { operations: [] };
}
return {
operations: [
{
orderDiscountsAdd: {
candidates: [
{
message: `Sconto ${tier.percentage}%`,
targets: [{ orderSubtotal: { excludedCartLineIds: [] } }],
value: { percentage: { value: tier.percentage } },
},
],
selectionStrategy: OrderDiscountSelectionStrategy.First,
},
},
],
};
}
Il subtotale arriva come testo, per questo lo converto con parseFloat. L’operazione orderDiscountsAdd propone uno sconto “candidato” sul subtotale dell’ordine, e selectionStrategy dice a Shopify quale scegliere se ce n’è più di uno. Struttura e nomi sono quelli del riferimento della Discount Function API.
Dopo shopify app deploy la funzione è su Shopify, ma lo sconto va ancora creato: nel tutorial ufficiale si usa la mutation discountAutomaticAppCreate dell’Admin API, con il permesso write_discounts. In un progetto vero metto le soglie in un metafield, così il negozio può cambiarle senza toccare il codice: è anche l’approccio dell’esempio a scaglioni di Shopify.
Due avvertenze. Se vendi in più valute, il subtotale arriva nella valuta del carrello: le soglie vanno pensate per ogni mercato. E Shopify consiglia Rust per le funzioni che devono reggere carrelli molto grandi, perché il limite è sul numero di istruzioni eseguite.
Cosa serve per piano: Basic, Grow, Advanced, Plus
Grow è il nome attuale del piano che prima si chiamava “Shopify”. Ecco cosa si può fare, piano per piano (verificato a ottobre 2026; prezzi e dettagli dei piani sono nella guida ai costi di Shopify):
| Cosa | Basic, Grow, Advanced | Plus |
|---|---|---|
| Functions dentro app pubbliche dell’App Store | sì | sì |
| Functions dentro app personalizzate | no | sì |
| Editor del checkout (logo, colori, caratteri) | sì | sì |
| Stile avanzato con la Checkout Branding API | no | sì |
| Checkout UI extensions in informazioni, spedizione e pagamento | no | sì |
| Checkout UI extensions nelle pagine Grazie e Stato dell’ordine | sì | sì |
La conseguenza pratica: se non sei su Plus e ti serve una regola di sconto, spedizione o pagamento particolare, la strada è un’app pubblica che usa le Functions. Un’app personalizzata con Functions è riservata a Plus. Quando un’app su misura ha senso, ne parlo nella guida all’app Shopify personalizzata.
E prima di ogni sviluppo vale la pena chiedersi se lo sconto serve davvero: a volte una buona strategia commerciale funziona meglio di una regola complicata, come racconto nelle strategie per aumentare le vendite su Shopify.
Domande frequenti
Conclusione
Gli Scripts e checkout.liquid non tornano. Al loro posto c’è un sistema più rigido ma più sicuro: Functions per la logica, editor e UI extensions per l’aspetto, eventi cliente per il tracciamento. Il trucco è capire quale pezzo ti serve e cosa permette il tuo piano.
Se vuoi che rifaccia io le tue regole, lo faccio dentro un progetto di sviluppo Shopify o come intervento di assistenza sul negozio.
Usavi gli Scripts o vuoi una regola di sconto che Shopify non ti fa impostare? Spiegamela dalla pagina contatti: ti dico come si fa oggi. Ti rispondo io.




