# Recupero Carrelli Abbandonati Multistep: guida completa

> Presentazione Il modulo Recupero Carrelli Abbandonati Multistep (datafireflycartrecovery) rileva i carrelli abbandonati e ricontatta i clienti con una sequenza di email programmate. Ogni step ha il suo ritardo, il suo…

- Pagina: <https://www.datafirefly.com/it/documentation/datafireflycartrecovery/>
- Lingua: it
- Aggiornato il: 2026-10-01
- Altre lingue: [fr](https://www.datafirefly.com/documentation/datafireflycartrecovery/index.md), [en](https://www.datafirefly.com/en/documentation/datafireflycartrecovery/index.md), [es](https://www.datafirefly.com/es/documentation/datafireflycartrecovery/index.md), [de](https://www.datafirefly.com/de/documentation/datafireflycartrecovery/index.md), [pl](https://www.datafirefly.com/pl/documentation/datafireflycartrecovery/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafireflycartrecovery/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafireflycartrecovery/index.md)
- Indice: <https://www.datafirefly.com/it/documentation/llms.txt>

## Presentazione

Il modulo **Recupero Carrelli Abbandonati Multistep** (`datafireflycartrecovery`) rileva i carrelli abbandonati e ricontatta i clienti con una **sequenza di email programmate**. Ogni step ha il suo ritardo, il suo contenuto per lingua e un **buono sconto opzionale** il cui incentivo può crescere da uno step all'altro. Un link firmato consente al cliente di **recuperare il carrello con un clic, con il buono già applicato**, e la dashboard misura il fatturato realmente recuperato, step per step.

In media, quasi 7 carrelli su 10 vengono abbandonati prima del pagamento. Una sequenza ben calibrata (un semplice promemoria, poi uno sconto moderato, poi un'offerta più forte con spedizione gratuita) recupera parte di questo fatturato senza lavoro manuale.

## Compatibilità

- PrestaShop da 8.0 a 9.x
- PHP da 8.1 a 8.3
- Negozio singolo e multinegozio (campagne, carrelli e statistiche separati per negozio)
- Interfaccia: FR, EN, ES, DE, IT, PL
- Modelli email: FR, EN, ES, DE, IT, PL, NL. Ogni altra lingua installata riceve automaticamente una copia modificabile del modello inglese.
- Compatibile con il modulo GDPR ufficiale `psgdpr`
- Architettura PSR-4 senza Composer, nessuna dipendenza esterna

## Installazione

1. Nel back office, apri **Moduli > Gestione moduli**.
2. Clicca su **Carica un modulo** e seleziona `datafireflycartrecovery.zip`.
3. Clicca su **Configura** per impostare i parametri generali e l'aspetto delle email.
4. Configura l'attività pianificata (sezione seguente), poi inviati un'email di prova da uno step.

L'installazione crea le tabelle del modulo, registra i suoi hook, aggiunge la scheda **Recupero carrelli** e una **campagna predefinita in tre step**: **+1 h** (semplice promemoria), **+24 h** (buono -5 %) e **+72 h** (buono -10 % e spedizione gratuita).

### Aggiornamento da una versione precedente

Carica il nuovo ZIP: gli script di aggiornamento vengono eseguiti automaticamente.

- **Alla 1.3.5**: il buono di promemoria non è più cumulabile con un altro codice promozionale. Lo script registra due nuovi hook. Nessuna modifica al database.
- **Alla 1.3.4**: corregge una pagina bianca "If no employee is assigned in the context, cart ID must be provided to this method" quando un carrello viene salvato fuori dalla navigazione (webservice, connettore, webhook di pagamento, script), il pulsante "Invia ora" fuori dalla finestra di invio e uno sfasamento delle scadenze quando il server MySQL non usa il fuso orario del negozio. Nessuna modifica al database.
- **Alla 1.3.1**: corregge l'errore 500 dell'URL cron su PrestaShop 8. Nessuna modifica al database.
- **Alla 1.3.0**: aggiunge la segmentazione per gruppi e categorie e le impostazioni di aspetto. Le email passano a un'intestazione bianca con il logo del negozio, il blu originale resta il colore d'accento. Regola se necessario in **Aspetto delle email**.
- **Alla 1.2.0**: registra i nuovi hook (GDPR, intestazioni email, nuova lingua) e crea i modelli email mancanti per le lingue installate.

Se il negozio era alla 1.1.0, l'aggiornamento riqualifica i carrelli contati erroneamente come recuperati (ordini effettuati senza alcuna email di promemoria). Il fatturato recuperato mostrato scende: è il dato corretto. Prova l'aggiornamento su un ambiente di staging prima della produzione.

## Attività pianificata (cron)

Il modulo funziona con esecuzioni regolari attivate da un **URL protetto da token**. A ogni esecuzione:

1. **Scansione**: i carrelli inattivi oltre il ritardo di abbandono vengono qualificati (segmentazione, anti-ripetizione) e i loro step pianificati.
2. **Invio**: le email dovute partono nel rispetto di tutte le protezioni.
3. **Pulizia**: i buoni del modulo scaduti da 7 giorni e mai utilizzati vengono eliminati.

L'URL esatto, con il suo token, compare nella dashboard (pulsante **Configura**, con copia in un clic) e nella configurazione del modulo:

```
https://TUO-NEGOZIO/index.php?fc=module&module=datafireflycartrecovery&controller=cron&token=IL_TOKEN
```

Pianifica una chiamata circa ogni 10 minuti:

```
*/10 * * * * curl -s "https://TUO-NEGOZIO/index.php?fc=module&module=datafireflycartrecovery&controller=cron&token=IL_TOKEN" >/dev/null 2>&1
```

Un blocco garantisce che venga eseguita una sola elaborazione alla volta: due chiamate simultanee non inviano mai due volte la stessa email.

### Stato dell'elaborazione

In alto nella dashboard compare lo stato dell'attività pianificata: **verde** se l'ultima esecuzione risale a meno di 30 minuti, **arancione** fino a 3 ore, **rosso** oltre o se non è mai stata eseguita. Il pulsante **Esegui ora** avvia subito un'elaborazione e mostra il risultato: carrelli rilevati, email inviate, email rinviate fuori dalla finestra di invio, errori.

### Senza accesso alle attività cron

Attiva **Esecuzione senza cron del server** nella configurazione del modulo. L'elaborazione viene allora attivata dalle visite al negozio, al massimo ogni 10 minuti, dopo l'invio della pagina al visitatore: la navigazione non viene rallentata.

Questa opzione dipende dal traffico: un negozio senza visite di notte non invierà nulla fino alla prima visita del mattino. Un vero cron resta più affidabile. Non diffondere il token dell'URL cron.

## Impostazioni generali

- **Ritardo di abbandono** (60 min predefiniti): inattività oltre la quale un carrello è considerato abbandonato.
- **Email per esecuzione** (50 predefinite): numero di email elaborate a ogni esecuzione.
- **Email massime per carrello** (3 predefinite): limite su tutti gli step, 0 per nessun limite.
- **Durata massima** (30 giorni predefiniti): oltre, un carrello non convertito passa allo stato Perso.
- **Accesso automatico tramite il link** (attivo per impostazione predefinita): ricollega il cliente registrato che clicca sul link di ripristino, per 7 giorni dopo l'invio dell'email.
- **Email e nome del mittente**: se vuoti, vengono usati quelli del negozio.
- **Esecuzione senza cron del server**: vedi la sezione precedente.

## Aspetto delle email

Nella configurazione del modulo, il blocco **Aspetto delle email** allinea i promemoria alla tua identità visiva:

- **Logo del negozio**: usa il logo email definito in **Aspetto > Tema e logo**, altrimenti il logo principale. Le dimensioni vengono calcolate per una visualizzazione corretta in Outlook. Senza logo compare il nome del negozio.
- **Colore d'accento**: pulsante, link, linea sotto l'intestazione e blocco del buono.
- **Sfondo dell'intestazione**: bianco consigliato se il logo è scuro.

Il testo su questi colori passa automaticamente al bianco o allo scuro in base al contrasto: un pulsante giallo riceve testo scuro, un pulsante blu notte testo bianco. Il risultato è visibile nell'anteprima di ogni step.

## Campagne e segmentazione

Una campagna raggruppa una sequenza di step e le sue regole. La schermata della campagna mostra le impostazioni e, sotto, l'elenco dei suoi step.

- **Importo minimo del carrello**: 0 per nessun minimo.
- **Finestra di invio**: fascia oraria fuori dalla quale le email dovute vengono rinviate (la finestra può superare la mezzanotte).
- **Anti-ripetizione** (in giorni): un destinatario che ha ricevuto un promemoria per un altro carrello in questo periodo non viene sollecitato.
- **Includere gli ospiti**: include o meno i clienti ospiti.
- **Escludere gli account B2B**: esclude i clienti con azienda, SIRET o partita IVA indicati.
- **Gruppi clienti esclusi**: nessuna email ai clienti che appartengono a uno di questi gruppi (rivenditori, personale).
- **Categorie escluse**: un carrello con almeno un prodotto di queste categorie non viene sollecitato (carte regalo, prodotti a basso margine, prodotti su prescrizione). Un campo di ricerca filtra l'albero.

## Step della sequenza

- **Posizione**: ordine dello step.
- **Ritardo dopo l'abbandono** (in minuti): 60 = 1 h, 1440 = 24 h, 4320 = 72 h.
- **Oggetto, testo del pulsante e corpo per lingua**: il corpo si scrive in un editor visuale. Se vuoto, il testo del pulsante usa un'etichetta predefinita tradotta.
- **Step attivo**: sospende uno step senza eliminarlo.

### Variabili

Utilizzabili nell'oggetto, nel testo del pulsante e nel corpo. Un clic su una variabile la copia.

- `{firstname}`, `{lastname}`: nome e cognome del cliente.
- `{shop_name}`: nome del negozio.
- `{cart_total}`: totale del carrello nella sua valuta.
- `{voucher_code}`, `{voucher_value}`, `{voucher_expiry}`: codice, valore (per esempio 10 % o 5,00 €) e data di scadenza del buono. Vuote se lo step non genera un buono.

Il corpo viene inserito in un modello responsive che aggiunge l'intestazione, il riepilogo del carrello (foto, combinazioni, totale), il blocco del buono, il pulsante e il piè di pagina con il link di disiscrizione. Viene generata una versione testuale pulita per i client che non mostrano l'HTML.

### Anteprima ed email di prova

Una volta salvato lo step:

- Il pulsante **Anteprima** di ogni scheda lingua (o l'icona occhio nell'elenco degli step) apre la resa finale, con commutatore **desktop / mobile**.
- Il blocco **Invia un'email di prova** invia lo step all'indirizzo e nella lingua che scegli. L'oggetto è preceduto da [TEST].

Anteprima e prova usano la versione salvata dello step e il carrello reale più recente del negozio, con il codice fittizio DFCR-TEST42. Nessun buono viene creato, nessuna statistica viene modificata e il link del pulsante porta alla pagina del carrello senza ripristinare il carrello di un cliente.

## Buoni sconto

Ogni step può generare un buono al momento dell'invio:

- **Tipo**: percentuale o importo fisso (IVA inclusa o esclusa).
- **Valore** e **importo minimo di applicazione**.
- **Validità** in giorni.
- **Spedizione gratuita**, da sola o insieme allo sconto.

- Il buono è **monouso** e ha validità limitata. È **nominativo per i clienti registrati**. Per gli ospiti non è legato all'account, perché PrestaShop crea un nuovo account ospite a ogni ordine: il codice resta segreto e utilizzabile una sola volta.
- **Nessun cumulo con un altro codice promozionale**: se il cliente inserisce un altro codice mentre nel carrello c'è un buono di promemoria, o viceversa, il codice viene rifiutato con il messaggio "Questo codice promozionale non è cumulabile con un altro codice promozionale." e il codice già presente viene mantenuto. Le regole automatiche senza codice (per esempio la spedizione gratuita oltre X) restano cumulabili.
- **Progressione senza cumulo**: quando un nuovo step genera un buono, il buono precedente non utilizzato dello stesso carrello viene disattivato.
- **Pulizia**: i buoni scaduti da 7 giorni e mai utilizzati vengono eliminati automaticamente.

Buona pratica: nessuno sconto al primo step, poi una progressione graduale (-5 %, poi -10 % con spedizione gratuita). La dashboard indica il fatturato attribuito a ogni step: vedi se lo sconto più forte rende più di quanto costa.

## Ripristino del carrello con un clic

Ogni email contiene un **link firmato** (HMAC). Al clic:

- il carrello viene ricostruito e il cliente arriva sulla sua pagina carrello;
- il **buono dell'email cliccata viene applicato** automaticamente (un eventuale buono di promemoria precedente viene rimosso), salvo se il carrello contiene già un altro codice promozionale: in quel caso viene mantenuto quello del cliente;
- il cliente registrato viene ricollegato se l'opzione è attiva e l'email ha meno di 7 giorni; l'indirizzo scelto nel carrello viene mantenuto;
- il clic viene conteggiato.

Qualsiasi modifica ai parametri del link lo rende non valido. Un carrello già ordinato reindirizza alla home page. Se nel browser è connesso un altro cliente, la sua sessione e il suo carrello non vengono modificati e il carrello dell'email non viene ripristinato.

## Svolgimento di una sequenza

- **Ripresa**: se il cliente torna a modificare il carrello, i promemoria in attesa vengono sospesi. Se riparte, la sequenza riprende dallo step successivo senza rinviare uno step già ricevuto.
- **Carrelli vecchi**: un carrello inattivo da più di 7 giorni non viene mai sollecitato. Dopo un cron fermo a lungo, la prima esecuzione non scrive quindi a clienti andati via da settimane. Se il cliente torna al carrello, torna idoneo.
- **Prodotti non disponibili**: se nessun prodotto del carrello è più ordinabile (esaurito senza ordini consentiti, prodotto disattivato), lo step viene saltato. Gli step successivi restano pianificati in caso di riassortimento.
- **Errore di invio**: in caso di errore SMTP, l'email viene ritentata 15 e poi 30 minuti dopo. Dopo 3 errori passa allo stato fallito con il messaggio di errore e il buono creato viene eliminato.
- **Ordine**: alla conferma di un ordine, i promemoria rimanenti vengono annullati.

## Monitoraggio e attribuzione

- **Aperture**: pixel invisibile in ogni email.
- **Clic**: clic sul pulsante o sul link di ripristino.
- **Recupero**: un carrello conta come **Recuperato** solo se almeno un'email di promemoria è stata inviata prima dell'ordine. Un ordine effettuato prima di qualsiasi email riceve lo stato **Ordinato senza promemoria** e non rientra nel fatturato recuperato.
- **Attribuzione per step**: ogni carrello recuperato viene attribuito all'ultima email inviata prima dell'acquisto.

## Dashboard

- **Periodo**: 7, 30 o 90 giorni.
- **Indicatori**: carrelli rilevati e valore abbandonato, carrelli recuperati e tasso di recupero, email inviate, tassi di apertura e clic, email in attesa di invio, fatturato recuperato.
- **Grafico** dei rilevamenti e dei recuperi al giorno.
- **Prestazioni per step** della campagna attiva: inviate, aperte, cliccate, tasso di clic, carrelli recuperati e fatturato attribuito.

## Carrelli monitorati

La scheda **Carrelli** elenca i carrelli monitorati con filtro per stato, ricerca (email, nome o numero di carrello), paginazione ed **esportazione CSV** dei risultati filtrati. Ogni riga mostra il cliente, l'importo, lo stato, il numero di email inviate e pianificate, un link al carrello e, se presente, all'ordine nel back office. L'icona di esclusione ferma ogni promemoria per un carrello.

| Stato | Significato |
| --- | --- |
| Attivo | Carrello in corso, non ancora abbandonato |
| Promemoria in corso | Sequenza pianificata o in invio |
| Recuperato | Ordine effettuato dopo almeno un'email di promemoria |
| Ordinato senza promemoria | Ordine effettuato prima di qualsiasi email, non attribuito |
| Perso | Sequenza terminata o periodo di monitoraggio superato |
| Escluso | Filtrato dalla campagna (importo, ospite, B2B, gruppo, categoria, anti-ripetizione) o escluso manualmente |
| Disiscritto | Il cliente non desidera più ricevere promemoria |

## Registro invii

La scheda **Registro invii** dettaglia ogni email: data prevista e data di invio, destinatario, step, stato (pianificato, inviato, ignorato, annullato, fallito), apertura, clic, codice sconto e motivo (cliente tornato al carrello, limite raggiunto, prodotti non disponibili, errore SMTP...). Per un'email pianificata puoi **inviarla ora** o **annullarla**. "Invia ora" invia subito l'email, anche fuori dalla finestra di invio, e mostra il risultato o il motivo del mancato invio.

## GDPR e recapito

- Ogni email contiene un **link di disiscrizione**. L'indirizzo entra in una **lista di esclusione** permanente e gli invii in attesa vengono annullati.
- Le intestazioni `List-Unsubscribe` e `List-Unsubscribe-Post` consentono la disiscrizione con un clic da Gmail, Yahoo e dagli altri servizi che la richiedono per le email di marketing.
- Vengono monitorati solo i carrelli collegati a un indirizzo email (cliente o ospite che ha confermato il passaggio dati personali): nessun indirizzo viene acquisito prima che il cliente lo invii.
- Con il modulo ufficiale `psgdpr`, il modulo compare nell'elenco dei moduli che trattano dati: l'esportazione e la cancellazione dei dati di un cliente includono i suoi carrelli monitorati e le email di promemoria.
- L'eliminazione di un account cliente cancella i suoi carrelli monitorati, la coda di invio e gli eventi. L'eventuale opposizione resta nella lista di esclusione.
- La disinstallazione elimina tabelle, configurazione e scheda di amministrazione.

## FAQ e risoluzione dei problemi

### Non parte nessun promemoria

Controlla lo stato dell'elaborazione in alto nella dashboard. Se è rosso, l'attività cron non richiama l'URL (o non con il token corretto): usa **Esegui ora** per verificare, poi correggi l'attività o attiva l'esecuzione senza cron del server. Controlla poi che la campagna e almeno uno step siano attivi, che l'ora sia nella finestra di invio, e consulta il **Registro invii**: lì trovi il motivo di ogni email ignorata o fallita.

### Il cliente non riesce ad aggiungere il suo codice promozionale

È voluto: il buono di promemoria non è cumulabile con nessun altro codice promozionale. Il cliente deve prima rimuovere il codice presente nel carrello, poi inserire l'altro. Le regole automatiche senza codice non sono interessate.

### Pagina bianca "If no employee is assigned in the context, cart ID must be provided to this method"

Questo messaggio del core di PrestaShop poteva comparire con le versioni da 1.0.0 a 1.3.1 quando un carrello veniva salvato fuori dalla navigazione (webservice, connettore, webhook di pagamento, script). Aggiorna alla 1.3.4 o successiva.

### L'URL cron restituisce un errore 500

Su PrestaShop 8, le versioni da 1.0.0 a 1.3.0 causavano un errore 500 sull'URL cron. Aggiorna alla 1.3.1 o successiva e verifica la versione mostrata in Gestione moduli. Se l'errore persiste, attiva la modalità debug di PrestaShop o consulta i log PHP del server per leggere il messaggio esatto.

### Un carrello non compare nell'elenco

Un carrello viene monitorato solo quando è collegato a un indirizzo email: cliente connesso o ospite che ha confermato il passaggio dati personali. Diventa abbandonato dopo il ritardo di abbandono (60 minuti predefiniti) e alla successiva esecuzione del cron.

### Il mio logo non compare o è poco leggibile

Verifica che l'opzione Logo del negozio sia attiva e che un logo sia definito in Aspetto > Tema e logo. Se il logo è scuro, scegli uno sfondo chiaro per l'intestazione. Alcuni client di posta bloccano le immagini per impostazione predefinita: in quel caso compare il nome del negozio.

### L'email di prova non arriva

Verifica che lo step abbia un oggetto nella lingua scelta e che il negozio possa inviare email (**Parametri avanzati > Email**, pulsante di prova di PrestaShop). Controlla anche la cartella spam.

### Un cliente può ricevere troppe email?

No: il limite di email per carrello, l'anti-ripetizione per destinatario e la finestra di invio controllano la frequenza. Un ordine o una disiscrizione annullano i promemoria rimanenti.

### Il modulo è compatibile con il multinegozio?

Sì. Campagne, carrelli monitorati, impostazioni di aspetto e statistiche sono separati per negozio.

### È compatibile con PrestaShop 9?

Sì. Il modulo è compatibile con PrestaShop 8 e 9 e segue le modifiche API di PS9 (formattazione dei prezzi tramite l'API Locale, controller, invio delle email).
