This integration is powered by Singer's Listrak tap. For support, visit the GitHub repo or join the Singer Slack.
Listrak integration summary
Stitch’s Listrak integration replicates data using the Listrak SOAP API. Refer to the Schema section for a list of objects available for replication.
Listrak feature snapshot
A high-level look at Stitch's Listrak (v1) integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release status |
Released on June 27, 2018 |
Supported by | |
Stitch plan |
Standard |
API availability |
Available |
Singer GitHub repository | |||
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Unsupported |
Table-level reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
DATA SELECTION | |||
Table selection |
Supported |
Column selection |
Unsupported |
Select all |
Supported |
||
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Listrak
Step 1: Create a Listrak Stitch user
Note: Listrak user limits
While we recommend doing creating a user for Stitch to ensure we’re visible in any logs or audits, it may not be feasible as Listrak limits each account to five users.
Should you choose not to create a user for us, you should verify that the user who creates the integration in Stitch has:
- Access to the Listrak lists you want to replicate, and
- The permissions listed in Step 8 of this section.
- Sign into your Listrak account.
- From the home page, click Manage.
- Click Accounts > User Manager.
- Scroll to the bottom of the page and click Create New User.
- Fill in the User Information fields.
- In the Lists section, select the lists you want the Stitch user to have access to. Note: Stitch will only be able to replicate data for lists that it is able to access.
- For Granted Access, select Role Based Access.
- In the section below this field, select check the boxes for the following permissions:
- Analytics Access - This allows the Stitch user to view analytics for messages, contacts, and lists for available lists.
- API Access - This allows the Stitch user to replicate data from your Listrak using the Listrak API.
- Click Add User when finished.
Step 2: Add Stitch IP Addresses to Listrak's SOAP API whitelist
To ensure Stitch can access your Listrak instance, you’ll need to whitelist Stitch’s IP addresses.
Step 2.1: Verify your Stitch account's data pipeline region
The IP addresses you’ll whitelist depend on the Data pipeline region your account is in.
- Sign into your Stitch account, if you haven’t already.
- Click User menu (your icon) > Edit User Settings and locate the Data pipeline region section to verify your account’s region.
-
Locate the list of IP addresses for your region:
Keep this list handy - you’ll need it in the next step.
Step 2.2: Add the IP addresses to the SOAP API whitelist
- In your Listrak account, navigate to Manage > Accounts > SOAP API IP Authorization.
- Add the Stitch IP addresses that you retrieved in the previous step.
Step 3: Add Listrak as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Listrak icon.
-
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch Listrak” would create a schema called
stitch_listrak
in the destination. Note: Schema names cannot be changed after you save the integration. - In the Username field, enter the Stitch Listrak user’s username.
- In the Password field, enter the Stitch Listrak user’s password.
Step 4: Define the historical replication start date
The Sync Historical Data setting defines the starting date for your Listrak integration. This means that data equal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to replicate data beyond Listrak’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 5: Create a replication schedule
In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
Listrak integrations support the following replication scheduling methods:
To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.
Initial and historical replication jobs
After you finish setting up Listrak, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
Free historical data loads
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Listrak table reference
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
This is the latest version of the Listrak integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
lists
The lists
table contains info about your contact lists.
Full Table |
|
Primary Key |
ListID |
Useful links |
Join lists with | on |
---|---|
messages |
lists.ListID = messages.ListID |
subscribed_contacts |
lists.ListID = subscribed_contacts.ListID |
BounceUnsubscribeCount INTEGER |
||
CreateDate DATE-TIME |
||
DomainAliasEmail STRING |
||
DomainAliasLink STRING |
||
EnableBrowserLink BOOLEAN |
||
EnableDoubleOptin BOOLEAN |
||
EnableDynamicContent BOOLEAN |
||
EnableGoogleAnalytics BOOLEAN |
||
EnableInternationalization BOOLEAN |
||
EnableListHygiene BOOLEAN |
||
EnableListRemoveHeader BOOLEAN |
||
EnableRSS BOOLEAN |
||
EnableRemovalLink BOOLEAN |
||
FromEmail STRING |
||
FromName STRING |
||
GoogleTrackingDomains ARRAY |
||
ListID INTEGER |
||
ListName STRING |
||
ShowAdvancedPersonalization BOOLEAN |
||
ShowEmailList BOOLEAN |
||
Vmta OBJECT
|
||
bounceHandling INTEGER |
message_bounces
The message_bounces
table contains info about contact bounces for a message.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_bounces with | on |
---|---|
message_clicks |
message_bounces.ContactID = message_clicks.ContactID message_bounces.MsgID = message_clicks.MsgID |
message_opens |
message_bounces.ContactID = message_opens.ContactID message_bounces.MsgID = message_opens.MsgID |
message_reads |
message_bounces.ContactID = message_reads.ContactID message_bounces.MsgID = message_reads.MsgID |
message_unsubs |
message_bounces.ContactID = message_unsubs.ContactID message_bounces.MsgID = message_unsubs.MsgID |
subscribed_contacts |
message_bounces.ContactID = subscribed_contacts.ContactID |
message_sends |
message_bounces.MsgID = message_sends.MsgID |
messages |
message_bounces.MsgID = messages.MsgID |
BounceCount INTEGER |
BounceDate STRING |
BounceDetail STRING |
BounceReason STRING |
ContactID STRING |
EmailAddress STRING |
MsgID INTEGER |
message_clicks
The message_clicks
table contains info about contact clicks for a message.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_clicks with | on |
---|---|
message_bounces |
message_clicks.ContactID = message_bounces.ContactID message_clicks.MsgID = message_bounces.MsgID |
message_opens |
message_clicks.ContactID = message_opens.ContactID message_clicks.MsgID = message_opens.MsgID |
message_reads |
message_clicks.ContactID = message_reads.ContactID message_clicks.MsgID = message_reads.MsgID |
message_unsubs |
message_clicks.ContactID = message_unsubs.ContactID message_clicks.MsgID = message_unsubs.MsgID |
subscribed_contacts |
message_clicks.ContactID = subscribed_contacts.ContactID |
message_sends |
message_clicks.MsgID = message_sends.MsgID |
messages |
message_clicks.MsgID = messages.MsgID |
ClickDate STRING |
ContactID STRING |
EmailAddress STRING |
LinkDescription STRING |
LinkUrl STRING |
MsgID INTEGER |
message_opens
The message_opens
table contains info about contact opens for a message.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_opens with | on |
---|---|
message_bounces |
message_opens.ContactID = message_bounces.ContactID message_opens.MsgID = message_bounces.MsgID |
message_clicks |
message_opens.ContactID = message_clicks.ContactID message_opens.MsgID = message_clicks.MsgID |
message_reads |
message_opens.ContactID = message_reads.ContactID message_opens.MsgID = message_reads.MsgID |
message_unsubs |
message_opens.ContactID = message_unsubs.ContactID message_opens.MsgID = message_unsubs.MsgID |
subscribed_contacts |
message_opens.ContactID = subscribed_contacts.ContactID |
message_sends |
message_opens.MsgID = message_sends.MsgID |
messages |
message_opens.MsgID = messages.MsgID |
ContactID STRING |
EmailAddress STRING |
MsgID INTEGER |
OpenDate STRING |
message_reads
The message_reads
table contains info about contact reads for a message.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_reads with | on |
---|---|
message_bounces |
message_reads.ContactID = message_bounces.ContactID message_reads.MsgID = message_bounces.MsgID |
message_clicks |
message_reads.ContactID = message_clicks.ContactID message_reads.MsgID = message_clicks.MsgID |
message_opens |
message_reads.ContactID = message_opens.ContactID message_reads.MsgID = message_opens.MsgID |
message_unsubs |
message_reads.ContactID = message_unsubs.ContactID message_reads.MsgID = message_unsubs.MsgID |
subscribed_contacts |
message_reads.ContactID = subscribed_contacts.ContactID |
message_sends |
message_reads.MsgID = message_sends.MsgID |
messages |
message_reads.MsgID = messages.MsgID |
ContactID STRING |
EmailAddress STRING |
MsgID INTEGER |
ReadDate STRING |
message_sends
The message_sends
table contains MsgID
and EmailAddress
pairs, allowing you to identify the messages that your contacts have been sent.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_sends with | on |
---|---|
message_bounces |
message_sends.MsgID = message_bounces.MsgID |
message_clicks |
message_sends.MsgID = message_clicks.MsgID |
message_opens |
message_sends.MsgID = message_opens.MsgID |
message_reads |
message_sends.MsgID = message_reads.MsgID |
message_unsubs |
message_sends.MsgID = message_unsubs.MsgID |
messages |
message_sends.MsgID = messages.MsgID |
EmailAddress STRING |
MsgID INTEGER |
message_unsubs
The message_unsubs
table contains info about contacts who requested to be removed from a list from the supplied message.
Full Table |
|
Primary Keys |
MsgID EmailAddress |
Useful links |
Join message_unsubs with | on |
---|---|
message_bounces |
message_unsubs.ContactID = message_bounces.ContactID message_unsubs.MsgID = message_bounces.MsgID |
message_clicks |
message_unsubs.ContactID = message_clicks.ContactID message_unsubs.MsgID = message_clicks.MsgID |
message_opens |
message_unsubs.ContactID = message_opens.ContactID message_unsubs.MsgID = message_opens.MsgID |
message_reads |
message_unsubs.ContactID = message_reads.ContactID message_unsubs.MsgID = message_reads.MsgID |
subscribed_contacts |
message_unsubs.ContactID = subscribed_contacts.ContactID |
message_sends |
message_unsubs.MsgID = message_sends.MsgID |
messages |
message_unsubs.MsgID = messages.MsgID |
AdditionDate STRING |
ContactID STRING |
EmailAddress STRING |
MsgID INTEGER |
RemovalDate STRING |
RemovalMethod STRING |
messages
The messages
table contains info about message statistics.
Full Table |
|
Primary Key |
MsgID |
Useful links |
Join messages with | on |
---|---|
message_bounces |
messages.MsgID = message_bounces.MsgID |
message_clicks |
messages.MsgID = message_clicks.MsgID |
message_opens |
messages.MsgID = message_opens.MsgID |
message_reads |
messages.MsgID = message_reads.MsgID |
message_sends |
messages.MsgID = message_sends.MsgID |
message_unsubs |
messages.MsgID = message_unsubs.MsgID |
lists |
messages.ListID = lists.ListID |
subscribed_contacts |
messages.ListID = subscribed_contacts.ListID |
AverageOrderValue NUMBER |
ClickCount INTEGER |
ClickerCount INTEGER |
ClickerPercent NUMBER |
ConversionCount INTEGER |
DeliverCount INTEGER |
ListID INTEGER |
MsgID INTEGER |
NewClickerCount INTEGER |
OpenCount INTEGER |
OpenPercent NUMBER |
OrderTotal NUMBER |
ReadCount INTEGER |
ReadPercent NUMBER |
RemoveCount INTEGER |
RemovePercent NUMBER |
RepeatClickerCount INTEGER |
SendDate DATE-TIME |
Subject STRING |
subscribed_contacts
The subscribed_contacts
table contains info about contacts who are currently subscribed to the specified list.
Full Table |
|
Primary Keys |
ContactID ListID |
Useful links |
Join subscribed_contacts with | on |
---|---|
message_bounces |
subscribed_contacts.ContactID = message_bounces.ContactID |
message_clicks |
subscribed_contacts.ContactID = message_clicks.ContactID |
message_opens |
subscribed_contacts.ContactID = message_opens.ContactID |
message_reads |
subscribed_contacts.ContactID = message_reads.ContactID |
message_unsubs |
subscribed_contacts.ContactID = message_unsubs.ContactID |
lists |
subscribed_contacts.ListID = lists.ListID |
messages |
subscribed_contacts.ListID = messages.ListID |
AdditionDate DATE-TIME |
AdditionMethod STRING |
ContactID STRING |
EmailAddress STRING |
ListID INTEGER |
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.