Reviews: reviewverzoek na levering en het Google-reviewblok¶
Twee losse dingen, allebei met Google Reviews (gratis, via het Google Business Profile):
- Reviewverzoek: een aantal dagen na verzending of afhalen krijgt de klant één mail met een knop naar de Google-reviewpagina van de winkel. Achter een schakelaar die standaard uit staat.
- Reviewblok: de homepage toont "Wat klanten zeggen" met de score, het aantal beoordelingen en de laatste reviews; de productpagina een compacte regel. Verschijnt vanzelf zodra de Place-ID én de Google-sleutel er zijn; zonder die blijft het onzichtbaar.
Code: backend/apps/orders/review_request.py (mail en selectie), apps/orders/tasks.py
(reviews.send_requests), templates/email/review_request.*,
backend/apps/core/google_reviews.py en GET /api/reviews/google/ (reviewblok),
frontend/components/reviews/GoogleReviews.tsx. Tests:
apps/orders/tests/test_reviewverzoek.py, apps/core/tests/test_google_reviews.py.
Eenmalig inrichten¶
Ivar: de Google-sleutel (voor het reviewblok).
- Google Cloud Console → een project (het bestaande of een nieuw "Freeze Design website") → API's en services → Bibliotheek → Places API (New) inschakelen. Let op: "(New)", niet de oude Places API.
- Inloggegevens → API-sleutel maken → de sleutel beperken tot Places API (New) (Toepassingsbeperking: geen, want de backend roept aan; API-beperking: alleen die API).
- Zet hem als secret
GOOGLE_PLACES_API_KEYop staging en productie en herstart de backend. Zonder sleutel geeft/api/reviews/google/204 en toont de winkel niets. - Kosten: het reviewblok doet hooguit vier aanroepen per dag per omgeving (cache van zes uur). Dat valt ruim binnen het gratis tegoed van Google Maps Platform.
Ivar of Eefje: de Place-ID.
- De Place-ID is het unieke nummer van de winkel in Google Maps, een reeks als
ChIJ…. Opzoeken via de Place ID Finder (naam van de winkel intypen) of in het Google Business Profile. - Invullen bij Admin → Instellingen → Reviews → "Google Place-ID van de winkel" → Opslaan.
- Controle:
https://search.google.com/local/writereview?placeid=<de ID>opent de reviewpagina van de winkel. Opent hij een andere zaak, dan is de ID fout.
Aanzetten (Eefje)¶
Admin → Instellingen → Reviews → "Reviewverzoek mailen na levering" → Opslaan. "Reviewverzoek na (dagen)" staat op 7; 5 tot 10 is gebruikelijk: lang genoeg om het te dragen, kort genoeg om het nog te weten.
Het reviewblok heeft geen schakelaar. Het verschijnt op de homepage en de productpagina zodra de Place-ID is ingevuld, de sleutel op de server staat en Google een beoordeling teruggeeft. Dat kan tot zes uur duren door de cache; een herstart van de backend maakt de cache leeg.
Wat de klant meemaakt¶
- Bestelling gaat op Verzonden, Afgeleverd of Afgehaald.
- Na het ingestelde aantal dagen, in de dagelijkse run van 08:15 UTC (10:15 Nederlandse zomertijd), komt één mail "Hoe bevalt je bestelling?" met de knop Schrijf een review op Google. De mail begint met de voornaam uit het verzendadres.
- De knop opent de Google-reviewpagina van de winkel. De klant heeft een Google-account nodig; dat is hoe Google Reviews werkt.
- Geen tweede mail, nooit. Geannuleerde en terugbetaalde bestellingen krijgen geen mail; bestellingen ouder dan 60 dagen ook niet. Antwoorden op de mail komt bij de winkel binnen (Reply-To), zodat een ontevreden klant eerst bij ons uitkomt.
Reviews beantwoorden (Eefje)¶
Reviews beheer je in het Google Business Profile, niet in de admin. Beantwoord elke review, ook de goede, kort en persoonlijk. Een slechte review met een net antwoord doet het bij nieuwe klanten vaak beter dan geen slechte reviews.
Achter de schermen¶
| Wat | Waar | Wanneer |
|---|---|---|
| Reviewverzoeken sturen | Celery Beat reviews.send_requests |
dagelijks 08:15 UTC, max. 100 per run |
| Welke bestellingen | status shipped/delivered/picked_up, review_request_sent_at leeg, geleverd tussen wachttijd en 60 dagen geleden |
verzonden: shipped_at; afgehaald: laatste wijziging |
| Beoordeling ophalen | GET /api/reviews/google/ → Places API (New), velden rating, userRatingCount, reviews, googleMapsUri |
zes uur cache; alleen een geslaagd antwoord wordt gecachet |
Geen sterren in de zoekresultaten: Google toont geen beoordelingen van de winkel zelf bij een product of organisatie ("self-serving reviews"). Daarvoor zijn reviews per product nodig; dat is bewust niet gebouwd.
Storingen¶
- Geen reviewblok, wel Place-ID: de sleutel ontbreekt of de API staat niet aan in Google Cloud. Backend-log: "Google-reviews niet beschikbaar" met de reden (403 = sleutel of API, 404 = Place-ID bestaat niet). De winkel toont dan niets, geen foutmelding.
- Reviewblok verouderd: cache van zes uur; wachten of de backend herstarten.
- Geen reviewmail: schakelaar uit, Place-ID leeg, status nog niet Verzonden of
Afgehaald, wachttijd nog niet om, of bestelling ouder dan 60 dagen. Controle: de
bestelling in de Django-admin heeft
review_request_sent_atleeg. - Mail niet aangekomen: zelfde controle als bij bestelmails (Resend → Emails, spamfolder).
- Klant wil geen reviewmails: er is maar één mail per bestelling; een afmeldknop is er
niet. Bij een klacht: in de Django-admin bij die bestelling
review_request_sent_atvullen, dan gaat er niets meer.