Skip to content

Latest commit

 

History

History
274 lines (199 loc) · 5.3 KB

README.md

File metadata and controls

274 lines (199 loc) · 5.3 KB

sendwithus python-client

Build Status

requirements

python requests library

installation

pip install sendwithus

usage

For all examples, assume:

import sendwithus
api = sendwithus.api(api_key='YOUR-API-KEY')

Templates

Get your templates

api.templates()

Create a template

api.create_template(
    name='Email Name',
    subject='Email Subject',
    html='<html><head></head><body>Valid HTML</body></html>',
    text='Optional text content')

We validate all HTML and will return an error if it's invalid.

r.status_code
# 400
r.content
# 'email html failed to validate'

Send

Call with REQUIRED parameters only

The email_data field is optional, but highly recommended!

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={'address': '[email protected]'})
print r.status_code
# 200

Call with REQUIRED parameters and email_data

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={'address': '[email protected]'},
    email_data={ 'first_name': 'Matt' })
print r.status_code
# 200

Optional Sender

The sender['address'] is a required sender field

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={ 'name': 'Matt',
                'address': '[email protected]'},
    email_data={ 'first_name': 'Matt' },
    sender={ 'address':'[email protected]' })
print r.status_code
# 200

Optional Sender with reply_to address

sender['name'] and sender['reply_to'] are both optional

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={ 'name': 'Matt',
                'address': '[email protected]'},
    email_data={ 'first_name': 'Matt' },
    sender={ 'name': 'Company',
                'address':'[email protected]',
                'reply_to':'[email protected]'})
print r.status_code
# 200

Optional CC

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={'name': 'Matt',
                'address': '[email protected]'},
    cc=[
        {'address': '[email protected]'},
        {'address': '[email protected]'}
    ])
print r.status_code
# 200

Optional BCC

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={'name': 'Matt',
                'address': '[email protected]'},
    bcc=[
        {'address': '[email protected]'},
        {'address': '[email protected]'}
    ])
print r.status_code
# 200

Optional ESP Account

r = api.send(
    email_id='YOUR-EMAIL-ID',
    recipient={'name': 'Matt',
                'address': '[email protected]'},
    esp_account='esp_1234asdf1234')
print r.status_code
# 200

Drip Campaigns

Deactive a drip campaign

You can deactivate pending drip campaign emails for a customer

api.drip_deactivate('[email protected]')

Drip Campaigns 2.0

List all drip campaigns

List all drip campaigns for the current profile

api.list_drip_campaigns()

Start a customer on a drip campaign

Starts a customer on the first step of a specified drip campaign

api.start_on_drip_campaign('[email protected]', 'dc_1234asdf1234')

Extra Data

You may specify extra data to be merged into the templates in the drip campaign

api.start_on_drip_campaign('[email protected]', 'dc_1234asdf1234', email_data={'color': 'blue'})

Remove a customer from a drip campaign

Deactivates all pending emails for a customer on a specified drip campaign

api.remove_from_drip_campaign('[email protected]', 'dc_1234asdf1234')

List the details of a specific campaign

api.drip_campaign_details('dc_1234asdf1234')

List the active customers on a drip campaign

api.drip_campaign_customers('dc_1234asdf1234')

List the active customers on a specific drip step

api.drip_campaign_step_customers('dc_1234asdf1234', 'dcs_jklqwer567')

Customers

Create/update Customer

You can use the same endpoint to create or update a customer. Sendwithus will peform a merge of the data on the customer profile, preferring the new data.

api.customer_create('[email protected]', data={'first_name': 'Matt'})

Delete a Customer

api.customer_delete('[email protected]')

Segmentation

Send Template to Segment

You can use the Segments api to send a template to all customers who match a segment. The Segment must be created in the Sendwithus dashboard, which is where you will find the segment_id for use in this api.

api.send_segment('tem_12345', 'seg_1245')

Extra Data

You may specify extra data to be merged into the template, alongside the individual customer profiles

api.send_segment('tem_12345', 'seg_12345', email_data={'color': 'blue'})

expected response

Success

>>> r.status_code
200

>>> r.json().get('success')
True

>>> r.json().get('status')
u'OK'

>>> r.json().get('receipt_id')
u'numeric-receipt-id'

Error cases

  • malformed request

      >>> r.status_code
      400
    
  • bad api key

      >>> r.status_code
          403
    

to run tests

python setup.py test

packaging (internal)

    python setup.py sdist upload