# Yotpo

Yotpo is a cloud-based content marketing platform for e-commerce businesses. It lets users collect user-generated content and use the content to build a brand and manage the customer experience.

For more information about the API, see [Yotpo Core API](https://apidocs.yotpo.com/reference).

See the [Schema](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#Schema) section for a list of objects available for replication.

## Preparing for authentication

To access your data, you need to authenticate the connection with your account credentials.

Information noteMake sure that the account you use has read access to the tables you want to fetch.

To obtain the API key and secret:

1. Make sure you are an Yotpo account administrator. The API secret is only visible to this role.

2. Log into your [Yotpo account](https://yap.yotpo.com/#/login).

3. Click the Profile icon in the top-right corner.

4. Go to Account Settings &gt; General Settings.

5. Locate the API Credentials section:

   ![The API Credentials section in Yotpo, highlighted](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Resources/Images/yotpo-api-credentials.png)

   The App Key field contains your API Key, and the Secret Key is your API Secret.

6. Copy and paste these values into the corresponding fields.

## Creating the connection

For more information, see [Connecting to SaaS applications](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Fill in the required connection properties.

2. Provide a name for the connection in Connection name.

3. Select Open connection metadata to define metadata for the connection when it has been created.

4. Click Create.

Connection settings

| Setting | Description |
| --- | --- |
| Data gateway | Select a Data Movement gateway if required by your use case.<br><br>Information note<br><br>This field is not available with the Qlik Talend Cloud Starter subscription, as it does not support Data Movement gateway. If you have another subscription tier and do not want to use Data Movement gateway, select None.<br><br>For information on the benefits of Data Movement gateway and use cases that require it, see [Qlik Data Gateway - Data Movement](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Start Date | Enter the date, in the format `MM/DD/YYYY`, from which the data must be replicated from your source to your target. |
| API Key | API key. |
| API Secret | API secret. |

## Schema

Information note

Schemas and naming conventions can change from version to version. It is recommended to verify your version before continuing.

Depending on your destination, table and column names may not appear as they are outlined below.

### collections

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

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | yotpo\_id |
| **Replication Key** | updated\_at |
| **Useful links** | [Yotpo documentation](https://core-api.yotpo.com/reference/collections)<br><br>[Yotpo API method](https://core-api.yotpo.com/reference/retrieve-collections "Opens in new tab: Yotpo API method") |

collections table schema

| **created\_at**<br><br><br>DATE-TIME |
| --- |
| **external\_id**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |
| **yotpo\_id**<br><br><br>INTEGER |

### emails

The `emails` table contains data about every email sent from Yotpo.

#### Attribution window

When data is replicated 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](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#replication) section for more info and examples of how the attribution window is used to query for data.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Keys** | email\_address<br><br>email\_sent\_timestamp |
| **Replication Key** | email\_sent\_timestamp |
| **Useful links** | [Yotpo documentation](https://apidocs.yotpo.com/v1.0/reference#email-analytics-intro)<br><br>[Yotpo API method](https://apidocs.yotpo.com/v1.0/reference#raw-data "Opens in new tab: Yotpo API method") |

emails table foreign keys

| Join emails with | on |
| --- | --- |
| [unsubscribers](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#unsubscribers) | ```<br>emails.email_address = unsubscribers.user_email<br>``` |

emails table schema

| **arrived\_early\_timestamp**<br><br><br>DATE-TIME |
| --- |
| **clicked\_through\_timestamp**<br><br><br>DATE-TIME |
| **content\_creation\_timestamp**<br><br><br>DATE-TIME |
| **coupon\_code**<br><br><br>STRING |
| **email\_address**<br><br><br>STRING |
| **email\_sent\_timestamp**<br><br><br>DATE-TIME |
| **email\_type**<br><br><br>STRING |
| **failed\_timestamp**<br><br><br>DATE-TIME |
| **invalid\_address\_timestamp**<br><br><br>DATE-TIME |
| **marked\_spam\_timestamp**<br><br><br>DATE-TIME |
| **opened\_timestamp**<br><br><br>DATE-TIME |
| **order\_id**<br><br><br>STRING |
| **order\_timestamp**<br><br><br>DATE-TIME |
| **platform**<br><br><br>STRING |
| **product\_id**<br><br><br>STRING |
| **reminder\_num**<br><br><br>NUMBER |
| **review\_form**<br><br><br>STRING |
| **review\_type**<br><br><br>STRING |
| **sku**<br><br><br>STRING |
| **trr\_bundle\_id**<br><br><br>STRING |
| **trr\_bundle\_subject**<br><br><br>STRING |
| **unsubscribed\_timestamp**<br><br><br>DATE-TIME |

### order\_fulfillments

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

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Yotpo documentation](https://core-api.yotpo.com/reference/order-fulfillments)<br><br>[Yotpo API method](https://core-api.yotpo.com/reference/retrieve-order-fulfillments "Opens in new tab: Yotpo API method") |

order\_fulfillments table schema

| **created\_at**<br><br><br>DATE-TIME |
| --- |
| **external\_id**<br><br><br>STRING |
| **fulfilled\_items**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>external_product_id</b>: STRING</li><li><b>quantity</b>: INTEGER</li><li><b>yotpo_product_id</b>: INTEGER</li></ul> |
| **fulfillment\_date**<br><br><br>DATE-TIME |
| **id**<br><br><br>INTEGER |
| **order\_id**<br><br><br>STRING |
| **shipment\_info**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>shipment_status</b>: STRING</li><li><b>tracking_company</b>: STRING</li><li><b>tracking_number</b>: STRING</li><li><b>tracking_url</b>: STRING</li></ul> |
| **status**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |

### orders

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

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | yotpo\_id |
| **Replication Key** | order\_date |
| **Useful links** | [Yotpo documentation](https://core-api.yotpo.com/reference/orders)<br><br>[Yotpo API method](https://core-api.yotpo.com/reference/retrieve-orders "Opens in new tab: Yotpo API method") |

orders table schema

| **billing\_address**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>address1</b>: STRING</li><li><b>address2</b>: STRING</li><li><b>city</b>: STRING</li><li><b>company</b>: STRING</li><li><b>country_code</b>: STRING</li><li><b>phone_number</b>: STRING</li><li><b>province_code</b>: STRING</li><li><b>state</b>: STRING</li><li><b>zip</b>: STRING</li></ul> |
| --- |
| **cancellation**<br><br><br>OBJECT<br><br>This is a nested data structure: **cancellation\_date**, DATE-TIME |
| **checkout\_token**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **currency**<br><br><br>STRING |
| **custom\_properties**<br><br><br>OBJECT |
| **customer**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>accepts_email_marketing</b>: STRING</li><li><b>accepts_sms_marketing</b>: STRING</li><li><b>custom_properties</b>: OBJECT</li><li><b>email</b>: STRING</li><li><b>external_id</b>: STRING</li><li><b>first_name</b>: STRING</li><li><b>last_name</b>: STRING</li><li><b>phone_number</b>: STRING</li></ul> |
| **external\_id**<br><br><br>STRING |
| **fulfillments**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>external_id</b>: STRING</li><li><b>fulfilled_items</b>: ARRAY, which is also a nested data structure.                                            <ul><li><b>external_product_id</b>: STRING</li><li><b>quantity</b>: INTEGER</li></ul></li><li><b>fulfillment_date</b>: DATE-TIME</li><li><b>shipment_info</b>: OBJECT, which is also a nested data structure.                                            <ul><li><b>shipment_status</b>: STRING</li><li><b>tracking_company</b>: STRING</li><li><b>tracking_number</b>: STRING</li><li><b>tracking_url</b>: STRING</li></ul></li></ul> |
| **landing\_site\_url**<br><br><br>STRING |
| **line\_items**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>coupon_code</b>: STRING</li><li><b>created_at</b>: DATE-TIME</li><li><b>custom_properties</b>: OBJECT, which is also a nested data structure.                                        <ul><li><b>external_product_id</b>: STRING</li><li><b>product_id</b>: STRING</li><li><b>quantity</b>: INTEGER</li><li><b>subtotal_price</b>: NUMBER</li><li><b>total_price</b>: NUMBER</li><li><b>updated_at</b>: DATE-TIME</li><li><b>yotpo_id</b>: INTEGER</li></ul></li></ul> |
| **order\_date**<br><br><br>DATE-TIME |
| **order\_name**<br><br><br>STRING |
| **payment\_method**<br><br><br>STRING |
| **payment\_status**<br><br><br>STRING |
| **shipping\_address**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>address1</b>: STRING</li><li><b>address2</b>: STRING</li><li><b>city</b>: STRING</li><li><b>company</b>: STRING</li><li><b>country_code</b>: STRING</li><li><b>phone_number</b>: STRING</li><li><b>province_code</b>: STRING</li><li><b>state</b>: STRING</li><li><b>zip</b>: STRING</li></ul> |
| **source**<br><br><br>STRING |
| **subtotal\_price**<br><br><br>NUMBER |
| **total\_price**<br><br><br>NUMBER |
| **updated\_at**<br><br><br>DATE-TIME |
| **yotpo\_id**<br><br><br>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** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | created\_at |
| **Useful links** | [Yotpo documentation](https://apidocs.yotpo.com/reference/about-storefront-reviews)<br><br>[Yotpo API method](https://apidocs.yotpo.com/reference/retrieve-reviews-for-a-product "Opens in new tab: Yotpo API method") |

product\_reviews table foreign keys

| Join product\_reviews with | on |
| --- | --- |
| [products](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#products) | ```<br>product_reviews.product_id = products.yotpo_id<br>``` |
| [reviews](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#reviews) | ```<br>product_reviews.source_review_id = reviews.id<br>``` |

product\_reviews table schema

| **comment**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>comments_avatar</b>: STRING</li><li><b>content</b>: STRING</li><li><b>created_at</b>: DATE-TIME</li><li><b>display_name</b>: STRING</li><li><b>id</b>: INTEGER</li></ul> |
| --- |
| **content**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **custom\_fields**<br><br><br>OBJECT |
| **deleted**<br><br><br>BOOLEAN |
| **domain\_key**<br><br><br>STRING |
| **id**<br><br><br>INTEGER |
| **images\_data**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>id</b>: INTEGER</li><li><b>original_url</b>: STRING</li><li><b>thumb_url</b>: STRING</li></ul> |
| **name**<br><br><br>STRING |
| **product\_id**<br><br><br>INTEGER |
| **product\_yotpo\_id**<br><br><br>STRING |
| **score**<br><br><br>NUMBER |
| **sentiment**<br><br><br>NUMBER |
| **source\_review\_id**<br><br><br>NUMBER |
| **title**<br><br><br>STRING |
| **user**<br><br><br>OBJECT<br><br>This is a nested data structure:<br><br><ul><li><b>display_name</b>: STRING</li><li><b>is_social_connected</b>: NUMBER</li><li><b>social_image</b>: STRING</li><li><b>user_id</b>: INTEGER</li><li><b>user_type</b>: STRING</li></ul> |
| **verified\_buyer**<br><br><br>BOOLEAN |
| **votes\_down**<br><br><br>INTEGER |
| **votes\_up**<br><br><br>INTEGER |

### product\_variants

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

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | yotpo\_id |
| **Replication Key** | updated\_at |
| **Useful links** | [Yotpo documentation](https://core-api.yotpo.com/reference/product-variants)<br><br>[Yotpo API method](https://core-api.yotpo.com/reference/retrieve-product-variants "Opens in new tab: Yotpo API method") |

product\_variants table schema

| **compare\_at\_price**<br><br><br>NUMBER |
| --- |
| **created\_at**<br><br><br>DATE-TIME |
| **currency**<br><br><br>STRING |
| **description**<br><br><br>STRING |
| **external\_id**<br><br><br>STRING |
| **gtins**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>declared_type</b>: STRING</li><li><b>value</b>: STRING</li></ul> |
| **image\_url**<br><br><br>STRING |
| **inventory\_quantity**<br><br><br>INTEGER |
| **is\_discontinued**<br><br><br>BOOLEAN |
| **is\_valid\_url\_format**<br><br><br>BOOLEAN |
| **name**<br><br><br>STRING |
| **options**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>name</b>: STRING</li><li><b>value</b>: STRING</li></ul> |
| **price**<br><br><br>NUMBER |
| **sku**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |
| **url**<br><br><br>STRING |
| **yotpo\_id**<br><br><br>INTEGER |
| **yotpo\_product\_id**<br><br><br>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](https://apidocs.yotpo.com/reference#introduction-to-products)<br><br>[Yotpo API method](https://apidocs.yotpo.com/reference#retrieve-all-products "Opens in new tab: Yotpo API method") |

products table foreign keys

| Join products with | on |
| --- | --- |
| [product_reviews](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#product-reviews) | ```<br>products.yotpo_id = product_reviews.product_id<br>``` |

products table schema

| **brand**<br><br><br>STRING |
| --- |
| **compare\_at\_price**<br><br><br>NUMBER |
| **created\_at**<br><br><br>DATE-TIME |
| **currency**<br><br><br>STRING |
| **custom\_properties**<br><br><br>OBJECT |
| **description**<br><br><br>STRING |
| **external\_created\_at**<br><br><br>DATE-TIME |
| **external\_id**<br><br><br>STRING |
| **external\_updated\_at**<br><br><br>DATE-TIME |
| **group\_name**<br><br><br>STRING |
| **gtins**<br><br><br>ARRAY<br><br>This is a nested data structure:<br><br><ul><li><b>declared_type</b>: STRING</li><li><b>detected_type</b>: STRING</li><li><b>value</b>: STRING</li></ul> |
| **handle**<br><br><br>STRING |
| **image\_url**<br><br><br>STRING |
| **inventory\_quantity**<br><br><br>INTEGER |
| **is\_discontinued**<br><br><br>BOOLEAN |
| **is\_valid\_url\_format**<br><br><br>BOOLEAN |
| **mpn**<br><br><br>STRING |
| **name**<br><br><br>STRING |
| **price**<br><br><br>NUMBER |
| **sku**<br><br><br>STRING |
| **status**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |
| **url**<br><br><br>STRING |
| **yotpo\_id**<br><br><br>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 data is replicated 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](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#replication) section for more info and examples of how the attribution window is used to query for data.

| **Replication Method** | CDC |
| --- | --- |
| **Primary Key** | id |
| **Replication Key** | updated\_at |
| **Useful links** | [Yotpo documentation](https://apidocs.yotpo.com/reference#section-what-are-reviews)<br><br>[Yotpo API method](https://apidocs.yotpo.com/reference#retrieve-all-reviews "Opens in new tab: Yotpo API method") |

reviews table foreign keys

| Join reviews with | on |
| --- | --- |
| [product_reviews](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#product-reviews) | ```<br>reviews.id = product_reviews.source_review_id<br>``` |

reviews table schema

| **archived**<br><br><br>BOOLEAN |
| --- |
| **content**<br><br><br>STRING |
| **created\_at**<br><br><br>DATE-TIME |
| **deleted**<br><br><br>BOOLEAN |
| **email**<br><br><br>STRING |
| **escalated**<br><br><br>BOOLEAN |
| **id**<br><br><br>INTEGER |
| **name**<br><br><br>STRING |
| **reviewer\_type**<br><br><br>STRING |
| **score**<br><br><br>NUMBER |
| **sentiment**<br><br><br>NUMBER |
| **sku**<br><br><br>STRING |
| **title**<br><br><br>STRING |
| **updated\_at**<br><br><br>DATE-TIME |
| **user\_reference**<br><br><br>STRING |
| **votes\_down**<br><br><br>NUMBER |
| **votes\_up**<br><br><br>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](https://apidocs.yotpo.com/reference#introduction-to-unsubscribers)<br><br>[Yotpo API method](https://apidocs.yotpo.com/reference#retrieve-a-list-of-unsubscribers "Opens in new tab: Yotpo API method") |

unsubscribers table foreign keys

| Join unsubscribers with | on |
| --- | --- |
| [emails](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/WebApplications/Connecting-Yotpo.htm#emails) | ```<br>unsubscribers.user_email = emails.email_address<br>``` |

unsubscribers table schema

| **email\_type\_id**<br><br><br>NUMBER |
| --- |
| **id**<br><br><br>INTEGER |
| **unsubscirbed\_by\_name**<br><br><br>STRING |
| **user\_email**<br><br><br>STRING |