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:

  • For tables using Key-based Incremental Replication, data equal to or newer than this date will be replicated to your destination.
  • For tables using Full Table Replication, all data - including records that are older, equal to, or newer than this date - will be replicated to your destination.

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 for these tables:

  • emails

  • reviews

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

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

yotpo_id

API endpoint :

Retrieve collections

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

yotpo_id
INTEGER

The ID generated by Yotpo for the collection.

updated_at
DATE-TIME

The time the collection was last updated.

created_at
DATE-TIME

external_id
STRING

name
STRING


Replication Method :

Key-based Incremental

Replication Key :

email_sent_timestamp

Primary Key :

email_address : email_sent_timestamp

API endpoint :

Email analytics raw data

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
STRING

The email address of the recipient.

Reference:

email_sent_timestamp
STRING

The time the email was sent to the recipient.

order_id
STRING

If applicable, the ID of the order the email is associated with.

order_timestamp
STRING

product_id
STRING

If applicable, the ID of the product the email is associated with.

Reference:

sku
STRING

email_type
STRING

reminder_num
NUMBER

trr_bundle_id
STRING

trr_bundle_subject
STRING

review_type
STRING

coupon_code
STRING

opened_timestamp
STRING

clicked_through_timestamp
STRING

content_creation_timestamp
STRING

review_form
STRING

platform
STRING

invalid_address_timestamp
STRING

failed_timestamp
STRING

unsubscribed_timestamp
STRING

marked_spam_timestamp
STRING

arrived_early_timestamp
STRING


Replication Method :

Key-based Incremental

Replication Key :

order_date

Primary Key :

yotpo_id

API endpoint :

Retrieve orders

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

yotpo_id
INTEGER

The ID generated by Yotpo for the order. This value is read-only.

Reference:

order_date
DATE-TIME

The date the order was created in the store. It is not possible to send an automatic email request for orders older than six months.

billing_address
OBJECT

address1
STRING

address2
STRING

city
STRING

company
STRING

state
STRING

zip
STRING

province_code
STRING

country_code
STRING

phone_number
STRING

orders (table), billing_address (attribute)

cancellation
OBJECT

cancellation_date
DATE-TIME

orders (table), cancellation (attribute)

checkout_token
STRING

created_at
DATE-TIME

currency
STRING

custom_properties
OBJECT

customer
OBJECT

external_id
STRING

first_name
STRING

last_name
STRING

email
STRING

phone_number
STRING

accepts_email_marketing
STRING

accepts_sms_marketing
STRING

custom_properties
OBJECT

orders (table), customer (attribute)

external_id
STRING

fulfillments
ARRAY

fulfillment_date
DATE-TIME

status
STRING

shipment_info
OBJECT

shipment_status
STRING

tracking_company
STRING

tracking_url
STRING

tracking_number
STRING

orders (table), shipment_info (attribute)

fulfilled_items
ARRAY

external_product_id
STRING

quantity
INTEGER

orders (table), fulfilled_items (attribute)

external_id
STRING

orders (table), fulfillments (attribute)

landing_site_url
STRING

line_items
ARRAY

yotpo_id
INTEGER

created_at
DATE-TIME

updated_at
DATE-TIME

quantity
INTEGER

total_price
NUMBER

subtotal_price
NUMBER

coupon_code
STRING

product_id
STRING

external_product_id
STRING

custom_properties
OBJECT

orders (table), line_items (attribute)

order_name
STRING

payment_method
STRING

payment_status
STRING

shipping_address
OBJECT

address1
STRING

address2
STRING

city
STRING

company
STRING

state
STRING

zip
STRING

province_code
STRING

country_code
STRING

phone_number
STRING

orders (table), shipping_address (attribute)

source
STRING

subtotal_price
NUMBER

total_price
NUMBER

updated_at
DATE-TIME


order_fulfillments

Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

Retried order fulfillments

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

id
INTEGER

The order fulfillment ID.

updated_at
DATE-TIME

The time the fulfillment was last updated.

created_at
DATE-TIME

external_id
STRING

fulfilled_items
ARRAY

yotpo_product_id
INTEGER

external_product_id
STRING

quantity
INTEGER

order_fulfillments (table), fulfilled_items (attribute)

fulfillment_date
DATE-TIME

order_id
STRING

shipment_info
OBJECT

shipment_status
STRING

tracking_company
STRING

tracking_url
STRING

tracking_number
STRING

order_fulfillments (table), shipment_info (attribute)

status
STRING


Replication Method :

Full Table

Primary Key :

yotpo_id

API endpoint :

Retrieve All Products

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

yotpo_id
INTEGER

The Yotpo ID for the product.

Reference:

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

value
STRING

detected_type
STRING

products (table), gtins (attribute)

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


Replication Method :

Key-based Incremental

Replication Key :

created_at

Primary Key :

id

API endpoint :

Retrieve reviews for a Product

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
INTEGER

The review ID.

Reference:

created_at
DATE-TIME

The time the review was created.

comment
OBJECT

id
INTEGER

content
STRING

created_at
DATE-TIME

display_name
STRING

comments_avatar
STRING

product_reviews (table), comment (attribute)

content
STRING

custom_fields
OBJECT

deleted
BOOLEAN

domain_key
STRING

images_data
ARRAY

id
INTEGER

original_url
STRING

thumb_url
STRING

product_reviews (table), images_data (attribute)

name
STRING

product_id
INTEGER

product_yotpo_id
STRING

score
NUMBER

sentiment
NUMBER

source_review_id
NUMBER

title
STRING

user
OBJECT

user_id
INTEGER

display_name
STRING

social_image
STRING

user_type
STRING

is_social_connected
NUMBER

product_reviews (table), user (attribute)

verified_buyer
BOOLEAN

votes_down
INTEGER

votes_up
INTEGER


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

yotpo_id

API endpoint :

Retrieve product variants

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

yotpo_id
INTEGER

The ID generated by Yotpo for the product variant.

updated_at
DATE-TIME

The time the product variant was last updated.

compare_at_price
NUMBER

created_at
DATE-TIME

currency
STRING

description
STRING

external_id
STRING

gtins
ARRAY

declared_type
STRING

value
STRING

product_variants (table), gtins (attribute)

image_url
STRING

inventory_quantity
INTEGER

is_discontinued
BOOLEAN

is_valid_url_format
BOOLEAN

name
STRING

options
ARRAY

name
STRING

value
STRING

product_variants (table), options (attribute)

price
NUMBER

sku
STRING

url
STRING

yotpo_product_id
INTEGER

The product ID.

Reference:


Replication Method :

Key-based Incremental

Replication Key :

updated_at

Primary Key :

id

API endpoint :

Retrieve All 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.

id
INTEGER

The ID of the review.

Reference:

updated_at
STRING

The time the review was last updated.

archived
BOOLEAN

content
STRING

created_at
DATE-TIME

deleted
BOOLEAN

email
STRING

escalated
BOOLEAN

name
STRING

reviewer_type
STRING

score
NUMBER

sentiment
NUMBER

sku
STRING

title
STRING

user_reference
STRING

votes_down
NUMBER

votes_up
NUMBER


Replication Method :

Full Table

Primary Key :

id

API endpoint :

Retrieve a list of unsubscribers

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

id
INTEGER

The unsubscriber ID.

user_email
STRING

The email address of the unsubscriber.

Reference:

email_type_id
NUMBER

unsubscirbed_by_name
STRING

Note: The misspelling in this field name originates in Yotpo’s API. Stitch doesn’t have the ability to rename it.



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.