> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Strategie per le spese di consegna

> Ottimizza le spese di consegna e i costi di servizio per massimizzare la conversione al checkout coprendo comunque i costi. Confronta opzioni fisse, a scaglioni, a distanza e gratuite.

export const DeliveryFeeCalculator = () => {
  const [deliveryCost, setDeliveryCost] = useState(5.00);
  const [serviceCharge, setServiceCharge] = useState(0.99);
  const [deliveryFee, setDeliveryFee] = useState(2.99);
  const [monthlyOrders, setMonthlyOrders] = useState(500);
  const [selectedStrategy, setSelectedStrategy] = useState(null);
  const strategies = [{
    id: 'subsidy',
    name: 'Service Charge Subsidy',
    description: 'Small service charge on all orders, lower delivery fee',
    serviceCharge: 0.99,
    deliveryFee: deliveryCost - 1.50,
    icon: '💰'
  }, {
    id: 'balanced',
    name: 'Balanced Approach',
    description: 'Even split between service charge and delivery fee',
    serviceCharge: deliveryCost * 0.25,
    deliveryFee: deliveryCost * 0.65,
    icon: '⚖️'
  }, {
    id: 'full-recovery',
    name: 'Full Cost Recovery',
    description: 'Pass full delivery cost to customer',
    serviceCharge: 0,
    deliveryFee: deliveryCost,
    icon: '📊'
  }, {
    id: 'aggressive',
    name: 'Conversion Focused',
    description: 'Minimise visible fees, maximise conversions',
    serviceCharge: 1.49,
    deliveryFee: Math.max(0, deliveryCost - 2.50),
    icon: '🚀'
  }];
  const calculateMetrics = (sc, df) => {
    const customerTotal = sc + df;
    const yourRevenue = customerTotal;
    const subsidy = Math.max(0, deliveryCost - yourRevenue);
    const profit = yourRevenue - deliveryCost;
    const monthlySubsidy = subsidy * monthlyOrders;
    const monthlyRevenue = yourRevenue * monthlyOrders;
    return {
      customerTotal: customerTotal.toFixed(2),
      subsidy: subsidy.toFixed(2),
      profit: profit.toFixed(2),
      monthlySubsidy: monthlySubsidy.toFixed(0),
      monthlyRevenue: monthlyRevenue.toFixed(0),
      coveragePercent: (yourRevenue / deliveryCost * 100).toFixed(0)
    };
  };
  const customMetrics = calculateMetrics(serviceCharge, deliveryFee);
  return <div className="not-prose space-y-6">
      {}
      <div className="p-4 rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800/50">
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white mb-4">Your Delivery Costs</h3>
        <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
          <div>
            <label className="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1">
              Average delivery cost (£)
            </label>
            <input type="number" step="0.50" min="0" value={deliveryCost} onChange={e => setDeliveryCost(parseFloat(e.target.value) || 0)} className="w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-600 bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white" />
          </div>
          <div>
            <label className="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1">
              Monthly delivery orders
            </label>
            <input type="number" step="50" min="0" value={monthlyOrders} onChange={e => setMonthlyOrders(parseInt(e.target.value) || 0)} className="w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-600 bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white" />
          </div>
        </div>
      </div>

      {}
      <div>
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white mb-4">Compare Strategies</h3>
        <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
          {strategies.map(strategy => {
    const metrics = calculateMetrics(strategy.serviceCharge, strategy.deliveryFee);
    const isSelected = selectedStrategy === strategy.id;
    return <div key={strategy.id} onClick={() => {
      setSelectedStrategy(strategy.id);
      setServiceCharge(strategy.serviceCharge);
      setDeliveryFee(strategy.deliveryFee);
    }} className={`p-4 rounded-xl border-2 cursor-pointer transition-all ${isSelected ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/20' : 'border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600'}`}>
                <div className="flex items-start gap-3">
                  <span className="text-2xl">{strategy.icon}</span>
                  <div className="flex-1">
                    <h4 className="font-semibold text-zinc-900 dark:text-white">{strategy.name}</h4>
                    <p className="text-sm text-zinc-600 dark:text-zinc-400 mt-1">{strategy.description}</p>
                    
                    <div className="mt-3 grid grid-cols-2 gap-2 text-sm">
                      <div className="bg-zinc-100 dark:bg-zinc-700/50 rounded px-2 py-1">
                        <span className="text-zinc-500 dark:text-zinc-400">Service: </span>
                        <span className="font-medium text-zinc-900 dark:text-white">£{strategy.serviceCharge.toFixed(2)}</span>
                      </div>
                      <div className="bg-zinc-100 dark:bg-zinc-700/50 rounded px-2 py-1">
                        <span className="text-zinc-500 dark:text-zinc-400">Delivery: </span>
                        <span className="font-medium text-zinc-900 dark:text-white">£{strategy.deliveryFee.toFixed(2)}</span>
                      </div>
                    </div>
                    
                    <div className="mt-2 flex items-center justify-between text-sm">
                      <span className="text-zinc-600 dark:text-zinc-400">Customer pays:</span>
                      <span className="font-bold text-lg text-zinc-900 dark:text-white">£{metrics.customerTotal}</span>
                    </div>
                    
                    <div className="mt-1 flex items-center justify-between text-sm">
                      <span className="text-zinc-600 dark:text-zinc-400">Cost coverage:</span>
                      <span className={`font-medium ${parseFloat(metrics.coveragePercent) >= 100 ? 'text-green-600 dark:text-green-400' : parseFloat(metrics.coveragePercent) >= 80 ? 'text-yellow-600 dark:text-yellow-400' : 'text-red-600 dark:text-red-400'}`}>
                        {metrics.coveragePercent}%
                      </span>
                    </div>
                  </div>
                </div>
              </div>;
  })}
        </div>
      </div>

      {}
      <div className="p-4 rounded-xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800">
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white mb-4">Custom Calculator</h3>
        
        <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-4">
          <div>
            <label className="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1">
              Service charge (£)
            </label>
            <input type="number" step="0.10" min="0" value={serviceCharge} onChange={e => {
    setServiceCharge(parseFloat(e.target.value) || 0);
    setSelectedStrategy(null);
  }} className="w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-600 bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white" />
          </div>
          <div>
            <label className="block text-sm font-medium text-zinc-700 dark:text-zinc-300 mb-1">
              Delivery fee (£)
            </label>
            <input type="number" step="0.10" min="0" value={deliveryFee} onChange={e => {
    setDeliveryFee(parseFloat(e.target.value) || 0);
    setSelectedStrategy(null);
  }} className="w-full px-3 py-2 rounded-lg border border-zinc-300 dark:border-zinc-600 bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white" />
          </div>
        </div>

        {}
        <div className="grid grid-cols-2 md:grid-cols-4 gap-3">
          <div className="bg-zinc-50 dark:bg-zinc-700/50 rounded-lg p-3 text-center">
            <div className="text-xs text-zinc-500 dark:text-zinc-400 uppercase tracking-wide">Customer Pays</div>
            <div className="text-2xl font-bold text-zinc-900 dark:text-white mt-1">£{customMetrics.customerTotal}</div>
          </div>
          <div className="bg-zinc-50 dark:bg-zinc-700/50 rounded-lg p-3 text-center">
            <div className="text-xs text-zinc-500 dark:text-zinc-400 uppercase tracking-wide">Your Subsidy</div>
            <div className={`text-2xl font-bold mt-1 ${parseFloat(customMetrics.subsidy) > 0 ? 'text-red-600 dark:text-red-400' : 'text-green-600 dark:text-green-400'}`}>
              £{customMetrics.subsidy}
            </div>
          </div>
          <div className="bg-zinc-50 dark:bg-zinc-700/50 rounded-lg p-3 text-center">
            <div className="text-xs text-zinc-500 dark:text-zinc-400 uppercase tracking-wide">Cost Coverage</div>
            <div className={`text-2xl font-bold mt-1 ${parseFloat(customMetrics.coveragePercent) >= 100 ? 'text-green-600 dark:text-green-400' : parseFloat(customMetrics.coveragePercent) >= 80 ? 'text-yellow-600 dark:text-yellow-400' : 'text-red-600 dark:text-red-400'}`}>
              {customMetrics.coveragePercent}%
            </div>
          </div>
          <div className="bg-zinc-50 dark:bg-zinc-700/50 rounded-lg p-3 text-center">
            <div className="text-xs text-zinc-500 dark:text-zinc-400 uppercase tracking-wide">Monthly Subsidy</div>
            <div className={`text-2xl font-bold mt-1 ${parseFloat(customMetrics.monthlySubsidy) > 0 ? 'text-red-600 dark:text-red-400' : 'text-green-600 dark:text-green-400'}`}>
              £{customMetrics.monthlySubsidy}
            </div>
          </div>
        </div>
      </div>

      {}
      <div className="p-4 rounded-xl bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800">
        <div className="flex items-start gap-3">
          <span className="text-xl">💡</span>
          <div>
            <h4 className="font-semibold text-blue-900 dark:text-blue-100">Recommendation</h4>
            <p className="text-sm text-blue-800 dark:text-blue-200 mt-1">
              {parseFloat(customMetrics.coveragePercent) >= 90 ? "Great balance! You're covering most of your costs while keeping fees reasonable." : parseFloat(customMetrics.coveragePercent) >= 70 ? "Good for conversions, but you're subsidising each delivery. Ensure higher order volume makes up for it." : "Heavy subsidy - consider increasing fees or focus on pickup orders to improve margins."}
            </p>
          </div>
        </div>
      </div>
    </div>;
};

