The easiest way to integrate reviews into your existing analytics and dashboards is to use our BigQuery export. This makes it easy to use the data in PowerBI, Tableau, etc.
We have two standard schemas, one for reviews and one for summaries. The data almost completely matches the data from the Review Summaries API and the Review Export API.
The difference is that in the BigQuery export, there is more flexibility in how we consolidate across languages.
There’s also an AI summary field available in the summaries dataset. This summary does not need to correspond to the summaries used on the site, they can use different grouping of reviews, different prompts and different target language.
[
{"name": "type", "type": "STRING"},
{"name": "client_id", "type": "STRING"},
{"name": "author", "type": "STRING"},
{"name": "score", "type": "INTEGER"},
{"name": "score_max", "type": "INTEGER"},
{"name": "date", "type": "DATE"},
{"name": "extract", "type": "STRING"},
{"name": "title", "type": "STRING"},
{"name": "original", "type": "JSON"},
{"name": "pros", "type": "STRING", "mode": "REPEATED"},
{"name": "cons", "type": "STRING", "mode": "REPEATED"},
{"name": "lang", "type": "STRING"},
{"name": "verified_buyer", "type": "BOOLEAN"},
{"name": "votes_up", "type": "INTEGER"},
{"name": "votes_down", "type": "INTEGER"},
{"name": "product", "type": "STRING"},
{"name": "product_id", "type": "STRING"},
{"name": "responses", "type": "RECORD", "mode": "REPEATED", "fields": [
{"name": "response", "type": "STRING"},
{"name": "name", "type": "STRING"},
{"name": "date", "type": "DATE"},
{"name": "images", "type": "STRING", "mode": "REPEATED"},
{"name": "icon", "type": "STRING"},
{"name": "icon_width", "type": "INTEGER"},
{"name": "icon_height", "type": "INTEGER"}
]},
{"name": "images", "type": "JSON", "mode": "REPEATED"},
{"name": "question_answers", "type": "RECORD", "mode": "REPEATED", "fields": [
{"name": "name", "type": "STRING"},
{"name": "type", "type": "STRING"},
{"name": "value", "type": "STRING"},
{"name": "options", "type": "RECORD", "mode": "REPEATED", "fields": [
{"name": "value", "type": "STRING"},
{"name": "selected", "type": "BOOLEAN"}
]}
]},
{"name": "properties","type": "JSON","mode": "NULLABLE"},
{"name": "id", "type": "STRING"},
{"name": "external_id", "type": "STRING"},
{"name": "custom_questions", "type": "JSON"},
{"name": "family_ids", "type": "STRING", "mode": "REPEATED"},
{"name": "product_ids", "type": "STRING", "mode": "REPEATED"},
{"name": "order_id", "type": "STRING"},
{"name": "customer_id", "type": "STRING"},
{"name": "created_at", "type": "TIMESTAMP"},
{"name": "updated_at", "type": "TIMESTAMP"},
{"name": "accepted", "type": "BOOLEAN"},
{"name": "accepted_at", "type": "TIMESTAMP"},
{"name": "verified_email", "type": "BOOLEAN"},
{"name": "author_email", "type": "STRING"},
{"name": "portal_url", "type": "STRING"},
{"name": "reject_reason", "type": "STRING"}
]
[
{"name": "sku", "type": "STRING"},
{"name": "rating", "type": "FLOAT64"},
{"name": "count", "type": "INTEGER"},
{"name": "summary", "type": "STRING"}
]
This section explains how to configure Google Cloud so Trustvoice can securely deliver review data into your BigQuery environment. You retain ownership of the GCP project, dataset, and billing. Trustvoice authenticates using a dedicated Service Account you create and authorize.
We have an alternative where we set up the project on Trustvoice side, please talk to your Trustvoice contact if this is something you want to explore.
You will:
trustvoice_reviewsDecide which GCP project will own the BigQuery dataset.
Record the Project ID (example: my-company-data-prod).
This will be shared with Trustvoice later.
In the selected project, ensure the following API is enabled:
bigquery.googleapis.com)In Google Cloud Console:
trustvoice_reviewsCreate a dataset in BigQuery:
trustvoice_reviewsIn Google Cloud Console:
trustvoice_reviews✅ Record the dataset location (EU/US). This will be shared with Trustvoice later.
Create a Service Account that Trustvoice will use to authenticate to your GCP project.
Recommended:
trustvoice-bq-loadertrustvoice-bq-loaderService account for Trustvoice BigQuery data deliveryIn Google Cloud Console:
✅ Record the full Service Account email address (example: trustvoice-bq-loader@my-company-data-prod.iam.gserviceaccount.com).
Permissions are granted in two places:
Grant this role on the project to the Service Account:
roles/bigquery.jobUser)In Google Cloud Console:
Grant this role on the dataset trustvoice_reviews to the Service Account:
roles/bigquery.dataEditor)In Google Cloud Console (BigQuery):
trustvoice_reviewsIn some environments, additional dataset permissions may be necessary depending on table lifecycle and schema management policies.
If Trustvoice requests it during onboarding/troubleshooting, grant instead:
roles/bigquery.dataOwner) on the dataset (not on the whole project)Trustvoice authenticates using a JSON key generated for the Service Account.
In Google Cloud Console:
trustvoice-bq-loader)A JSON file will download to your computer.
⚠️ Treat this file as a secret. Anyone with this JSON key can access your dataset according to the permissions you granted.
Provide Trustvoice with:
my-company-data-prod)trustvoice_reviewsSend these via your agreed secure channel (e.g., encrypted email, secure upload portal, or your organization’s approved secrets transfer process).
trustvoice_reviews) rather than broad project-wide roles.If data delivery does not work as expected, verify:
trustvoice_reviews exists in the intended location (EU/US)If your organization blocks Service Account keys, contact Trustvoice to discuss a keyless authentication alternative (e.g., Workload Identity Federation).
If you need assistance, contact your Trustvoice onboarding or support representative and include: