Integration: Sailthru

This article will help you learn about how Daasity replicates data from Sailthru, limitations to the data we can extract and where the data is stored in the Sailthru schema.

Key Topics

Click on the links below to take you to the section where you can learn more about this Integration

Integration Overview

Sailthru is an email marketing platform that allows businesses to send outbound emails, build and personalize email campaigns and manage email lists to acquire, grow and retain customers.


Integration Availability

This integration is available for:

  • Pro (V1 and V2)

NOTE: You are considered V2 if...

  • Your account says Pro V2 in the Daasity App

Not sure? Reach out to Support@Daasity.com

API Endpoints

The Daasity Sailthru extractor is built based on this Sailthru API documentation.  The following endpoints are used by Daasity to replicate data from Sailthru:

S3 Feed

The Daasity Sailthru extractor is built based on this Sailthru Connect documentation.  The following is used by Daasity to replicate data from Sailthru:

Note: 

  • Daasity provides the option to export Mobile Events via Mobile Event Stream.
  • Read more about the Sailthru Mobile Integration to see how Daasity extracts this info.
  • Sailthru Mobile Events are only available for Pro V2.
  • To extract mobile events, reach out to Support@Daasity.com

 

Entity Relationship Diagram (ERD)

The embedded diagram houses the ERD for the Daasity Sailthru integration illustrating the different tables and keys to join across tables. Hover over the embedded diagram to reveal controls to zoom and scroll.

Sailthru Schema

The Daasity Sailthru extractor creates these tables using the endpoints and replication methods listed. The data is mapped from source API endpoint or S3 feed to the table based on the mapping logic outlined in each table. 

Daasity Sailthru V1 Integration:

Settings

  • Endpoint: Settings
  • Update Method: UPSERT
  • Table Name: sailthru.settings
JSON Element Database Column
id id
domains domain
domain::site_domain site_domain
timezone timezone
id __source_id
Daasity: account_id _account_id
Daasity: MD5(id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Clients

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.clients
CSV Header Database Column
client_id client_id
account_id account_id
name account_name
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + client_id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Lists

  • Endpoint: List
  • Update Method: UPSERT
  • Table Name: sailthru.lists
JSON Element Database Column
list_id list_id
name list_name
type list_type
email_count email_count
valid_count valid_count
primary primary_lists
created_time created_at
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + list_id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Profiles

  • Endpoint: Data Exporter
  • Update Method: UPSERT
  • Table Name: sailthru.profiles
CSV Header Database Column
id profile_id
email email
created_date created_at
signup_time signup_at
login_time login_at
bounce_time bounce_at
bounce_message bounce_message
total_opens total_opens
total_clicks total_clicks
total_unique_opens total_unique_opens
total_unique_clicks total_unique_clicks
total_pageviews total_pageviews
total_messages total_messages
last_open last_open
last_click last_click
last_pageview last_pageview
optout_type optout_type
optout_time optout_at
optout_reason optout_reason
var_time updated_at
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Profile Lists

  • Endpoint: Data Exporter
  • Update Method: UPSERT
  • Table Name: sailthru.profile_lists
CSV Header Database Column
MD5(name + profile_id) profile_list_id
id profile_id
name list_name
signup_time list_signup_at
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + name + id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Profile List Removals

  • Endpoint: Data Exporter
  • Update Method: UPSERT
  • Table Name: sailthru.profile_list_removals
CSV Header Database Column
MD5(lists_remove.first + profile_id) profile_list_id
id profile_id
lists_remove.first list_name
lists_remove.last list_removed_at
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + lists_remove.first) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Profile Vars

  • Endpoint: Data Exporter
  • Update Method: UPSERT
  • Table Name: sailthru.profile_vars