Il modo in cui strutturi le spese di consegna e i costi di servizio impatta in modo significativo sia i tassi di conversione al checkout sia i tuoi margini di profitto. Questa guida esplora diverse strategie per trovare il giusto equilibrio per la tua attività.

## Comprendere le tue commissioni

storekit offre due tipi di commissione che puoi configurare:

| Tipo di commissione   | Ambito                                                | Dove impostarla             |
| --------------------- | ----------------------------------------------------- | --------------------------- |
| **Costo di servizio** | Importo fisso su tutti gli ordini                     | Impostazioni del negozio    |
| **Spesa di consegna** | Per zona di consegna, variabile in base alla distanza | Evasione > Zone di consegna |

Entrambe appaiono come voci separate al checkout, così i clienti vedono esattamente ciò che stanno pagando.

## La psicologia delle spese di consegna

Le spese di consegna elevate sono una delle principali cause di abbandono del carrello. Le ricerche mostrano che:

* I clienti spesso si aspettano una consegna "gratuita" o sovvenzionata dagli ordini online
* Un'unica grande commissione sembra più dolorosa di più piccoli addebiti
* I clienti accettano più facilmente piccoli costi di servizio rispetto a spese di consegna elevate

## Strategia 1: sovvenzione tramite costo di servizio (consigliata)

