lwekuiper/statamic-acumbamail
Statamic addon for Acumbamail that syncs form submissions and newsletter subscribers to your Acumbamail lists, so you can manage email marketing campaigns, subscriber tags, and automations directly from the Statamic control panel.
composer require <vendor>/statamic-acumbamail
php please vendor:publish --tag=acumbamail-config
.env and reference them from the published config. Do this before touching the CP — the listing screens will fail or show empty states without a working connection.resources/forms/ YAML — form configuration is where email/consent/list selection is wired up.Start on the Free edition to validate the integration, then decide whether Lite (merge field mapping) or Pro (multi-site) is genuinely needed.
Form-as-configuration, not form-as-code. The addon's model is that a Statamic form maps to an Acumbamail list. Keep the mapping declarative in the form YAML and let editors change list selection in the CP rather than shipping deploys for a list change.
Merge field mapping (Lite/Pro). Map Statamic field handles to Acumbamail merge tags explicitly — do not rely on name coincidence. A typical mapping:
acumbamail:
list_id: "12345"
double_opt_in: true
merge_fields:
email: email
nombre: first_name
apellidos: last_name
Treat this map as the contract between your form and the external schema. Keep it in version control and review it whenever someone edits the form in the CP.
Separate consent capture from subscription. The addon handles the subscribe call; it does not necessarily give you a durable, exportable consent record. Write your own submission record (timestamp, form handle, site, IP, consent text version, and the Acumbamail response/pending status) so you can prove consent later. This is cheap at build time and expensive to retrofit.
Queue the outbound call. Wrap the subscribe in a queued job or at minimum a try/catch. An Acumbamail timeout should not lose the submission or show a 500 to the visitor. Persist the submission locally, dispatch, and retry with backoff on 429/5xx.
Double opt-in is asynchronous by design. Never render "You're subscribed" after submit. The honest states are pending confirmation and already subscribed. Design your confirmation template and your post-submit message around that, and make sure re-submitting an already-pending address doesn't error visibly.
Multi-site (Pro). Configure list and merge mapping per site rather than globally. Sites with different languages or brands should have distinct lists and distinct consent wording. Verify that a submission on site B never falls back to site A's list when B's config is incomplete — that failure mode is silent and pollutes your audience.
Edition boundaries as a design constraint. Free = core subscribe. Lite/Pro = merge mapping. Pro = multi-site. Write your integration code so that a Free install degrades gracefully (fields simply not mapped) rather than throwing on a missing config key. That keeps the upgrade path open without a refactor.
php please stache:clear / php artisan config:clear as appropriate. Stale config after an edition or credential change looks exactly like a broken API key.Http::fake() covers it. If the addon wraps its own HTTP client, your tests need to fake the underlying binding, not Laravel's facade. Check the service provider bindings before writing integration tests.v1.0.0 is an initial release; the config schema and merge-mapping format are the most likely things to shift. Constrain to ^1.0 and read changelogs before minor bumps in the first few releases.How can I help you explore Laravel packages today?