Module: Mailblastr::Campaigns

Defined in:
lib/mailblastr/campaigns.rb

Overview

Campaigns are DOMAIN-FIRST: domain (required on create) picks the contact pool the campaign targets; from may be any verified domain.

Class Method Summary collapse

Class Method Details

.ab(campaign_id) ⇒ Object

A/B winner evaluation for an A/B campaign. GET /campaigns/:id/ab



56
57
58
# File 'lib/mailblastr/campaigns.rb', line 56

def ab(campaign_id)
  Client.request(:get, "/campaigns/#{Client.path_escape(campaign_id)}/ab")
end

.cancel(campaign_id) ⇒ Object

Cancel a scheduled campaign (returns it to draft). POST /campaigns/:id/cancel



46
47
48
# File 'lib/mailblastr/campaigns.rb', line 46

def cancel(campaign_id)
  Client.request(:post, "/campaigns/#{Client.path_escape(campaign_id)}/cancel")
end

.create(params) ⇒ Object

POST /campaigns Mailblastr::Campaigns.create({ domain: "yourdomain.com", from: "you@yourdomain.com", subject: "Hello", html: "

Hi

", segment_id: "seg_1" }) Optional scheduling params: schedule_timezone (IANA zone the schedule + daily batching are evaluated in, e.g. "America/New_York") and daily_batch_size (max recipients per batch-day, 1-100000).



14
15
16
17
# File 'lib/mailblastr/campaigns.rb', line 14

def create(params)
  Client.require_domain!(params, "Campaigns.create")
  Client.request(:post, "/campaigns", body: params)
end

.delete(campaign_id) ⇒ Object

DELETE /campaigns/:id



61
62
63
# File 'lib/mailblastr/campaigns.rb', line 61

def delete(campaign_id)
  Client.request(:delete, "/campaigns/#{Client.path_escape(campaign_id)}")
end

.get(campaign_id) ⇒ Object

GET /campaigns/:id



20
21
22
# File 'lib/mailblastr/campaigns.rb', line 20

def get(campaign_id)
  Client.request(:get, "/campaigns/#{Client.path_escape(campaign_id)}")
end

.list(params = {}) ⇒ Object

GET /campaigns



25
26
27
# File 'lib/mailblastr/campaigns.rb', line 25

def list(params = {})
  Client.request(:get, "/campaigns", query: Client.pagination(params))
end

.send(campaign_id, params = {}) ⇒ Object

Send now, or schedule with { scheduled_at: "..." }. An optional schedule_timezone (IANA name) is persisted onto the campaign so daily batching evaluates batch-days in that zone. POST /campaigns/:id/send



41
42
43
# File 'lib/mailblastr/campaigns.rb', line 41

def send(campaign_id, params = {})
  Client.request(:post, "/campaigns/#{Client.path_escape(campaign_id)}/send", body: params)
end

.stats(campaign_id) ⇒ Object

Per-campaign analytics (counts, engagement rates, top links). GET /campaigns/:id/stats



51
52
53
# File 'lib/mailblastr/campaigns.rb', line 51

def stats(campaign_id)
  Client.request(:get, "/campaigns/#{Client.path_escape(campaign_id)}/stats")
end

.update(campaign_id, params) ⇒ Object

PATCH /campaigns/:id (draft campaigns only). Accepts the create-side fields plus followups (replace pending follow-ups, [] clears), list_to (true/false), unsubscribe_policy ("account" | "domain" | "ignore"), schedule_timezone (IANA zone; nil clears), and daily_batch_size (1-100000; nil clears).



34
35
36
# File 'lib/mailblastr/campaigns.rb', line 34

def update(campaign_id, params)
  Client.request(:patch, "/campaigns/#{Client.path_escape(campaign_id)}", body: params)
end