Trustpilot to Snowflake: How to Move Your Data

Move Trustpilot into Snowflake with Airbyte. Why OAuth reaches more streams than an API key, and why replies and edits need a periodic full refresh.

Summarize with AI:

Moving Trustpilot into Snowflake lets you set customer sentiment against everything that produced it. A star rating on its own is a number; the same rating joined to order history, support contacts and delivery times becomes an explanation, and Trustpilot has never seen any of that.

This guide covers the managed path with Airbyte. Two things shape the build: which authentication method you choose decides how many streams you can reach, and reviews keep changing after they are written.

Trustpilot to Snowflake at a glance:

CapabilitySupportedWhat it means for this pipeline
AuthenticationTwo methodsAn API key, or OAuth 2.0 which reaches more streams
OAuth setupManualYou request the token yourself with a password grant
Business unitsNamed explicitlySome streams depend on the units you list
Review contentPersonal dataReviewer identity and free text written by customers
VolumeSmallWhich makes periodic full refreshes affordable

Why move data from Trustpilot to Snowflake?

Two situations account for most of these pipelines.

The first is explaining sentiment rather than reporting it. A dip in average rating is visible in Trustpilot and its cause is not, because the cause usually lives in delivery times, a product change or a support backlog. Joining reviews to those systems is the only way to move from noticing to understanding.

The second is keeping a durable record of what customers said and how the business replied, which matters for both trend analysis and the occasional dispute. Volumes here are small by warehouse standards, so this is a cheap pipeline whose value comes from the joins rather than from the data on its own.

What do you need before you start?

Four things, and the first decides what the rest of the project can include:

A Trustpilot app, and a decision about authentication. An API key is quick and reaches fewer streams. OAuth 2.0 is more work and reaches more. The Trustpilot source documentation walks through both, including the token request you make by hand.

Your business unit identifiers. These are named explicitly in the configuration and some streams depend on them, so an organisation with several brands or domains needs to list each one it cares about.

Snowflake objects and a role. A warehouse, database, schema and a role that can create tables. Volumes are small enough that the smallest warehouse is ample.

A view on reviewer data. Reviews are public, and the records behind them can carry more about the reviewer than the public page shows. Decide who needs to see identifying detail before the schema is handed out.

If your Snowflake account restricts inbound traffic by IP, add the Airbyte Cloud IP addresses to the network policy before you begin.

How do you build a Trustpilot to Snowflake pipeline in Airbyte?

Step 1: Choose your authentication method first

This is genuinely the first decision, because it determines which streams exist rather than merely how you connect. If the analysis you have promised depends on a stream only OAuth reaches, discovering that after configuring an API key means redoing the setup. Check which streams you need against what each method provides, then do the harder setup once if that is what the project requires.

Step 2: Configure the Trustpilot source

Click Sources in the left navigation, then New Source, and select Trustpilot, following adding a source. Supply your credentials, the business units you want and a start date. For OAuth you will have obtained an access token and refresh token from a request you made yourself, and those go into the configuration alongside the key and secret.

Step 3: Configure the Snowflake destination

Click Destinations, then New Destination, and select Snowflake, following adding a destination. Supply the account identifier, warehouse, database, schema and role. Reviews carry nested structures for company replies and reviewer details, and Snowflake holds those natively, so nothing needs flattening on the way in.

Step 4: Create the connection and plan a periodic refresh

Click Connections, then New connection, select your streams and a sync mode. Incremental keeps daily runs light, and because reviews change after publication it is worth scheduling an occasional full refresh alongside it. The dataset is small enough that this costs very little.

Then apply masking to reviewer details before anybody is told the schema exists, since the first query somebody runs sets the expectation for what they can see.

Why does the authentication choice decide your dataset?

Because the two methods reach different amounts of the API. An API key is straightforward and gives you a smaller set of streams. OAuth 2.0 is more involved and unlocks more, which makes this a scoping decision disguised as a credentials one, and the sort of thing that is cheap to get right now and irritating to revisit.

The OAuth setup itself is unusual enough to warrant a warning. Rather than a redirect flow, you request a token yourself by calling Trustpilot's token endpoint with your key and secret encoded as basic authentication and your Trustpilot username and password in the body. That returns an access token and refresh token which you then paste into the configuration.

Two things follow from that. It is a manual step that somebody has to perform and record, so treat it as a documented procedure rather than a thing one person did once. And because the grant uses a named user's credentials, prefer a service account over an individual's login, since a token derived from somebody's personal account is a pipeline that breaks when they change their password or leave.

Why might your table be missing the company's reply?

Because a review is not finished when it is written. Customers edit reviews, businesses reply to them days later, and reviews are sometimes removed. All of that happens after the moment of creation, and an incremental sync working from a creation timestamp has no reason to look at an old review again.

The result is a table that is accurate about what was said and potentially wrong about what happened next. Response rate is a common thing to measure from this data, and measuring it from rows captured at creation time will understate it, because the replies arrived after the pipeline had stopped looking. Check how your chosen streams sync before building any metric that depends on a review's later state.

The remedy is cheap here precisely because the dataset is small. A weekly or monthly full refresh alongside the daily incremental picks up edits, replies and removals without any of the cost that would make this unattractive on a larger source. Combine that with masking policies over reviewer details and TRY_CAST when reading loosely typed fields, and you have a table that is both current and appropriately guarded.

Frequently asked questions

Should I use the API key or OAuth?

It depends which streams you need, since OAuth reaches more of them. Decide from your requirements rather than from which setup looks easier.

How do I get the OAuth tokens?

By calling Trustpilot's token endpoint yourself, with your key and secret as basic authentication and a Trustpilot username and password in the body. Use a service account rather than a personal login.

Why do replies seem to be missing?

Replies arrive after a review is created, so an incremental sync keyed on creation time will not revisit it. Schedule a periodic full refresh, which is cheap on a dataset this size.

Do I need to list business units?

Yes for the streams that depend on them, and an organisation with several brands or domains should list each one it wants covered.

Can I do this without writing code?

The pipeline, yes, though the OAuth token request is an HTTP call you make once. Masking policies and any sentiment modelling are SQL.

Get your Trustpilot data into Snowflake

Choose the authentication method against the streams you need, because that decision scopes the project rather than just connecting it, and use a service account for the OAuth token request rather than somebody's personal login. List every business unit you care about. Then schedule a periodic full refresh alongside the incremental, since replies and edits arrive after creation and the dataset is small enough that catching them costs almost nothing.

Airbyte's connector catalog includes 600+ pre-built connectors, so customer sentiment can be analysed beside the operations that shaped it. For customer conversations into the same destination, see Gong to Snowflake, and for the customer records to join against, Salesforce to Snowflake.

Start syncing now →

Integrate with 700+ apps using Airbyte

Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.