LinkedIn Ads to Snowflake: How to Move Your Data
Move LinkedIn Ads into Snowflake 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 Snowflake 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 Snowflake at a glance:
Why move data from LinkedIn Ads to Snowflake?
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 honestly. LinkedIn is expensive per click and often defended on the quality of who clicks, which is a claim you can only test by putting its spend beside your other channels and your closed deals in one place.
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.
Snowflake objects and a role. A warehouse, database, schema and a role able to create tables in that schema. The smallest warehouse is ample, because advertising reports are modest by warehouse standards even across many campaigns.
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 Snowflake 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 Snowflake destination
Click Destinations, then New Destination, and select Snowflake, following adding a destination. Supply the account identifier, warehouse, database, schema and role. Put advertising sources in a shared schema so comparing channels is a join rather than a cross-schema exercise.
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 older campaigns tidy in LinkedIn 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 schema 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.
When should I use a custom report?
When you need more than one dimension together. A custom report allows up to three pivot categories in one stream, which is cleaner than taking three separate streams you must never combine.
Can I do this without writing code?
Yes. The setup above is entirely UI-driven, including custom report definitions. You will want Snowflake views joining spend to your CRM, which is where B2B attribution actually happens.
Get your LinkedIn Ads data into Snowflake
Choose your pivots deliberately rather than taking all eleven, and make sure whoever queries the result understands they are alternative views of one spend rather than separate figures. Keep the connector current since it affects sync duration directly, and join to your CRM, because that is 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 paid search alongside it, see Google Ads to Snowflake, and for another paid social channel, Facebook Ads to Snowflake.
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.
