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 (v2) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Released on September 20, 2019

Supported by

Stitch

Stitch plan

Standard

API availability

Available

Singer GitHub repository

singer-io/tap-yotpo

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

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 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

  1. Sign into your Yotpo account.
  2. Click the user menu (person icon) in the top right corner.
  3. Click Account Settings.
  4. On the Account Settings page, click the Store tab.
  5. Locate the API Credentials section:

    The API Credentials section in Yotpo, highlighted

  6. 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

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Yotpo icon.

  4. 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.

  5. In the Yotpo API Key field, paste the value from the App Key field in your Yotpo account.
  6. In the Yotpo API Secret field, paste the value from the Secret Key field in your Yotpo account.

Step 3: Define the historical replication start date

The Sync Historical Data setting defines 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 objects to replicate

The last step is to select the tables you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For Yotpo integrations, you can select:

  1. **Individual tables **

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. Repeat this process for all the tables you want to replicate.
  4. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

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.

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.

This is applicable to all tables in the integration.

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, defines 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 June 3, 2017.

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 for the table.

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 reference

collections

The collections table contains data about your store’s product groupings - collections - in your Yotpo account.

Replication Method

Key-based Incremental

Primary Key

yotpo_id

Replication Key

updated_at

Useful links

Yotpo documentation

collections schema on GitHub

Yotpo API method

created_at

DATE-TIME

external_id

STRING

name

STRING

updated_at

DATE-TIME

yotpo_id

INTEGER

emails

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.

Replication Method

Key-based Incremental

Primary Keys

email_address

email_sent_timestamp

Replication Key

email_sent_timestamp

Useful links

Yotpo documentation

emails schema on GitHub

Yotpo API method

Join emails with on
unsubscribers
emails.email_address = unsubscribers.user_email

arrived_early_timestamp

DATE-TIME

clicked_through_timestamp

DATE-TIME

content_creation_timestamp

DATE-TIME

coupon_code

STRING

email_address

STRING

email_sent_timestamp

DATE-TIME

email_type

STRING

failed_timestamp

DATE-TIME

invalid_address_timestamp

DATE-TIME

marked_spam_timestamp

DATE-TIME

opened_timestamp

DATE-TIME

order_id

STRING

order_timestamp

DATE-TIME

platform

STRING

product_id

STRING

reminder_num

NUMBER

review_form

STRING

review_type

STRING

sku

STRING

trr_bundle_id

STRING

trr_bundle_subject

STRING

unsubscribed_timestamp

DATE-TIME

order_fulfillments

The order_fulfillments table contains data about fulfilled store orders in your Yotpo account.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Yotpo documentation

order_fulfillments schema on GitHub

Yotpo API method

created_at

DATE-TIME

external_id

STRING

fulfilled_items

ARRAY

external_product_id

STRING

quantity

INTEGER

yotpo_product_id

INTEGER

fulfillment_date

DATE-TIME

id

INTEGER

order_id

STRING

shipment_info

OBJECT

shipment_status

STRING

tracking_company

STRING

tracking_number

STRING

tracking_url

STRING

status

STRING

updated_at

DATE-TIME

orders

The orders table contains data about orders in your Yotpo account.

Replication Method

Key-based Incremental

Primary Key

yotpo_id

Replication Key

order_date

Useful links

Yotpo documentation

orders schema on GitHub

Yotpo API method

billing_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country_code

STRING

phone_number

STRING

province_code

STRING

state

STRING

zip

STRING

cancellation

OBJECT

cancellation_date

DATE-TIME

checkout_token

STRING

created_at

DATE-TIME

currency

STRING

custom_properties

OBJECT

customer

OBJECT

accepts_email_marketing

STRING

accepts_sms_marketing

STRING

custom_properties

OBJECT

email

STRING

external_id

STRING

first_name

STRING

last_name

STRING

phone_number

STRING

external_id

STRING

fulfillments

ARRAY

external_id

STRING

fulfilled_items

ARRAY

external_product_id

STRING

quantity

INTEGER

fulfillment_date

DATE-TIME

shipment_info

OBJECT

shipment_status

STRING

tracking_company

STRING

tracking_number

STRING

tracking_url

STRING

status

STRING

landing_site_url

STRING

line_items

ARRAY

coupon_code

STRING

created_at

DATE-TIME

custom_properties

OBJECT

external_product_id

STRING

product_id

