Winkelmail bij een nieuwe bestelling¶
Bij elke betaalde bestelling kan de winkel een mail krijgen: "Nieuwe bestelling #<nummer>
– <naam klant>". Op staging staat er vanzelf "[STAGING]" voor. De melding in Discord
(#production-admin-actions, "💰 Nieuwe betaalde order") blijft daarnaast bestaan.
Gebouwd voor de todo winkelmail-nieuwe-bestelling (november 2026). Daarvoor kwam er bij info@
niets binnen; op staging leek dat wel zo, maar daar ging de klantbevestiging naar testorders
met info@ als klantadres.
Aanzetten¶
Admin → Instellingen → Mail bij een nieuwe bestelling:
- Vink "Bij elke betaalde bestelling een mail aan de winkel sturen" aan.
- Controleer het adres onder "Naar dit adres" (standaard
info@freezedesign.nl). - Opslaan.
De schakelaar staat standaard uit. Een leeg adres betekent: geen mail, ook als de schakelaar aanstaat.
Wat er in de mail staat¶
- de klant: naam, bedrijfsnaam (als ingevuld), e-mail en telefoon;
- bezorgadres, of "Afhalen" bij afhalen in de winkel;
- de artikelen per regel: product, kleur en maat, naam en nummer, aantal en bedrag; een teambestelling als één blok met de maten en het rooster;
- subtotaal, korting (met de kortingscode), verzendkosten met de verzendmethode, totaal;
- de opmerking van de klant, als die er is;
- een knop naar de bestelling in het beheer.
Antwoorden op de mail gaat naar de klant (Reply-To is het adres van de klant).
Hoe het werkt¶
backend/apps/orders/signals.pyplant bij de overgang naarpaidde taaksend_shop_order_email_task(backend/apps/orders/tasks.py), naast de Discord-melding, de factuur met betaalmail en de drukbestanden. Een mislukte winkelmail houdt die andere taken niet tegen.- De taak draait met
acks_late.Order.shop_email_sent_atzorgt voor één mail per bestelling, ook bij een tweede uitvoering of als de status later opnieuw oppaidkomt. Het veld wordt alleen gezet als de mail gelukt is. - Templates:
backend/templates/email/shop_new_order.htmlen.txt. - Instellingen:
SiteSettings.shop_order_email_enabledenshop_order_email_address(core/0027). Ze staan alleen in de beheer-API, niet in de openbareGET /api/settings/. SiteSettings.shop_order_email_enabled_since(core/0028) wordt gezet als de schakelaar aangaat en leeggemaakt als hij uitgaat. Niet te zien en niet te wijzigen in het beheer.
Geen mail ontvangen?¶
- Staat de schakelaar aan en is het adres ingevuld? Lees de stand uit het beheer, niet uit deze pagina.
- Kwam de Discord-melding wel? Dan is de bestelling betaald en draaide de worker.
- Zoek in de logs van
celery-workeropWinkelmail voor order. "kon niet worden verstuurd" betekent dat de mailserver weigerde; dan isshop_email_sent_atleeg. - Wacht een uur. De hersteltaak (
recover_incomplete_paid_orders, elk uur om :45) plant een gemiste winkelmail opnieuw in voor betaalde bestellingen tussen 30 minuten en 7 dagen oud, metshop_email_sent_atleeg, als de schakelaar aanstaat en het adres is ingevuld. Hij meldt dat in Discord (#payments, "🔧 Hersteltaak", met "winkelmail" bij de order). - Bestellingen die betaald zijn vóór het aanzetten van de schakelaar krijgen nooit een winkelmail, ook niet via de hersteltaak. Zo geeft het aanzetten geen stroom mails voor oude bestellingen. Na uit- en weer aanzetten telt het nieuwe moment.