Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Ruby gem for Responsys email marketing software

Subscribe to updates I use unresponsys

Statistics on unresponsys

Number of watchers on Github 10
Number of open issues 11
Average time to close an issue about 1 month
Main language Ruby
Average time to merge a PR less than a minute
Open pull requests 0+
Closed pull requests 1+
Last commit about 3 years ago
Repo Created almost 4 years ago
Repo Last Updated over 1 year ago
Size 66 KB
Organization / Authorletoteteam
Page Updated
Do you use unresponsys? Leave a review!
View open issues (11)
View unresponsys activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating unresponsys for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

What is the purpose of this gem? It is an opinionated wrapper for Responsys email marketing software. It uses the new REST API, while existing gems are wrapping the old SOAP API.


  1. Setup
  2. Lists
  3. Members
  4. Messages
  5. Events
  6. Extension Tables
  7. Supplemental Tables


Initialize your client:

client =
  username: 'YOUR_USERNAME',
  password: 'YOUR_PASSWORD',
  interact: 2||5

The interact option is optional, and can be either 2 or 5. If omitted, it will default to 2.


From the documentation:

Lists are used to store audience database recordsmembers of your audience might be leads, prospects, customers, contacts, consumers, or visitors, depending on your terminology. The standard set of fields in a list includes:

  • Recipient ID (RIID), an internalOracle Responsys-assigned identifier that allows the behavior of individual recipients to be tracked over time.
  • Email address, mobile number, postal address, which are standard contact channel fields
  • Permission/Opt-in status fields for the various marketing channels (email, mobile, postal)
  • Email format preference (HTML or text)
  • Derived fields for ISP and domain
  • Last modified and created timestamps In addition, lists can have a number of custom, user-defined fields that you use to maintain a rich audience profile for targeting and personalization purposes.

Find a list


Accepts a list name (string). Returns an Unresponsys::List instance

Find list member

list = client.lists.find('mylist')

Accepts an email address. Returns an Unresponsys::Member instance

Throws an Unresponsys::NotFound if no member exists

New list member

list = client.lists.find('mylist')'')

Accepts an email address (string). Returns an Unresponsys::Member instance


Members belong to a particular list and can be instantiated through that list

There are several reserved, immutable fields which become attr_reader

  • riid - the responsys id
  • email_address - email address
  • mobile_number - mobile number

You can also create up to 80 custom fields (in the Responsys dashboard) which become attr_accessor

Save a member

member = list.members.find('')
member.some_field = 'blablabla'

Create or update a list member. Returns true or false


New Message

member = list.members.find('')
message ='ReferredFriend', referral_code: '123456')

Accepts an campaign name (string) and a hash of key-value properties (optional) which can be used to personalize the email

Save Message

message ='ReferredFriend', referral_code: '123456')

Returns true on success or throws an error

Sends the message


New event

member = list.members.find('')
event ='ReferredFriend')

Accepts an event name (string)

Custom events must be defined on the account page of the Responsys dashboard before you can start sending them

Save event

event ='ReferredFriend')

Returns true on success or throws an error

Throws a Unresponsys::NotFound if you have not defined the event on the account page of the Responsys dashboard

Extension Tables

From the documentation:

One or more Profile Extension Tables can be associated with a Profile List. There must be a one-to-one relationship between a record in a Profile Extension Table and its parent Profile List. Profile Extension Tables provide an attractive and efficient way to organize and process audience data. Similar to data in Profile Lists, audience data in Profile Extension Tables can be used for segmentation and targeting in Filters as well as Programs

Find extension table

member = list.members.find('')
table = member.extension_tables.find('MyExtensionTable')

Extension tables belong to a particular list and are accessed through a list member. Each list member has one corresponding entry in the extension table. Tables need to be created and edited through the dashboard.

Takes a table name (string). Returns an instance of Unresponsys::ExtensionTable

Update extension table

member = list.members.find('')
table = member.extension_tables.find('MyExtensionTable')
table.update(favorite_color: 'blue')

Returns true or false

Supplemental Tables

From the documentation:

As its name indicates, a supplemental table is a collection of database records that supplements a list with additional related information. The connections between a table and a list is made via a data extraction key, or key field, that is present in both the table and the list. Because you define the schema for any tables you create, you can use them for a wide variety of purposes, ranging from message personalization and dynamic content to storing form responses and campaign events.

Find supplemental table

folder  = client.folders.find('MyFolder')
table   = folder.supplemental_tables.find('MyTable')

Tables belong to a folder and need to be accessed through it. Tables need to be created and edited through the dashboard. This gem assumes that your table has one primary key, called ID_, which is an integer. This can be setup through the dashboard.

Takes a table name (string). Returns an instance of Unresponsys::SupplementalTable

Find row

table = folder.supplemental_tables.find('MyTable')

Takes an id (integer). Returns an instance of Unresponsys::Row or throws an Unresponsys::NotFound

New row

table = folder.supplemental_tables.find('MyTable')

Takes an id (integer). Returns an instance of Unresponsys::Row

Save row

row = table.rows.find(123)
row.title = 'My Title'

Returns true or false

Destroy row

row = table.rows.find(123)

Returns true or false

unresponsys open issues Ask a question     (View All Issues)
  • over 3 years Add delete extension table member API
  • over 3 years Create error classes for all documented errors
  • over 3 years Add delete list member API
  • over 3 years Add trigger push notification
  • over 3 years Configurable primary key for supplemental tables
  • over 3 years Allow members to take a hash / add create methods
  • over 3 years Rename member to recipient
  • over 3 years Support merge rule configuration
  • over 3 years Setup development mode
  • over 3 years Allow batch updating
  • over 3 years Remove HTTParty dependency
unresponsys list of languages used
Other projects in Ruby