Huge Campaign Monitor API Update
Today we launched a sweeping update to our popular API. For those who aren't familiar with it, our API let's you access almost all of the functionality within Campaign Monitor from your own applications. Send a campaign, sync your subscribers, add a new client and so much more, all from your own application. It's what all our integrations and plugins are built on.
Our API is getting pretty darn popular these days with more than 70 requests per second, which grows considerably during our busiest times. Yeah, that number blew me away too.
What's new...
This update is a complete rethink of our API infrastructure and includes a pile of new functionality that you guys have been asking for. Given the significance of this update, we've gone to a completely new version of the API (hello, Version 3). We've also redesigned our API documentation, which is now much easier to navigate and includes everything you need to get started.
While there are loads of goodies packed into this update, here are a few of the major highlights that stand out.
RESTful all the way
One of the biggest changes in this new version is that the entire API is now RESTful. This means we've gone for a resource oriented architecture with descriptive URIs that should be easy to follow. Input and output is now supported in both XML and JSON. If you're interested, we've gone into a lot more detail about this new approach in our new docs.
Segments are here
Previously you had no way of managing segments via the API. Now you can create them, add new rules, get the subscribers that match a segment and so much more. Check out the docs to get started.
Import multiple subscribers in a batch
One of the more frustrating parts of the previous API was that subscribers had to be imported one at a time. Not a problem for a smaller list, but when you're trying to import a list of 20,000 subscribers, things can get ugly. Now you can easily import a large list of subscribers, including custom field data in a batch. Here are the docs covering this new functionality.
Real-time activity for subscribers and campaigns
This one is awesome. You can now access your entire history with any subscriber in your account. This includes all campaigns they were sent, when they opened it, when the clicked a link and much more. For every event like an open or click, we'll also return exactly when it happened, along with the IP address it happened from, opening the door to some very cool geo-location possibilites with the API.
The same data is also now available on a per-campaign basis. For example, you can see when all the opens for a particular campaign happened including who opened, the time of the open and the IP address it happened from. The same data is available for clicks and unsubscribes too.
Monthly billing for clients
When we launched monthly billing a couple of months back, we didn't get a chance to update the API to match. Now you can easily set a client as paying monthly, set their mark-up percentage and even the currency they should be paying in each month. Here are all the details you need to get started.
Better draft handling
While the previous version of the API let you create and send campaigns, there was limited functionality around draft campaigns. You can now easily get a list of all draft campaigns for a client, delete a draft and easily send a preview of a draft to any number of email addresses.
Paged results
This is a huge improvement for anyone working with a large number of results from the API. Any requests that typically return a large set of results now offer paging where you can split the results over multiple pages. You even have complete control over how these results should be returned including page sizes, sort order and sort direction.
Wrappers in Ruby, Python, PHP and .NET ready to roll
We didn't want to leave you empty handed with the new version of the API, so all popular API wrappers have been updated for the new API. Each wrapper covers all of the new functionality too, so you can get up and going in Ruby, Python, PHP and .NET extremely quickly.
Are you still supporting v2 of the API?
Absolutely. While we strongly encourage anyone working with the API to move towards the latest version, we'll continue to support version 2 and all of the existing plugins and integrations that rely on it. You can access the Version 2 API docs at their new home here.
Go forth and build
Now that all of this new functionality is out in the wild, we can't wait to see what you guys come up with. We've put a lot of work into making the snazzy new API documentation as clear as possible, but please let us know if you think we're missing something or if anything is unclear. And as always, make sure you get in touch if you release anything that connects to it.
Posted in: New Features & Updates
Comments for this entry are closed.
Browse the Blog
- Behind the Scenes (31)
- Interviews & Buzz (133)
- New Features & Updates (234)
- Observations & Answers (221)
- Tips & Resources (491)
Explore the Email Gallery
- All designs
- One column (391)
- Two column (230)
- Three column (36)
- Announcement (139)
- Newsletter (464)
- Invitation (39)
Beautiful! “@cameronmoll: Email successfully @CampaignMonitor‘d:” http://t.co/KbrfnS1a ^RH
Follow us on Twitter-
Free templates
Over 30 professionally designed email templates tested in all major email clients.
-
Single-click testing
See screenshots of your email in 20+ email clients and check against spam filters.
-
Not just good looks
Track every aspect of your campaigns like opens, clicks, forwards, sales and more.
About • Our Book • Contact • API • Anti-spam Policy • Terms of Use • Privacy Policy
Proud founders of the Email Standards Project and supporters of the design community.