STRING

quantity

INTEGER

subtotal_price

NUMBER

total_price

NUMBER

updated_at

DATE-TIME

yotpo_id

INTEGER

order_date

DATE-TIME

order_name

STRING

payment_method

STRING

payment_status

STRING

shipping_address

OBJECT

address1

STRING

address2

STRING

city

STRING

company

STRING

country_code

STRING

phone_number

STRING

province_code

STRING

state

STRING

zip

STRING

source

STRING

subtotal_price

NUMBER

total_price

NUMBER

updated_at

DATE-TIME

yotpo_id

INTEGER

product_reviews

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.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

created_at

Useful links

Yotpo documentation

product_reviews schema on GitHub

Yotpo API method

Join product_reviews with on
products
product_reviews.product_id = products.yotpo_id
reviews
product_reviews.source_review_id = reviews.id

comment

OBJECT

comments_avatar

STRING

content

STRING

created_at

DATE-TIME

display_name

STRING

id

INTEGER

content

STRING

created_at

DATE-TIME

custom_fields

OBJECT

deleted

BOOLEAN

domain_key

STRING

id

INTEGER

images_data

ARRAY

id

INTEGER

original_url

STRING

thumb_url

STRING

name

STRING

product_id

INTEGER

product_yotpo_id

STRING

score

NUMBER

sentiment

NUMBER

source_review_id

NUMBER

title

STRING

user

OBJECT

display_name

STRING

is_social_connected

NUMBER

social_image

STRING

user_id

INTEGER

user_type

STRING

verified_buyer

BOOLEAN

votes_down

INTEGER

votes_up

INTEGER

product_variants

The product_variants table contains data about product variations in your Yotpo account.

Replication Method

Key-based Incremental

Primary Key

yotpo_id

Replication Key

updated_at

Useful links

Yotpo documentation

product_variants schema on GitHub

Yotpo API method

compare_at_price

NUMBER

created_at

DATE-TIME

currency

STRING

description

STRING

external_id

STRING

gtins

ARRAY

declared_type

STRING

value

STRING

image_url

STRING

inventory_quantity

INTEGER

is_discontinued

BOOLEAN

is_valid_url_format

BOOLEAN

name

STRING

options

ARRAY

name

STRING

value

STRING

price

NUMBER

sku

STRING

updated_at

DATE-TIME

url

STRING

yotpo_id

INTEGER

yotpo_product_id

INTEGER

products

The products table contains data about products in your Yotpo account.

Replication Method

Full Table

Primary Key

yotpo_id

Useful links

Yotpo documentation

products schema on GitHub

Yotpo API method

Join products with on
product_reviews
products.yotpo_id = product_reviews.product_id

brand

STRING

compare_at_price

NUMBER

created_at

DATE-TIME

currency

STRING

custom_properties

OBJECT

description

STRING

external_created_at

DATE-TIME

external_id

STRING

external_updated_at

DATE-TIME

group_name

STRING

gtins

ARRAY

declared_type

STRING

detected_type

STRING

value

STRING

handle

STRING

image_url

STRING

inventory_quantity

INTEGER

is_discontinued

BOOLEAN

is_valid_url_format

BOOLEAN

mpn

STRING

name

STRING

price

NUMBER

sku

STRING

status

STRING

updated_at

DATE-TIME

url

STRING

yotpo_id

INTEGER

reviews

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.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updated_at

Useful links

Yotpo documentation

reviews schema on GitHub

Yotpo API method

Join reviews with on
product_reviews
reviews.id = product_reviews.source_review_id

archived

BOOLEAN

content

STRING

created_at

DATE-TIME

deleted

BOOLEAN

email

STRING

escalated

BOOLEAN

id

INTEGER

name

STRING

reviewer_type

STRING

score

NUMBER

sentiment

NUMBER

sku

STRING

title

STRING

updated_at

DATE-TIME

user_reference

STRING

votes_down

NUMBER

votes_up

NUMBER

unsubscribers

The unsubscribers table contains data about customers who unsubscribed from one of Yotpo’s emails.

Replication Method

Full Table

Primary Key

id

Useful links

Yotpo documentation

unsubscribers schema on GitHub

Yotpo API method

Join unsubscribers with on
emails
unsubscribers.user_email = emails.email_address

email_type_id

NUMBER

id

INTEGER

unsubscirbed_by_name

STRING

user_email

STRING


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.