Doelgroepen
Met Doelgroepen bouw je een herbruikbare, gerichte groep bezoekers op basis van gedrag, bestelhistorie, klantwaarde en evenement-affiniteit. Je ziet live hoeveel bezoekers eraan voldoen, slaat de doelgroep op en gebruikt 'm later voor een campagne.
Je vindt het onder CRM → Doelgroepen.
Doelgroepen vs. Selecties maken? Selecties is de oudere filter-tool. Doelgroepen is de nieuwe, krachtigere builder: geneste EN/OF/GEEN-logica, "kocht X maar niet Y", en voorberekende klantwaarde-velden (RFM, recency, levensfase).
Hoe het werkt
Een doelgroep is opgebouwd uit groepen en voorwaarden.
- Voorwaarde — één regel: een veld, een operator en een waarde. Bijvoorbeeld: Woonplaats · bevat · Amsterdam.
- Groep — bundelt voorwaarden met een logica-schakelaar:
- EN — voldoet aan álle voorwaarden.
- OF — voldoet aan mínstens één.
- GEEN — voldoet aan géén ervan (uitsluiten).
- Subgroep — een groep binnen een groep, voor combinaties als A EN (B OF C).
- Heeft (niet) gekocht — een speciaal blok dat test of de bezoeker wél of géén ticket heeft dat aan criteria voldoet. Hiermee maak je "kocht X maar niet Y".
Rechts (of onderaan) toont de Live preview: het aantal bezoekers en een voorbeeldlijst, dat live meebeweegt terwijl je bouwt.
Datums
Datumvelden accepteren een vaste datum (2024-01-01) of een relatieve waarde
die altijd actueel blijft: today, -30d, -90d, -1y. Onder elk datumveld staan
snelknoppen (Vandaag · 7 dgn · 30 dgn · 90 dgn · 1 jaar). De standaard-operator voor
datums is "na" — meestal wil je "in de laatste N dagen".
Type: dynamisch of statisch
- Dynamisch (standaard) — de doelgroep wordt op het moment van gebruik opnieuw berekend. Iemand die vandaag aan de voorwaarden voldoet, zit er morgen automatisch in.
- Statisch — een bevroren lijst (momentopname).
Beschikbare velden
| Groep | Velden |
|---|---|
| Klanten | E-mailadres, Woonplaats, Postcode, Voorkeuren / opt-in, Totaal besteed (lifetime), Aantal tickets (lifetime) |
| Bestelling | Besteldatum, Betaalstatus, Orderbedrag, Betaalmethode, Ticketstatus, Check-in datum, Kaartsoort, Locatie |
| Evenementen | Evenement, Hoofd-evenement, Categorie, Tags, Evenementdatum |
| Wachtlijst | Wachtlijst-evenement, Wachtlijst-type, Wachtlijst-aanmelddatum |
| Klantwaarde (voorberekend) | Laatste bestelling, Eerste bestelling, Aantal bestellingen, Aantal verschillende events, Aantal keer ingecheckt, Lifetime besteed (€), Gem. orderbedrag (€), Totaal gedoneerd (€), Laatste evenementdatum, Klantsegment (RFM), Levensfase |
Klantsegment (RFM) en Levensfase
De Klantwaarde-velden zijn per klant voorberekend (zie Voor beheerders onderaan).
- Klantsegment (RFM) — op basis van Recency (hoe recent), Frequency (hoe vaak) en Monetary (hoeveel besteed): Kampioenen, Trouwe klanten, Nieuw, Potentieel, Risico (afhakend), Eenmalige koper, Sluimerend, Verloren, Nog niet gekocht.
- Levensfase — op basis van hoe lang geleden de laatste bestelling was: Nieuw, Actief, Sluimerend (6-12 mnd), Lapsed (1-2 jaar), Verloren (>2 jaar), Nog niet gekocht.
Wachtlijst
Wie zich via de webshop voor een wachtlijst aanmeldt, leg je hiermee vast — en blijft selecteerbaar, óók nadat ze een seintje hebben gehad. (De operationele wachtrij wordt namelijk geleegd zodra mensen genotificeerd zijn; dit signaal blijft bestaan.)
- Wachtlijst-evenement — voor welk evenement ze op de wachtlijst staan/stonden. Met de operator heeft een waarde selecteer je iedereen die op een wachtlijst staat.
- Wachtlijst-type — Seintje (notify) of Auto-bestelling (order).
- Wachtlijst-aanmelddatum — wanneer ze zich aanmeldden (datumveld, relatieve
waarden zoals
-30dmogelijk).
Voorbeelden van selecties
Elke rij hieronder is een complete doelgroep. "→" scheidt de voorwaarden binnen één groep; nieuwe groepen/blokken staan op aparte regels.
Bedanken & nazorg
| Doel | Bouw 'm zo |
|---|---|
| Bedankmail aan kopers van een event | Heeft wél gekocht: Evenement = Concert X |
| Doneerders bedanken | Totaal gedoneerd · groter dan · 0 |
| Pre-event mail voor een hele festivalreeks | Heeft wél gekocht: Hoofd-evenement = Festival X |
Retentie & win-back
| Doel | Bouw 'm zo |
|---|---|
| Lapsed (al een jaar niets gekocht) | Laatste bestelling · voor · 1 jaar |
| Sluimerende VIP's (gerichte win-back) | Laatste bestelling · voor · 1 jaar EN Lifetime besteed (€) · ≥ · 100 |
| One-and-done activeren | Aantal bestellingen · is · 1 |
| Verloren klanten via segment | Klantsegment (RFM) · is · Verloren |
Loyaliteit & waarde
| Doel | Bouw 'm zo |
|---|---|
| Trouwe fans | Aantal verschillende events · ≥ · 3 |
| Topklanten | Klantsegment (RFM) · is · Kampioenen |
| VIP op besteding | Lifetime besteed (€) · ≥ · 500 |
| Nieuwe klanten verwelkomen | Levensfase · is · Nieuw |
Cross-sell & gedrag (kocht X maar niet Y)
| Doel | Bouw 'm zo |
|---|---|
| Kocht X, mist het vervolg | Heeft wél gekocht: Evenement = X EN Heeft géén gekocht: Evenement = Y |
| Genre-fan die een titel mist | Heeft wél gekocht: Categorie = Jazz EN Heeft géén gekocht: Evenement = Z |
| Bezoekers van een locatie | Heeft wél gekocht: Locatie = Theater Y |
Wachtlijst
| Doel | Bouw 'm zo |
|---|---|
| Wachtlijst van een event informeren | Wachtlijst-evenement = Concert X |
| Wilde erbij, maar kocht niet | Wachtlijst-evenement = Concert X EN Heeft géén gekocht: Evenement = Concert X |
| Iedereen die ooit op een wachtlijst stond | Wachtlijst-evenement · heeft een waarde |
Demografisch & combinaties
| Doel | Bouw 'm zo |
|---|---|
| Lokale doelgroep | Woonplaats · bevat · Amsterdam |
| Opt-in nieuwsbrief in een regio | Voorkeuren/opt-in · is · aangemeld EN Postcode · begint met · 10 |
| Loyaal in een categorie | Aantal verschillende events · ≥ · 2 EN Heeft wél gekocht: Categorie = Theater |
Tip: combineer de Klantwaarde-velden met "Heeft (niet) gekocht" voor scherpe doelgroepen — bijv. Lapsed EN Heeft wél gekocht: Festival X = oud-bezoekers van precies dat festival om terug te halen.
Voor beheerders
De Klantwaarde-velden (RFM, recency, aantallen, levensfase) staan in een
voorberekende tabel user_stats (1 rij per klant). Die wordt herberekend met:
php artisan segments:rebuild-stats --tenant=<database>
In productie draait dit nachtelijk per tenant. Een nieuwe doelgroep gebruikt altijd de laatst berekende waarden; tussentijdse aankopen tellen pas mee na de volgende herberekening.
Wachtlijst-data — aanmeldingen worden duurzaam vastgelegd in waitlist_signup
(geschreven door tickets bij aanmelding via WaitinglistController), los van de
vluchtige waiting-queue die na notificatie + grace wordt opgeschoond. De engine joint
hierop net als op order/seat. Dit werkt vooruit: alleen aanmeldingen vanaf het live
gaan van de feature worden bewaard — al geprunde aanmeldingen zijn weg. De migratie
2026-05-31-waitlist-signup-tenant.sql doet eenmalig een backfill van wie er op dat
moment nog in waiting staat.
Aandachtspunten in de data:
- Check-in / aanwezigheid —
seat_checked_dategebruikt nuldatums in plaats van leeg. Gebruik daarom het veld "Aantal keer ingecheckt" (≥ 1) voor wie echt is geweest, niet "Check-in datum · heeft een waarde". - Geldige bestellingen — statistieken tellen alleen bestellingen met status
ord(niet geannuleerd/verwijderd).
Gerelateerd
- Selecties maken - de oudere filter-tool
- Tags & segmentatie - handmatige labels op bezoekers
- E-mail campagnes - gerichte mails versturen
- Technisch ontwerp:
planning/crm-segmentatie-engine.md(in vdm-docs)