Skip to content
Ruby gem for accessing the Campaign Monitor API
Find file
Latest commit 2f7296d jonathan Allowing user to unsubscribe from a list
Failed to load latest commit information.
lib Allowing user to unsubscribe from a list
test remove dup lines and puts
.gitignore Rather than keep the docs under source control, which doesn't make mu…
MIT-LICENSE Moved directories
README.rdoc Updating readme and gemspec
Rakefile clean up docs and add invalidkey error that's raised
TODO make lists and array and rip out misc classes into their own file



This RubyGem provides access to the Campaign Monitor API (

Campaign Monitor recently made some changes to their API.

patientslikeme's fork makes the following changes:

* host changed from to
* ID values are no longer sent #to_i because they are hex strings
* added support for subscribers with custom fields using SOAP API
* refactored gemspec to build on github
* misc. cleanup and refactoring

This fork integrates the following additional changes:

* updates Subscriber#is_subscribed? to work with the latest API. (from amiel)
* adds support for array values in custom_field_hash (from oferlin)
* API key cleanup (from yyyc514)
* added ability to get fetch lists by id using List#GetDetails or List#[] (from yyyc514)
* added support for adding and deleting clients (from yyyc514)
* added support for querying CM for countries and timezones (from yyyc514)
* added support for creating campaigns (from yyyc514)
* general test and api cleanup (from yyyc514)


An account with Campaign Monitor and the API Key. Accounts are free and can be created at



gem install patientslikeme-campaign_monitor

Git Repository


cm = # assumes you've set CAMPAIGN_MONITOR_API_KEY in your project

for client in cm.clients
  for list in client.lists # => returns the name

    # modify a subscriber list
    list.add_subscriber(email, name, custom_fields_hash)
    list.add_and_resubscribe(email, name, custom_fields_hash)

    # get subscriber list details
    subscribers = list.active_subscribers(since_time)
    unsubscribed = list.unsubscribed(since_time)
    bounced = list.bounced(since_time)

  for campaign in client.campaigns

Something went wrong with that request. Please try again.