Module: Drip::Client::Subscribers

Included in:
Drip::Client
Defined in:
lib/drip/client/subscribers.rb

Instance Method Summary collapse

Instance Method Details

#create_or_update_subscriber(*args) ⇒ Object

Public: Create or update a subscriber.

email - Optional. The String subscriber email address. (Deprecated in favor of a hash argument) options - A Hash of options. - email - Required (or id, or bigcommerce_subscriber_id). Lookup the subscriber by email. - id - Required (or email, or bigcommerce_subscriber_id). Lookup the subscriber by Drip ID. - new_email - Optional. A new email address for the subscriber. If provided and a subscriber with the email above does not exist, this address will be used to create a new subscriber. - time_zone - Optional. The subscriber's time zone (in Olson format). Defaults to Etc/UTC. - custom_fields - Optional. A Hash of custom field data. - tags - Optional. An Array of tags. - external_ids - Optional. A hash of relevant ids for other integrations. For unsubscribing BigCommerce subscribers, a bigcommerce_subscriber_id can be provided in external_ids rather than email or id as the required field.

Returns a Drip::Response. See https://www.getdrip.com/docs/rest-api#create_or_update_subscriber

Raises:

  • (ArgumentError)


56
57
58
59
60
61
62
63
# File 'lib/drip/client/subscribers.rb', line 56

def create_or_update_subscriber(*args)
  data = {}
  data[:email] = args[0] if args[0].is_a? String
  data.merge!(args.last) if args.last.is_a? Hash
  raise ArgumentError, 'email: or id: or bigcommerce_subscriber_id: parameter required' if missing_subscriber_identifier?(data)

  make_json_api_request :post, "v2/#{}/subscribers", private_generate_resource("subscribers", data)
end

#create_or_update_subscribers(subscribers) ⇒ Object

Public: Create or update a collection of subscribers.

subscribers - Required. An Array of between 1 and 1000 Hashes of subscriber data. - email - Required. The String subscriber email address. - new_email - Optional. A new email address for the subscriber. If provided and a subscriber with the email above does not exist, this address will be used to create a new subscriber. - time_zone - Optional. The subscriber's time zone (in Olson format). Defaults to Etc/UTC. - custom_fields - Optional. A Hash of custom field data. - tags - Optional. An Array of tags.

Returns a Drip::Response See https://www.getdrip.com/docs/rest-api#subscriber_batches



80
81
82
83
# File 'lib/drip/client/subscribers.rb', line 80

def create_or_update_subscribers(subscribers)
  url = "v2/#{}/subscribers/batches"
  make_json_api_request :post, url, private_generate_resource("batches", { "subscribers" => subscribers })
end

#delete_subscriber(id_or_email) ⇒ Object

Public: Delete a subscriber.

id_or_email - Required. The String id or email address of the subscriber.

Returns No Content. See https://www.getdrip.com/docs/rest-api#fdelete_subscriber



147
148
149
# File 'lib/drip/client/subscribers.rb', line 147

def delete_subscriber(id_or_email)
  make_json_api_request :delete, "v2/#{}/subscribers/#{CGI.escape id_or_email}"
end

#subscribe(email, campaign_id, options = {}) ⇒ Object

Public: Subscribe to a campaign.

email - Required. The String email address of the subscriber. campaign_id - Required. The String campaign id. options - Optional. A Hash of options. - double_optin - Optional. If true, the double opt-in confirmation email is sent; if false, the confirmation email is skipped. Defaults to the value set on the campaign. - starting_email_index - Optional. The index (zero-based) of the email to send first. Defaults to 0. - time_zone - Optional. The subscriber's time zone (in Olson format). Defaults to Etc/UTC. - custom_fields - Optional. A Hash of custom field data. - tags - Optional. An Array of tags. - reactivate_if_removed - Optional. If true, re-subscribe the subscriber to the campaign if there is a removed subscriber in Drip with the same email address; otherwise, respond with 422 Unprocessable Entity. Defaults to true.

Returns a Drip::Response. See https://www.getdrip.com/docs/rest-api#subscribe



135
136
137
138
139
# File 'lib/drip/client/subscribers.rb', line 135

def subscribe(email, campaign_id, options = {})
  data = options.merge("email" => email)
  url = "v2/#{}/campaigns/#{CGI.escape campaign_id.to_s}/subscribers"
  make_json_api_request :post, url, private_generate_resource("subscribers", data)
end

#subscriber(id_or_email) ⇒ Object

Public: Fetch a subscriber.

id_or_email - Required. The String id or email address of the subscriber.

Returns a Drip::Response. See https://www.getdrip.com/docs/rest-api#fetch_subscriber



30
31
32
# File 'lib/drip/client/subscribers.rb', line 30

def subscriber(id_or_email)
  make_json_api_request :get, "v2/#{}/subscribers/#{CGI.escape id_or_email}"
end

#subscribers(options = {}) ⇒ Object

Public: List all subscribers.

options - A Hash of options. - status - Optional. Filter by one of the following statuses: active, or unsubscribed, or removed. Defaults to all. - page - Optional. Use this parameter to paginate through your list of subscribers. Each response contains a a meta object that includes total_count and total_pages attributes.

Returns a Drip::Response. See https://www.getdrip.com/docs/rest-api#list_subscribers



20
21
22
# File 'lib/drip/client/subscribers.rb', line 20

def subscribers(options = {})
  make_json_api_request :get, "v2/#{}/subscribers", options
end

#unsubscribe(id_or_email, options = {}) ⇒ Object

Public: Unsubscribe a subscriber globally or from a specific campaign.

id_or_email - Required. The String id or email address of the subscriber. options - A Hash of options. - campaign_id - Optional. The campaign from which to unsubscribe the subscriber. Defaults to all.

Returns a Drip::Response. See https://www.getdrip.com/docs/rest-api#unsubscribe



106
107
108
109
110
# File 'lib/drip/client/subscribers.rb', line 106

def unsubscribe(id_or_email, options = {})
  url = "v2/#{}/subscribers/#{CGI.escape id_or_email}/remove"
  url += options[:campaign_id] ? "?campaign_id=#{CGI.escape options[:campaign_id].to_s}" : ""
  make_json_api_request :post, url
end

#unsubscribe_from_all(id_or_email) ⇒ Object

Public: Unsubscribe a subscriber from all mailings.

id_or_email - Required. The String id or email address of the subscriber.

Returns No Content. See https://www.getdrip.com/docs/rest-api#fdelete_subscriber



157
158
159
# File 'lib/drip/client/subscribers.rb', line 157

def unsubscribe_from_all(id_or_email)
  make_json_api_request :post, "v2/#{}/subscribers/#{CGI.escape id_or_email}/unsubscribe_all"
end

#unsubscribe_subscribers(subscribers) ⇒ Object

Public: Unsubscribe a collection of subscribers.

subscribers - Required. An Array of between 1 and 1000 Hashes of subscriber data. - email - Required. The String subscriber email address.

Returns a Drip::Response See https://www.getdrip.com/docs/rest-api#subscriber_batches



92
93
94
95
# File 'lib/drip/client/subscribers.rb', line 92

def unsubscribe_subscribers(subscribers)
  url = "v2/#{}/unsubscribes/batches"
  make_json_api_request :post, url, private_generate_resource("batches", { "subscribers" => subscribers })
end