PHPList Autoresponder Plugin
By Cameron Lerch
We've been running phplist ever since our MailChimp fees approached $100/month. By setting up phplist on our own servers and managing our lists ourselves, we save ourselves thousands a year. But phplist, which mostly does a good job, lacks a number of useful features--one of the largest missing features being an autoresponder.
Why doesn't a solution already exist?
If you take a look at the phplist forum (how most plugins/addons are distributed for phplist) you will see a few odd-ball hacked up autoresponder solutions. The major roadblock to a good autoresponder plugin is phplist's poor plugin architecture so a lot of people have tried to hack things together. We gave the most popular hack a try: http://forums.phplist.com/viewtopic.php?f=7&t=36528, which requires something like 3 painful phplist core hacks to get it to work. After setting up the hack and getting it running, we found, only after receiving hundreds of complaints from our subscribers, that phplist was sending emails every 10 minutes to everyone in my database--needless to say we lost a large number of subscribers due to this and we vowed to write a proper autoresponder plugin that required no hacks and was dead easy to install.
A hack free phplist autoresponder plugin--is it even possible?
A hack free phplist autoresponder plugin--is it even possible? Barely. And again, the reason is phplist's plugin architecture. By examining the phplist core I manged to find a few loopholes that I could exploit in order to keep my plugin hack free. One of the nicest features of the plugin is that it completely reuses phplist's message queuing functionality. Autoresponder messages get sent out just as a normal campaign would get sent out--via processqueue. So all of the regular features work, including batching. All of the existing autoresponder hacks bypassed phplist's message queue and directly sent messages themselves without batching, introducing way more complexity and problems!
The autoresponder plugin works by using phplist's draft system. One writes a message as one would if one was sending a regular campaign. Instead of "sending" the message, one simply "saves" the message, which causes phplist to save the message as a draft. Click on the autoresponders sidebar link and add a new autoresponder for that draft message. There's even an "only send to new users" option, which is incredibly important if you're adding new autoresponders to large existing lists like we are. If you setup an autoresponder for 6 hours, do you really want to send that autoresponder to everyone on your list, even if they've been subscribed for months? Probably not! The autoresponder plugin gives you the option to make that decision.
If this sounds good, give it a try by downloading below. We'd love to hear your feedback.
Current version is v0.2.
v0.2 - fixed bug with user selection query
v0.1 - initial release
Where do I get the phplist autoresponder plugin?
The current version is v0.2 and was developed against phplist 2.10 stable (not 2.11). We have lightly tested the plugin ourselves with phplist 2.10.18 and are now using it with our 15k+ subscriber lists and would appreciate feedback/bug reports.
Get the phplist autoresponder plugin here: http://brightflock.com/phplist_autoresponder_latest.tar.gz
How do I use the phplist autoresponder plugin?
From the included INSTALL.txt:
- Unpackage into your phplist plugins dir as you would with any plugin
- Ensure that the .htaccess file included with the plugin package exists--this will allow you to call the process.php script from cron. If you're not using apache, you will need to allow execution of process.php.
- Visit the autoresponder section in phplist admin. Click on the manual Process Autoresponders button to determine what URL to setup in cron to automate the process.
- Copy the URL from #3 and setup a cron process to call the URL at regular intervals. For example: wget -O - -q -t 1 http://yourphplistdomain.com/admin/plugins/Autoresponder/process.php?key=your_key -- The process.php file is responsible for preparing the message queue ahead of phplist's regular old processqueue, which will send the actual messages. Once Autoresponder's process.php runs, the autoresponder messages will start sending the next time processqueue runs.
- Add some draft messages to use as Autoresponders. The Autoresponder plugin uses draft messages as the message that is sent as an autoresponder. Be sure that you select some lists in your draft message--new members of the lists you selected for the message will get the autoresponder message.
- Create an autoresponder in the phplist admin section. For each autoresponder created you will get a new user attribute. That user attribute will be populated with the date the message was sent to the user. If the attribute is empty, the message has not been sent.
What is the license?
The phplist autoresponder plugin is licensed GPLv3
I'd like to donate
We have sponsored the initial development of this plugin and donations are gladly accepted and fund further development. Thank you!
Who do I contact for support requests?
Send an email to firstname.lastname@example.org or the phplist forum.