CSV Header Database Column
MD5(id + vars[0]) profile_var_id
id profile_id
vars[0] key
vars[1]  value
vars[1]::ktile ktile
vars[1]::num num
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + id + vars[0] + vars[1]) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Templates

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.templates
CSV Header Database Column
client_id client_id
template_id template_id
name template_name
create_time create_time
modify_time modify_time
create_user create_user
modify_user modify_user
from_name from_name
from_email from_email
replyto_email replyto_email
subject subject
preheader preheader
is_basic is_basic
data_feed_url data_feed_url
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + template_id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaigns

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaigns
CSV Header Database Column
client_id client_id
campaign_id campaign_id
name campaign_name
from_name from_name
from_email from_email
replyto_email replyto_email
subject subject
list_name list_name
data_feed_url data_feed_url
preheader preheader
template_id template_id
schedule_time schedule_time
report_email report_email
suppress_list suppress_list
email_hour_range email_hour_range
create_time create_time
start_time start_time
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaign Sends

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaign_sends
CSV Header Database Column
MD5(campaign_id + profile_id + event_time) send_id
'campaign' type
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
campaign_id campaign_id
list_name list_name
list_id list_id
template_id template_id
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id + profile_id + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaign Bounces

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaign_bounces
CSV Header Database Column
MD5(campaign_id + profile_id + send_time + event_time) bounce_id
MD5(campaign_id + profile_id + send_time) send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
campaign_id campaign_id
list_id list_id
reason_log reason_log
message_type message_type
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaign Opens

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaign_opens
CSV Header Database Column
MD5(campaign_id + profile_id + send_time + event_time) open_id
MD5(campaign_id + profile_id + send_time) send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
campaign_id campaign_id
list_id list_id
browser browser
count open_count
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaign Clicks

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaign_clicks
CSV Header Database Column
MD5(campaign_id + profile_id + send_time + event_time) click_id
MD5(campaign_id + profile_id + send_time) send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
campaign_id campaign_id
list_id list_id
browser browser
url url
count click_count
url_count url_count
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Campaign Unsubscribes

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.campaign_unsubscribes
CSV Header Database Column
MD5(campaign_id + profile_id + send_time + event_time) unsubscribe_id
MD5(campaign_id + profile_id + send_time) send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
campaign_id campaign_id
list_id list_id
message_type message_type
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + campaign_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Flows

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.flows
CSV Header Database Column
flow_id flow_id
name flow_name
create_time create_time
modify_time modify_time
version version
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + flow_id) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Triggered Sends

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.triggered_sends
CSV Header Database Column
MD5(flow_id + profile_id + event_time)  send_id
'triggered' type
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
template_id template_id
is_basic is_basic
flow_id flow_id
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + flow_id + profile_id + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Triggered Bounces

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.triggered_bounces
CSV Header Database Column
MD5(profile_id + send_time + event_time) bounce_id
MD5(profile_id + send_time)  send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
template_id template_id
is_basic is_basic
reason_log reason_log
message_type message_type
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Triggered Opens

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.triggered_opens
CSV Header Database Column
MD5(flow_id + profile_id + send_time + event_time) open_id
MD5(flow_id + profile_id + send_time)  send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
template_id template_id
is_basic is_basic
flow_id flow_id
browser browser
count open_count
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + flow_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Triggered Clicks

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.triggered_clicks
CSV Header Database Column
MD5(flow_id + profile_id + send_time + event_time) click_id
MD5(flow_id + profile_id + send_time)  send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
template_id template_id
is_basic is_basic
flow_id flow_id
browser browser
url url
index link_index
count click_count
url_count url_count
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + flow_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Triggered Unsubscribes

  • Endpoint: Event Stream
  • Update Method: UPSERT
  • Table Name: sailthru.triggered_unsubscribes
CSV Header Database Column
MD5(flow_id + profile_id + send_time + event_time) unsubscribe_id
MD5(flow_id + profile_id + send_time)  send_id
client_id client_id
event_time event_time
send_time send_time
message_id message_id
profile_id profile_id
email_sha256 email_sha256
email_md5 email_md5
engagement engagement
signup_time signup_time
template_id template_id
is_basic is_basic
message_type message_type
Daasity: source_id __source_id
Daasity: account_id _account_id
Daasity: MD5(source_id + flow_id + profile_id + send_time + event_time) __sync_key
Daasity: timestamp when loaded into DB __synced_at

Related Resources