BigQuery export

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.

Schemas

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.

Reviews

[
  {"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"}
]

Product summaries

[
  {"name": "sku", "type": "STRING"},
  {"name": "rating", "type": "FLOAT64"},
  {"name": "count", "type": "INTEGER"},
  {"name": "summary", "type": "STRING"}
]

Setup

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.


Overview

You will:

  1. Choose or create a Google Cloud project
  2. Enable required Google APIs
  3. Create a BigQuery dataset named trustvoice_reviews
  4. Create a dedicated Service Account for Trustvoice
  5. Grant the Service Account the minimum required permissions
  6. Generate a JSON key for the Service Account
  7. Send the JSON key and a few configuration details to Trustvoice

Prerequisites

  • You have access to a Google Cloud project with permission to:
    • Create Service Accounts and keys
    • Manage IAM permissions
    • Create BigQuery datasets
  • BigQuery is available in your organization and billing is enabled (if applicable)

1) Select or Create a Google Cloud Project

Decide which GCP project will own the BigQuery dataset.

  • Option A: Use an existing analytics/data project
  • Option B: Create a dedicated project for Trustvoice data delivery

Record the Project ID (example: my-company-data-prod). This will be shared with Trustvoice later.


2) Enable Required APIs

In the selected project, ensure the following API is enabled:

  • BigQuery API (bigquery.googleapis.com)

In Google Cloud Console:

  • APIs & ServicesLibrary → search for BigQuery APIEnable

3) Create the BigQuery Dataset trustvoice_reviews

Create a dataset in BigQuery:

  • Dataset ID: trustvoice_reviews
  • Data location: choose EU or US (or another region that matches your policy)

In Google Cloud Console:

  • BigQuery → select your project
  • Click the menu next to the project → Create dataset
  • Set Dataset ID to trustvoice_reviews
  • Choose Data location (EU or US)
  • Click Create dataset

✅ Record the dataset location (EU/US). This will be shared with Trustvoice later.


4) Create a Dedicated Service Account for Trustvoice

Create a Service Account that Trustvoice will use to authenticate to your GCP project.

Recommended:

  • Service account name: trustvoice-bq-loader
  • Service account ID: trustvoice-bq-loader
  • Description: Service account for Trustvoice BigQuery data delivery

In Google Cloud Console:

  • IAM & AdminService AccountsCreate Service Account
  • Enter the name/ID and create it

✅ Record the full Service Account email address (example: trustvoice-bq-loader@my-company-data-prod.iam.gserviceaccount.com).


5) Grant Required Permissions (IAM)

Permissions are granted in two places:

  • Project-level permission to run BigQuery jobs
  • Dataset-level permission to write/manage data in the dataset

5.1 Project-level permission

Grant this role on the project to the Service Account:

  • BigQuery Job User (roles/bigquery.jobUser)

In Google Cloud Console:

  • IAM & AdminIAM
  • Grant access
  • Principal: the Service Account email (from step 4)
  • Role: BigQuery Job User
  • Save

5.2 Dataset-level permission

Grant this role on the dataset trustvoice_reviews to the Service Account:

  • BigQuery Data Editor (roles/bigquery.dataEditor)

In Google Cloud Console (BigQuery):

  • BigQuery → select dataset trustvoice_reviews
  • SharingPermissions
  • Add principal: Service Account email
  • Role: BigQuery Data Editor
  • Save

Optional (only if requested)

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

  • BigQuery Data Owner (roles/bigquery.dataOwner) on the dataset (not on the whole project)

6) Create and Download a JSON Key for the Service Account

Trustvoice authenticates using a JSON key generated for the Service Account.

In Google Cloud Console:

  • IAM & AdminService Accounts
  • Click the Service Account you created (trustvoice-bq-loader)
  • Go to the Keys tab
  • Add keyCreate new key
  • Choose JSON
  • Click Create

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.


7) Send the Following to Trustvoice

Provide Trustvoice with:

  1. Service Account JSON key file contents (the downloaded JSON)
  2. GCP Project ID (e.g., my-company-data-prod)
  3. BigQuery dataset name: trustvoice_reviews
  4. BigQuery dataset location (EU/US)

Send these via your agreed secure channel (e.g., encrypted email, secure upload portal, or your organization’s approved secrets transfer process).


Security & Operations Recommendations

  • Use a dedicated Service Account for this integration (do not reuse an existing one).
  • Limit access scope to the dataset (trustvoice_reviews) rather than broad project-wide roles.
  • Key rotation: rotate the JSON key periodically or per your internal policy.
    • Generate a new key and share it with Trustvoice
    • After confirmation, delete the old key
  • Offboarding: to revoke access, remove dataset permissions and delete the Service Account (or delete its keys).

Troubleshooting Checklist

If data delivery does not work as expected, verify:

  • BigQuery API is enabled in the project
  • Dataset trustvoice_reviews exists in the intended location (EU/US)
  • Service Account has:
    • BigQuery Job User on the project
    • BigQuery Data Editor on the dataset
  • The JSON key corresponds to the Service Account with the permissions above
  • Organization policies do not block Service Account keys (some orgs disable key creation)

If your organization blocks Service Account keys, contact Trustvoice to discuss a keyless authentication alternative (e.g., Workload Identity Federation).


Contact

If you need assistance, contact your Trustvoice onboarding or support representative and include:

  • Project ID
  • Dataset location (EU/US)
  • Service Account email
  • A description or screenshot of any error messages