Wat ga je maken?

Het "Subscribe for updates"-formulier uit het ontwerp werkt echt: het e-mailadres komt terecht in je Mailchimp-audience.

Waarom is dit nuttig?

Je leert praten met een externe API. Dat principe (sleutel in .env, HTTP-request, foutafhandeling) is hetzelfde bij Mollie, de KvK-API of een weerdienst.

Geen Mailchimp-account? MailerLite of Brevo werken bijna hetzelfde en hebben ook een gratis plan. Overleg met je docent.

Stappenplan

  1. Maak een gratis Mailchimp-account en een audience. Noteer je API key, je audience ID en je server prefix (het stukje us21 uit je API key).
  2. Zet die drie in je .env en maak er een nette config-regel voor. Zet nooit een sleutel rechtstreeks in je code — die gaat mee je Git-repo in en ligt daarmee op straat.
  3. Zoek in de Mailchimp-documentatie het endpoint op om iemand aan een lijst toe te voegen. Lees welke velden verplicht zijn.
  4. Bouw het formulier + route + controller, met validatie op email.
  5. Doe het HTTP-request met de Httpfacade van Laravel.
  6. Handel fouten af: wat als het adres al bestaat? Wat als Mailchimp plat ligt? Je bezoeker mag nooit een witte foutpagina zien.
  7. Sla het adres ook op in je eigen database, zodat je niet volledig afhankelijk bent van een externe dienst.

Kleine hulpmiddelen

// config/services.php
'mailchimp' => [
    'key'    => env('MAILCHIMP_KEY'),
    'list'   => env('MAILCHIMP_LIST_ID'),
    'prefix' => env('MAILCHIMP_PREFIX'), // bijv. us21
],
$response = Http::withBasicAuth('anystring', config('services.mailchimp.key'))
    ->post("https://{$prefix}.api.mailchimp.com/3.0/lists/{$listId}/members", [
        'email_address' => $validated['email'],
        'status'        => 'subscribed',
    ]);

if ($response->failed()) {
    return back()->withErrors(['email' => 'Aanmelden lukte niet. Probeer het later opnieuw.']);
}
php artisan config:clear   # na het wijzigen van .env