19 Comments
Jonathon Joyce
December 1, 2010 12:06pm
Great to hear!
I suppose i better get a new version of the ColdFusion wrapper created :)
Jonathon Joyce
December 1, 2010 12:13pm
Although you still cant create a draft campaign by passing through a template ID? grrr
David Greiner
December 1, 2010 2:19pm
@Jonathon, an updated ColdFusion wrapper would be brilliant, thanks a lot. Regarding the draft campaigns from a template ID, we’re still listening for further improvements. In fact, the entire point of this massive update was to put a base in place that we can easily build upon without requiring new versions. We’ll definitely take the suggestion on board.
We already have other improvements underway that we’ll be releasing early next year.
Nate Klaiber
December 1, 2010 4:24pm
Wow, this is an awesome update to an already wonderful API.
Awesome work to you and your team!
Billee D.
December 1, 2010 5:45pm
Absolutely freekin’ awesome! The multiple subscribers functionality alone is pretty big news, but the REST interface is just fantastic news for me personally. Time to refactor and rethink my own tools built on your API.
Thanks to you all!
Phil
December 1, 2010 8:23pm
Great to see the API now includes a weblink for sent campaigns. I look forward to digging a little deeper to see what we can now do!
julesj
December 1, 2010 8:36pm
Just finished my tool that uses the v2 version last week, but this is great news nonetheless. Thanks.
Chris
December 1, 2010 8:44pm
I can’t tell which is more awesomer, the new API itself or the doc pages.
Bruno Alexandre
December 1, 2010 9:04pm
I still miss same things ... like:
Spam numbers;
Set unsubscribe as “only from this list” and not the default “this list and all others from this client”;
but general, it is much, much better than v2 :) congrats to the team!
Alex Dunae
December 2, 2010 2:22am
Nice docs pages.
Tom
December 2, 2010 4:21am
Yea, the doc pages are very nice. Great job on the new API!
Niels Fanøe
December 2, 2010 11:31am
And the Drupal modules for Campaign Monitor will need some work too, now. Just in time for Drupal 7 - great!
Jamie Burchell
December 2, 2010 4:38pm
Hi
I’ve noticed that you check for the presence of some PEAR classes. This causes our framework to attempt to autoload the class and subsequently fail with a fatal exception. Even if we adapt our framework to not fail with a fatal exception, we will still have warnings in the log that the PEAR classes could not be included.
Have you considered adding the “false” parameter to class_exists in your PHP wrapper so that autoloading doesn’t take place?
Jamie
Chris V
December 2, 2010 5:06pm
This. Is. Awesome.
I have a current project that I’ve been having to manage manually because I’m using a single list with segments per processing batch and had no way to A) import the entire batch at once and B) create the necessary segments. With this update, I should be able to finally automate the process.
THANK YOU!
agenteo
December 3, 2010 2:54am
the CampaignMonitor’s GEM (the one they released with API v3) doesn’t work properly for me. I keep getting 101: Invalid ListID when I try to add a subscriber.
same API and ListID works with https://github.com/patientslikeme/campaign_monitor
this is a snippet of the call I made:
CreateSend.api_key(APP_CONFIG[‘campaign_monitor’][‘api_key’])
Subscriber.add(member.email, list_id, member.display_name, nil, nil)
</pre>
need
jd
December 3, 2010 5:42am
I think you’ll find the order of your arguments is wrong when calling the add method. You’re passing in the email address as the list ID and the list ID as the email address.
Claudiu
December 4, 2010 2:50pm
Yep, time to get back to the coding board. Well, it’s been fun with the previous version it should get fun with this one as well.
By the way, is there any feed we could follow (or email list) to know in real time of any updates to the API (even small updates). It would really help.
Arlen Byrd
December 4, 2010 11:43pm
Do you expect that by within a year you’ll discontinue support of v2, or might it be longer? Just wanting to get a big picture feel for when we may be forced to upgrade. Thanks for the work on this!
David Greiner
December 5, 2010 6:54am
@Arlen, definitely not. We plan on supporting v2 for years to come as there are many popular plugins and integrations in the wild now that rely on it. Of course, we’re encouraging everyone to move to the new version when they can, if not just for all the new functionality we’ve included and more cool stuff we’ll be releasing soon.