LinkedIn Ads to BigQuery: How to Move Your Data
Move LinkedIn Ads into BigQuery with Airbyte. Why the eleven analytics pivots are never additive, what makes syncs slow, and the lookback window's real scope.

Moving LinkedIn Ads into BigQuery matters more than for most advertising platforms, because B2B sales cycles outlast attribution windows. A click in March becomes an opportunity in June and a closed deal in September, and no advertising platform can see that far on its own.
This guide covers the managed path with Airbyte. The thing to understand before selecting streams is that the analytics streams are not eleven different datasets. They are the same spend, sliced eleven ways, and treating them as separate figures produces totals that are badly wrong.
LinkedIn Ads to BigQuery at a glance:
Why move data from LinkedIn Ads to BigQuery?
Two situations account for most of these pipelines.
The first is attribution across a long sales cycle. LinkedIn reports the conversions it can see, which on a B2B purchase is a fraction of the story, and joining spend to your CRM is the only way to know which campaigns produced revenue rather than form fills.
The second is comparing channels in one place, which on BigQuery is unusually convenient because Google Ads data and web analytics are frequently there already. Putting LinkedIn beside them turns a claim about audience quality into something you can test.
What do you need before you start?
Short list, and the stream decision is the one worth thinking about:
Authentication with the ads reporting scope. Authenticate directly on Airbyte Cloud, or supply credentials from a LinkedIn developer application on self-managed deployments. The application needs the scope for reading ad analytics and reporting data. The LinkedIn Ads source documentation lists the requirements.
A decision about which pivots you actually report on. There are eleven built-in analytics streams, by campaign, creative, impression device and seven member attributes. Selecting all of them is the default mistake, for reasons covered below.
A start date and a lookback window. The lookback applies to every incremental stream rather than only the analytics ones, which includes campaigns, creatives, conversions and any custom reports you define.
A BigQuery service account and a decided dataset location. With the BigQuery User and BigQuery Data Editor roles. Queries can only reference datasets in the same physical location and that cannot be changed after creation, so match it to your CRM and other advertising data.
If you run many campaigns, note the number of workers setting, which controls how many analytics streams sync concurrently and is the main lever on how long a sync takes.
How do you build a LinkedIn Ads to BigQuery pipeline in Airbyte?
Step 1: Decide what you will actually report on
Ask whoever runs your campaigns which breakdowns they use in practice. Job function and seniority are usually the ones that justify LinkedIn's pricing, while several of the others are interesting once and never again. Every pivot you take costs sync time and storage for the same underlying spend.
Step 2: Configure the LinkedIn Ads source
Click Sources in the left navigation, then New Source, and select LinkedIn Ads, following adding a source. Authenticate, set a start date, optionally limit the sync to specific ad account identifiers, and define any custom reports with their pivot categories and time granularity.
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 and is ample, because advertising reports are small by warehouse standards.
Step 4: Create the connection and budget for the first sync
Click Connections, then New connection, select your streams and an incremental sync mode. Daily suits advertising data. Expect the initial analytics sync to take considerably longer than you would guess, because of how the connector slices requests per campaign.
Raising the number of workers is the lever if analytics streams are slow, and keeping the connector current helps more than people expect, for reasons covered below.
Why can you not add the analytics streams together?
Because each one is the whole dataset viewed through a different lens. Ad analytics by campaign, by creative, by impression device, by member country, by job function, by seniority and the rest all describe the same spend over the same period, grouped differently.
So summing across them multiplies your reported spend by however many pivots you selected. That is an obvious error stated plainly and a very easy one to make in practice, because the tables sit side by side in the same dataset with similar column names and nothing marks them as alternative views of one thing.
Two things help. Name your views so the relationship is obvious to somebody who did not build the pipeline, and prefer a custom report where you need several dimensions at once, since those allow up to three pivot categories in a single stream rather than three tables you then have to avoid combining.
Why do analytics syncs take so long?
Because the connector requests analytics per campaign and per time slice, so the work grows with your campaign count rather than your spend. An account with a thousand campaigns generates a great many requests even when most of those campaigns stopped running a year ago.
Newer connector versions improved this by taking campaign status and schedule into account when generating slices, which avoids querying completed campaigns beyond their end date. Keeping the connector current therefore has a direct effect on sync duration here, more so than on most sources.
Beyond that, the levers are yours. Raise the number of workers, select fewer pivots, and limit the sync to the ad accounts you report on. A long first sync is expected, and a long incremental sync when nothing has changed is a sign to check your connector version.
Frequently asked questions
Can I sum the different ad analytics streams?
No. Each is the same spend pivoted differently, so adding them together multiplies your totals. Pick the pivots you report on and keep them clearly named.
Why is my incremental sync still slow?
Older connector versions queried completed campaigns beyond their end date. Update the connector, raise the number of workers, and reduce how many pivots you sync.
Does the lookback window only affect analytics?
No. It applies to every incremental stream, including campaigns, creatives, conversions, account users and any custom reports you define.
Can I change the dataset location later?
No. It is fixed at creation, and queries can only reference datasets in the same physical location, so match it to your CRM and other advertising datasets.
Can I do this without writing code?
Yes. The setup above is entirely UI-driven, including custom report definitions. You will want BigQuery views joining spend to your CRM, which is where B2B attribution actually happens.
Get your LinkedIn Ads data into BigQuery
Choose your pivots deliberately rather than taking all eleven, and make sure whoever queries the result understands they are alternative views of one spend. Create the dataset in the right location since that is permanent, keep the connector current, and join to your CRM for the attribution LinkedIn cannot do.
Airbyte's connector catalog includes 700+ pre-built connectors, so paid social can sit beside the CRM and revenue data that judges it. For the same source in another warehouse, see LinkedIn Ads to Snowflake, and for paid search alongside it, Google Ads to BigQuery.
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.
