We just made marketing automation easier with “automated series”

For years we have had automation options within our marketing platform.  But until now we have always felt as if they were hard to find, and even worse, hard to manage over time.  So we decided to make it easier to manage and added a whole bunch of new automation features along the way.

A visual work flow

You can now easily create in-depth automations that include any number of actions and that can split off with conditional branches.

The power of “wait for” and now “wait until”

“Wait for” is an option that allows you to wait a certain number of hours, days, weeks, etc… between actions.  This is a common option for auto responders (wait X hours after subscribing to send the responder)  You still have the power of “wait for” but now you also have “wait until”   This new option allows you to have further actions happen only when conditions you set are met.   So you could wait until a contact has completed a specific action, has a contact field with certain values, etc..

Branching based on conditions

You can at any time in your series branch off into different sets of actions based on conditions you set.  This could include past actions/interactions that the contact completed, ERJA/EGEO data, or any custom fields.

New automation actions

In addition to the new “wait until” option we have added other actions including the following:

  • Add note (have a custom note added at any time in your automated series)
  • Notify someone (email specific people about the contact at any time in your automated series)
  • Initiate webhook (POST the contact’s information to a specific URL at any time in your automated series)
  • Start or end a different series
  • Subscribe/unsubscribe from lists
  • Update any custom fields

What’s next & your feedback

This is just the start of what we have planned.  There are some exciting new features we will be rolling out in the future that will allow you to automate and improve your marketing by connecting up with your site, applications, and more…

If you have any feedback on what you would like to see added, ways you wish to automated your marketing, etc… we want to hear from you.  Add your comments to the bottom of this page or shoot us an email anytime at help@activecampaign.com

View & restore to past revisions of your email campaigns & templates

All accounts now have access to a new feature called revisions.  With revisions you have a log of your 50 most recent changes/saves of your email.  This is available both for email campaigns and templates.

When editing a campaign or template you will see a revisions option in the upper right.  Click that to view a history of past revisions.  You can then view the revision and/or restore to a specific revision.  We save a revision every couple minutes while you edit your email or template.

Something we have been working on….

More details & screenshots coming soon…

Etsy + ActiveCampaign = The complete Etsy email marketing solution

Etsy is an incredible site for creative artists to sell their creations.  As we love to help small businesses grow – what could be better than helping Etsy stores keep in touch with their customers while increasing their product sales?

We set out to create a total marketing experience for Etsy.  No copying/pasting of customer information.  No manually adding your featured products to newsletters.  Easily connect your store to ActiveCampaign to keep in touch with your customers and promote select products from your store.  You can save time & improve your sales with our Etsy marketing tools.

Keep in touch with your customers

Your customers information will automatically be added to ActiveCampaign.  This allows you to send them newsletters, automated order thank you’s, and more!

Send emails & newsletters that have your products embedded

With any email or newsletter you send you can easily include live product data from your Etsy store.  Connecting your Etsy account with ActiveCampaign takes only a couple of clicks.

A quick preview of how you can create custom templates for the new email designer

We will be including many new email templates when we release the new email designer. But what if you wanted to have your own custom email template that utilizes all of the new email designer functionality?  Just like the email designer – we made this easy to do.

(If you haven’t watched our first preview video I would suggest watching that first)

When creating a custom template you need to think about 3 different things:

  1. Editable Regions = These are the regions that content can go into. Users will be able to add and move content blocks within these regions.
  2. Style Regions = These are the style regions that your users will see when they click “style options” in the campaign designer.  They can adjust the background, font, etc… on whatever region you set.  Regions can be set on any block such as a td, div, etc..
  3. Content Blocks = These are the actual blocks of content.  Think of it as your filler content.  Content blocks can be edited (or deleted) by your users.
We will have full documentation prior to release on all the options available to template designers.  Here are some notable items to be aware of though:
  • The template designer has the same capabilities of the campaign designer with adding content
  • Create any number of themes per template
  • You can enter custom CSS for each theme
  • When viewing your template you can click anywhere and quickly add CSS for what you clicked on (our CSS helper will add the proper class name for you)
  • We will auto resize all of your images based on the block that you upload or drag/drop in (although you do have the option to set a fixed size)
  • Inline styles are taken care of for you (so no need to code with inline CSS)
  • We will automatically set a lot of the mobile/responsive CSS classes required to have a mobile version of your email. You can then tweak as desired
  • You can quickly switch between design & source modes
  • We will tell you if there are any issues with your code (including the line number)
  • Full testing capabilities (send test, spam filter testing, etc..) while you edit your template

 

