Ga naar hoofdinhoud

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

GroepVelden
KlantenE-mailadres, Woonplaats, Postcode, Voorkeuren / opt-in, Totaal besteed (lifetime), Aantal tickets (lifetime)
BestellingBesteldatum, Betaalstatus, Orderbedrag, Betaalmethode, Ticketstatus, Check-in datum, Kaartsoort, Locatie
EvenementenEvenement, Hoofd-evenement, Categorie, Tags, Evenementdatum
WachtlijstWachtlijst-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-typeSeintje (notify) of Auto-bestelling (order).
  • Wachtlijst-aanmelddatum — wanneer ze zich aanmeldden (datumveld, relatieve waarden zoals -30d mogelijk).

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

DoelBouw 'm zo
Bedankmail aan kopers van een eventHeeft wél gekocht: Evenement = Concert X
Doneerders bedankenTotaal gedoneerd · groter dan · 0
Pre-event mail voor een hele festivalreeksHeeft wél gekocht: Hoofd-evenement = Festival X

Retentie & win-back

DoelBouw '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 activerenAantal bestellingen · is · 1
Verloren klanten via segmentKlantsegment (RFM) · is · Verloren

Loyaliteit & waarde

DoelBouw 'm zo
Trouwe fansAantal verschillende events · ≥ · 3
TopklantenKlantsegment (RFM) · is · Kampioenen
VIP op bestedingLifetime besteed (€) · ≥ · 500
Nieuwe klanten verwelkomenLevensfase · is · Nieuw

Cross-sell & gedrag (kocht X maar niet Y)

DoelBouw 'm zo
Kocht X, mist het vervolgHeeft wél gekocht: Evenement = X EN Heeft géén gekocht: Evenement = Y
Genre-fan die een titel mistHeeft wél gekocht: Categorie = Jazz EN Heeft géén gekocht: Evenement = Z
Bezoekers van een locatieHeeft wél gekocht: Locatie = Theater Y

Wachtlijst

DoelBouw 'm zo
Wachtlijst van een event informerenWachtlijst-evenement = Concert X
Wilde erbij, maar kocht nietWachtlijst-evenement = Concert X EN Heeft géén gekocht: Evenement = Concert X
Iedereen die ooit op een wachtlijst stondWachtlijst-evenement · heeft een waarde

Demografisch & combinaties

DoelBouw 'm zo
Lokale doelgroepWoonplaats · bevat · Amsterdam
Opt-in nieuwsbrief in een regioVoorkeuren/opt-in · is · aangemeld EN Postcode · begint met · 10
Loyaal in een categorieAantal 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 / aanwezigheidseat_checked_date gebruikt 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