General
This is a lightweight alternative to other newsletter & newsletter-subscription modules.
It can update / create a subscriber in a list in Mailchimp with MailChimp API 3.0. It does not provide any forms or validation, so you can feel free to use your own. To protect your users, it does not save any user data in logs or sends them to an admin.
This module fits your needs if you...
...use Mailchimp as your newsletter / email-automation tool
...want to let users subscribe to your newsletter on your website
...want to use your own form, validation and messages (with or without the wire forms)
...don't want any personal user data saved in any way in your ProcessWire environment (cf. EU data regulation terms)
...like to subscribe users to different lists
...like the Mailchimp UI for creating / sending / reviewing email campaigns
You can find it here: https://github.com/danielstieber/SubscribeToMailchimp
Let me know what you think and if I should add it to the Modules Directory.
Setup
Log into your Mailchimp account and go to Profile > Extras > API Keys.
If you don't have an API Key, create a new one.
Copy your API Key and paste it in the module settings (Processwire > Modules > Site > SubscribeToMailchimp).
Back in Mailchimp, go to the list, where you want your new subscribers.
Go to Settings > List name and defaults. Copy the List ID an paste it in to the module settings.
Usage
To use the module, you need to load it into your template:
$mc = $modules->get("SubscribeToMailchimp");
Now you can pass an email address to the module and it will try to edit (if the user exists) or create a new subscriber in your list.
$mc->subscribe('john.doe@example.com');
You can also pass a data array, to add additional info.
$mc->subscribe('john.doe@example.com', ['FNAME' => 'John', 'LNAME' => 'Doe']);
You can even choose an alternative list, if you don't want this subscriber in your default list.
$mc->subscribe('john.doe@example.com', ['FNAME' => 'John', 'LNAME' => 'Doe'], 'abcdef1356'); // Subscribe to List ID abcdef1356
Important Notes
This module does not do any data validation. Use a sever-sided validation like Valitron
Make sure that you have set up your fields in your Mailchimp list. You can do it at Settings > List fields and *|MERGE|* tags
Example
Example usage after a form is submitted on your page:
// ... validation of form data
$mc = $modules->get("SubscribeToMailchimp");
$email = $input->post->email;
$subscriber = [
'FNAME' => $input->post->firstname,
'LNAME' => $input->post->lastname,
];
$mc->subscribe($email, $subscriber);
Troubleshooting
In case of trouble check your ProcessWire warning logs.
I can't see the subscriber in the list
If you have enabled double opt-in (it is enabled by default) you will not see the subscriber, until he confirmed the subscription in the email sent by Mailchimp
I get an error in my ProccessWire warning logs
Check if you have the right List ID and API Key.
Check if you pass fields, that exist in your list.
Check if you pass a valid email address.
Go to Mailchimps Error Glossary for more Information
How To Install
Download the zip file at Github or clone directly the repo into your site/modules
If you downloaded the zip file, extract it in your sites/modules directory.
You might have to change the folders name to 'SubscribeToMailchimp'.
Goto the modules admin page, click on refresh and install it