Winactie-module voor PrestaShop 8 en 9: documentatie
Een winactie met deelname via aankoop of formulier, doorverwijzingen, controleerbare trekking en prijsclaim installeren, instellen en uitvoeren.
Overzicht
De module dfcontest voegt winacties toe aan je PrestaShop 8- of 9-winkel. Klanten doen automatisch mee bij een bestelling, of gratis via een formulier. De trekking is controleerbaar: elke bezoeker kan de berekening herhalen en krijgt dezelfde winnaars. De module genereert het reglement, mailt de winnaars en verzamelt hun leveringsadres.
Installatie
- Open in de back-office Modules > Modulebeheer en klik op Een module uploaden.
- Upload het bestand
dfcontest-x.y.z.zipen klik op Installeren. - Het menu Klanten > Winacties verschijnt. De algemene instellingen staan op de configuratiepagina van de module.
Om bij te werken upload je gewoon de nieuwe versie: de updatescripts voegen ontbrekende kolommen en instellingen toe zonder je winacties of deelnames aan te raken.
Configuratie van de module
Organisator
Vul de officiële bedrijfsnaam, het statutair adres, het registratienummer (KvK, SIRET, CIF, Handelsregister…) en het contact-e-mailadres voor deelnemers in. Deze gegevens worden gebruikt in het gegenereerde reglement en in de e-mails.
Weergave
- Namen van winnaars op openbare pagina’s: alleen initialen (J. J.) of voornaam en initiaal (Jan J.).
- De winactie tonen op de pagina’s van geldige producten en verdiende deelnames tonen in de winkelwagen, met het bedrag dat ontbreekt voor de volgende deelname.
- Accentkleur: kleur van de afteller, kaders en randen. Laat leeg voor het standaardgroen; knoppen behouden de kleuren van je thema.
- Deelnamebevestiging per e-mail: deelnamecode en deellink, verstuurd zodra een deelname via het formulier geldig is.
- De lopende winactie uitlichten op de startpagina (hook
displayHome).
Fraudebescherming
De optie Wegwerp-e-mailadressen weigeren blokkeert de belangrijkste diensten voor tijdelijke e-mailadressen (Yopmail, Mailinator, 10 Minute Mail, Guerrilla Mail en andere). Het veld Andere geblokkeerde domeinen neemt één domein per regel; subdomeinen worden ook geblokkeerd.
Automatische taken (cron)
De configuratiepagina toont een ondertekende cron-URL. Die is alleen nodig voor de automatische piloot (zie verderop). Roep hem elke 5 tot 15 minuten aan, bijvoorbeeld:
*/10 * * * * curl -s "https://jouw-winkel.nl/module/dfcontest/cron?token=JOUW_TOKEN" > /dev/null
De datum van de laatste run staat onder de URL.
Een winactie aanmaken
Open Klanten > Winacties en daarna Nieuwe winactie. Het formulier is verdeeld in tabbladen.
Algemeen
- Naam, vriendelijke URL, beschrijving en prijs (beschrijf elke prijs met zijn winkelwaarde: deze tekst komt in het reglement).
- Afbeelding: JPG, PNG of WebP, maximaal 4 MB, aanbevolen breedte 1600 px.
- Start, einde en aangekondigde trekkingsdatum.
- Uitlichten op de startpagina: lopen er meerdere winacties, dan wordt de winactie getoond die het eerst eindigt.
Hoe doe je mee
Schakel deelname via aankoop, via het formulier of beide in. Het maximum aantal deelnames per deelnemer telt aankopen, formulier en doorverwijsbonussen samen, per e-mailadres.
Deelnames via aankoop
- 1 deelname per bestelling of 1 deelname per bedragstap (incl. btw, in de standaardvaluta).
- Minimaal bestelbedrag en maximum aantal deelnames per bestelling.
- ID’s van geldige producten en geldige categorieën: als ze zijn ingevuld, telt alleen het bedrag van deze producten, met kortingen naar verhouding verdeeld. Laat leeg voor de hele catalogus.
Een deelname ontstaat wanneer de bestelling tijdens de looptijd een betaalde status krijgt. Ze wordt verwijderd als de bestelling wordt geannuleerd, terugbetaald of een betalingsfout krijgt, zolang de deelnames niet zijn verzegeld. Een bestelling die over meerdere zendingen is verdeeld, telt als één bestelling.
Deelnames via formulier
- Klantaccount verplicht: het formulier alleen voor ingelogde klanten.
- Bevestiging per e-mail (aanbevolen): gasten krijgen een link en hun deelname telt pas na bevestiging.
- Telefoonnummer: verborgen, optioneel of verplicht.
- Vraag: vrije vraag waarvan het antwoord wordt opgeslagen en geëxporteerd.
- Aanmeldvakje voor de nieuwsbrief: standaard niet aangevinkt.
- Bonusdeelnames per uitgenodigde vriend en maximum bonusdeelnames per deelnemer: schakelt doorverwijzen in (0 schakelt het uit).
Trekking
- Aantal winnaars en aantal reservewinnaars (op volgorde getrokken na de winnaars).
- Eén prijs per persoon: een deelnemer die een tweede keer wordt getrokken, wordt overgeslagen.
- Automatische piloot: verzegeling op de einddatum, trekking op de aangekondigde datum, winnaarsmails (cron-URL vereist).
- Winnaars vervangen die niet op tijd opeisen: na afloop van de termijn wordt de winnaar als afgezien gemarkeerd en krijgt de volgende reservewinnaar de e-mail (cron-URL vereist).
- Dagen om de prijs op te eisen.
De vingerafdruk van de trekking wordt aangemaakt bij de eerste keer opslaan van de winactie en kan daarna niet meer veranderen. Na de verzegeling zijn datums, deelname-instellingen en aantal winnaars vergrendeld.
Reglement
Laat je het veld leeg, dan wordt een reglement in 9 artikelen gegenereerd uit de instellingen van de winactie en de organisatorgegevens. Je kunt ook een eigen tekst schrijven met de variabelen {organizer}, {contest_name}, {date_start}, {date_end}, {draw_date}, {nb_winners}, {prize}, {claim_days}, {verify_url}, {commitment} en de andere die in het tabblad staan.
Het gegenereerde reglement is een sjabloon. Laat het toetsen aan het recht van elk land waar de winactie openstaat. In Nederland geldt bijvoorbeeld de Gedragscode Promotionele Kansspelen, met onder meer een maximale prijzenwaarde en een verplichte vermelding van de organisator.
In de winkel
- /contests: lijst van lopende, komende en afgelopen winacties.
- Pagina van de winactie: afteller, prijzen, manieren om mee te doen, formulier en na deelname de deelnamecode, het aantal deelnames en de deellink. Na de trekking: lijst van winnaars en een melding „Je hebt gewonnen” voor de betrokken bezoeker.
- /rules: afdrukbaar reglement. /draw: controlepagina.
- Productpagina en winkelwagen: melding bij geldige producten en voortgangsbericht.
- Orderbevestiging: verdiende deelnames met hun code.
- Mijn account > Mijn deelnames aan winacties: geschiedenis, status en knop om de prijs op te eisen voor winnaars.
- Widget: op de startpagina, of overal met
{widget name="dfcontest"}of{widget name="dfcontest" id_contest=3}.
Verloop van de trekking
Het dashboard van de winactie (knop Bekijken in de lijst) toont de trekking in 4 stappen.
- Vingerafdruk gepubliceerd: de SHA-256-vingerafdruk van de geheime sleutel is openbaar sinds de winactie is aangemaakt.
- Deelnames verzegelen: beschikbaar na de einddatum. De lijst met geldige deelnames wordt bevroren en de vingerafdruk ervan gepubliceerd. Op hetzelfde moment legt de module zich vast op een toekomstige ronde van drand, de openbare willekeur van de League of Entropy, die ongeveer twee minuten later wordt gepubliceerd, of na de aangekondigde trekkingsdatum.
- Trekking uitvoeren: zodra de waarde van de ronde is gepubliceerd, haalt de module die op en trekt eerst de winnaars en daarna de reservewinnaars. Kan je server drand niet bereiken, open dan de getoonde drand-link, kopieer de waarde
randomnessen plak die in het veld. - Winnaars informeren: elke winnaar krijgt een e-mail in de taal van zijn deelname, met een link om de prijs te aanvaarden en vóór de termijn zijn adres door te geven.
De prijsuitreiking opvolgen
De winnaarstabel toont per winnaar: opgeëist (met leveringsadres), wacht op antwoord of termijn verstreken. De knop Opnieuw sturen verstuurt de e-mail opnieuw en laat de termijn opnieuw ingaan. Markeren als afgezien neemt de prijs van de winnaar af en geeft hem aan de eerste beschikbare reservewinnaar; stuur daarna de e-mails opnieuw om die te informeren. Als een winnaar zijn prijs opeist, ontvangt het contact-e-mailadres van de organisator zijn gegevens.
Controlepagina
De pagina /draw publiceert de vingerafdruk van de sleutel, de vingerafdruk van de lijst, de drand-ronde en daarna de sleutel, de openbare waarde, de seed en de winnaars. Een deelnemer kan er zijn code zoeken in de verzegelde lijst en de controle in zijn browser starten, die elke stap nagaat zonder iets naar de winkel te sturen. Het JSON-bewijsbestand is te downloaden vanaf de pagina en vanuit het dashboard.
Automatische piloot
Voor een winactie met de optie Automatische piloot doet elke cronrun het volgende:
- de deelnames verzegelen zodra de einddatum voorbij is;
- de trekking uitvoeren wanneer de aangekondigde datum is bereikt en de drand-waarde is gepubliceerd, en daarna de winnaars mailen;
- als de vervangoptie aan staat, winnaars van wie de termijn zonder claim is verstreken als afgezien markeren en de volgende reservewinnaar informeren.
De cron heeft geen effect op winacties zonder automatische piloot. Hij mag zo vaak draaien als je wilt.
Exports en persoonsgegevens
- Winnaars exporteren (CSV): positie, code, contactgegevens, bron, getrokken lot, antwoord, datum van de melding, claimstatus en leveringsadres.
- Deelnames exporteren (CSV): alle deelnames met hun status, bron en toestemming voor de nieuwsbrief.
- Met de officiële module psgdpr anonimiseert het verwijderen van een klant zijn deelnames en trekt het die van niet-verzegelde winacties in; de AVG-export bevat zijn deelnames en zijn prijsclaim.
Problemen oplossen
Een betaalde bestelling heeft geen deelname aangemaakt
PrestaShop slaat de hooks van een module over wanneer het profiel van de medewerker die de status wijzigt die module niet mag zien. In het dashboard van de winactie loopt de knop Bestellingen controleren de betaalde bestellingen van de periode door en maakt de ontbrekende deelnames aan.
Een gast ontvangt de bevestigingsmail niet
Op de pagina van de winactie verschijnt bij een deelname in afwachting de knop Link opnieuw sturen (hoogstens één e-mail per twee minuten). Controleer ook de e-mailinstellingen van de winkel.
De trekking start niet
De waarde van de drand-ronde wordt pas gepubliceerd op het tijdstip dat het dashboard toont. Blijft drand daarna onbereikbaar vanaf de server, plak dan de waarde randomness die je van de drand-link hebt gekopieerd.
De cron doet niets
Controleer of de winactie de optie Automatische piloot heeft en of de winkel niet in onderhoudsmodus staat, die ook de cron-URL blokkeert. Bij multistore roep je de cron-URL van elke winkel aan.