This integration is powered by Singer's Yotpo tap. For support, visit the GitHub repo or join the Singer Slack.
Yotpo integration summary
Stitch’s Yotpo integration replicates data using the Yotpo Core API. Refer to the Schema section for a list of objects available for replication.
Yotpo feature snapshot
A high-level look at Stitch's Yotpo integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release Status |
Released |
Supported By | |
Stitch Plan |
Free |
Singer GitHub Repository | |
DATA SELECTION | |||
Table Selection |
Supported |
Column Selection |
Unsupported |
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Unsupported |
Table-level Reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Yotpo
Yotpo setup requirements
To set up Yotpo in Stitch, you need:
-
To be the Account Administrator in Yotpo. This is required to access your Yotpo API credentials.
Step 1: Retrieve your Yotpo API credentials
- Sign into your Yotpo account.
- Click the user menu (person icon) in the top right corner.
- Click Account Settings.
- On the Account Settings page, click the Store tab.
-
Locate the API Credentials section:
- The App Key field contains your API Key, and the Secret Key is your API Secret.
Leave this page open for now - you’ll need it to complete the next step.
Step 2: Add Yotpo as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Yotpo 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 Yotpo” would create a schema called
stitch_yotpo
in the destination. Note: Schema names cannot be changed after you save the integration. - In the Yotpo API Key field, paste the value from the App Key field in your Yotpo account.
- In the Yotpo API Secret field, paste the value from the Secret Key field in your Yotpo account.
Step 3: Define the historical sync
The Sync Historical Data setting will define the starting date for your Yotpo 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 Yotpo’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 4: 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.
Yotpo 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.
Step 5: Set tables to replicate
To complete the setup, you’ll need to select the tables you want to replicate to your data warehouse.
Check out the Schema section to learn more about the available tables in Yotpo and how they replicate.
- In the list of tables that displays - or in the Tables to Replicate tab, if you skipped this step during setup - locate a table you want to replicate.
-
To track a table, click the checkbox next to the table’s name. A green checkmark means the table is set to replicate.
- Repeat this process for all the tables you want to replicate.
- When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
Note: If you change these settings while a replication job is still in progress, they will not be used until the next job starts.
Initial and historical replication jobs
After you finish setting up Yotpo, 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.
Yotpo Replication
Every time Stitch runs a replication job for Yotpo, the last 30 days’ worth of data will be replicated for these tables:
-
emails
-
reviews
Stitch replicates data in this way to account for updates made to existing records within the default attribution window of 30 days, thus ensuring you won’t make decisions based on stale (or false) data. As a result, you may see a higher number of replicated rows than what’s being generated in Yotpo.
Setting the Replication Frequency to a higher frequency - like 30 minutes - can result in re-replicating recent data and contribute to greater row usage. Replicating fewer tables or selecting a lower frequency can help keep your row count low.
Refer to the documentation for each of these tables in the next section for more info.
Attribution window examples
In the tabs below are examples of attribution windows behave during historical (initial) and ongoing replication jobs.
For historical and full re-replications of Yotpo data, Stitch will query for and extract data newer than or equal to the date defined in the Start Date field in the Integration Settings page.
The Start Date, in conjunction with the Attribution Window, will define the minimum date Stitch should query for when extracting historical data. This is calculated as:
Start Date - Attribution Window = Minimum Extraction Date
Example
During the initial set up, the Start Date field is set to 06/03/2017
, or ``.
To account for the Attribution Window, Stitch would calculate the Minimum Extraction Date value as: 2017-07-03 00:00:00 - 30 days = 2017-06-03 00:00:00
If you were to write a SQL query using this date for the reviews
table, it might look like this:
SELECT *
FROM yotpo.reviews
WHERE created_at >= '2017-06-03 00:00:00' /* Min. Extraction Date */
ORDER BY created_at
For ongoing replication jobs, Stitch will query for and extract data using the last saved maximum value in the table’s Replication Key column and the Attribution Window setting.
Note: This applies to every replication job that takes place after the historical replication job.
Example
The last maximum saved Replication Key value for the reviews
table is 2017-10-01 00:00:00
.
To account for the Attribution Window of 30 days, we’d subtract this from the last maximum saved Replication Key value:
2017-10-01 00:00:00 - 30 days = 2017-09-01 00:00:00
In this case, Stitch would query for and extract data that is newer than or equal to 2017-09-01 00:00:00
and older than or equal to 2017-10-01 00:00:00
.
If this were a SQL query, it might look like this:
SELECT *
FROM reviews
WHERE created_at >= '2017-09-01 00:00:00'
/* max Replication Key value - Attribution Window */
AND created_at <= '2017-10-01 00:00:00'
/* max Replication Key value from previous job */
ORDER BY created_at
Yotpo table schemas
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.
emails
Replication Method : |
Key-based Incremental |
Replication Key : |
email_sent_timestamp |
Primary Key : |
email_address : email_sent_timestamp |
API endpoint : |
The emails
table contains data about every email sent from Yotpo.
Attribution window
When Stitch replicates data for this table, it will use an attribution window of 30 days to fetch updated email statistics such as opens, clicks, etc. This means that every time a replication job runs, the last 30 days’ worth of data will be replicated for this table.
Refer to the Replication section for more info and examples of how the attribution window is used to query for data.
email_address
The email address of the recipient. Reference: |
email_sent_timestamp
The time the email was sent to the recipient. |
order_id
If applicable, the ID of the order the email is associated with. |
order_timestamp
If applicable, the time the order was placed. |
product_id
If applicable, the ID of the product the email is associated with. Reference: |
sku
If applicable, the SKU of the product the email is associated with. |
email_type
The email’s type. For example: |
reminder_num
The number of the MAP reminder email. |
trr_bundle_id
If applicable, the bundle ID associated with the product. |
trr_bundle_subject
If applicable, the bundle subject associated with the product. |
review_type
If applicable, the type of review associated with the email. |
coupon_code
If applicable, the coupon code associated with the email. |
opened_timestamp
The time the recipient opened the email. |
clicked_through_timestamp
The time th e recipient clicked through a link in the email. |
content_creation_timestamp
The time the email content was created. |
review_form
If applicable, the review form associated with the email. |
platform
The platform the recipient viewed the email on. For example: |
invalid_address_timestamp
The time the recipient’s email address was marked as invalid. |
failed_timestamp
The time the email failed to send. |
unsubscribed_timestamp
The time the recipient unsubscribed from the email list. |
marked_spam_timestamp
The time the recipient marked the email as spam. |
arrived_early_timestamp
The time the email arrived early. |
product_reviews
Replication Method : |
Key-based Incremental |
Replication Key : |
created_at |
Primary Key : |
id |
API endpoint : |
The product_reviews
table contains data about reviews for a certain product.
Note: This table is similar to the reviews
table, but also contains custom fields. If you don’t have or need custom product fields, you may only want to replicate the reviews
table to prevent redundant data.
id
The review ID. Reference: |
|||||
created_at
The time the review was created. |
|||||
score
The review’s score. |
|||||
votes_up
The number of upvotes in the review. |
|||||
votes_down
The number of downvotes in the review. |
|||||
content
If applicable, the comments left by the reviewer about the product. |
|||||
title
The title of the review. |
|||||
verified_buyer
If |
|||||
source_review_id
If applicable, the source review ID. |
|||||
sentiment
The sentiment of the review. |
|||||
product_id
The ID of the product that was reviewed. Reference: |
|||||
user
Details about the user who wrote the review.
|
|||||
images_data
Details about images associated with the review.
|
|||||
comment
Details about the comments left in the review.
|
products
Replication Method : |
Key-based Incremental |
Replication Key : |
updated_at |
Primary Key : |
id |
API endpoint : |
The products
table contains data about products in your Yotpo account.
id
The product ID. Reference: |
|||||
updated_at
The time the product was last updated. |
|||||
created_at
The time the product was created. |
|||||
average_score
The product’s average score, based on reviews. |
|||||
total_reviews
The total number of reviews associated with the product. |
|||||
url
The URL of the product. |
|||||
external_product_id
If applicable, the external ID associated with the product. |
|||||
name
The name of the product. |
|||||
description
The description of the product. |
|||||
product_specs
Details about the product.
|
|||||
category
Details about the categories the product is in.
|
|||||
images
Details about the images associated with the product.
|
reviews
Replication Method : |
Key-based Incremental |
Replication Key : |
created_at |
Primary Key : |
id |
API endpoint : |
The reviews
table contains data about reviews.
Note: This table is similar to the product_reviews
table, but doesn’t contain custom fields. If you have or need custom fields, you may want to only replicate the product_reviews
table to prevent redundant data.
Attribution window
When Stitch replicates data for this table, it will use an attribution window of 30 days to fetch updated (or deleted) reviews. This means that every time a replication job runs, the last 30 days’ worth of data will be replicated for this table.
Refer to the Replication section for more info and examples of how the attribution window is used to query for data.
id
The ID of the review. Reference: |
created_at
The time the review was created. |
updated_at
The time the review was last updated. |
votes_up
The number of upvotes the review contains. |
votes_down
The number of downvotes the review contains. |
score
The overall score of the review. |
content
The content of the review. |
title
The title of the review. |
email
The email address of the person who wrote the review. Reference: |
sentiment
The sentiment of the review. |
sku
The SKU associated with the product being reviewed. |
name
The name of the person who left the review. |
reviewer_type
The reviewer type. For example: |
deleted
If |
user_reference
|
unsubscribers
Replication Method : |
Key-based Incremental |
Replication Key : |
since |
Primary Key : |
id |
API endpoint : |
The unsubscribers
table contains data about customers who unsubscribed from one of Yotpo’s emails.
id
The unsubscriber ID. |
user_email
The email address of the unsubscriber. Reference: |
email_type_id
The type of email the user unsubscribed from. Refer to Yotpo’s documentation for a list of possible values. |
unsubscirbed_by_name
Note: The misspelling in this field name originates in Yotpo’s API. Stitch doesn’t have the ability to rename it. |
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.