TL;DR — Expanding on the summary I gave in Apply Filters episode 35 on our move from Campaign Monitor to Drip. I wrote a PHP script (below) to sync subscribers from one to the other.
As you may have noticed, we’ve kicked things up a notch here on the blog in the past couple of months. The goal has been to publish one high quality, original piece of content (blog post, video screencast, documentation, etc) for WordPress developers every week. Each member of the team takes their turn writing and the rest of us pitch in to refine it. Prior to this, we published on average once per month and it was always news about WP Migrate DB Pro.
For those subscribed to our mailing list, going from a monthly email to weekly is a pretty huge jump. I wanted to give them the ability to easily opt out of the weekly emails but continue to get news about WP Migrate DB Pro. I started tinkering with Campaign Monitor (our email marketing software), hoping it wouldn’t be too difficult.
First Try with Campaign Monitor
I created a “Receive emails about” custom field. Then when someone unsubscribed, they would get a screen asking what they’d like to unsubscribe from exactly.
Great, exactly what I wanted. Now to update the subscribe forms on our site.
I wanted the form on our blog (the one that pops up when you scroll to the bottom) to only subscribe people to the weekly article list.
This was a problem.
When you submit the subscribe form, it overwrites the entire “Receive emails about” setting. For example, if you were already subscribed to “WP Migrate DB Pro News”, submitting the form on our blog would unsubscribe you from it in addition to subscribing you to the weekly article.
I emailed Campaign Monitor support and they suggested I work around this using their API. Dang. I was really hoping to not have to go down the rabbit hole, but there I was with my nose in the dirt.
I’d been considering moving to more powerful email marketing software for a while but it had never been a priority. Campaign Monitor had worked ok for what I needed so far. But since I had to sink a bunch of time into API coding anyways, I decided I might as well do it against a new API.
I’d been enjoying listening to Rob’s journey with Drip on the Startups for the Rest of Us podcast. I liked what I’d been hearing more recently with his shift to building out more of a marketing automation solution. It sounded like a platform that we could grow into and that would continue to grow with our needs.
After signing up and tinkering, I found that Drip met our immediate needs nicely. It did take some time to get my head around Drip though as some things are conceptually different than Campaign Monitor. For example, a “Campaign” in Drip is really more like a “List” in Campaign Monitor.
How is Drip different?
Rob does a great job explaining the differences between Drip and MailChimp, which is very similar to Campaign Monitor:
Examples of things Drip has that MailChimp does not:
- In Drip, an email address = a person. So no matter how many things they are subscribed to in Drip, you have a single view of all of their activity, your interactions with your website and emails (opens, clicks), and you can look all the way back to how they first found your website. Then all the way forward through every action they’ve ever taken with you.
- Subscriber segmenting. In Drip you can send a broadcast to all subscribers who have opened or clicked an email in the past 30 days, are subscribed to a particular campaign, who are not tagged with Customer, and who purchased from you prior to 30 days ago. Just 1 example of the complexity of the subscriber segmenting abilities that you cannot accomplish in MailChimp/AWeber.
- Embed liquid tags inside emails, meaning you can have if/then statements inside an email. If someone is tagged as a customer, they see X, if they are not, they see Y.
- Drip performs lead scoring. The more someone interacts with your emails and website, the higher their lead score. Segment on lead score. When their lead score passes a certain threshold, trigger an event (such as tagging them, moving them into a different email sequence, or sending them a one-off email).
- In Drip, tagging is a first-class citizen. You can tag people in bulk with a click. You can tag people when they click a link. You can tag them when they perform any action. And almost all reports can be segmented by tag.
- Reporting. One area where Drip is superior to almost any other email platform. View email open, click and unsubscribe rates for an entire sequence or for each individual email within a sequence. Front and center. View your subscriber growth over time. View unsubscribes by account, sequence, broadcast, or email (and see exactly who unsubscribed from all of those). View how many times any link in any email was clicked, and retroactively tag anyone who clicked a certain link. View all tags in your system. View all events in your system, when they occurred, and which subscribers performed them.
On the flip side…MailChimp has many features Drip does not. Examples:
- iOS and Android apps (they have a half dozen different apps)
- Selection of built in email templates
- Drag and drop email and template editing
- Spam filter diagnostics
- Email client testing
- And others…
Updating Subscribe Forms
Updating the subscribe forms on our site was easy, but the subscribe forms inside our WordPress plugins is another story.
Sure, the forms will be updated in the next plugin release, but that might not be for a while. Plus, not everyone upgrades their plugins. There was definitely a need to keep the existing Campaign Monitor lists in place and sync any new subscribers to Drip.
Syncing Subscribers to Drip
Originally I thought I would just export a CSV from Campaign Monitor and import it into Drip. No big deal. But after realizing the need to do syncing, I was definitely going to need a script.
Our lists in Campaign Monitor are a bit of a mess. We have a list for each of the different places people subscribe from, which also determines what they’re subscribing to.
Obviously it would be nice to clean things up in this move. In Drip, I set up three campaigns:
- Weekly Article
- WP Migrate DB Pro News
- Amazon S3 & CloudFront News
Now when a subscriber chooses to unsubscribe from a campaign, they get a similar page to the one I had setup with Campaign Monitor.
Each Campaign Monitor list relates to one or more campaigns in Drip. As for the source, we can store that in a subscriber custom field in Drip.
For example, if someone was subscribed to the “General News & Updates – deliciousbrains.com footer” list, we would add them to all the campaigns in Drip and set their “source” custom field to “in the deliciousbrains.com footer”. But for someone subscribed to “WordPress Development & Deployment Strategy – deliciousbrains.com blog popup” we we would only add them to the Weekly Article campaign and set their source to “on the blog at deliciousbrains.com”.
The sync script does exactly this. It goes through each Campaign Monitor list and for each subscriber:
- Attempts to create or update the subscriber in Drip
- Records where the subscriber signed up in the “source” custom field
- Subscribes them to the appropriate Drip campaigns
- Removes the subscriber from Campaign Monitor (so it won’t be processed again)
The script ran our initial move to Drip, copying over several thousand subscribers. It now runs every 10 minutes on our server as well to continue syncing new Campaign Monitor subscribers to Drip.
Why record the source as a sentence fragment?
You may be wondering what’s up with storing the source as a sentence fragment. Seems kind of odd, I know. In addition to knowing where subscribers are signing up from, I also wanted to remind the subscriber where they signed up in the emails we send.
Storing it as a sentence fragment allows me to easily insert it into emails with a template tag. In our emails the source shows up at the bottom next to the unsubscribe link.
Drip Already Flexing
I was using autoresponders in Campaign Monitor. When someone subscribed via the form inside the WP Migrate DB plugin, it would automatically send them an email containing a coupon code expiring in 2 weeks. Then 13 days later it would send them a reminder that their coupon code expires tomorrow.
Unfortunately, there was no way to tell Campaign Monitor not to send that second email if the customer had already purchased. So every once in a while we’d get a complaint about that second email. And I don’t blame them. It’s not a great start when the company you just purchased from doesn’t seem to know you’re a customer.
With Drip, I setup a new campaign called “20% off WP Migrate DB Pro coupon code” that sends the same two coupon code emails I was sending with Campaign Monitor. When someone subscribes, an automation rule subscribes them to the “WP Migrate DB Pro News” campaign as well. If that person purchases, a “Customer” tag is applied to the subscriber which triggers another automation rule that removes the subscriber from the “20% off WP Migrate DB Pro coupon code” campaign. They’ll never get that second email. Awesome.
Do I Like Drip?
Yes. Very much. I’ll admit, I was unsure at first, but the more I use it, the more comfortable I get, and the more I like it. The UI is clean and a pleasure to use. I’m looking forward to doing some more integration with our site as I know we’ve only scratched the surface of what it’s capable of.