“Subscribers” have become “Contacts”

Today we rolled out an important change to our platform. In an effort to make email marketing more understandable and closer to our clients, we decided to change the way we address your contacts. They will no longer be called “Subscribers” in the system, but “Contacts”.

A couple of things worth knowing:

  • Subscribers are from now known as Contacts
  • Opted-in subscribers will now be “confirmed contacts”
  • If a contact does not have a name we will refer to them as “Recipient” for any personalized content
  • The API has changed to reflect this update. Old API calls will continue to work as they did before.
  • Your existing Web Hooks will still work as expected.

A new subscriber/contact list page

Today we released a new version of our subscriber list page (which we will be referring to as “Contacts” in the near future)

In our on-going mission to help you know your subscribers at a deeper personal level, we are now including personal details about them right in the list view.  This includes:

  • A photo of your contact is shown when available
  • The location of the contact is shown when available
  • Social profiles (Twitter, Facebook, LinkedIn) are shown when available.  (currently requires you to subscribe to ERJA)
  • You are able to email a single contact directly form the contact list page
  • Custom fields (that you choose to show on the list page) are now shown under the contact.  This allows you to show many more fields in a clean & easy to read format.

The Trouble with Imports (APC & PHP setlocale bizarreness)

As some of you may have noticed, we had a few problems with our import system last week. After several hours of investigation and a fix gratefully being applied, we wanted to share some of the details of what happened.

The Short Version

As of late last week, we noticed some problems when people were visiting the Subscriber Import page. Many times, things would work fine; sometimes, you might be shown a server error. That’s pretty confusing (and frustrating!) for anyone; the worst part was, though we could reproduce it, we couldn’t make any sense of it.

After a lot of investigation, we were able to track down the problem to some new code we added around that time. Our intention was to set the locale, useful for those with languages that may format dates a bit differently than English, but it turns out our cache system (which helps us serve pages as fast as we do) had some problems working with different locales.

You might be thinking that doesn’t make any sense. We think you’re right, and we were pretty confused; this was not the most straightforward debugging session, to say the least. But our testing confirms that code was the culprit.

If you’re worried about the locale not being set, don’t fret; we have some plans to reintroduce that feature, but in another form. From here on, your visits to the import page should be error-free.

The Long and Technical Version

As a programmer, I like bugs that make sense: the page isn’t loading, and there’s a typo? That would do it. Oh, we forgot to save this color change to the database; that’s why it’s not reflected when I refresh the page.

I don’t like bugs that make no sense, so the bug here was pretty frustrating not only for me but everyone in the office. It began happening in a third-party library for connecting to Google Contacts: one of the interfaces there (apiIO) was not defined. What an odd thing, particularly for some code we’d been using for a while; the bug nevertheless corresponded with a new feature we released, and we were pretty wary that something with that feature wasn’t interacting well with the rest of our software.

Not soon after we began looking, we had disabled APC, which is the cache system we use for PHP, and the error magically disappeared. That’s stranger, and told us right away that whatever we were looking for wasn’t going to make a lot of sense. (We were right about that in the end.) It also told us that we needed to be a bit less conventional in our thought process.

The interface in question is, of course, present in one of the code files of Google’s library. We thought perhaps the way those files are included doesn’t work well with APC, so we stopped what Google was doing (setting the system’s include path) and changed the library to include files using an absolute path. It seemed like it was working! — but then we saw server errors again. Back to the drawing board.

The apiIO interface is really the only one in the library, and we don’t tend to use that particular feature of PHP ourselves. What’s an interface but a class with empty methods, right? So we changed apiIO to actually be a class. It seemed like it was working! — but no.

Sigh. Well, APC is turned off for now, and in the meantime another error popped up in which some methods in a class our sending engine uses seemed not to exist, so we turned our attention to that (since sending is important). (It should be pointed out that this problem was only affecting one of our users — everyone else was able to send just fine.) Turns out the class has all the methods it should; if you run the PHP function to grab all of the class methods, they’re all there. But it turns out a few of them are missing from the object.

