Skip to content

Sessie 19 november 2025: MailChimp ECA + Openbaar Profiel

Datum: 2025-11-19
Duur: ~1 uur
Status: In progress

πŸ“‹ Doelen van deze sessie

  1. βœ… Openbaar profiel form configureren
  2. βœ… MailChimp auto-subscribe bij registratie opzetten
  3. ⏸️ 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

  1. web/modules/custom/vg_mailchimp_subscribe/vg_mailchimp_subscribe.info.yml
  2. web/modules/custom/vg_mailchimp_subscribe/vg_mailchimp_subscribe.module

Modified Config (via UI)

  • core.entity_form_display.profile.openbaar.default - form display
  • core.entity_view_display.profile.openbaar.default - view display
  • field.field.profile.customer.field_student_instelling - label change

Field Created

  • field.storage.profile.field_foto (image)
  • field.field.profile.openbaar.field_foto
  • field.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

  1. ECA vs Custom Module
  2. ECA is krachtig voor standaard flows
  3. Voor complexe API calls: custom module is beter
  4. Custom module = meer controle, logging, error handling

  5. MailChimp Modules

  6. mailchimp_eca β‰  complete ECA integratie
  7. mailchimp_lists service heeft alle API functies
  8. Direct service gebruiken is simpeler dan ECA workarounds

  9. BPMN Modeller

  10. Visueel aantrekkelijk maar soms lastig voor complexe flows
  11. Token syntax verschilt per veld type
  12. Opslaan vroeg en vaak - syntax errors komen pas bij save

  13. Drupal Hooks

  14. hook_ENTITY_TYPE_insert() perfect voor "after save" actions
  15. User entity heeft direct toegang tot fields
  16. 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