statamic-rad-pack/mailchimp
Statamic Mailchimp addon by Rad Pack that connects Statamic forms to Mailchimp audiences, making it easy to capture newsletter signups, map form fields, and manage subscribers without custom integration code.
composer require statamic-rad-pack/mailchimp, then publish the config (php artisan vendor:publish --tag=mailchimp-config — confirm the exact tag in the README for your version). Keep MAILCHIMP_API_KEY and the audience/list ID in .env so config:cache in production doesn't bake secrets into a tracked file.abc123...-us21). The client derives the base URL from that suffix, so a key with the wrong or missing -usXX produces confusing 404/401 responses that look like auth failures.config/mailchimp.php (credential and merge-field mapping), the addon's service provider (what's bound and what events fire), then the form integration itself — that's where merge-field mapping and the subscribe call happen.newsletter form in resources/forms/ with an email field, point it at a throwaway sandbox audience, submit it from the front end, and confirm the member appears in Mailchimp. That single pass validates credentials, audience ID, merge-field mapping, and error surfacing all at once.resources/forms/newsletter.yaml → one Mailchimp audience. If you need segmentation (product updates vs. events), prefer Mailchimp groups/interests on a single audience over multiple forms with duplicated validation logic.FNAME, LNAME, PHONE, custom tags) must already exist on the audience and be spelled exactly. Keep the field-handle → merge-tag mapping in config so a field rename in the form doesn't silently drop data.accepted rule) for GDPR-adjacent jurisdictions. Statamic stores the submission, so you get an audit trail Mailchimp won't give you — store a timestamp and the consent text version alongside it.title: "Member Exists" for a duplicate email. Catch that specific case and log at info; otherwise your error dashboard lights up every time someone re-submixes the newsletter form.pending and Mailchimp sends the confirmation email. Don't build a UI that says "you're subscribed" — say "check your inbox to confirm."local and staging at a sandbox audience via .env, or gate the integration behind a config flag so seeding and QA runs never touch the real list.Http::fake() on the Mailchimp endpoints (https://<dc>.api.mailchimp.com/3.0/...) with fixture responses for 200, 400 Member Exists, and 500. Assert that a duplicate submission is handled as success and that an API error doesn't throw a 500 at the visitor.FNAME required and your form doesn't collect it, every submission fails with a 400 that a visitor never sees. Turn off "required" in Mailchimp for anything the form doesn't send, or send a placeholder.warning on non-2xx and set up an alert on that log channel — otherwise you discover a broken API key weeks later.php artisan config:clear and queue:restart (if you've queued the integration). Most "the new behaviour didn't apply" reports are cached config or old workers.Statamic\Facades\Form submissions will hit 429s.composer.json and re-run your fixture tests after upgrading — a patch bump that changes a request shape or a limit is cheap to catch in tests and expensive to catch in production. v6.2.5 itself is a patch with no migration work expected.How can I help you explore Laravel packages today?