**Ideale per:** negozi che usano consegna di terze parti (Uber Direct, Stuart, ecc.) o autisti propri

Aggiungi un piccolo costo di servizio fisso a tutti gli ordini e riduci la spesa di consegna vista dai clienti.

### Come funziona

1. Calcola il costo medio di consegna (ad es. 4,50 £ per ordine)
2. Aggiungi un costo di servizio di 0,99 £ a tutti gli ordini
3. Imposta la spesa di consegna a 2,99 £ invece di 4,50 £

**Il cliente vede:**

* Costo di servizio: 0,99 £
* Consegna: 2,99 £
* **Totale commissioni: 3,98 £**

**Tu ricevi:** 3,98 £ a copertura del tuo costo di 4,50 £ (sovvenzioni 0,52 £ per ordine)

<Tip>
  Un costo di servizio di 99p sembra insignificante ai clienti ma si somma. Su 1.000 ordini/mese, sono 990 £ a copertura dei costi di consegna.
</Tip>

### Configurazione

1. Vai su **Impostazioni > Impostazioni del negozio**
2. Imposta il **Costo di servizio** all'importo desiderato (ad es. 99)
3. Facoltativamente imposta un'**Etichetta del costo di servizio** (ad es. "Costo dell'ordine" o "Imballaggio")
4. Vai su **Evasione > Zone di consegna**
5. Riduci la spesa di consegna di ogni zona dell'importo del costo di servizio

