Adjust to BigQuery: How to Move Your Data

Move Adjust attribution data into BigQuery with Airbyte. Why your dimensions set the grain permanently, discovering custom metrics, and decimal metric types.

Summarize with AI:

Moving Adjust data into BigQuery is unlike most pipelines in this series, and the difference is worth understanding before you configure anything. Most connectors replicate what exists: tables, objects, records. The Adjust source queries the reports API, which means you are not replicating data so much as defining a report and syncing the result.

The consequence is that your schema is a product of your configuration rather than of Adjust. You choose the metrics and the dimensions, and what lands in BigQuery is exactly that grouping and nothing else. Choose well and this is a clean, cheap pipeline. Choose carelessly and you will be backfilling when someone asks a question your chosen dimensions cannot answer.

Adjust to BigQuery at a glance:

CapabilitySupportedWhat it means for this pipeline
What is syncedA reportYour chosen metrics grouped by your chosen dimensions
Metric typesAssumed decimalEvery selected metric is treated as a decimal value
Custom metricsMust be discoveredOnly a subset are pre-selectable, since events are app-specific
GrainSet by dimensionsYou cannot drill into detail you did not request
Start dateUTC assumedEntered as a date, with no timezone of your choosing

Why move data from Adjust to BigQuery?

Two situations account for most of these pipelines.

The first is joining attribution to revenue. Adjust tells you where installs came from. Your warehouse knows which of those users subscribed, churned or spent money. Neither system can answer the question that matters, which is what a channel is actually worth, and putting attribution data next to revenue data is the whole point.

The second is history. Reporting interfaces are built for looking at recent performance, and a warehouse is where you keep years of it for trend analysis and for the annual conversation about where the budget went. Both cases want daily aggregates rather than raw event detail, which is fortunate, because aggregates are what this connector produces.

What do you need before you start?

The credentials are simple. The decisions are not, and they are the actual work:

An Adjust API token. Used as a bearer token against the reports API. The Adjust source documentation links to Adjust's own guide on obtaining one.

A list of the metrics you actually want. Only a subset of metrics is pre-selectable in the connector, because Adjust lets you define custom events specific to your apps and it cannot know yours. Query the filters data endpoint with your token to list everything available, and check Adjust's metrics glossary for what each one means.

A decision on dimensions. Dimensions are what the metrics get grouped by: date, country, network, campaign, and so on. This determines the grain of everything that lands in BigQuery, and it is the decision with the longest tail.

A BigQuery service account and dataset. With the BigQuery User and BigQuery Data Editor roles. Set the dataset location to match the datasets holding your revenue data, since BigQuery can only join datasets in the same physical location and the location cannot be changed after creation.

One thing to note about the start date: it is entered as a plain date and UTC is assumed. If your marketing team reports in a local timezone, day boundaries will not line up with theirs, and that is a discrepancy worth surfacing before someone finds it in a reconciliation.

How do you build an Adjust to BigQuery pipeline in Airbyte?

Step 1: Discover your available metrics

Before opening Airbyte, call the reports service filters data endpoint with your API token to list the metrics available for your apps, including the custom events your team has defined. The connector's pre-selectable list is deliberately partial, so this step is how you find out what you can actually ask for. Do it with someone from marketing rather than alone, because metric names in Adjust are meaningful to them and opaque to everyone else.

Step 2: Configure the Adjust source

Click Sources in the left navigation, then New Source, and select Adjust, following adding a source. Enter the API token and an ingestion start date. Choose your metrics from the pre-selectable list, and add anything else you found in step 1 to the additional metrics field. Then choose your dimensions.

Step 3: Configure the BigQuery destination

Click Destinations, then New Destination, and select BigQuery, following adding a destination. Supply the project, dataset and service account key. Batched standard inserts is the default loading method and is more than adequate here, since a daily aggregate report is small by warehouse standards.

Step 4: Create the connection and schedule it daily

Click Connections, then New connection, pick your source and destination, and choose a sync mode. Daily is the natural cadence, because attribution data settles over time rather than arriving instantly and an hourly sync would mostly be re-reading numbers that are still moving.

That settling behaviour is worth planning for. Attribution figures for a given day can change after the fact as more data arrives, so a value you synced this morning may not match what Adjust reports tomorrow. Decide whether your warehouse should hold the latest figure or a record of what it looked like when you read it, because reconciliations tend to hinge on that difference.

Why are your dimensions the most important choice?

Because they set the grain, and grain is not recoverable. If you group installs by date and country, you have installs by date and country. You cannot later ask which campaign drove them, because that breakdown was never requested and the numbers you have are already aggregated past it.

This is the opposite of a raw event export, where you can always aggregate upward from detail you already hold. Here, going finer means changing the configuration and backfilling from your start date, assuming Adjust still holds the history. Going coarser is free, because you can always sum in SQL.

So err finer than you think you need. The cost of an extra dimension is more rows in a small table, which BigQuery will not notice. The cost of a missing one is a backfill and an awkward conversation. Adding campaign and network alongside date and country is usually the right instinct even if nobody has asked for them yet.

What does assuming decimal values mean for your data?

The metrics you select are assumed to be decimal values. That is a sensible default for a reporting connector, since most of what Adjust reports is a count, a rate or an amount, and all of those are numbers.

It matters in two places. Counts arrive as decimals rather than integers, so installs will land as a decimal column and anyone writing SQL against it should not be surprised. And if you add a custom metric through the additional metrics field that is not actually numeric, the assumption does not hold and the result will be wrong rather than obviously broken.

The practical advice is to check the first sync's output against what the Adjust interface shows for the same day and dimensions, once, carefully. It takes twenty minutes, it validates your metric selections and your timezone assumption at the same time, and it is much cheaper than discovering a mismatch after a quarterly report has been built on it.

Frequently asked questions

Why can I not find my custom event metrics in the list?

Only a subset of metrics is pre-selectable, because custom events are specific to your apps. Query the reports service filters data endpoint with your API token to list what is available, then add them through the additional metrics field.

Can I change my dimensions later?

You can, but the data you already have stays at the old grain. Going finer means backfilling from your start date, so choose finer than you think you need at the outset.

Why do my install counts have decimal places?

Selected metrics are assumed to be decimal values, so counts arrive as decimals rather than integers. Cast them in a downstream view if that bothers your consumers.

Why do yesterday's numbers keep changing?

Attribution data settles over time as more information arrives. Decide whether your warehouse holds the latest figure or a record of what each sync saw, because reconciliations depend on that choice.

Can I do this without writing code?

Almost entirely. The Airbyte setup is UI-driven, though listing your available custom metrics means one command-line call against Adjust's filters data endpoint before you begin.

Get your Adjust data into BigQuery

Discover your metrics before you configure anything, pick dimensions finer than you currently need, and validate the first sync against the Adjust interface for a single day. The configuration is your schema on this connector, which makes those three steps the whole job.

Airbyte's connector catalog includes 600+ pre-built connectors, so your attribution data can sit alongside product and revenue sources in the same warehouse. For another marketing analytics source, see AppsFlyer to BigQuery, and for product analytics in the same place, PostHog to BigQuery.

Start syncing now →

Integrate with 600+ apps using Airbyte

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