---
title: "Shopify Functions e checkout: sconti, spedizioni e pagamenti su misura dopo gli Scripts"
seo_title: "Shopify Functions e checkout: cosa usare dopo gli Scripts"
description: "Scripts e checkout.liquid non ci sono più: come usare Shopify Functions ed estensioni del checkout per sconti, spedizioni e pagamenti su misura."
url: "https://salvatorepitone.it/shopify-functions-checkout-personalizzato/"
type: "BlogPosting"
language: "it-IT"
published: "2026-10-26T17:43:56+01:00"
updated: "2026-10-26T19:03:56+01:00"
author: "Salvatore Pitone"
categories:
  - "Shopify"
tags:
  - "Shopify"
  - "shopify functions"
image: "https://salvatorepitone.it/wp-content/uploads/2026/10/shopify-functions-checkout-personalizzato-copertina.webp"
---

# Shopify Functions e checkout: sconti, spedizioni e pagamenti su misura dopo gli Scripts

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](https://shopify.dev/changelog/shopify-scripts-will-be-deprecated-on-june-30-2026) e nella [documentazione su checkout.liquid](https://shopify.dev/docs/storefronts/themes/architecture/layouts/checkout-liquid).

### Le date

- **13 agosto 2024**: `checkout.liquid` smette di funzionare per le pagine informazioni, spedizione e pagamento;
- **28 agosto 2025**: `checkout.liquid` e 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](https://shopify.dev/docs/api/functions/latest):

### 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.

![Confronto tra Shopify Scripts e checkout.liquid e i sostituti di oggi: Functions ed estensioni del checkout](https://salvatorepitone.it/wp-content/uploads/2026/10/shopify-functions-checkout-personalizzato-prima-oggi.webp)

_Cosa sostituisce gli Scripts e checkout.liquid._

## 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](https://help.shopify.com/en/manual/checkout-settings/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](https://salvatorepitone.it/pulsante-di-recesso-shopify/), 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-scaglioni
```

La 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,
},
},
],
};
}
```

![Codice JavaScript di esempio di una Shopify Function per uno sconto a scaglioni sul subtotale del carrello](https://salvatorepitone.it/wp-content/uploads/2026/10/shopify-functions-checkout-personalizzato-function.webp)

_Il cuore della funzione: trova lo scaglione e restituisce lo sconto._

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](https://shopify.dev/docs/api/functions/latest/discount).

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](https://salvatorepitone.it/quanto-costa-shopify-la-guida-completa-ai-piani-costi-e-commissioni/)):

| 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](https://salvatorepitone.it/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](https://salvatorepitone.it/strategie-di-marketing-per-aumentare-le-vendite-su-shopify/).

## Domande frequenti

### Le Shopify Functions funzionano senza Shopify Plus?

Sì, ma solo dentro app pubbliche distribuite sull’App Store: su qualsiasi piano puoi installare un’app che usa le Functions per sconti, spedizioni o pagamenti. Le app personalizzate che contengono Functions, invece, sono riservate ai negozi Plus. Alcune API hanno regole proprie, per esempio quella per l’instradamento degli ordini, disponibile solo su richiesta per Plus.

### Devo riscrivere i miei Scripts?

Sì: dal 30 giugno 2026 gli Shopify Scripts non vengono più eseguiti, e il loro codice Ruby non si può riusare. Prima di riscrivere, però, controlla se le impostazioni standard degli sconti o un’app pubblica coprono già quella regola. Quello che resta si rifà con le Functions: sconti, spedizioni e pagamenti hanno ognuno la sua API.

### Posso aggiungere un campo al checkout?

Sul piano Plus sì, con una Checkout UI extension nelle pagine informazioni, spedizione o pagamento; il valore si salva negli attributi o nei metafield del carrello. Sugli altri piani non si possono aggiungere campi in quelle pagine. Le alternative sono un campo nella pagina del carrello, gestito dal tema, o un blocco nelle pagine Grazie e Stato dell’ordine.

### Le Functions rallentano il checkout?

Sono pensate per non farlo: girano sui server di Shopify, con limiti stretti su memoria, dati in ingresso e numero di istruzioni. Shopify però chiede di scriverle con attenzione alle prestazioni, perché una funzione pesante può fallire con carrelli grandi e creare problemi al cliente. Per questo tengo leggera la query di input e uso Rust quando serve.

## 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](https://salvatorepitone.it/realizzazione-e-migrazione-shopify/) o come intervento di [assistenza sul negozio](https://salvatorepitone.it/assistenza-e-manutenzione-negozio-online/).

Usavi gli Scripts o vuoi una regola di sconto che Shopify non ti fa impostare? Spiegamela dalla [**pagina contatti**](https://salvatorepitone.it/contatti/): ti dico come si fa oggi. Ti rispondo io.
