MailerLite Ruby SDK
Getting started
For more information about MailerLite API, please visit the following link:
Authentication
API keys are a quick way to implement machine-to-machine authentication without any direct inputs from a human beyond initial setup.
For more information how to obtain an API key visit the following link
Table of Contents
Setup
gem install mailerlite-ruby
You will have to initalize it in your Ruby file with require "mailerlite-ruby"
.
Usage
This SDK requires that you have the MAILERLITE_API_TOKEN
environment variable set. You can set this variable in a .env
file or enable it system-wide (useful for Docker/Kubernetes). The example of how MAILERLITE_API_TOKEN
should look like is in .env.example
.
If you want to use dotenv
to manage your environment variables, you can configure the mailerlite
gem to load dotenv
:
MailerLite.configure do |config|
config.use_dotenv = true
end
Subscribers
List all subscribers
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
subscribers.fetch(filter: { status: 'active' }, cursor: 'cursor')
Create a subscriber
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
subscribers.create(email:'some@email.com', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
Update a subscriber
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
subscribers.update('some@email.com', fields: {'name': 'John', 'last_name': 'Doe'}, ip_address:'1.2.3.4', optin_ip:'1.2.3.4')
Get a subscriber
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
subscribers.get('some@email.com')
Delete a subscriber
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
subscriber_id = 1234567890
subscribers.delete(subscriber_id)
Groups
List all groups
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.get(limit:10, page:1, filter:{'name': 'My'}, sort:'name')
Create a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.create(name:'Group Name')
Update a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.update(group_id:1234567, name:'My New Group')
Delete a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
group_id = 1234567
groups.delete(group_id)
Get subscribers belonging to a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.get_subscribers(group_id: 1234567, cursor: 'cursor', limit: 10, filter: { 'status': 'active' })
Assign subscriber to a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.assign_subscriber(subscriber:111222, group_id:1234567)
Unassign subscriber from a group
require "mailerlite-ruby"
groups = MailerLite::Groups.new
groups.unassign_subscriber(subscriber:111222, group_id:1234567)
Segments
List all segments
require "mailerlite-ruby"
segments = MailerLite::Segments.new
segments.list(limit:10, page:1)
Update a segment
require "mailerlite-ruby"
segments = MailerLite::Segments.new
segments.update(segment_id: 123456, name:'My New Segment Name')
Delete a segment
require "mailerlite-ruby"
segments = MailerLite::Segments.new
segment_id = 123456
segments.delete(segment_id)
Get subscribers belonging to a segment
require "mailerlite-ruby"
segments = MailerLite::Segments.new
segments.get_subscribers(segment_id:123456, limit:10, filter:{'status': 'active'})
Fields
List all fields
require "mailerlite-ruby"
fields = MailerLite::Fields.new
fields.get(limit:10, page:1, sort:'name', filter:{'keyword': 'abc', 'type': 'text'})
Create a field
require "mailerlite-ruby"
fields = MailerLite::Fields.new
fields.create(name:'My Field', type:'text')
Update a field
require "mailerlite-ruby"
fields = MailerLite::Fields.new
fields.update(field_id:123345, name:'My New Field')
Delete a field
require "mailerlite-ruby"
fields = MailerLite::Fields.new
field_id = 123456
fields.delete(field_id)
Automations
List all automations
require "mailerlite-ruby"
automations = MailerLite::Automations.new
automations.get(limit:10, page:1, filter:{'status': true, 'name': 'some name', 'group': 123456})
Get an automation
require "mailerlite-ruby"
automations = MailerLite::Automations.new
automation_id = 123456
automations.fetch(automation_id)
Get subscribers activity for an automation
require "mailerlite-ruby"
automations = MailerLite::Automations.new
automations.get_subscriber_activity(automation_id:123456, page:1, limit:10, filter:{'status': 'active', 'date_from': '2022-12-20', 'date_to': '2022-12-31'})
Campaigns
List all campaigns
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.get(limit:10, page:1, filter:{'status': 'ready', 'type': 'regular'})
Get a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.fetch(campaign_id:123456)
Create a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.create(
name: "Test Campaign",
language_id: 1,
type: "regular",
emails: [{
"subject": "This is a test campaign",
"from_name": "Test Man",
"from": "testuser@mailerlite.com",
"content": "Hi there, this is a test campaign!"
}]
)
Update a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.update(
campaign_id: 1233455,
name: "New Campaign Name",
language_id: 2,
emails: [{
"subject": "This is a test campaign",
"from_name": "Test Man",
"from": "testuser@mailerlite.com",
"content": "Hi there, this is a test campaign!"
}]
)
Schedule a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.schedule(
campaign_id: 123456,
delivery: "scheduled",
schedule: {
"date": "2022-12-31",
"hours": "22",
"minutes": "00"
}
)
Cancel a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.cancel(campaign_id)
Delete a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.delete(campaign_id)
Get subscribers activity for a campaign
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaign_id = 123456
campaigns.activity(campaign_id)
Forms
List all forms
require "mailerlite-ruby"
forms = MailerLite::Forms.new
forms.list(limit:10, page:1, sort:'name', filter:{'name': 'form name'})
Get a form
require "mailerlite-ruby"
forms = MailerLite::Forms.new
form_id = 123456
forms.fetch(form_id)
Update a form
require "mailerlite-ruby"
forms = MailerLite::Forms.new
forms.update(form_id:123456, name: 'My form Name')
Delete a form
require "mailerlite-ruby"
forms = MailerLite::Forms.new
form_id = 123456
forms.delete(form_id)
Get subscribers who signed up to a specific form
require "mailerlite-ruby"
forms = MailerLite::Forms.new
forms.fetch_subscribers(form_id:123345, page:1, limit:10, filter:{'status': 'active'})
Batching
Create a new batch
require "mailerlite-ruby"
batch = MailerLite::Batch.new
batch.request(
requests: [
{ method: 'GET', path: 'api/subscribers/list' },
{ method: 'GET', path: 'api/campaigns/list' }
]
)
Webhooks
List all webhooks
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
webhooks.list()
Get a webhook
require "mailerlite-ruby"
subscribers = MailerLite::Subscribers.new
webhook_id = 123456
webhooks.get(webhook_id)
Create a webhook
require "mailerlite-ruby"
webhooks = MailerLite::Webhooks.new
webhooks.create(
events:[
'subscriber.created',
'subscriber.updated',
'subscriber.unsubscribed'
],
url:'https://my-url.com',
name: 'Webhook name'
)
Update a webhook
require "mailerlite-ruby"
webhooks = MailerLite::Webhooks.new
webhooks.update(
webhook_id: 123456,
events:[
'subscriber.created',
'subscriber.updated',
'subscriber.unsubscribed'
],
url:'https://my-url.com',
name: 'Webhook name',
enabled: false
)
Delete a webhook
require "mailerlite-ruby"
webhooks = MailerLite::Webhooks.new
webhook_id = 123456
webhooks.delete(webhook_id)
Timezones
Get a list of timezones
require "mailerlite-ruby"
timezones = MailerLite::Timezones.new
timezones.list()
Campaign languages
Get a list of languages
require "mailerlite-ruby"
campaigns = MailerLite::Campaigns.new
campaigns.languages()
Testing
bundle i
bundle exec rspec spec/*rspec.rb
To run tests you would need to install gems using bundle and then run rspec via bundle to run all tests.
The fixtures for the test have been recorded using vcr and are available in the ./fixtures directory
Generate Docs
bundle i
bundle exec yardoc 'lib/**/*.rb'
This will generate html docs in the doc directory which can be opened up in any browser. Navigate to index.html and open it up.