# Meerstaps Herstel van Verlaten Winkelwagens: volledige handleiding

> Overzicht De module Meerstaps Herstel van Verlaten Winkelwagens (datafireflycartrecovery) herkent verlaten winkelwagens en benadert uw klanten met een reeks geplande e-mails. Elke stap heeft een eigen vertraging, inhoud per taal…

- Pagina: <https://www.datafirefly.com/nl/documentation/datafireflycartrecovery/>
- Taal: nl
- Bijgewerkt op: 2026-10-14
- Andere talen: [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), [it](https://www.datafirefly.com/it/documentation/datafireflycartrecovery/index.md), [pl](https://www.datafirefly.com/pl/documentation/datafireflycartrecovery/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafireflycartrecovery/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

De module **Meerstaps Herstel van Verlaten Winkelwagens** (`datafireflycartrecovery`) herkent verlaten winkelwagens en benadert uw klanten met een **reeks geplande e-mails**. Elke stap heeft een eigen vertraging, inhoud per taal en een **optionele kortingscode** waarvan de prikkel per stap kan toenemen. Via een ondertekende link haalt de klant **zijn winkelwagen met één klik terug, met de korting al toegepast**, en het dashboard meet de werkelijk teruggewonnen omzet, stap voor stap.

Gemiddeld worden bijna 7 van de 10 winkelwagens verlaten vóór de betaling. Een goed afgestelde reeks (een eenvoudige herinnering, dan een bescheiden korting en daarna een sterker aanbod met gratis verzending) haalt een deel van die omzet terug zonder handwerk.

## Compatibiliteit

- PrestaShop 8.0 tot 9.x
- PHP 8.1 tot 8.3
- Eén winkel en multistore (campagnes, winkelwagens en statistieken per winkel gescheiden)
- Interface: FR, EN, ES, DE, IT, PL
- E-mailsjablonen en standaardcampagne: FR, EN, ES, DE, IT, PL, NL, PT. Elke andere geïnstalleerde taal krijgt automatisch een bewerkbare kopie van het sjabloon in de standaardtaal van de winkel (of anders het Engelse).
- Compatibel met de officiële AVG-module `psgdpr`
- PSR-4-architectuur zonder Composer, geen externe afhankelijkheden

## Installatie

1. Open in de back-office **Modules > Modulebeheer**.
2. Klik op **Een module uploaden** en kies `datafireflycartrecovery.zip`.
3. Klik op **Configureren** om de algemene instellingen en het uiterlijk van de e-mails te bepalen.
4. Stel de geplande taak in (volgende sectie) en stuur uzelf daarna een test-e-mail vanuit een stap.

De installatie maakt de tabellen van de module aan, registreert de hooks, voegt het tabblad **Winkelwagenherstel** toe en een **standaardcampagne in drie stappen**: **+1 u** (eenvoudige herinnering), **+24 u** (kortingscode -5 %) en **+72 u** (kortingscode -10 % en gratis verzending).

### Bijwerken vanaf een eerdere versie

Upload de nieuwe ZIP: de updatescripts worden automatisch uitgevoerd.

- **Naar 1.3.11**: volledige audit van de module. In multistore verwerkt elke winkel alleen nog zijn eigen verzendingen (de cron van een winkel verstuurde ook die van de andere winkels, met zijn eigen links en logo). Een klant die terugkwam en weer vertrok, krijgt niet meer twee keer dezelfde stap. Na een cronstoring wordt alleen de verst gevorderde stap verzonden. Kortingscodes van gasten worden niet meer aan andere bezoekers in de winkelwagen aangeboden. De afmeldlink toont een bevestigingspagina (linkscanners van zakelijke mailomgevingen melden klanten niet meer af). De rechten van medewerkers worden bij elke actie in de back-office gecontroleerd. Het script voegt drie kolommen toe, houdt één actieve campagne per winkel over (de campagne die de scan al gebruikte), herstelt een afzendernaam die met een backslash was opgeslagen en zet het bedrag van geleegde winkelwagens op 0. Links in e-mails die vóór de update zijn verzonden, herstellen de winkelwagen nog steeds, maar zonder automatisch aanmelden.
- **Naar 1.3.10**: een winkelwagen die door de klant is geleegd, stopt zijn reeks (geplande e-mails geannuleerd, reden "Winkelwagen geleegd door de klant") en toont 0 artikelen en een bedrag van 0. Geen wijziging aan de database.
- **Naar 1.3.9**: de vertraging van de stappen wordt getoond in de taal van de medewerker en zonder decimalen ("1 h 30 min", "1 d 12 h"). Voorheen stond er altijd de Franse afkorting "j". Geen wijziging aan de database.
- **Naar 1.3.8**: verhelpt op PrestaShop 8 de knoppen in de paneelkop (Instellingen, Uitschakelen, Verwijderen, Stap toevoegen), die over elkaar heen lagen. Geen wijziging aan de database.
- **Naar 1.3.7**: een winkelwagen die in PrestaShop is verwijderd, krijgt geen herinneringsmails meer. Het script registreert een nieuwe hook. Geplande e-mails voor winkelwagens die al verwijderd waren, worden bij de eerste cronrun geannuleerd. Geen wijziging aan de database.
- **Naar 1.3.6**: het voorbeeld van de e-mails toont het sjabloon dat in het thema is aangepast (zie **Het e-mailsjabloon aanpassen**). Geen wijziging aan de database.
- **Naar 1.3.5**: de herinneringscode kan niet meer worden gecombineerd met een andere kortingscode. Het script registreert twee nieuwe hooks. Geen wijziging aan de database.
- **Naar 1.3.4**: verhelpt een lege pagina "If no employee is assigned in the context, cart ID must be provided to this method" wanneer een winkelwagen buiten een bezoek wordt opgeslagen (webservice, connector, betaalwebhook, script), de knop "Nu verzenden" buiten het verzendvenster en verschoven vervaldatums wanneer de MySQL-server niet de tijdzone van de winkel gebruikt. Geen wijziging aan de database.
- **Naar 1.3.1**: verhelpt de fout 500 van de cron-URL op PrestaShop 8. Geen wijziging aan de database.
- **Naar 1.3.0**: voegt targeting op groepen en categorieën en de instellingen voor het uiterlijk toe. De e-mails krijgen een witte koptekst met het winkellogo, het oorspronkelijke blauw blijft de accentkleur. Pas zo nodig aan onder **Uiterlijk van de e-mails**.
- **Naar 1.2.0**: registreert de nieuwe hooks (AVG, e-mailheaders, nieuwe taal) en maakt ontbrekende e-mailsjablonen aan voor de geïnstalleerde talen.

Stond uw winkel op 1.1.0, dan deelt de update winkelwagens die ten onrechte als teruggewonnen werden geteld opnieuw in (bestellingen zonder enige herinneringsmail). De getoonde teruggewonnen omzet daalt: dat is het juiste cijfer. Test de update eerst op een testomgeving.

## Geplande taak (cron)

De module werkt met regelmatige runs die worden gestart via een **met token beveiligde URL**. Bij elke run:

1. **Scan**: winkelwagens die langer dan de verlatingsvertraging inactief zijn, worden beoordeeld (targeting, herhalingsblokkering) en hun stappen ingepland.
2. **Verzending**: de verschuldigde e-mails worden verzonden met inachtneming van alle beveiligingen.
3. **Opschonen**: kortingscodes van de module die al 7 dagen verlopen zijn en nooit gebruikt werden, worden verwijderd.

De exacte URL met token staat op het dashboard (knop **Instellen**, met kopiëren in één klik) en in de moduleconfiguratie:

```
https://UW-WINKEL/index.php?fc=module&module=datafireflycartrecovery&controller=cron&token=HET_TOKEN
```

Plan ongeveer elke 10 minuten een aanroep:

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

Een vergrendeling zorgt ervoor dat er steeds maar één run tegelijk loopt: twee gelijktijdige aanroepen versturen nooit twee keer dezelfde e-mail.

### Status van de verwerking

Boven in het dashboard staat de status van de geplande taak: **groen** als de laatste automatische run (cron of werking zonder cron) minder dan 30 minuten geleden was, **oranje** tot 3 uur, **rood** daarboven of als de taak nooit gelopen heeft. De knop **Nu uitvoeren** start direct een run en toont het resultaat: herkende winkelwagens, verzonden e-mails, e-mails uitgesteld buiten het verzendvenster, fouten. De indicator wordt daardoor niet groen: alleen een automatische run bewijst dat de cron werkt.

### Zonder toegang tot crontaken

Schakel **Werking zonder servercron** in de moduleconfiguratie in. De verwerking wordt dan gestart door bezoeken aan de winkel, hoogstens elke 10 minuten, nadat de pagina naar de bezoeker is verzonden: het surfen wordt niet trager. Deze optie vereist PHP-FPM of LiteSpeed. Op een server met mod_php blijft ze inactief en verschijnt bij het opslaan een waarschuwing: maak dan een echte crontaak aan.

Deze optie hangt af van het verkeer: een winkel zonder bezoek 's nachts verstuurt niets tot het eerste bezoek 's ochtends. Een echte cron blijft betrouwbaarder. Deel het token van de cron-URL niet.

## Algemene instellingen

- **Verlatingsvertraging** (standaard 60 min): inactiviteit waarna een winkelwagen als verlaten geldt.
- **E-mails per run** (standaard 50): aantal e-mails dat per run wordt verwerkt.
- **Max. e-mails per winkelwagen** (standaard 3): limiet over alle stappen, 0 voor geen limiet.
- **Maximale levensduur** (standaard 30 dagen): daarna krijgt een niet-geconverteerde winkelwagen de status Verloren.
- **Automatisch aanmelden via de link** (standaard aan): meldt de geregistreerde klant die op de herstellink klikt opnieuw aan, tot 7 dagen na verzending van de e-mail, op voorwaarde dat het e-mailadres van zijn account nog steeds het adres is waarnaar de herinnering is verzonden.
- **E-mail en naam van de afzender**: leeg worden die van de winkel gebruikt. De naam mag de tekens < > ; = # { } niet bevatten, die PrestaShop bij verzending weigert.
- **Werking zonder servercron**: zie de vorige sectie.

## Uiterlijk van de e-mails

In de moduleconfiguratie stemt het blok **Uiterlijk van de e-mails** de herinneringen af op uw huisstijl:

- **Winkellogo**: gebruikt het e-maillogo ingesteld onder **Uiterlijk > Thema en logo**, anders het hoofdlogo. De afmetingen worden berekend voor een correcte weergave in Outlook. Zonder logo wordt de winkelnaam getoond.
- **Accentkleur**: knop, links, lijn onder de koptekst en kortingsblok.
- **Achtergrond van de koptekst**: wit aanbevolen als uw logo donker is.

Tekst op deze kleuren wordt automatisch wit of donker, afhankelijk van het contrast: een gele knop krijgt donkere tekst, een marineblauwe knop witte tekst. Het resultaat ziet u in het voorbeeld van elke stap.

## Het e-mailsjabloon aanpassen

De tekst van elke stap (onderwerp, inhoud, knop) stelt u in de back-office in. Wilt u de opmaak zelf wijzigen (structuur, lettertypen, voettekst), kopieer dan het sjabloon van de module naar uw thema. PrestaShop gebruikt het dan in plaats van dat van de module, bij verzending en ook in het voorbeeld en de test-e-mail.

```
themes/UW-THEMA/modules/datafireflycartrecovery/mails/nl/df_cart_recovery.html
themes/UW-THEMA/modules/datafireflycartrecovery/mails/nl/df_cart_recovery.txt
```

Voor elke taal zoekt PrestaShop in het actieve thema, daarna in het bovenliggende thema en ten slotte in de module. Het probeert de taal van de klant, dan de standaardtaal van de winkel en daarna Engels.

Kopieer **beide bestanden**, `.html` en `.txt`. Met het e-mailtype "beide" (standaard in PrestaShop) gaat PrestaShop door naar de volgende taal als de themamap alleen de `.html` bevat: de klant krijgt dan het Engelse sjabloon van de module.

Behoud de variabelen die bij verzending worden vervangen:

- **HTML**: `{body_html}`, `{cart_table}`, `{voucher_block}`, `{restore_url}`, `{unsubscribe_url}`, `{cta_label}`, `{shop_name}`, `{tracking_pixel}`, `{header_brand}`, `{header_bg}`, `{header_text}`, `{accent_color}`, `{accent_text}`.
- **Tekst**: `{body_text}`, `{cart_text}`, `{voucher_text}`, `{restore_url}`, `{unsubscribe_url}`, `{shop_name}`.

Zonder `{tracking_pixel}` worden opens niet meer geteld. Zonder `{unsubscribe_url}` verdwijnt de afmeldlink, wat een nalevingsprobleem is. Vergelijk na een module-update uw kopie met het sjabloon van de module om een eventuele nieuwe variabele over te nemen.

## Campagnes en targeting

Een campagne groepeert een reeks stappen en de bijbehorende regels. Het campagnescherm toont de instellingen en daaronder de lijst met stappen.

**Eén actieve campagne per winkel.** Een campagne activeren schakelt de andere uit, en hun lopende reeksen gaan over naar de nieuwe: ze gaan verder bij de stap na de laatst verzonden e-mail. Een nieuwe campagne wordt uitgeschakeld aangemaakt, en een campagne zonder actieve stap kan niet worden geactiveerd. Maak in multistore in elke winkel een campagne aan.

- **Minimumbedrag van de winkelwagen**: 0 voor geen minimum.
- **Verzendvenster**: tijdvak waarbuiten verschuldigde e-mails worden uitgesteld. Het mag over middernacht lopen (22 tot 6). Begin en einde gelijk: verzending op elk tijdstip.
- **Herhalingsblokkering** (in dagen): een ontvanger die in deze periode een herinnering voor een andere winkelwagen kreeg, of van wie een andere winkelwagen al in een reeks zit, krijgt er geen nieuwe. De regel wordt vlak voor elke verzending opnieuw gecontroleerd.
- **Gasten meenemen**: gastklanten wel of niet meenemen.
- **B2B-accounts uitsluiten**: sluit klanten uit met een ingevuld bedrijf, SIRET- of btw-nummer.
- **Uitgesloten klantengroepen**: geen e-mail voor klanten in een van deze groepen (wederverkopers, personeel).
- **Uitgesloten categorieën**: een winkelwagen met minstens één product uit deze categorieën krijgt geen herinnering (cadeaubonnen, producten met lage marge, receptproducten). Een zoekveld filtert de boomstructuur.

## Stappen van de reeks

- **Positie**: volgorde van de stap, uniek binnen de campagne.
- **Vertraging na verlating** (in minuten): 60 = 1 u, 1440 = 24 u, 4320 = 72 u. De vertraging moet oplopen met de positie: elke stap wordt na de vorige verzonden.
- **Onderwerp, knoptekst en inhoud per taal**: de inhoud schrijft u in een visuele editor. Een lege knoptekst wordt vervangen door een vertaald standaardlabel. Het onderwerp mag de tekens < en > niet bevatten, die PrestaShop bij verzending weigert.
- **Stap actief**: zet een stap stil zonder hem te verwijderen.

### Variabelen

Bruikbaar in onderwerp, knoptekst en inhoud. Een klik op een variabele kopieert die.

- `{firstname}`, `{lastname}`: voor- en achternaam van de klant.
- `{shop_name}`: naam van de winkel.
- `{cart_total}`: totaal van de winkelwagen in de eigen valuta.
- `{voucher_code}`, `{voucher_value}`, `{voucher_expiry}`: code, waarde (bijvoorbeeld 10 % of € 5,00) en vervaldatum van de korting. Leeg als de stap geen kortingscode aanmaakt.

De inhoud wordt ingevoegd in een responsief sjabloon dat de koptekst, het overzicht van de winkelwagen (foto's, combinaties, totaal), het kortingsblok, de knop en de voettekst met afmeldlink toevoegt. Voor mailprogramma's zonder HTML wordt een nette tekstversie gemaakt.

### Voorbeeld en test-e-mail

Zodra de stap is opgeslagen:

- De knop **Voorbeeld** in elk taaltabblad (of het oogpictogram in de lijst met stappen) toont de uiteindelijke weergave, met schakelaar **desktop / mobiel**.
- Het blok **Test-e-mail verzenden** stuurt de stap naar het adres en in de taal van uw keuze. Het onderwerp krijgt het voorvoegsel [TEST].

Voorbeeld en test gebruiken de opgeslagen versie van de stap en de meest recente echte winkelwagen van de winkel, met de fictieve code DFCR-TEST42. Er wordt geen kortingscode aangemaakt, geen statistiek gewijzigd, en de link van de knop leidt naar de winkelwagenpagina zonder de winkelwagen van een klant te herstellen.

## Kortingscodes

Elke stap kan bij verzending een kortingscode aanmaken:

- **Type**: percentage of vast bedrag (incl. of excl. btw).
- **Waarde** (percentage tussen 0 en 100) en **minimumbedrag**.
- **Geldigheid** in dagen.
- **Gratis verzending**, los of samen met de korting.

- De code is **eenmalig bruikbaar** en beperkt geldig. Voor **geregistreerde klanten is hij persoonsgebonden**. Voor gasten is hij niet aan het account gekoppeld, omdat PrestaShop bij elke bestelling een nieuw gastaccount aanmaakt: de code blijft geheim, is maar één keer bruikbaar en wordt nooit aan andere bezoekers in de winkelwagen aangeboden.
- **Niet combineerbaar met een andere kortingscode**: voert de klant een andere code in terwijl er een herinneringscode in de winkelwagen staat, of omgekeerd, dan wordt de code geweigerd met de melding "Deze kortingscode kan niet worden gecombineerd met een andere kortingscode." en blijft de code die al in de winkelwagen staat behouden. Automatische winkelwagenregels zonder code (bijvoorbeeld gratis verzending vanaf X) blijven combineerbaar.
- **Oplopend zonder stapeling**: wanneer een nieuwe stap een code aanmaakt, wordt de vorige ongebruikte code van dezelfde winkelwagen uitgeschakeld. Er staat maar één herinneringscode tegelijk in de winkelwagen: een geldige DFCR-code invoeren vervangt de code die er al staat, een foute of verlopen code verwijdert de toegepaste code niet.
- **Opschonen**: codes die al 7 dagen verlopen zijn en nooit gebruikt werden, worden automatisch verwijderd.

Goede praktijk: geen korting bij de eerste stap, daarna geleidelijk oplopend (-5 %, dan -10 % met gratis verzending). Het dashboard toont de omzet per stap: u ziet of de hoogste korting meer oplevert dan ze kost.

## Winkelwagen herstellen met één klik

Elke e-mail bevat een **ondertekende link** (HMAC). Na een klik:

- wordt de winkelwagen opnieuw opgebouwd en komt de klant op zijn winkelwagenpagina;
- wordt de **kortingscode uit de aangeklikte e-mail** automatisch toegepast (een eventuele eerdere herinneringscode wordt verwijderd), behalve als de winkelwagen al een andere kortingscode bevat: dan blijft die van de klant behouden;
- wordt de geregistreerde klant opnieuw aangemeld als de optie aan staat en de e-mail minder dan 7 dagen oud is; het in de winkelwagen gekozen adres blijft behouden;
- wordt de klik geteld.

In multistore verwijzen de links naar de winkel van de winkelwagen, in de taal van de klant, en een winkelwagen wordt alleen in zijn eigen winkel hersteld.

Elke wijziging van de linkparameters maakt de link ongeldig. Een winkelwagen die al besteld is, verwijst naar de startpagina. Is er in de browser een andere klant aangemeld, dan blijven diens sessie en winkelwagen ongewijzigd en wordt de winkelwagen uit de e-mail niet hersteld.

## Verloop van een reeks

- **Hervatten**: komt de klant terug en past hij zijn winkelwagen aan, dan worden openstaande herinneringen geannuleerd (reden "Klant terug bij winkelwagen"). Vertrekt hij opnieuw, dan wordt de reeks opnieuw ingepland vanaf de volgende stap, zonder een reeds ontvangen stap opnieuw te versturen.
- **Inhalen**: zijn na een cronstoring meerdere stappen van dezelfde winkelwagen tegelijk verschuldigd, dan wordt alleen de verst gevorderde verzonden. De andere worden overgeslagen met de reden "Vervangen door de volgende stap, al verschuldigd".
- **Geleegde winkelwagen**: haalt de klant alle artikelen uit zijn winkelwagen, dan stopt de reeks en toont de winkelwagen 0 artikelen en een bedrag van 0.
- **Oude winkelwagens**: een winkelwagen die langer dan 7 dagen inactief is, krijgt nooit een herinnering. Na een lange cronstoring mailt de eerste run dus geen klanten die weken geleden vertrokken zijn. Komt de klant terug naar zijn winkelwagen, dan komt hij weer in aanmerking.
- **Onbeschikbare producten**: kan geen enkel product uit de winkelwagen nog besteld worden (uitverkocht zonder nabestelling, product uitgeschakeld), dan wordt de stap overgeslagen. De volgende stappen blijven ingepland voor het geval van nieuwe voorraad.
- **Verzendfout**: bij een SMTP-fout wordt de e-mail na 15 en daarna na 30 minuten opnieuw geprobeerd. Na 3 mislukte pogingen krijgt hij de status mislukt met de foutmelding en wordt de aangemaakte code verwijderd.
- **Verwijderde winkelwagen**: wordt de winkelwagen in PrestaShop verwijderd (Bestellingen > Winkelwagens, opschoonscript, module van derden), dan worden de geplande e-mails geannuleerd, direct of bij de volgende cronrun, en vlak voor elke verzending volgt een laatste controle.
- **Bestelling**: zodra een bestelling is bevestigd, worden de resterende herinneringen geannuleerd. Een bestelling die buiten het afrekenproces is aangemaakt (import, ERP), wordt vlak voor de volgende verzending herkend en op dezelfde manier toegewezen.

## Tracking en toewijzing

- **Opens**: onzichtbare pixel in elke e-mail.
- **Klikken**: klik op de knop of de herstellink.
- **Herstel**: een winkelwagen telt alleen als **Teruggewonnen** als er vóór de bestelling minstens één herinneringsmail is verzonden. Een bestelling vóór elke e-mail krijgt de status **Besteld zonder herinnering** en telt niet mee in de teruggewonnen omzet.
- **Toewijzing per stap**: elke teruggewonnen winkelwagen wordt toegewezen aan de laatste e-mail die vóór de aankoop is verzonden.
- **Gesplitste bestelling**: maakt PrestaShop meerdere bestellingen aan voor één winkelwagen (verschillende vervoerders), dan is de teruggewonnen omzet het totaal van al die bestellingen.

## Dashboard

- **Periode**: 7, 30 of 90 dagen.
- **Indicatoren**: herkende winkelwagens en verlaten waarde, teruggewonnen winkelwagens en herstelpercentage, verzonden e-mails, open- en klikratio's, e-mails in de wachtrij, teruggewonnen omzet. De bedragen worden omgerekend naar de standaardvaluta van de winkel. De verlaten waarde is de waarde van de winkelwagen op het moment van verlaten.
- **Grafiek** van herkenningen en herstellingen per dag.
- **Prestaties per stap** van de actieve campagne: verzonden, geopend, geklikt, klikratio, teruggewonnen winkelwagens en toegewezen omzet.

## Gevolgde winkelwagens

Het tabblad **Winkelwagens** toont de gevolgde winkelwagens met statusfilter, zoekfunctie (e-mail, naam of winkelwagennummer, `#123` voor een specifieke winkelwagen), paginering en **CSV-export** van de gefilterde resultaten. Elke regel toont de klant, het bedrag, de status, het aantal verzonden en geplande e-mails, een link naar de winkelwagen en, indien van toepassing, naar de bestelling in de back-office. Het uitsluitingspictogram stopt alle herinneringen voor een winkelwagen.

| Status | Betekenis |
| --- | --- |
| Actief | Winkelwagen in gebruik, nog niet verlaten |
| Herinnering loopt | Reeks ingepland of wordt verzonden |
| Teruggewonnen | Bestelling na minstens één herinneringsmail |
| Besteld zonder herinnering | Bestelling vóór elke e-mail, niet toegewezen |
| Verloren | Reeks afgelopen of volgperiode overschreden |
| Uitgesloten | Gefilterd door de campagne (bedrag, gast, B2B, groep, categorie, herhalingsblokkering): opnieuw beoordeeld als de klant zijn winkelwagen aanpast. Handmatig uitgesloten of winkelwagen verwijderd in PrestaShop: definitief |
| Afgemeld | De klant wil geen herinneringen meer ontvangen |

## Verzendlogboek

Het tabblad **Verzendlogboek** toont elke e-mail in detail: geplande datum en verzenddatum, ontvanger, stap, status (gepland, verzonden, overgeslagen, geannuleerd, mislukt), open, klik, kortingscode en reden (klant terug bij winkelwagen, winkelwagen geleegd door de klant, limiet bereikt, producten onbeschikbaar, herhalingsblokkering, stap vervangen door de volgende, SMTP-fout, winkelwagen verwijderd in PrestaShop...). Een geplande e-mail kunt u **nu verzenden** of **annuleren**. "Nu verzenden" verstuurt de e-mail direct, ook buiten het verzendvenster, en toont het resultaat of de reden waarom hij niet is verzonden.

## AVG en afleverbaarheid

- Elke e-mail bevat een **afmeldlink**. Die opent een bevestigingspagina: het afmelden gebeurt met de knop, zodat linkscanners van zakelijke mailomgevingen klanten niet buiten hun medeweten afmelden. Het adres komt op een blijvende **uitsluitingslijst** en openstaande verzendingen voor al zijn winkelwagens worden geannuleerd.
- De headers `List-Unsubscribe` en `List-Unsubscribe-Post` maken afmelden met één klik mogelijk in Gmail, Yahoo en andere diensten die dit eisen voor marketingmails.
- Alleen winkelwagens met een e-mailadres (klant, of gast die de stap persoonsgegevens heeft bevestigd) worden gevolgd: er wordt geen adres vastgelegd voordat de klant het verstuurt.
- Met de officiële module `psgdpr` verschijnt de module in de lijst van modules die gegevens verwerken: export en verwijdering van de gegevens van een klant omvatten zijn gevolgde winkelwagens en herinneringsmails. De export vermeldt ook of het adres op de uitsluitingslijst staat.
- Het verwijderen van een klantaccount wist de gevolgde winkelwagens, de verzendwachtrij en de gebeurtenissen van die klant. Een eventueel bezwaar blijft op de uitsluitingslijst staan.
- Bij verwijdering van de module worden de tabellen, de configuratie en het beheertabblad gewist.

## FAQ en probleemoplossing

### Er wordt geen herinnering verzonden

Bekijk de verwerkingsstatus boven in het dashboard. Is die rood, dan roept de crontaak de URL niet aan (of niet met het juiste token): controleer met **Nu uitvoeren** en corrigeer daarna de taak of schakel de werking zonder servercron in. Controleer vervolgens of de campagne en minstens één stap actief zijn en of het tijdstip binnen het verzendvenster valt, en open het **Verzendlogboek**: daar staat de reden van elke overgeslagen of mislukte e-mail.

### De klant kan zijn kortingscode niet toevoegen

Dat is zo bedoeld: de herinneringscode kan met geen enkele andere kortingscode worden gecombineerd. De klant moet eerst de code in de winkelwagen verwijderen en daarna de andere invoeren. Automatische winkelwagenregels zonder code vallen hier niet onder.

### Een verwijderde winkelwagen krijgt nog e-mails

Tot en met versie 1.3.6 werd een al geplande e-mail verzonden, ook als de winkelwagen in PrestaShop was verwijderd. Werk bij naar 1.3.7 of hoger: de verzendingen voor deze winkelwagens worden geannuleerd en het verzendlogboek toont de reden "Winkelwagen verwijderd in PrestaShop".

### Een klant kreeg twee keer dezelfde herinnering

Tot en met versie 1.3.10 konden twee situaties een dubbele e-mail veroorzaken: een klant die terugkwam bij zijn winkelwagen en weer vertrok, en twee winkels van dezelfde multistore-installatie die dezelfde wachtrij verwerkten. Werk bij naar 1.3.11 of hoger.

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

Deze melding van de PrestaShop-kern kon verschijnen met de versies 1.0.0 tot en met 1.3.1 wanneer een winkelwagen buiten een bezoek werd opgeslagen (webservice, connector, betaalwebhook, script). Werk bij naar 1.3.4 of hoger.

### De cron-URL geeft een fout 500

Op PrestaShop 8 veroorzaakten de versies 1.0.0 tot en met 1.3.0 een fout 500 op de cron-URL. Werk bij naar 1.3.1 of hoger en controleer de versie in Modulebeheer. Blijft de fout bestaan, schakel dan de debugmodus van PrestaShop in of bekijk de PHP-logs van de server om de exacte melding te lezen.

### Een winkelwagen staat niet in de lijst

Een winkelwagen wordt alleen gevolgd als hij aan een e-mailadres gekoppeld is: aangemelde klant, of gast die de stap persoonsgegevens heeft bevestigd. Hij wordt verlaten na de verlatingsvertraging (standaard 60 minuten) en bij de volgende cronrun.

### Mijn logo verschijnt niet of is slecht leesbaar

Controleer of de optie Winkellogo aan staat en of er een logo is ingesteld onder Uiterlijk > Thema en logo. Is uw logo donker, kies dan een lichte achtergrond voor de koptekst. Sommige mailprogramma's blokkeren afbeeldingen standaard: dan wordt de winkelnaam getoond.

### De test-e-mail komt niet aan

Controleer of de stap een onderwerp heeft in de gekozen taal en of de winkel e-mails kan versturen (**Geavanceerde instellingen > E-mail**, testknop van PrestaShop). Kijk ook in uw map met ongewenste e-mail.

### Kan een klant te veel e-mails krijgen?

Nee: de limiet per winkelwagen, de herhalingsblokkering per ontvanger en het verzendvenster beperken de frequentie. Een bestelling of afmelding annuleert de resterende herinneringen.

### Werkt de module met multistore?

Ja. Campagnes, gevolgde winkelwagens, instellingen voor het uiterlijk en statistieken zijn per winkel gescheiden.

### Is de module compatibel met PrestaShop 9?

Ja. De module is compatibel met PrestaShop 8 en 9 en volgt de API-wijzigingen van PS9 (prijsopmaak via de Locale-API, controllers, verzending van e-mails).
