> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Trustvox as a data source

> Bring product reviews, store reviews, orders, product questions and answers, products, marketplace sellers and tags from Trustvox to Nekt.

Trustvox, part of Reclame AQUI, is a platform that collects verified reviews from e-commerce customers: after a purchase it asks shoppers to review the products and the store, and shows those reviews and the shoppers' questions on the store's product pages. This connector reads your store through the Trustvox API and brings your product reviews (with photos and survey answers), store reviews, the orders sent to Trustvox, product questions and answers, products with their rating totals, marketplace sellers and their reviews, and tags.

> [!NOTE]
>
> The connector only reads data. It never creates, changes or deletes anything in Trustvox.

## Configuring Trustvox as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Trustvox option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

The connector uses your store's **Store Token** and **Store ID**. An administrator of your store finds the token in the Trustvox panel, in the **Preferências da Empresa** menu. If it is not there, ask Trustvox support for the store token of your store at [meajuda@reclameaqui.com.br](mailto:meajuda@reclameaqui.com.br). The Store ID is the number of your store in Trustvox; Trustvox support can confirm it too.

The following configurations are available:

* **Store ID**: The number of your store in Trustvox.
* **Store Token**: The store token of your store.
* **Start Date**: Earliest creation date read for product reviews, store reviews and orders on the first sync and on full syncs. The other tables are always read in full.
* **Lookback Days** (advanced, optional): On each sync, product reviews and store reviews created this many days before the last sync are read again, to pick up recent changes such as votes and moderation. From 0 to 365. Default: 30.
* **Orders Lookback Days** (advanced, optional): The same for orders, which keep changing for weeks after they are created (status, and the reviews the customer leaves). From 0 to 365. Default: 90.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.

* **Layer**: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: a folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data, which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data, which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers.md), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Optionally, you can define some additional settings:

* Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).
* Determine when to execute an **Additional [Full Sync](https://docs.nekt.com/get-started/core-concepts/types-of-sync#additional-full-sync)**. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

> [!WARNING]
>
> For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.

## How the data is kept up to date

* **Product Reviews**, **Store Reviews** and **Orders** are read by creation date: each sync reads what was created since the last sync, plus the lookback period before it (**Lookback Days** for reviews, **Orders Lookback Days** for orders). Trustvox only filters by creation date, so a change made to an older record (a vote on a review, a moderation, an order that changed status) is picked up only within the lookback period, or by a full sync. The reviews themselves are never missed: they are always in Product Reviews and Store Reviews, even when the order that brought them is older.
* **Questions**, **Products**, **Sellers**, **Seller Reviews** and **Tags** are read in full on every sync, so answers given at any time and updated rating totals always arrive.

> [!TIP]
>
> Schedule an **Additional Full Sync** (for example, once a week) in step 4. It brings the latest state of older reviews and orders and removes from your tables the records deleted in Trustvox.

> [!NOTE]
>
> If your store token cannot read some tables (Trustvox answers "You do not have access to this resource"), or your store does not have them (for example, **Sellers** and **Seller Reviews** only exist on marketplace stores), those tables are skipped and named in the sync log, and the other tables keep syncing. Ask Trustvox support to enable the access, or deselect those tables. If the token cannot read any selected table, the sync fails and asks you to check the Store Token and Store ID.

## Fields by stream

Nested objects sent by Trustvox are split into columns where they are small (customer, product, answer, store review) and kept as JSON text where they are lists or larger objects (order items, photos, survey answers). Any field Trustvox sends that has no column of its own is kept in `extra_fields`.

> [accordion] Product Reviews
>
> Every product review (opinion) of the store, with the rating, text, recommendation, votes, photos, survey answers, the customer and the order it came from.
>
> Table: `product_reviews` · Primary key: `id` · Sync: Incremental (by `created_at`)
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the product review. |
> | `rate` | Integer | Rating the customer gave the product, from 1 to 5. |
> | `title` | String | Title of the review, when the customer wrote one. |
> | `text` | String | Text of the review. When the customer only rated the product, Trustvox sends a placeholder such as `<em>(cliente não deixou opinião, apenas deu sua nota ao produto)</em>`. |
> | `recommends` | String | Whether the customer recommends the product ('yes' or 'no'). |
> | `state` | String | Moderation state of the review: pending, commented, reported or read. |
> | `upvotes_count` | Integer | Number of shoppers who marked the review as helpful. |
> | `downvotes_count` | Integer | Number of shoppers who marked the review as not helpful. |
> | `created_at` | Datetime | When the review was created (UTC); used as the incremental replication key. |
> | `product_id` | String | Store's own code of the reviewed product. |
> | `product_name` | String | Name of the reviewed product. |
> | `product` | String (JSON) | Reviewed product as sent with the review: name, average rate, totals, EANs, price and links. |
> | `client_id` | Integer | Trustvox identifier of the customer. |
> | `client_first_name` | String | Customer's first name. |
> | `client_last_name` | String | Customer's last name (Trustvox may abbreviate it). |
> | `client_email` | String | Customer's e-mail address. |
> | `client_phone_number` | String | Customer's phone number. |
> | `order_id` | String | Store's own identifier of the order the review came from. |
> | `order_created_at` | Datetime | When the order was created in Trustvox (UTC). |
> | `order_delivery_date` | Date | Delivery date of the order. |
> | `photos` | String (JSON) | Photos attached to the review, each with its moderation state and image links. |
> | `survey` | String (JSON) | Answers to the product survey (size, comfort, fit...) given with the review. |
> | `comments` | String (JSON) | Replies the store posted on the review, when Trustvox sends them. |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Store Reviews
>
> Reviews of the store itself (purchase and delivery experience), with the rating, text and customer.
>
> Table: `store_reviews` · Primary key: `id` · Sync: Incremental (by `created_at`)
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the store review. |
> | `rate` | Integer | Rating the customer gave the store, from 1 to 5. |
> | `text` | String | Text of the review. When the customer only rated the store, Trustvox sends a placeholder such as `<em>(cliente não deixou opinião, apenas deu sua nota à loja)</em>`. |
> | `created_at` | Datetime | When the review was created (UTC); used as the incremental replication key. The list endpoint sends only the day, which is stored as midnight in São Paulo time. |
> | `client_id` | Integer | Trustvox identifier of the customer. |
> | `client_first_name` | String | Customer's first name. |
> | `client_last_name` | String | Customer's last name (Trustvox may abbreviate it). |
> | `client_email` | String | Customer's e-mail address. |
> | `client_phone_number` | String | Customer's phone number. |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Orders
>
> Orders the store sent to Trustvox to request reviews, with customer, tags, products, the review links and the reviews left for each order.
>
> Table: `orders` · Primary key: `id` · Sync: Incremental (by `created_at`)
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the order. |
> | `order_id` | String | Store's own identifier of the order. |
> | `state` | String | Review-request state of the order in Trustvox (e.g. scheduled, turned\_over, evaluated). |
> | `delivery_date` | Date | Delivery date the store informed for the order. |
> | `created_at` | Datetime | When the order was created in Trustvox (UTC); used as the incremental replication key. |
> | `tags` | Array of strings | Tags of the order (sale tags such as payment method or channel). |
> | `review_url` | String | Link the customer uses to review the products of the order. |
> | `store_review_url` | String | Link the customer uses to review the store for this order. |
> | `client_id` | Integer | Trustvox identifier of the customer. |
> | `client_first_name` | String | Customer's first name. |
> | `client_last_name` | String | Customer's last name (Trustvox may abbreviate it). |
> | `client_email` | String | Customer's e-mail address. |
> | `client_phone_number` | String | Customer's phone number. |
> | `client_tags` | Array of strings | Tags of the customer. |
> | `seller_id` | String | Store's own code of the marketplace seller of the order, when there is one. |
> | `seller_name` | String | Name of the marketplace seller of the order. |
> | `seller_logo` | String | Logo link of the marketplace seller of the order. |
> | `store_review_id` | Integer | Trustvox identifier of the store review left for this order, if any. |
> | `store_review_rate` | Integer | Rating of the store review left for this order, from 1 to 5. |
> | `store_review_text` | String | Text of the store review left for this order. |
> | `store_review_created_at` | Datetime | When the store review of this order was created (UTC). |
> | `items` | String (JSON) | Products of the order: store product code, name, price, URL, tags, EAN/MPN/GTIN codes, review link, product totals and, when reviewed, the review (opinion). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Questions
>
> Questions shoppers asked about products, with the store's answer when there is one.
>
> Table: `questions` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the question. |
> | `text` | String | Text of the question. |
> | `state` | String | State of the question: pending, replied or reported. |
> | `visible` | Boolean | Whether the question is shown on the product page. |
> | `created_at` | Datetime | When the question was asked (UTC). |
> | `updated_at` | Datetime | When the question was last changed, e.g. answered (UTC). |
> | `consumer_first_name` | String | First name of the shopper who asked. |
> | `consumer_last_name` | String | Last name of the shopper who asked (Trustvox may abbreviate it). |
> | `consumer_email` | String | E-mail of the shopper who asked. |
> | `product_id` | String | Store's own code of the product the question is about. |
> | `product_name` | String | Name of the product the question is about. |
> | `product` | String (JSON) | Product the question is about, as sent with the question: totals, EANs and links. |
> | `answer_id` | Integer | Trustvox identifier of the answer, when the question was answered. |
> | `answer_text` | String | Text of the answer. |
> | `answer_user_email` | String | E-mail of the store user who answered. |
> | `answer_created_at` | Datetime | When the answer was created (UTC). |
> | `answer_updated_at` | Datetime | When the answer was last changed (UTC). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Products
>
> Products of the store in Trustvox with their rating totals.
>
> Table: `products` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | String | Store's own code of the product (the code the store sends to Trustvox). |
> | `name` | String | Name of the product. |
> | `average_rate` | Number | Average rating of the product, from 1 to 5. |
> | `total_opinions` | Integer | Number of reviews of the product. |
> | `total_recommends` | Integer | Number of reviews that recommend the product. |
> | `price` | Number | Price of the product, when Trustvox sends it. |
> | `ean` | Array of strings | EAN codes of the product. |
> | `tags` | Array of strings | Tags of the product, when Trustvox sends them. |
> | `page_url` | String | Link to the product page in the store. |
> | `image_url` | String | Link to the product image. |
> | `links` | String (JSON) | Links Trustvox sent with the product (page, image...). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Sellers
>
> Marketplace sellers of the store with their rating summary (average, NPS, histogram and survey summaries). Marketplace stores only.
>
> Table: `sellers` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the seller. |
> | `name` | String | Name of the seller. |
> | `external_id` | String | Store's own code of the seller. |
> | `store_id` | Integer | Trustvox identifier of the store the seller belongs to. |
> | `photo_url` | String | Link to the seller's logo. |
> | `created_at` | Datetime | When the seller was created in Trustvox (UTC). |
> | `updated_at` | Datetime | When the seller was last changed in Trustvox (UTC). |
> | `average_rate` | Number | Average rating of the seller, from 1 to 5. |
> | `total_opinions` | Integer | Number of reviews of the seller. |
> | `nps` | String (JSON) | Net Promoter Score summary of the seller: score, total, promoters, neutrals, detractors and the 0-10 histogram. |
> | `histogram` | String (JSON) | Number of reviews of the seller per rating (1 to 5). |
> | `summaries` | String (JSON) | Summary of each post-purchase survey question about the seller (delivery time, packaging...). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Seller Reviews
>
> Reviews of marketplace sellers. Marketplace stores only.
>
> Table: `seller_reviews` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique Trustvox identifier of the seller review. |
> | `rate` | Integer | Rating the customer gave the seller, from 1 to 5. |
> | `text` | String | Text of the review (empty when the customer only rated the seller). |
> | `seller_id` | Integer | Trustvox identifier of the reviewed seller. |
> | `seller_name` | String | Name of the reviewed seller. |
> | `seller_external_id` | String | Store's own code of the reviewed seller. |
> | `seller` | String (JSON) | Reviewed seller as sent with the review: id, name, codes, photo and dates. |
> | `sale_id` | Integer | Trustvox identifier of the order the review came from. |
> | `client_id` | Integer | Trustvox identifier of the customer. |
> | `client_first_name` | String | Customer's first name. |
> | `client_last_name` | String | Customer's last name (Trustvox may abbreviate it). |
> | `client_email` | String | Customer's e-mail address. |
> | `client_phone_number` | String | Customer's phone number. |
> | `created_at` | Datetime | When the review was created (UTC). |
> | `updated_at` | Datetime | When the review was last changed (UTC). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

> [accordion] Tags
>
> Tags of the store, orders, products and customers.
>
> Table: `tags` · Primary key: `belonging_to`, `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `belonging_to` | String | What the tag is attached to: store, orders, products or clients (customers). |
> | `id` | Integer | Trustvox identifier of the tag. |
> | `name` | String | Name of the tag (often 'Group/Value', e.g. 'pagamento/cartao'). |
> | `extra_fields` | String (JSON) | Fields the API returned that this connector does not map to a column, keyed by their original names (nested ones as parent.field). |

## Implementation Notes

* Dates and times are stored in UTC. Trustvox filters by days in São Paulo time; the store reviews list sends only the day of each review, which is stored as midnight in São Paulo time.
* Ratings, averages and prices keep their exact decimal values.
* Trustvox does not publish a rate limit. The connector sends one request at a time and waits when Trustvox asks it to slow down.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.