## Strategia 2: spese di consegna a scaglioni

**Ideale per:** negozi con ampio raggio di consegna dove i costi variano significativamente

Imposta spese di consegna diverse per zona basate sul costo reale, utilizzando un costo di servizio per mantenere molto conveniente la zona più vicina.

### Esempio di configurazione

| Zona   | Distanza   | Costo reale | Costo di servizio | Spesa di consegna | Totale cliente |
| ------ | ---------- | ----------- | ----------------- | ----------------- | -------------- |
| Zona 1 | 0-2 miglia | 3,50 £      | 0,99 £            | 1,99 £            | 2,98 £         |
| Zona 2 | 2-4 miglia | 5,00 £      | 0,99 £            | 3,49 £            | 4,48 £         |
| Zona 3 | 4-6 miglia | 7,00 £      | 0,99 £            | 4,99 £            | 5,98 £         |

Questo approccio:

* Mantiene la consegna locale molto competitiva
* Trasferisce i costi più alti ai clienti che ordinano da più lontano
* Mantiene un ricavo costante da costo di servizio

## Strategia 3: soglia di consegna gratuita

**Ideale per:** negozi che vogliono aumentare il valore medio dell'ordine

Combina un valore minimo dell'ordine con una consegna ridotta o gratuita.

### Esempio di configurazione

* Costo di servizio: 1,49 £ (tutti gli ordini)
* Spesa di consegna: 2,99 £ (ordini sotto i 25 £)
* Consegna gratuita: ordini oltre i 25 £

Configura questo utilizzando:

1. Imposta il costo di servizio in Impostazioni del negozio
2. Crea un [codice sconto](/docs/it/guides/discounts/discount-codes) con:
   * Tipo: Consegna gratuita
   * Ordine minimo: 25 £
   * Applicazione automatica: Abilitata

<Note>
  Anche con "consegna gratuita", mantieni il ricavo del costo di servizio per compensare i costi.
</Note>

## Strategia 4: recupero completo dei costi

**Ideale per:** ristoranti premium in cui i clienti si aspettano di pagare per un servizio di qualità

Trasferisci il costo di consegna completo ai clienti, ma presentalo in modo trasparente.

### Configurazione

* Costo di servizio: 0 £ (o piccolo importo per imballaggio)
* Spesa di consegna: costo completo per zona

Questo funziona quando:

* Il tuo cibo giustifica prezzi premium
* I clienti apprezzano la qualità più del prezzo
* Vuoi mantenere margini sani

<Warning>
  Questo approccio ha tipicamente tassi di conversione più bassi ma profitto per ordine più alto. Testa con attenzione.
</Warning>

## Strategia 5: incentivo al ritiro

**Ideale per:** negozi con alto traffico pedonale o che vogliono ridurre il volume di consegne

Rendi il ritiro significativamente più economico della consegna per incoraggiare il ritiro.

### Esempio

| Metodo   | Commissioni                          |
| -------- | ------------------------------------ |
| Ritiro   | 0 £                                  |
| Consegna | 3,99 £ + 0,99 £ di costo di servizio |

Questo funziona bene in combinazione con:

* Pre-ordini per ritiro
* Premi fedeltà per ordini di ritiro
* Messaggi in evidenza "Pronto in X minuti"