Let’s make it weirder. The methods that were missing all had a capital letter ‘I’. They should be there, but they weren’t, and by this time we were thinking this was more like magic than programming. We knew by the time the error happens that the methods are gone; we also knew, through testing, that when we start to send with this example, the methods are there. Sometime in the middle, they go away — which is weirder still.

So we did divide and conquer; pick some code that runs half-way through the error case and the beginning. Are the methods there or not? On and on we went, brute-force, until we tracked it down to — PHP’s setlocale function. Huh?

This particular user had been using our Turkish language support. Setting the locale for that turns out to have a longstanding bug in PHP, one in which our version was still susceptible. It seems that setting the locale has a somewhat illogical but nevertheless destructive impact on class methods (in particular, with the capital letter ‘I’). When we stopped setting the locale, sending was fixed.

And then we thought, hey — that error with Google’s library when APC was turned on? Didn’t that interface have a capital letter ‘I’ in it? It did! But the people getting the error weren’t using Turkish; they were, in many cases, using only English. Still, we had a theory, and it sort of made twisted sense. So we turned off setting the locale for everyone, and turned on APC, and…

It worked. The import page; everything worked. It shouldn’t have mattered, and it still doesn’t make any sense, but setting the locale made methods, classes and interfaces disappear, in particular those with a capital letter ‘I’. Thus ended one of the most bizarre debugging sessions our developers have ever had.

Connect with External Services for Automatic Importing

Our external imports (to services like Salesforce, Wufoo, and Capsule) has always been a manual, one-time import. This is fine is you just start using our service and would like to bring in everyone from another service. The problem is that every time you update someone in the external service, that change would not come across to ActiveCampaign until you re-imported. This became a redundant task which reduced the effectiveness of the feature.

So we spent some time updating the import section to allow for automated imports from external services. When you connect to your external service you’ll have the option to let us check for new updates on a recurring basis (a few times an hour or week), or to use the old approach (non-recurring, one-time import):

You can still supply import filters to narrow down the data, and we’ll automatically check if the subscriber already exists (if so, their details are updated).

We’ve also removed the mapping step (where you mapped fields from the external source into ActiveCampaign fields) in order to simplify the entire process. Instead we hand-pick as many relevant fields coming from the external source and automatically create custom fields (and map the data) in ActiveCampaign for you:

Notice in the screenshot above that the new custom fields are labeled with the external source name to start the personalization tag (IE: batchbook-about). This makes it easy to identify the field related to a specific external import source. When the import process runs again (on a recurring basis) it will continue to update those custom fields with data. This speeds up the entire process and let’s you focus on crafting relevant email campaigns for your subscribers.

Initially we’re allowing this new automatic import to happen for four external sources, and plan to add the rest of them very soon:

  1. Nimble
  2. Contactually
  3. Capsule
  4. Batchbook

You will know if a particular source is set up for automatic import if it shows “Auto-Import Capable” beneath it:

For any source that does not have automatic import enabled, you can still perform an import using the old approach (manual, one-time, and ability to map fields on your own).

You can also connect multiple external accounts (using different users or API keys) per source. For example, if you have multiple Contactually accounts (or users with different API access), they can all be added through a single ActiveCampaign account and have an automatic import set up for each.

We are excited to release this improved method of importing subscribers, and we’ll be on the watch for any initial issues, so please let us know if you have any questions, problems, or feedback!

Note: We are slowly rolling this out to all accounts so it might not be available immediately.

Updates to the subscriber view page

Subscriber notes

Ever want to jot something down about a subscriber?  Now you can.  The new subscriber notes tab allows you to add and view any notes pertaining to a specific subscriber.  You can even utilize the API & webhooks to manage this data.

Making social data easier to find

When viewing a subscriber we will now show any available social networks that they are part of as icons underneath their email address.

Email a single subscriber directly or download their vCard

For each subscriber you will now see a new email icon for contacting them directly and a vCard icon to download their vCard file.  You can then import into any application that accepts vCards.

Improved GEO location data

We have been tracking the location and travel locations of your subscribers.  Now we are determing their timezone and showing you their current time along with the ability to discover their travel trends with a larger map.  (expect to see timezone related features popping up throughout the software in the future)