Sessie 19 november 2025: MailChimp ECA + Openbaar Profiel¶
Datum: 2025-11-19
Duur: ~1 uur
Status: In progress
π Doelen van deze sessie¶
- β Openbaar profiel form configureren
- β MailChimp auto-subscribe bij registratie opzetten
- βΈοΈ User dashboard pagina (uitgesteld naar morgen)
β Wat is afgerond¶
1. Openbaar Profiel Afgemaakt¶
Fields toegevoegd:
- β
field_foto - Profielfoto (image field)
- β
field_locatie - Locatie/Plaats (string)
- β
Bestaande fields: weergavenaam, bio, beroep, website
Form display geconfigureerd: - Via UI: alle fields zichtbaar gemaakt - Volgorde: weergavenaam β foto β bio β beroep β locatie β website - Placeholders toegevoegd voor gebruiksvriendelijkheid
Label aangepast:
- β
field_student_instelling hernoemd naar "Opleiding"
- Command: ddrush config:set field.field.profile.customer.field_student_instelling label "Opleiding" -y
2. MailChimp Auto-Subscribe Module Gemaakt¶
Probleem: ECA + MailChimp had geen "subscribe" action beschikbaar
Oplossing: Custom module vg_mailchimp_subscribe gebouwd
Module details:
- Locatie: web/modules/custom/vg_mailchimp_subscribe/
- Hook: hook_user_insert() - triggert bij nieuwe user
- Functionaliteit:
- Check field_nieuwsbrief = TRUE
- Haalt email, naam (field_weergavenaam), beroep (uit customer profile)
- Subscribe via MailChimp API met merge vars:
- EMAIL
- FNAME / LNAME (gesplitst van weergavenaam)
- MMERGE3 (beroep)
- Double opt-in enabled
- Error logging naar watchdog
Code:
function vg_mailchimp_subscribe_user_insert(UserInterface $user) {
if ($user->hasField('field_nieuwsbrief') && $user->get('field_nieuwsbrief')->value) {
$list_id = '0dc076aa56'; // DEV test list
// ... haalt user data op ...
$mailchimp_lists->subscribe($list_id, $email, $merge_vars, [], TRUE);
}
}
Status: Module enabled en actief
3. ECA Poging (niet afgemaakt)¶
Geprobeerd: - ECA BPMN modeller gebruikt - START event: "Insert content entity: User" - Gateway condition: "Entity: compare field value" - field_nieuwsbrief = TRUE - Probleem: Geen subscribe action beschikbaar in mailchimp_eca
Geleerd:
- mailchimp_eca heeft alleen data-ophaal acties, geen subscribe
- Token syntax: user niet [user] in entity field
ECA model: Opgeslagen maar niet compleet - kan later nog bruikbaar zijn
π§ Technische Details¶
Modules Enabled¶
- β
mailchimp_eca(blijkt alleen get-functies te hebben) - β
eca_development(voor custom actions, niet gebruikt uiteindelijk) - β
vg_mailchimp_subscribe(custom module)
MailChimp Configuratie¶
- API Key: Geconfigureerd (opgeslagen in config)
- DEV List ID:
0dc076aa56(Voedingsgeneeskunde d8dev Test) - Merge Fields: EMAIL, FNAME, LNAME (standaard), MMERGE3 (beroep)
- Double Opt-in: Enabled
Profile Configuration¶
# Openbaar profiel fields
- field_weergavenaam (string)
- field_foto (image)
- field_bio (text_long)
- field_beroep (list_string, shared met customer)
- field_locatie (string)
- field_website_praktijk (string, shared)
β οΈ Issues & Learnings¶
Issue 1: mailchimp_eca Geen Subscribe Action¶
Probleem: Module heeft alleen Get signup lists en Get signup list mergevars
Waarom: mailchimp_eca is bedoeld voor data ophalen, niet actions
Oplossing: Custom module gemaakt met directe API call
Issue 2: ECA BPMN Syntax¶
Probleem: Error bij opslaan - "requires token name, not token: remove brackets"
Fix: [user] β user in entity veld
Learning: ECA tokens in sommige velden zonder brackets
Issue 3: Geen PHP Execute in ECA¶
Geprobeerd: eca_development enablen voor custom code
Resultaat: Geen "Execute PHP" action beschikbaar
Conclusie: Drupal hook in custom module is beter/veiliger dan inline PHP
π Files Created/Modified¶
Nieuwe Files¶
web/modules/custom/vg_mailchimp_subscribe/vg_mailchimp_subscribe.info.ymlweb/modules/custom/vg_mailchimp_subscribe/vg_mailchimp_subscribe.module
Modified Config (via UI)¶
core.entity_form_display.profile.openbaar.default- form displaycore.entity_view_display.profile.openbaar.default- view displayfield.field.profile.customer.field_student_instelling- label change
Field Created¶
field.storage.profile.field_foto(image)field.field.profile.openbaar.field_fotofield.storage.profile.field_locatie(string)field.field.profile.openbaar.field_locatie
π TODO voor Volgende Sessie (20 nov)¶
Prioriteit 1: Testen & Valideren¶
- Test user registratie met nieuwsbrief checkbox
- Check watchdog logs:
ddrush watchdog:show --filter=vg_mailchimp - Verifieer in MailChimp DEV lijst of user is toegevoegd
- Test merge fields (FNAME, BEROEP) in MailChimp
Prioriteit 2: User Dashboard Pagina¶
- Layout Builder voor user pagina configureren (al enabled!)
- Views maken/configureren:
- Mijn bestellingen (commerce_order)
- Mijn profielen (customer + openbaar)
- Downloads/facturen
- Blocks toevoegen aan user page layout
- Navigatie/tabs voor user dashboard
Prioriteit 3: MailChimp Uitbreiden¶
- Unsubscribe functionaliteit op user pagina
- Re-subscribe optie als user later van gedachten verandert
- Status tonen: "Je bent aangemeld voor nieuwsbrief"
- Tags toevoegen in MailChimp (bijv. "Website Registration")
Prioriteit 4: Registratie Flow Verbeteren¶
- Welkomstmail tekst verbeteren
- User registratie confirmation page verbeteren
- Redirect naar "Vul je profiel aan" na registratie
- Help tekst bij nieuwsbrief checkbox
Optioneel/Later¶
- Field validatie: KVK (8 cijfers), BIG (11 cijfers)
- ECA model afmaken (nu we weten hoe het werkt)
- Live MailChimp lijst ID configureerbaar maken (niet hardcoded)
- Admin config form voor list ID selectie
π Geleerde Lessen¶
- ECA vs Custom Module
- ECA is krachtig voor standaard flows
- Voor complexe API calls: custom module is beter
-
Custom module = meer controle, logging, error handling
-
MailChimp Modules
mailchimp_ecaβ complete ECA integratiemailchimp_listsservice heeft alle API functies-
Direct service gebruiken is simpeler dan ECA workarounds
-
BPMN Modeller
- Visueel aantrekkelijk maar soms lastig voor complexe flows
- Token syntax verschilt per veld type
-
Opslaan vroeg en vaak - syntax errors komen pas bij save
-
Drupal Hooks
hook_ENTITY_TYPE_insert()perfect voor "after save" actions- User entity heeft direct toegang tot fields
- Customer profile moet via referenced entities
π Gerelateerde Bestanden¶
- Vorige sessie:
20251113-users-profielen-mailchimp.md - Overzicht:
commerce-setup-overzicht.md
π Volgende Sessie Planning¶
Morgen (20 nov): 1. Testen MailChimp subscribe (30 min) 2. User dashboard bouwen (1-1.5 uur) 3. Unsubscribe/resubscribe op user page (30 min)
Deze week: - Registratie flow polish - Field validatie - Admin configuratie
Session end: 17:06
Saved by: Collega interrupt (belangrijk)
Next: Morgen verder met testen + user dashboard