## Calcolare il tuo break-even

Per trovare la giusta struttura tariffaria, calcola i tuoi costi reali:

### Costi di consegna di terze parti

| Provider       | Costo tipico       | Note                   |
| -------------- | ------------------ | ---------------------- |
| Uber Direct    | 4-7 £ per consegna | Varia con la distanza  |
| Stuart         | 4-6 £ per consegna | Basato su zona         |
| Autisti propri | 2-5 £ per consegna | Carburante + stipendio |

### La tua formula di break-even

```
Break-even = Costo di consegna - Costo di servizio - Spesa di consegna
```

**Esempio:**

* Costo di consegna: 5,00 £
* Costo di servizio: 0,99 £
* Spesa di consegna: 2,99 £
* **Break-even: 1,02 £** (la tua sovvenzione per ordine)

<Tip>
  Una piccola sovvenzione per ordine è spesso conveniente se aumenta i tassi di conversione e il volume totale di ordini.
</Tip>

## Test A/B delle tue commissioni

Prima di impegnarti in una strategia, testa approcci diversi:

1. **Settimana 1-2:** commissioni attuali (tasso di conversione di riferimento)
2. **Settimana 3-4:** spesa di consegna inferiore + costo di servizio
3. **Settimana 5-6:** importo del costo di servizio diverso

Traccia:

* Tasso di conversione al checkout
* Valore medio dell'ordine
* Ricavo totale
* Profitto per ordine

## Errori comuni da evitare

| Errore                               | Perché è dannoso               | Approccio migliore                                             |
| ------------------------------------ | ------------------------------ | -------------------------------------------------------------- |
| Spesa di consegna molto alta         | Abbandono del carrello         | Suddividere in costo di servizio + spesa di consegna inferiore |
| Costo di servizio 0 £                | Lascia soldi sul tavolo        | Anche 0,49 £ si sommano                                        |
| Stessa commissione per tutte le zone | Perdite sulle consegne lontane | Zone di consegna a scaglioni                                   |
| Arrotondamento a sterline intere     | Sembra più costoso             | Usa prezzi X,99 £                                              |

## Punto di partenza consigliato

Per la maggior parte dei negozi, consigliamo di iniziare con:

| Impostazione                    | Valore              |
| ------------------------------- | ------------------- |
| Costo di servizio               | 0,99 £              |
| Etichetta del costo di servizio | "Costo dell'ordine" |
| Consegna Zona 1 (0-2 miglia)    | 1,99-2,49 £         |
| Consegna Zona 2 (2-4 miglia)    | 2,99-3,49 £         |
| Ordine minimo                   | 10-15 £             |

Questo bilancia la conversione con il recupero dei costi mantenendo flessibilità per adattarsi in base ai risultati.

## Confrontare le strategie

Usa questo calcolatore per confrontare diverse strutture tariffarie e vedere come impattano i tuoi costi e ciò che pagano i clienti.

<DeliveryFeeCalculator />

## Prossimi passi

* [Configura le zone di consegna](/docs/it/guides/fulfillment/delivery/delivery-zones) con le tue commissioni scelte
* [Crea una promozione di consegna gratuita](/docs/it/guides/discounts/promotions) per ordini di alto valore
* [Configura i valori minimi dell'ordine](/docs/it/guides/fulfillment/delivery/delivery-zones) per zona


## Related topics

- [Zone di consegna](/docs/it/guides/fulfillment/delivery/delivery-zones.md)
- [Sconti di consegna gratuita](/docs/it/guides/discounts/free-delivery.md)
- [Integrazione Uber Direct per la consegna con corriere white-label](/docs/it/guides/integrations/delivery/uber-direct.md)
- [Panoramica su Pay at Table](/docs/it/guides/pay-at-table/overview.md)
- [Limiti degli ordini](/docs/it/guides/orders/advanced/order-limits.md)
